1. 程式人生 > >iptables(3)擴展

iptables(3)擴展

string iptables time limit connlimit

顯式擴展:必須顯式指明使用的擴展模塊(rpm-ql iptables | grep "\.so")

CentOS6: man iptables

CentOS7: man iptables-extensions

1、multiport擴展

以離散方式定義多端口匹配;最多指定15個端口;

[!]--source-ports,--sports port[,port|,port:port]...:指明多個源端口;

[!]--destination-ports,--dports port[,port|,port:port]...:指明多個離散的目標端口;

[!]--ports port[,port|,port:port]...

iptables -I INPUT -s 172.16.0.0/16 -d 172.16.100.1 -p tcp -m multiport--dport 22,80 -j ACCEPT

iptables -I OUTPUT -s 172.16.0.0/16 -d 172.16.100.1 -p tcp -m multiport--sport 22,80 -j ACCEPT

2、iprange擴展

[!]--src-range from[-to]:指明連續的源IP地址範圍;

[!]--dst-range from[-to]:指明連續的目標IP地址範圍;

iptables -I INPUT -d 172.16.100.9 -p tcp -m multiport --dports 22:23,80-m iprange --src-range 172.16.100.1-172.16.100.120 -j ACCEPT

iptables -I OUTPUT -s 172.16.100.9 -p tcp -m multiport --sports 22:23,80-m iprange --dst-range 172.16.100.1-172.16.100.120 -j ACCEPT

3、string擴展

檢查報文中出現的字符串;

--algo{bm|kmp}

bm= Boyer-Moore

kmp= Knuth-Pratt-Morris

[!]--string pattern

iptables -I OUTPUT -m string --algo bm --string ‘movie‘ -j REJECT

4、time擴展

根據報文到達的時間與指定的時間範圍進行匹配;

--datestart

--datestop

--timestart

--timestop

--monthdays

--weekdays

iptables -I INPUT -d 172.16.100.1 -p tcp --dport 80 -m time --timestart00:00--timestop 08:00 -j REJECT

5、connlimit擴展(centos7)

根據每客戶端IP(也可以是地址塊)做並發連接數數量匹配;

--connlimit-aboven:連接的數量大於n

--connlimit-upton: 連接的數量小於等於n

6、limit擴展

基於收發報文的速率做檢查;

令牌桶過濾器

--limitrate[/second|/minute|/hour|/day]

--limit-burstnumber

iptables -I INPUT -d 172.16.100.1 -p icmp --icmp-type 8 -m limit--limit-burst 5 --limit 30/minute -j ACCEPT

iptables -I OUTPUT -s 172.16.100.1 -p icmp --icmp-type 0 -j ACCEPT

7、state擴展

根據連接追蹤機制檢查連接的狀態;

調整連接追蹤功能所能夠容納的最大連接數量:

/proc/sys/net/nf_conntrack_max

已經追蹤到並記錄下的連接:

/proc/net/nf_conntrack

不同協議或連接類型追的時長:

/proc/sys/net/netfilter/

可追蹤的連接狀態:

NEW:新發出的請求;連接追蹤模板中不存此連接相關的信息條目,因此,將其識別為第一次發出的請求;

ESTABLISHED:NEW狀態之後,連接追蹤模板中為其建立的條目失效之前期間內所進行的通信的狀態;

RELATED:相關的連接;如ftp協議的命令連接與數據連接之間的關系;

INVALIED:無法識別的連接;

--stateSTATE1,STATE2,...

iptables -I INPUT -d 172.16.100.1 -p tcp --dport 22 -m state --stateNEW,ESTABLISHED -j ACCEPT

iptables -I OUTPUT -s 172.16.100.1 -p tcp --sport 22 -m state --stateNEW,ESTABLISHED -j ACCEPT

iptables -I INPUT 2 -s -d 172.16.100.1 -p tcp -m multiport --dports2,80-m state --state NEW -j ACCEPT

本文出自 “勤能補拙” 博客,請務必保留此出處http://echoroot.blog.51cto.com/11804540/1964088

iptables(3)擴展