iptables的詳細用法

來源:互聯網
上載者:User

怎麼寫規則
iptables

iptables [-t table] COMMND chain CRETIRIA -j ACTION
-t 不定表的話,預設filter
COMMADN  怎麼對鏈進行管理 增加 刪除 等
chain:指定鏈操作 
CRETIRIA:匹配規則 (源地址是什麼,目標地址是什麼)
-j ACTION: 說明匹配到的結果處理

iptables -t filter -s 172.16.0.0/16 -p udp --dport 53 -j DROP
到本機內部來的訪問53號連接埠的都不允許
REJETCT比DROP更徹底,直接拒絕

iptables -L -n 顯示iptables定義的規則鏈
iptables -t nat -L -n
iptables -L -n -v  可以查看計數器
COMMAND:命令的類
鏈管理命令
-P  #polocy  表示通策略,設定預設策略(門是是開的還是關的)
    iptables -P INPUT (DROP|ACCEPT) #如果本身是開啟的,而改為關
    閉的,操作要小心(比如你的機房在美國,而你把SSH給拒絕了)
-F  #FLUSAH  清空規則鏈
    iptables -t nat -F PREROUTING  
    清空所有nat的進路由表規則鏈
-N  #new  建立使用者自訂鏈
    iptables -n inbound_tcp_web
-X  #刪除使用者定義的空鏈,如果有規則刪除不了,所以刪除一個鏈之前需要把裡
    面的規則清空了
-E  #用於重新命名使用者自訂的鏈
      iptables -E oldname newname
  -Z  #清空鏈,及鏈中規則的計數器
      iptables -L -n -v
       pkts  bytes    #兩個計數器  ##看視頻
      iptables -Z   清空這些計數器   

規則管理命令
-A   #atend 追加,規則的次序很關鍵,-A來追加是放在最後 
-I   #insert 插入,插入到num條不能超過總條數!!
     iptables -I num

-R   #replace 替換,替換或者修改某條規則
              iptables -R -s 172.16.0.0/16 -p udp --dport 53
     iptables -R 
-D   #delete 刪除
     iptables -D INPUT num
查看命令
-L   #list    它有子選項,組合使用,如果不帶自選項,很慢,需要解析地址
 -n  數字方式
 -v  verbos    詳細資料 -v -vv -vvv
     iptables -L -n -vvv
 -x  exsicly   精確的值,沒有經過單位換算的
 -line-number  顯示行號
     iptables -L -n --line-number
####這些都是常用的,必須牢牢記住這些命令
對於TCP協議一共四種狀態:
NEW          新發起的串連
ESTABLISHED  已經建立的串連
RELATED      相關聯的串連
INVALID      無法識別的串連
--------------------------------------------------------------
匹配標準:
1.通用匹配:大家都可以用
-s   #做源地址匹配,可以取反,加上歎號!      也可有--source
     IP,NETWOER/NEMASK,0.0.0.0/0.0.0.0(匹配所有)
-d   #匹配目標地址     或--destnation
-p   #protocal 用於匹配協議
     -p [tcp|udp|icmp]    一般只定義這三個協議
-i   #inbound 流入介面,後面跟網卡 
     -i eth0      
-o   # outbond 流出介面      
     流入一般用在PRE Input FORW
     流出一般同在POST OUTPURT FORW 
2.擴充匹配:對於某種功能的擴充
     隱含擴充
-p   tcp
    --dport 目標連接埠 0-65535 
         可以使用21:23表示連續,(但是不能使用非連續的連接埠)
    --sport 源連接埠 0-65525
    --tcp-flags  SYN,ACK,FIN,PSH,RST,URG
                  檢查的標誌位 必須為1標誌位 ,syn為1,其他為0
                  --tcp-flags syn,ack,fin,rst,syn
                  三向交握的第一次的資料包,這種匹配方式有一個簡寫--syn
-p   udp
    --dport    #目標連接埠
    --sport
    
-p   icmp
    --icmp-types
    ping的報文類型
       echo-request 8  #匹配PING出去的資料包,類型用8表示請求回顯
       echo-reply 0    #別人響應資料包,類型用0表示
     顯式擴充
-P   tcp -m mutiport --dports   
     #-m mutiport啟動多連接埠擴充,這樣可以根很多連接埠 (這樣就可以使
     用多連接埠了,用,隔開)
      -p tcp -m mutiport --dports 21,23,80  
     #-m 啟動模組
    
