扩展模块一:multiport
作用:可以指定多个离散的源端口或者目标端口,也可以指定连续的端口
//离散的
iptables -I INPUT -s 192.168.247.170 -p tcp -m multiport --dports 22,36,80 -j DROP
80到88端口,这个功能tcp模块也能实现连续的
iptables -A INPUT -s 192.168.247.170 -p tcp -m multiport --dports 22,80:88 -j DROP
模块二:iprange
作用:可以指定连续的ip。
//--src-range
iptables -A INPUT -p tcp -m iprange --src-range 192.168.247.150-192.168.247.170 -j ACCEPT
//--dst-range
iptables -A INPUT -p tcp -m iprange --dst-range 192.168.247.180-192.168.247.190 -j ACCEPT
模块三:string
作用:如果报文中包含对应的字符串,则匹配。
//假如我在网站admin目录下配置了Auth访问认证功能,要拒绝凡是含有Auth字符串的ip访问:
iptables -I INPUT -m string --algo bm --string "Auth" -j REJECT
//--algo指定匹配的算法,有bm和kmp
模块三:time
作用:指定时间内,匹配
//比如限制公司员工早上10点到11点不能浏览网页
iptables -I OUTPUT -p tcp -m multiport --dports 80,443 -m time --timestart 10:00:00 --timestop 11:00:00 -j REJECT
//timestart开始时间,timestop结束时间
//周六日不能看网页
iptables -I OUTPUT -p tcp --dport 80 -m time --weekdays 6,7 -j REJECT
模块四:connlimit
作用:限制每个ip连接到server端的数量,不用指定ip,默认对单ip的并发连接数限制
//限制同一个ip的ssh登入数量
iptables -I INPUT -p tcp --dport 22 -m connlimit --connlimit-above 2 -j REJECT
//--connlimit-above 连接数量
限制某个网段的链接数量
//限制子网掩码为27的网段只能连接10台
iptables -I INPUT -p tcp --dport 22 -m connlimit --connlimit-above 10 --connlimit-mask 27 -j REJECT
模块五:limit
作用:限速,限制报文到达的速度
//限制1分钟10个,也就是6秒放行一个
iptables -I INPUT -p icmp -m limit --limit 10/minute -j ACCEPT
iptables -A INPUT -p icmp -j REJECT
注意,该模块有一个默认参数--limit-burst,默认值为5。该参数的意思相当于银行柜台的数量,当前5个包来的时候,柜台都是空的,所有前五个包都会放行,后面的人需要排队。
模块六:tcp模块
tcp模块除了匹配添加–dport,–sport之外还有其他的匹配参数:
–tcp-flags:tcp协议中的标志位。这个和tcp的三次握手有关,第一次握手客户端发送请求会发送一个seq序列号,此时服务端收到之后打开一看seq为1。然后服务端恢复客户端,会发送ack确认号和seq序列号,客户端收到之后打开一看ack=1,seq=1,然后客户端再恢复一个seq给服务端,seq=1。
通过上面的过程可以匹配标志位。
//匹配第一次握手的报文
iptables -I INPUT -p tcp -m tcp --dport 22 --tcp-flags ALL SYN -j REJECT
//ALL SYN表示只有SYN为1
//匹配第二次
iptables -I INPUT -p tcp -m tcp --dport 22 --tcp-flags ALL SYN,ACK -j REJECT
模块七:ICMP
ICMP:互联网控制报文协议。icmp报文类型比较多,这里之说用的最多的一种ping。
//禁止别人ping我们的主机,我们可以ping别人的
iptables -I INPUT -p icmp -m icmp --icmp-type 8/0 -j REJECT
--icmp-type:表示icmp的类型为8,code为0。
模块七:state
常用:
//自动处理响应报文
iptables -I INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT