1、基本匹配
[!] -s #检查报文中源IP地址是否符合此处指定的地址范围,!表示取反
[!] -d #检查报文中目的IP地址是否符合此处指定的地址范围,!表示取反
-p #检查报文中的协议,即ip首部的protocol所标识的协议
-i #报文的流入接口,仅能用于input、prerouting、forward链上
-o #报文的流出接口,仅能用于output、postrouting、forward链上
2、扩展匹配
格式为-m match_name –spec_options,其中match_name为扩展名,–spec_options为扩展的选项,有隐式扩展和显式扩展两类
3、显式扩展
1)multiport
iptables -I INPUT -d 172.16.100.7 -p tcp -m multiport –dports 22,80 -j ACCEPT;
iptables -I OUTPUT -s 172.16.100.7 -p tcp -m multiport –sports 22,80 -j ACCEPT
备注:
规则管理
-A,追加新规则于指定链的尾部
-I,插入新规则于指定链的指定位置,默认为首部
-D,根据规则编号删除规则
2)iprange
iptables -I INPUT 2 -d 172.16.8.20 -p tcp –dport 22 -m iprange –src-range 172.16.8.10-172.16.8.19 -j DROP
禁止172.16.8.10-172.16.8.19这些ip远程登录172.16.8.20主机
3)string
iptables -A OUTPUT -p tcp –dport 80 -m string -algo kmp –string ‘sex’ -j DROP
当服务端返回数据报文检查到有关键字’sex’时,则丢弃该报文,可用于web敏感词过滤
备注:
–algo {bm|kmp}:字符匹配查找时使用算法
4)time
iptables -A FORWARD -m time –timestart 09:00 –timestop 18:00 -j DROP
每天固定时间段匹配
iptables -A FORWARD -m time –timestart 09:00 –timestop 18:00 –weekdays Mon,Tue,Wed -j DROP
按周固定时间段匹配
iptables -A FORWARD -m time –datestart 2017-10-01T00:00:00 –datestop 2017-10-31T23:59:59 -j DROP
按固定日期匹配
5)connlimit
iptables -I FORWARD -p tcp –syn –dport 80 -m connlimit –connlimit-above 10 –connlimit-mask 24 -j DROP
只允许每组C类ip同时10个80端口转发
6)limit
iptables -I INPUT -d 172.16.8.20 -p icmp –icmp-type 8 -m limit –limit-burst 3 –limit 20/minute -j ACCEPT;
iptables -A INPUT -d 172.16.8.20 -p icmp -j REJECT
其结果为:
备注:
–icmp-type,常用数字表示其类型:
0:echo-reply(回显应答,即ping应答)
8:echo-request(回显请求,即ping请求)
7)state
iptables -I INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT;
iptbales -A INPUT -d 172.16.8.20 -p tcp -m multiport –dports 21:22,80 -m state –state NEW -j ACCEPT;
iptables -I OUTPUT -m state –state ESTABLISHED -j ACCEPT
放行SSH,FTP(被动模式),WEB服务(INPUT,OUTPUT,FORWARD默认策略均为DROP)