Iptables的規則語法

(一)

基本語法

iptables-t filter -A INPUT -p icmp -j DROP

高級語法

iptables-t filter -A INPUT -m mac –mac-source 00:1C:23:3B:2E:B1 -j DROP

區別高級語法與基本語法的不同:首先filter的機制是由iptables_filter.ko模塊所提供的功能,而這個模塊本身就已提供了一些簡單的匹配的過濾方式,而所謂的基本語法是指只使用iptable_filter.ko模塊自身所提供的功能。高級語法必須調用其它模塊的功能。以高級語法的範例爲例,“-mmac”就是告知iptables工具,我們要動用xt_mac.ko模塊的功能,由於是調用其它的模塊,因此,語法的部分將會隨着不同的模塊而有所改變,而且每一個模塊的語法也不一樣,這就是所謂的“高級語法”。

舉例1:將222.24.21.195送到本機的ICMP封包丟棄

語法:iptables-A INPUT -p icmp -s 222.24.21.195 -j DROP

語法解釋:

-AINPUT

保護對象

因爲本範例所使用的是INPUTChain,故其保護的對象爲本機

-picmp

原文

-pProtocol(協議)

目的

匹配某個特定協議封包,本範例是匹配icmp的封包

語法

-p icmp-ptcp-pudp -p all

-s222.24.21.195

原文

-s Source

對應的參數

-dDestination

目的

匹配封包中“來源”或“目的”端的IP

語法

-s222.24.21.195 -s www.baidu.com等,由例子可知,IP位置的表示方法可以用單一IP或標準的CID網段,至於QDN的部分,實際上iptables是把FQDN送至DNS去執行解析,最後加入到規則之中的還是IP

-j

目的

JUMP

語法

將符合以上兩項條件的封包以特定的方式來“處理”

較常見的處理方式:

ACCEPT

允許通過

DROP

將封包丟棄調,這種處理方式將導致來源端誤以爲封包丟失,而不斷重新發送封包,這個動作將持續到連接Timeout爲止

REJECT

將封包丟棄掉,並回送一個DestinationUnreachableICMP封包給發送端,發送端的應用程序收到這個錯誤信息封包之後,會終止連接的動作


舉例2:不允許222.24.21.195主機通過本機DNS服務來執行名稱解析

語法:iptables-A INPUT -p udp -s 222.24.21.195 --dport 53 -j REJECT

語法解釋:

--dport53

原文

--dportDestination Port

對應的參數

--sportSource Port

目的

匹配TCPUDP包頭中的“來源端Port”或“目的端Port”,這樣即可判斷連接所要訪問的服務,例如:-pudp –dport 53 代表客戶端要訪問UDP53port,而UDP53port就是DNS服務

語法

--dport 80--sport80,但請注意,當時用--dport--sport參數時,一定要指明是tcp還是udp協議。注意一點:只要規則語法中用到“Port參數”時,一定要加上“-pudp-ptcp”的參數。


舉例3:允許192.168.1.0/24網段的主機對192.168.0.1提出任何的服務請求

語法:iptables-A INPUT -p all -s 192.168.1.0/24 -d 192.168.0.1 -j ACCEPT

語法解釋:

-pall

目的

匹配所有的協議包

-s192.168.1.0/24

目的

匹配來源端IP192.168.1.0/24網段的封包

-jACCEPT

目的

開放符合以上3項條件的封包進入


舉例4:只允許用戶端主機從eth1訪問的本機SSH服務

語法: iptables-A INPUT -p tcp -i eth1 --dport 22 -j ACCEPT

語法解釋:

-ieth1

原文

-iin-interface

對應的參數

-oout-interface

目的

匹配封包的出入接口

語法

-i eth1 -oeth2


舉例5:不允許本機的應用程序從eth0接口送出封包去訪問www.baidu.com網站

語法:iptables-A OUTPUT -o eth0 -p tcp -d www.baidu.com --dport 80 -j REJECT

語法解釋:

-AOUTPUT

限制的對象

因爲該例子使用的OUTPUChain,所以目的是限制本機對外的連接


(二)

有上面幾個例子瞭解了iptables的基本語法,下面對參數進行整理總結。

1)接口的匹配參數

參數名稱

-i -o

參數值

參數值會因爲防火牆主機所使用的物理接口不同而有所改變,下面列出常見的網絡接口名稱:

* eth0 :以太網絡的接口名稱。

* ppp0PPP接口的名稱。

* lo LocalLoopback接口。

* fddi0:光線接口

使用範例

-i eth0:匹配從eth0接口送入的封包

意義

匹配封包的進出接口

補充

可搭配“!”來代表反向,例如,“-ieth0”即表示匹配不是從eth0接口進入的封包

2)上層協議(UpperLayer Protocal)的匹配參數

參數名稱

-p

參數值

這些參數會因爲匹配的上層協議的不同而有所差異,一般常見的參數如下:

* tcp :匹配的上層協議爲TCP協議。

* udp :匹配的上層協議爲UDP協議。

* icmp :匹配的上層協議爲ICMP協議。

* all :匹配所有的上層協議。

關於其它的上層協議可以參考/etc/protocols文檔,現在取出一部分內容:

ip 0 IP

hopopt 0 HOPOPT

icmp 1 ICMP

igmp 2 IGMP

ggp 3 GGP

ipencap 4 IP-ENCAP

tcp 6 TCP

注:其中第一和第二字段是給系統來使用的,比如說我們寫-ptcp還可以寫爲-p6。因爲tcp的代碼就是6,第三個字段用於管理員來識別用。


3)匹配來源/目的的IP地址

參數名稱

-s -d

參數值

來源及目的IP地址匹配,其可接受的IP地址格式如下:

*192.168.0.1 :匹配單一IP

*172.10.0.0/16 :匹配一個Class B的網段。

*192.168.0.0/24 :匹配一個ClassC的網段。

*192.168.0.0/28 :也可以是任何標準CIDR的網段。

* www.qq.com : 也可以是網址,但最後存放到Chain裏的值還是IP



使用範例

-s192.168.0.1 :匹配從192.168.0.1主機送來的封包

-s192.168.0.0/24 :匹配從192.168.0.0/24網段所送來的封包

-d192.168.0.10 :匹配要送往192.168.0.10主機的封包

意義

匹配封包來源或目的IP地址

補充

可搭配“!”來代表反向,例如:“-s192.168.0.0/24”即代表匹配來源端IP不是192.168.0.0/24網段的封包


4)匹配來源/目的的Port位置

參數名稱

--sport–dport

參數值

我們可以用—sport或—dport來匹配所要訪問的服務,例如我們可以用--dport80參數匹配訪問WebServer的封包,另外,也可以使用

--sport80參數匹配有WebServer迴應給客戶端的封包

使用範例

--dport 80 :匹配訪問的WebServer的封包。

--sport 110:匹配由POP3 Server 迴應給客戶端的封包。

意義

匹配封包來源或目的的Port

補充

可以搭配”!“來代表反向,如”--sport80“代表匹配不是從WebServer送來的封包


5)處理方式

參數名稱

-j

參數值

較爲常見的3種處理方式,分別如下:

* ACCEPT:允許

* DROP :將封包丟棄

* REJECT :將封包丟棄,並回應發送端一個ICMP封包

使用範例

-j ACCEPT 允許

-j DROP 將封包丟棄

意義

以特定的方式來處理符合條件的封包


發佈了98 篇原創文章 · 獲贊 69 · 訪問量 37萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章