1.multiport
iptables -I INPUT -s 172.16.0.0/16 -d 172.16.6.14 -p tcp -m multiport --dport 22,80 -j ACCEPT
iptables -I OUTPUT -d 172.16.0.0/16 -s 172.16.6.14 -p tcp -m multiport --dport 22,80 -j ACCEPT
2.iprange擴展
指明連續的(但一般是不能擴展整個網絡)ip地址範圍時使用
iptables -I INPUT -d 172.16.6.14 -p tcp -m multiport --dports 22:23,80 -m iprange --src-range 172.16.6.1-172.16.6.100 -j ACCEPT
iptables -I OUTPUT -s 172.16.6.14 -p tcp -m multiport --sports 22:23,80 -m iprange --dst-range 172.16.6.1-172.16.6.100 -j ACCEPT
3.string擴展
檢測報文中出現的字符串:
--algo:bm或kmp
iptables -I OUTPUT -m string --algo bm --string 'test' -j REJECT
4、time擴展
根據報文到達的時間與指定的時間範圍進行匹配;
--datestart
--datestop
--timestart
--timestop
--monthdays
--weekdays
5、connlimit擴展
根據每客戶端IP(也可以是地址塊)做併發連接數數量匹配;
--connlimit-above n:連接的數量大於n
--connlimit-upto n: 連接的數量小於等於n
6、limit擴展
基於收發報文的速率做檢查;
令牌桶過濾器
--limit rate[/second|/minute|/hour|/day]
--limit-burst number
7、state擴展
根據連接追蹤機制檢查連接的狀態;
調整連接追蹤功能所能夠容納的最大連接數量:
/proc/sys/net/nf_conntrack_max
已經追蹤到並記錄下的連接:
/proc/net/nf_conntrack
不同協議或連接類型追的時長:
/proc/sys/net/netfilter/
可追蹤的連接狀態:
NEW:新發出的請求;連接追蹤模板中不存此連接相關的信息條目,因此,將其識別爲第一次發出的請求;
ESTABLISHED:NEW狀態之後,連接追蹤模板中爲其建立的條目失效之前期間內所進行的通信的狀態;
RELATED:相關的連接;如ftp協議的命令連接與數據連接之間的關係;
INVALIED:無法識別的連接;
--state STATE1,STATE2,...
問題:如何開放被動模式的ftp服務?
(1) 裝載ftp追蹤時的專用的模塊:
# modprobe nf_conntrack_ftp
(2) 放行請求報文:
命令連接:NEW, ESTABLISHED
數據連接:RELATED, ESTABLISHED
# iptables -A INPUT -d LocalIP -p tcp --dport 21 -m state --state NEW,ESTABLISHED -j ACCEPT
# iptables -A INPUT -d LocalIP -p tcp -m state --state RELATED,ESTABLISHED -j ACCEPT
(3) 放行響應報文:
ESTABLISEHD
# iptables -A OUTPUT -s LocalIP -p tcp -m state --state ESTABLISHED -j ACCEPT
如何保存及重載規則:
保存規則至指定文件:
iptables-save > /PATH/TO/SOMEFILE
從指定文件重載規則:
iptables-restore < /PATH/FROM/SOMEFILE
CentOS 6:
service iptables save
iptables-save > /etc/sysconfig/iptables
service iptables restart
iptables-restore < /etc/sysconfig/iptables
CentOS 7:
引入了新的iptables前端管理服務工具:firewalld
firewalld-cmd
firewalld-config