天天看點

iptable防火牆詳解

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 ,如需轉載請自行聯系原作者

繼續閱讀