按包速率匹配 (limit)
多端口匹配 (multiport)
3.5.1 state
-m state --state 状态
状态:NEW、RELATED、ESTABLISHED、INVALID
NEW:有别于 tcp 的 syn
ESTABLISHED:连接态
RELATED:衍生态,与 conntrack 关联(FTP)
INVALID:不能被识别属于哪个连接或没有任何状态
例如:
iptables -A INPUT -m state --state RELATED,ESTABLISHED
-j ACCEPT
3.5.2 mac
-m mac --mac-source MAC
匹配某个 MAC 地址
例如:
iptables -A FORWARD -m --mac-source xx:xx:xx:xx:xx:xx
-j DROP
阻断来自某 MAC 地址的数据包,通过本机
注意:
MAC 地址不过路由,不要试图去匹配路由后面的某个 MAC 地址
3.5.3 limit
-m limit --limit 匹配速率 [--burst 缓冲数量]
用一定速率去匹配数据包
例如:
iptables -A FORWARD -d 192.168.0.1 -m limit --limit 50/s
-j ACCEPT
iptables -A FORWARD -d 192.168.0.1 -j DROP
注意:
limit 仅仅是用一定的速率去匹配数据包,并非 “限制”
3.5.4 multiport
-m multiport <--sports|--dports|--ports> 端口1[,端口2,..,端口n]
一次性匹配多个端口,可以区分源端口,目的端口或不指定端口
例如:
iptables -A INPUT -p tcp -m multiports --ports
21,22,25,80,110 -j ACCEPT
注意:
必须与 -p 参数一起使用
4. 实例分析
单服务器的防护
如何做网关
如何限制内网用户
内网如何做对外服务器
连接追踪模块
4.1 单服务器的防护
弄清对外服务对象
书写规则
网络接口 lo 的处理
状态监测的处理
协议 + 端口的处理
实例:一个普通的 web 服务器
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -p tcp -m multiport 22,80 -j ACCEPT
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -P INPUT DROP
注意:确保规则循序正确,弄清逻辑关系,学会时刻使用 -vnL
4.2 如何做网关
弄清网络拓扑
本机上网
设置 nat
启用路由转发
地址伪装 SNAT/MASQUERADE
实例:ADSL 拨号上网的拓扑
echo "1" > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o ppp0
-j MASQUERADE
4.3 如何限制内网用户
过滤位置 filer 表 FORWARD 链
匹配条件 -s -d -p --s/dport
处理动作 ACCEPT DROP










