iptables是一種靜態的基於三層過濾的工具,主要實現IP 信息包過濾,可用於添加、編輯和除去規則,這些規則是在做信息包過濾決定時,防火牆所遵循和組成的規則。
iptables包含4個表,5個鏈。其中表是按照對數據包的操作區分的,鏈是按照不同的Hook點來區分的,表和鏈實際上是netfilter的兩個維度。
iptables 的使用規則
iptables 的規則應用:
1. 接收來自制定ip地址的所有流入的數據包
Iptables -A INPUT -s 203.25.55.10 –j ACCEP
2. 只接受來自指點端口(服務)的數據包
Iptables -A INPUT --dport 80 –j ACCEPT
3. 允許轉發所有到本地smtp服務器的數據包
Iptables -A FORWARD -p tcp -d 192.168.1.1 --dpot smtp -i eth0 -j ACCEPT
4. 允許轉發所有到本地的udp數據包
Iptables –A FORWARD –p udp –d 192.136.31.1 -i eth0 -j ACCEPT
5. 拒絕發往www服務器的客戶端的請求數據包
Iptables -A -p tcp -d 192.168.1.1 --dport www -I eth0 -j REJECT
6. 允許來源爲指定端口的tcp數據包進入
Iptables –A INPUT –p tcp –m multiport --source-port 21,53,80,25,110 ACCEPT
8.丟掉syn和ack標誌位置位的數據包
Iptables –A INPUT –p tcp --tcp-flags ALL syn,ack DROP
2)碎片的檢測和流量的控制
因爲在tcp/ip的網絡中,鏈路層有最大傳輸單元MTU這個特性,它限制了數據幀的最大長度,大於這個數的時候就會對數據包進行分片操作,分片後悔被防火牆所阻止,進而影響到接收端對這些碎片的還原,影響到信息的完整性和可用性問題,所以防火牆的允許碎片通過的規則:
#iptables -A FORWARD -p tcp -f -s 172.168.96.0/24 -d 172.168.97.18 -j ACCEPT
其中-f參數指定了第二個及以後的ip碎片將有防火牆處理通過,如不加,則可能造成對第二個及其以後的ip碎片進行攔截,
速率限制
提供了健全的速率控制機制,主要用來限制由外向內的單位時間內通過數據包個數,這樣做可以儘可能的抑制拒絕服務***或是分佈式拒絕***,進而保護網絡中數據包的個數。
Iptables -A INPUT -m limit --limit 200/second
Iptables –A INPUT –m limit --limit 10000/minute
設定速率後,還可以設定將超過該限制所觸發的一些處理事件直接丟棄,比如如果速率超過200限制後,直接對後續數據包進行丟棄。
Iptables -A INPUT –m limit --limit-burst 200