linux防火墙iptables详细教程

2020-01-30 12:26:26王振洲

按包速率匹配   (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