iptable防火牆詳解
一.基本格式
1. iptable [-t 表] 指令選項 [連名] 比對條件 [-j 動作]
2.常用指令選項如下:
-A 【append】 在指定的連的結尾添加規則
-D 【delete】删除指定連中的規則,可以按規則号或規則内容比對
-I 【insert】插入一條新規則,預設是在最前面
-R 【replace】 替換某一條規則
-L 【list】列出所有規則
-F 【flush】清空所有規則
-N 【new】自定義一條規則連
-X 【--delete-chain】 删除使用者自定義規則連
-P 【policy】設定預設政策
-n 【numeric】以數字方式顯示,如:顯示ip,但不顯示主機名
-v 【verbose】顯示詳細資訊
-V 【version】檢視iptable的版本資訊
--line-number 檢視規則連是,顯示清單号
-Z 清空計數器值
二.舉例
# iptable -t filter -F【清空filter表中所有規則】
# iptable -t filter -Z【清空filter表中的計數器值】
#iptable -t filter -X 【清除filter表中自定義連】
# iptable -t filter -P INPUT DROP 【設定INPUT連預設政策為DROP】
# iptable -t filter -P OUTPUT DROP
# iptable -t filter -P FORWROD DROP
# iptable -t filter -A INPUT -p tcp -j ACCEPT 【在INPUT連最後添加一條允許tcp協定的資料包進入的規則】
# iptable -t filter -R INPUT 1 -p tcp -j DROP 【替換INPUT連的第1條規則為拒絕tcp資料包進入】
# iptable -t nat -vnL --line-number 【以詳細的、數字的格式列出nat表中的所有規則】
# iptable -t nat -D POSTROUTING 1 【删除nat表POSTROUTING 連中的第1條規則】
三.條件比對
1. 協定比對:用于檢查資料包使用的協定,符合規則就允許,反之拒絕。允許使用的協定名在/etc/protocols檔案中。
常用的協定有tcp,udp,icmp,ip 和all。【 -p 協定名 】
# iptable -I INPUT -p icmp -j REJECT 【拒絕進入防火牆本身的icmp資料包】
# iptable -A FORWARD -p udp -j ACCEPT 【允許轉發udp的所有資料包】
2. 位址比對:用于檢查資料包的位址是否符合規則,包括源位址和目的位址。【-s 源位址, -d 目的位址】
# iptable -A FORWARD -s 10.0.0.0/8 -j DROP 【拒絕轉發來自10.0.0.0/8 網段的資料包】
# iptable -A FORWARD -d 80.0.0.0/8 -j DROP 【 拒絕轉發目的是80.0.0.0/8 網段的資料包】
3.端口比對:用于檢查資料包的tcp或udp端口,需要和 “-p 協定類型” 一起使用【-sport 源端口,-dport 目的端口】
# iptables -A FORWARD -s 10.0.0.0/8 -p tcp --dport 80 -j ACCEPT 【允許轉發來自10.0.0.0/8網段,目的端口是80的資料包】
# iptables -I FORWARD -s 10.0.0.0/8 -p tcp --sport 21 -j ACCEPT【允許轉發來自10.0.0.0/8網段,源端口是21的資料包】
4.接口比對:用于檢查資料包從防火牆那個接口進入或出去,來判斷是否允許。
# iptables -A FORWARD -i eth0 -s 10.0.0.0/8 -p tcp --dport 80 -j ACCEPT
【允許轉發從eth0進入,來自10.0.0.0/8網段,使用tcp 協定,目的端口椒80的資料包】
# iptables -A INPUT -i eth0 -s 80.0.0.0/8 -j DORP 【拒絕從eth0進入,來自80.0.0.0/8的資料包】
5.SNAT轉換:一般linux充當網關伺服器時使用
SNAT隻能用在nat表的POSTROUTING連,用于對源位址進行轉換。要結合 --to 使用。
# iptables -t nat -A POSTROUTING -s 10.0.0.0/8 -j SNAT --to 202.106.1.1
【将來自10.0.0.0/8網段的所有資料包的源位址轉為202.106.1.1】
# iptables -t nat -A POSTROUTING -i eth0 -s 80.0.0.0/8 -p tcp --dport 25 -j SNAT --to 202.106.1.1
6.DNAT轉換:隻能用在nat表中的PREROUTING連,用于對目的位址或端口進行轉換。
# iptables -t nat -A PREROUTING -i eth1 -d 202.106.1.1 -p tcp --dport 80 -j DNAT --to 10.0.0.10
【将從eth1 進入,目的位址是202.106.1.1,使用tcp 協定,目的端口是80的資料包的目的位址轉為10.0.0.1】
7.MASQUERADE:僞裝,是SNAT的特例。
# iptables -t nat -A POSTROUTING -s 10.0.0.0/8 -o eth1 -j MASQUERADE
【将來自10.0.0.0/8網段,從eth1出去的資料包的源位址僞裝為eth1接口位址】
四.拓展子產品
1.按來源MAC位址比對
# iptables -t filter -A FORWARD -m --mac-source 00:02:b2:03:a5:f6 -j DROP
【拒絕轉發來自該MAC位址的資料包】
2.按多端口或連續端口比對
20: 表示20以後的所有端口
20:100 表示20到100的端口
:20 表示20之前的所有端口
-m multiport [--prots, --sports,--dports]
# iptables -A INPUT -p tcp -m multiport --dports 21,20,25,53,80 -j ACCEPT 【多端口比對】
# iptables -A INPUT -p tcp -dport 20: -j ACCEPT
# iptables -A INPUT -p tcp -sport 20:80 -j ACCEPT
# iptables -A INPUT -p tcp -sport :80 -j ACCEPT
3.還可以按資料包速率和狀态比對
-m limit --limit 比對速率 如: -m limit --limit 50/s -j ACCEPT
-m state --state 狀态 如: -m state --state INVALID,RELATED -j ACCEPT
本文轉自shangshanyang51CTO部落格,原文連結:http://blog.51cto.com/qqran/1879206 ,如需轉載請自行聯系原作者