-j    # 指定action 匹配後對應的處理動作
           DROP      悄悄丟棄資料包,不返回拒絕資訊
           REJIECT   明確丟棄資料包,返回拒絕資訊,在網路上一般使用DROP
  ACCEPT    接受
  custom_chain   使用自訂的鏈
  DNAT   目標地址轉換
  SNAT   源地址轉換 
  MASQUERADE   源地址偽裝
  REDIRECT   重新導向,主要實現連接埠重新導向
  MARK       在mangel表利用的,打標記
  RETUREN    返回,調用使用者鏈後按鏈處理,處理接受後,返回到下一個內
             置鏈   
其實有數十個動作,這裡只是常用的

狀態檢測:

對於TCP協議一共四種狀態:
NEW          新發起的串連
ESTABLISHED  已經建立的串連
RELATED      相關聯的串連

INVALID      無法識別的串連

----------------------------------------
假設一台主機只允許172.16.0.0訪問ssh
到本機內部訪問的最好定義在INPUT
從本機內部出去的最好定義在OUTPUT
iptables -t filter -A INPUT -s 172.16.0.0/16 172.16.100.1 -p tcp --dport 22 -j ACCEPT
iptables -L -n -v
iptables -t filter -A OUTPUT -s 172.16.100.1 -d 172.16.0.0/16 -p tcp 

在互連網上比較通用的是通策略,預設關閉
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
將來應用時,一定要保證遠程連結是開起的
------------------------------------------------------------

模組開啟
-m state --state

通過下面幾個子命令來實現模組的控制管理:
connlimit  
幫你限定某一個特定的客戶,可以發起的並發請求
對於伺服器而言,比如WEB,有一個下載站,如果一個使用者使用P2P或者多線程同時發起數十個串連,勢必造成佔用過多資源,conlimit可以限定這些連結數
[!] --connlimit-above n    
iptables -p tcp -syn -dport 23 -m connlimit --connlimit-above 2 -j REJECT

iprange    對源位址區段進行限定

iptables -A FORWARD -m iprange --src-range 172.16.100.1-172.16.100.100 -dst-range 172.16.0.1-172.16.0.2 -p tcp --dport 80

limit   匹配一個限定的速率,令牌通機制,它不是用來限定頻寬的,只是做速率匹配的
它可以通過burst 和 rete來限定某些特定應用的速率
#看視頻
令牌通機制,收集空閑令牌
--limit rate 3/minutes   沒分鐘匹配3個資料包       
--limit-burst number       

tc 一個小工具,使用簡單,可以實現流量控制

mac  匹配源mac地址,在互連網上匹配目標mac是沒有意義的
--mac-source [!] adress

multiport    開啟多連接埠機制,最多一次指15個
--soure-ports
--destination-ports
--ports
例子:
iptables -A FORWARD -p tcp -m multiport --destination-ports 22,25,80,110 -m iprange --src-range 172.16.0.1-172.14.100.254 -m state --state NEW,ESTABLISHED -j ACCEPT

stirng  根據某個字串來限定
# string 匹配漢字能力有限,但是匹配英文字母,拼音很好用
--algo bm|kmp   使用哪種演算法來匹配,必須選一個
   bm由Boyer-Moore開發    kmp由Knuth-Pratt-Morris
例子:只要有qq.com就不能訪問
iptables -A FORWARD -m string --string "qq.com" --algo bm -j REJECT

time   指定起始時間和結束時間來限定  例如周一到周五可以上網 
--timestart value    HH:MM
--timestop value
--days listofdays
--datestart date
--datestop date
-m time --timestart

LOG   使用log可以記錄日誌,limit主要和log一起用
--log-level level
--log-prefix prefix  
給日誌加一個首碼,這樣可以在messages裡更方便的查看特定的日誌,例如給22
iptables -A INPUT -d 172.16.100.1 -p tcp --dport 22 -m limit --limit 6/minute -j LOG --log-prefix "Iptables SSHD"

#一般我們使用limit來限定日誌速率,這樣可以減輕磁碟的壓力

REJECT   拒絕理由
--reject-with type
The type given can be
 icmp-net-unreachable
 icmp-host-unreachable
 icmp-port-unreachable
 icmp-proto-unreachable
 icmp-net-prohibited
 icmp-host-prohibited ro
 icmp-amin-prohibited (*)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.