iptables經常使用命令及應用

http://blog.csdn.net/bill_lee_sh_cn/article/details/4401896 iptables中DNAT的配置方法

1、命令格式

iptables [-t TABLE] COMMAND CHAIN [creteria] -j(jump) ACTION{ACCEPT,DROP,REJECT,SNAT,DNAT}
 -t {raw|mangle|nat|filter},默認filter
web

2、命令各選項及解釋
 COMMAND:
 規則管理類
  -A,(append的意思)
  -I # (I表示insert的意思,#表示數字,如下相同)
  -D # (delete的意思)
  -R # (replace的意思)
 鏈管理類:
  -F (flush)(清空鏈)
  -N (new)(新建鏈)
  -X (delete)(刪除自定義的空鏈)
  -E (rename)(對鏈重命名)
 默認策略:
  -P policy
 清空計數器:
  -Z,zero
  每條規則(包括默認策略)都有兩個計數器:
   被此規則匹配到的全部數據包的個數;
   被此規則匹配到的全部數據包的大小之和;
 查看類:
  -L(list)
   -n,numeric(以純數字的方式來顯示,不作解析)
   -v,verbose(詳細信息)
   -vv -vvv
   -x,exactly(顯示精確值,不作單位換算)
   --line-numbers  
 匹配條件(creterial規則)
  基本匹配:
   -s (SOURCE:能夠是IP,!NETWORK)
   -d (目標地址)
   -p{tcp|udp|icmp}
   -i INTERFACE(數據包的流入接口)
   -o OUTERFACE(數據包的流出接口)
 擴展匹配:(調用iptables的模塊,以便擴展iptables匹配功能)
  隱含擴展
   -p tcp
    --sport PORT
    --dport PORT
     能夠指定連續的端口;例如:--sport 22:80(表示從22到80的端口,通常不用)
    --tcp-flags(ACK,SYN,RST,FIN | SYN,ACK只檢查前四個標誌位,後組出現的爲1)= --syn
     例如:--tcp-flags ACK,SYN,RST,FIN SYN,ACK,RST,FIN (不可能,丟棄)
    
   -p UDP
    --sport PORT
    --dport PORT
   -p icmp
    --icmp-type
     8:echo-request(ping請求)
     0:echo-reply(ping迴應)
     3:(表示ping不通)  
  顯式擴展
   -m(指定調用的模塊)
    state --state {NEW|ESTABLISHD|INVALIDE|RELATED}(指定iptables的狀態),
    iptables各state解釋以下:
     NEW(至關於tcp三次握手的第一次請求,是syn=1的包)
     ESTABLISHED
     INVALID
     RELATED(主要用於作ftp命令跟蹤的)
     例如:對ssh鏈接的控制:
     (1)對客戶端的請求進行限制:
     iptables -A INPUT -d 172.16.100.1 -p tcp -dport 22 -m state --state NEW,ESTABLISHE -j ACCEPT
     同理,限制web服務只需將端口號改成80便可。
     (2)對服務器的迴應進行限制:
     #iptables -A OUTPUT -s 172.16.100.1 -p tcp -sport 22 -m state --state ESTABLISHD -j ACCEKPT
     (3)修改iptables的默認策略:
     iptables -P INPUT DROP
     iptables -P OUTPUT DROP
     (4)讓本身能夠ping通本身:
     #iptables -I INPUT 1 -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT
     #iptablses -I OUTPUT 1 -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT 
    multiport(指定端口)
     --source-ports 22,53,80
     !--destination-ports
     --ports
     例如:能夠將如下兩個相同特徵的規則合併爲一個規則:
     ACCEPT    tcp  --  0.0.0.0/0   172.16.58.1   tcp dpt:22 state NEW,ESTABLISHED 
     ACCEPT    tcp  --  0.0.0.0/0   172.16.58.1   tcp dpt:80 state NEW,ESTABLISHED 
     #iptables -I INPUT 2 -d 172.16.58.1 -p tcp -m state --state NEW,ESTABLISHED -m
     multiport --destination-port 22,80 -j ACCEPT
     #iptables -D INPUT #(刪除合併過的行)
     #iptables -I OUTPUT 1 -m state --state ESTABLISHED -j ACCEPT(這條命令表示無論是什麼協議,什麼端口,只要狀態是ESTABLISHED都容許)
    iprange 
     --src-range 172.16.100.190-172.16.100.210 
     --dst-range
     例如:容許地址爲172.16.100.190-172.16.100.210網段的地址訪問web服務:
     #iptables -A INPUT -p tcp --dport 80 -m iprange --src-range 172.16.100.190-172.16.100.210 -m state --state NEW -j ACCEPT
    connlimit(表示限定每一個主機的tcp鏈接數)
     --connlimit-above
     例如:同一臺主機只容許創建兩次ssh鏈接:
     #iptables -A INPUT -d 172.16.58.1 -p tcp --dport 22 -m state --state NEW -m connlimit ! --connlimit-above 2 -j ACCEPT (表示一臺主機最多隻容許兩次新鏈接)
    limit (限定速率)
     --limit 1/second(限定多長時間能能夠請求幾回)
     --limit-burst(限定併發請求的總個數)
     例如:
     #iptables -A INPUT -d 172.16.58.1 -p tcp --deport 80 -m state --state NEW -m limit --limit 1/minite --limit-burst 3 -j ACCEPT
     爲了使顯示效果明顯,能夠將keepalive關掉。步驟以下(源碼安裝):
     能夠修改 /etc/httpd/extra/httpd-default.conf文件中的:KeepAlive On改成KeepAlive Off 
    string
     --algo bm|kmp (指定算法)
     --string "STRING"(功能是拒絕網頁中含有指定字符串的網頁顯示)
     例如:拒絕網頁中含有「***功」字樣的網頁顯示:
     #iptables -A OUTPUT -s 172.16.58.1 -m string --algo kmp --string "***功" -j REJECT
     (注意必定要在鏈OUTPUT中拒絕才生效)  
    time 
     --timestart 
     --timestop -j 
     -days
     例如:限定只能在12點到下午2:30之間請求主機172.16.100.1的web服務:
     #iptables -A INPUT -d 172.16.100.1 -p tcp 80 -m state --state NEW,ESTABLISTHED -m time --timestart 12:00 --timestop 14:00 -j ACCEPT  
算法

相關文章
相關標籤/搜索