天天看點

IPtables之三:顯式擴充規則

對于顯式擴充與隐式擴充的差別,先分析以下2條規則

規則1:iptables -t filter -A INPUT -s 192.168.1.0/24 -d 172.16.100.1 -p udp –dport 53 -j DROP

規則2:iptables -t filter -A INPUT -s 192.168.1.0/24 -d 172.16.100.1 -p udp -m udp –dport 53 -j DROP

相對于規則1,在規則2上使用了-m選項,明确指定了對udp進行擴充,擴充端口為53

而對于隐式擴充,不需要使用-m選項進行明确指定,對于tcp而言,可以擴充tcp的标志位、源和目标端口,對于udp,可以擴充源和目标端口,對于icmp,可以擴充request,replay等不同資料包

下面講講幾個常用的顯式擴充:

顯式擴充之一 state:連接配接狀态 

-m state –-state {NEW|ESTABLISHED|RELATED|INVALID|}

在第一篇博文中提到過:包過濾防火牆可以分為“狀态檢測型”和“簡單包過濾型” 

接下來介紹下用iptables實作狀态檢測包過濾

介紹tcp以下4種狀态的連接配接

    1.NEW 

        即3次握手的第一次,一次新的請求

iptable -A OUTPUT -o eth0 -m state --state NEW -j DROP 

分析這條規則,其中-m表示擴充加載state狀态檢測子產品,--state NEW表示檢測tcp的第一次握手,整條規則的作用就是拒絕從eth0網卡發出的新的tcp連接配接。

    2.ESTABLISHED 

        二次握手以後,連接配接斷開之前的連接配接

    3.RELATED 

        相關連的狀态,可解決控制ftp連接配接這種超麻煩的協定

    4.INVALID 

        無法識别的狀态

應用案例: 

結合NEW和ESTABLISHED這2種狀态,實作以下規則 

iptables -A INPUT -d 192.168.1.1 -p tcp –dport 22 -m state –-state NEW,ESTABLISHED -j ACCEPT 

允許外面向主機發起的新的ssh請求

iptables -A INPUT -d 192.168.1.1 -p tcp -dport 80 -m state –-state NEW,ESTABLISHED -j ACCEPT 

允許外面向主機發起的新的web連接配接

iptables -A OUTPUT -s 192.168.1.1 -p tcp sport 22 -m state -–state ESTABLISHED -j ACCEPT 

處于連接配接狀态時,允許主機發往外部的ssh資料包

iptables -A OUTPUT -s 192.168.1.1 -p tcp sport 80 -m state –-state ESTABLISHED -j ACCEPT 

處于連接配接狀态時,允許主機發往外部的web資料包

iptables -P INTUP DROP 

拒絕其它所有進來的資料包

iptables -P OUTPUT DROP 

拒絕其它所有出去的資料包 

這幾條規則可以用在web伺服器上,隻允許客戶向伺服器發出ssh和web請求的通路,伺服器不能主動向外發出任何連接配接,避免伺服器成為黑客的跳闆

顯式擴充之二 mport:多端口比對 

-m {mport|multiport} 

    --source-ports 

    --destination-ports 

    --ports

此擴充可以指定不連續的端口,在這裡優化以上的案例來說明其作用 

iptables -A INPUT -d 192.168.1.1 -m mport –-destination-ports 22,80,443 -m state –-state NEW,ESTABLISHED -j ACCEPT

iptables -A OUTPUT -s 192.168.1.1 -m mport –-source-ports 22,80,443 -m state –- state ESTABLISHED -j ACCEPT

iptables -P OUTPUT DROP

一次可以添加多個端口,端口之間用逗号隔開

顯式擴充之三iprange:多IP比對 

-m iprange 

    –-src-range 

    –-dst-range

這裡用一個簡單的例子來說明

iptables -A INPUT -d 192.168.1.1 -m iprange –src-range 192.168.0.1-192.168.0.100 -p tcp –-dport 80 -j DROP 

拒絕192.168.0.1-192.168.0.100這段位址通路192.168.1.1的web服務

顯式擴充之四connlimit:并發連接配接請求個數限制 

-m connlimit 

    –-connlimit-above

顯式擴充之五limit:速率限制 

-m limit 

    –-limit 平均速率 

    –-limit-burst 突發速率 

iptables -A INPUT -d 192.168.1.1 -p tcp –dport 80 -m limit –-limit 10/second –-limit-burst 30  -j ACCEPT 

此條規則限制了每秒10個資料包,突發最大速率是每秒30個資料包

顯式擴充之六limit:時間限制 

-m time 

    –-timestart 

    –-timestop 

    --days 

    --datestart 

    --datestop

區分以下兩種寫法來了解這幾個選項的意義

iptables -A INPUT  -d 192.168.1.1 -p tcp –-dport 80 -m time –-datestart 2012:07:20:08:30:00 –-datestop  2012:07:20:14:30:00 -j ACCEPT 

從7月20号 8:30到7月30号14:30允許通路本機web服務

iptables -A input -d 192.168.1.1 -p tcp –-dport 80 -m time –- timestart 08:30:00 –-timestop 14:30:00 –-datestart 2012:07:20 –-datestop 2012:07:30 -j ACCEPT 

從7月20号到7月30号 每天的8:30—14:30時分允許通路本機web服務

顯式擴充之七string:字元限制(對中文字元比對有限) 

-m string 

    –-algo bm|kmp 指定字元比對算法 

    --string 指定字元

iptables -A out -s 172.16.100.1 -p tcp –-sport 80 -m string –-algo kmp –string “baidu.com” -j DROP 

包含baidu.com的資料包都拒絕

本文轉自lustlost 51CTO部落格,原文連結:http://blog.51cto.com/lustlost/940735,如需轉載請自行聯系原作者

繼續閱讀