Iptables基本語法

Netfilter/Iptables是Linux核集成的IP信息包過濾系統。
Netfilter/Iptables IP過濾系統可作爲一個整體來看,但它們其實是兩個組件,Netfilter是內核的模塊實現(通用構架實現,運行在內核空間),Iptables是上層的操作工具(表->鏈->規則)。

iptables和Netfilter的確存在差別:
1、Netfilter是用來實現linux內核防火牆的linux內核空間程序代碼段,它要麼被直接編譯,要麼被包含在模塊中;
2、iptables是用來管理Netfilter防火牆的用戶程序。

常用的應用場合:
1、用作企業的NAT路由器。
2、IDC機房的服務器代替硬件防火牆,降低成本。
3、iptables可以結合squid作爲企業內部上網的透明代理。
4、防止輕量級的Dos攻擊,比如ping攻擊及SYN洪水攻擊。

防火牆語法:
數據包的流向:
PREROUTING->FORWARD->POSTROUTING(NAT路由器)
PREROUTING->INPUT->本機OUTPUT->POSTROUTING(主機防火牆)

iptables根據不同的數據處理包處理功能使用不同的規則表。包含以下三個表:filter、nat和mangle
filter是默認的表,包含真正的防火牆過濾規則。內建的規則鏈包含:INPUT、OUTPUT和FORWARD。
nat表包含源和目的地址及端口轉換使用的規則,內建的規則鏈包含PREROUTING、OUTPUT和POSTROUTING。
mangle表包含用於設置特殊的數據包路由標記的規則。這些標記隨後被filter表中的規則檢查。內建的規則鏈包含:PREROUTING、INPUT、OUTPUT、POSTROUTING和FORWARD。

表對應的相關規則鏈的功能如下:
INPUT鏈,當一個數據包由內核中的路由計算確定爲本地的linux系統後,他會通過INPUT鏈的檢查。
OUTPUT鏈,保留給系統自身生成的數據包
FORWARD鏈,經過linux系統路由的數據包(即當iptables防火牆用於連接兩個網絡時,兩個網絡之間的數據包必須流經該防火牆)
PREROUTING鏈,用於修改目標地址(DNAT)
POSTROUTING鏈,用於修改源地址(SNAT)

iptables詳細語法如下:
iptables [-t 表名] <-A|I|D|R> 鏈名[規則編號] [-i|o 網卡名稱] [-p 協議類型] [-s 源IP地址|源子網] [--sport 源端口號] [-d 目標IP地址|目標子網] [--dport 目標端口號] <-j 動
作>


1.定義默認策略
當數據包不符合鏈中任一條規則時,iptables將根據該鏈預先定義的默認策略來處理數據包,默認策略的定義格式如下。
iptables  [-t表名] <-P> <鏈名> <動作> 
參數說明如下。
[-t表名]:指默認策略將應用於哪個表,可以使用filter、nat和mangle,如果沒有指定使用哪個表,iptables就默認使用filter表。
<-P>:定義默認策略。
<鏈名>:指默認策略將應用於哪個鏈,可以使用INPUT、OUTPUT、FORWARD、PREROUTING、OUTPUT和POSTROUTING。
<動作>:處理數據包的動作,可以使用ACCEPT(接受數據包)和DROP(丟棄數據包)。


2.查看iptables規則
查看iptables規則的命令格式爲:
iptables  [-t表名] <-L> [鏈名]
參數說明如下。
[-t表名]:指查看哪個表的規則列表,表名用可以使用filter、nat和mangle,如果沒有指定使用哪個表,iptables就默認查看filter表的規則列表。
<-L>:查看指定表和指定鏈的規則列表。
[鏈名]:指查看指定表中哪個鏈的規則列表,可以使用INPUT、OUTPUT、FORWARD、PREROUTING、OUTPUT和POSTROUTING,如果不指明哪個鏈,則將查看某個表中所有鏈的規則列表。


3.增加、插入、刪除和替換規則
相關規則定義的格式爲:
iptables  [-t表名]  <-A | I | D | R> 鏈名 [規則編號] [-i | o 網卡名稱] [-p 協議類型] [-s 源IP地址 | 源子網] [--sport 源端口號] [-d目標IP地址 | 目標子網] [--dport目標端

口號] <-j動作>
參數說明如下。
[-t表名]:定義默認策略將應用於哪個表,可以使用filter、nat和mangle,如果沒有指定使用哪個表,iptables就默認使用filter表。
-A:新增加一條規則,該規則將會增加到規則列表的最後一行,該參數不能使用規則編號。
-I:插入一條規則,原本該位置上的規則將會往後順序移動,如果沒有指定規則編號,則在第一條規則前插入。
-D:從規則列表中刪除一條規則,可以輸入完整規則,或直接指定規則編號加以刪除。
-R:替換某條規則,規則被替換並不會改變順序,必須要指定替換的規則編號。
<鏈名>:指定查看指定表中哪個鏈的規則列表,可以使用INPUT、OUTPUT、FORWARD、PREROUTING、OUTPUT和POSTROUTING。
[規則編號]:規則編號用於插入、刪除和替換規則時用,編號是按照規則列表的順序排列,規則列表中第一條規則的編號爲1。
[-i | o 網卡名稱]:i是指定數據包從哪塊網卡進入,o是指定數據包從哪塊網卡輸出。網卡名稱可以使用ppp0、eth0和eth1等。
[-p 協議類型]:可以指定規則應用的協議,包含TCP、UDP和ICMP等。
[-s 源IP地址 | 源子網]:源主機的IP地址或子網地址。
[--sport 源端口號]:數據包的IP的源端口號。
[-d目標IP地址 | 目標子網]:目標主機的IP地址或子網地址。
[--dport目標端口號]:數據包的IP的目標端口號。
<-j動作>:處理數據包的動作,各個動作的詳細說明可以參考下面的說明。
動作選項
動作         說明
ACCEPT        接受數據包
DROP          丟棄數據包
REDIRECT      與DROP基本一樣,區別在於它除了阻塞包之外, 還向發送者返回錯誤信息。
SNAT          源地址轉換,即改變數據包的源地址
DNAT          目標地址轉換,即改變數據包的目的地址
MASQUERADE    IP僞裝,即是常說的NAT技術,MASQUERADE只能用於ADSL等撥號上網的IP僞裝,也就是主機的IP是由ISP分配動態的;如果主機的IP地址是靜態固定的,就要使用SNAT
LOG           日誌功能,將符合規則的數據包的相關信息記錄在日誌中,以便管理員的分析和排錯


4.清除規則和計數器
在新建規則時,往往需要清除原有的、舊的規則,以免它們影響新設定的規則。如果規則比較多,一條條刪除就會十分麻煩,這時可以使用iptables提供的清除規則參數達到快速刪除所有的

規則的目的。
定義參數的格式爲:
iptables  [-t表名] <-F | Z>
參數說明如下。
[-t表名]:指定默認策略將應用於哪個表,可以使用filter、nat和mangle,如果沒有指定使用哪個表,iptables就默認使用filter表。
-F:刪除指定表中所有規則。

-Z:將指定表中的數據包計數器和流量計數器歸零。














發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章