链管理类:
-N:new, 自定义一条新的规则链
-E:重命名自定义链;引用计数不为0的自定义链不能够被重命名,也不能被删除
-X:delete,删除自定义的空的规则链
-P:Policy,设置默认策略;对filter表中的链而言,其默认策略有:ACCEPT:接受, DROP:丢弃
范例:自定义一条新的规则链chain
[root@localhost ~]# iptables -N web_chain
范例:在nat表中自定义一条新的规则链
[root@localhost ~]# iptables -N web_chain -t nat
范例:删除自定义空的规则链
[root@localhost ~]# iptables -X web_chain -t nat
范例:重命名自定义链
[root@localhost ~]# iptables -E web_chain WEB_CHAIN
范例:添加一条规则到自定义链
[root@localhost ~]# iptables -A WEB_CHAIN -s 172.31.0.7 -p tcp -m multiport --dports 80,443 -j REJECT
范例:关联自定义链chain
[root@localhost ~]# iptables -A INPUT -s 172.31.0.0/16 -j WEB_CHAIN
范例:创建自定义链实现WEB的访问控制
[root@localhost ~]# iptables -N WEB_CHAIN
[root@localhost ~]# iptables -A INPUT -s 172.31.0.0/16 -j WEB_CHAIN
[root@localhost ~]# iptables -A WEB_CHAIN -p icmp -j ACCEPT
[root@localhost ~]# iptables -I WEB_CHAIN 2 -s 172.31.0.7 -j RETURN
# 效果如下:
[root@localhost ~]# iptables -vnL
Chain INPUT (policy ACCEPT 30 packets, 1980 bytes)
pkts bytes target prot opt in out source destination
216 14308 WEB_CHAIN all -- * * 172.31.0.0/16 0.0.0.0/0
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 16 packets, 1568 bytes)
pkts bytes target prot opt in out source destination
Chain WEB_CHAIN (1 references)
pkts bytes target prot opt in out source destination
0 0 REJECT tcp -- * * 172.31.0.7 0.0.0.0/0 multiport dports 80,443 reject-with icmp-port-unreachable
0 0 RETURN all -- * * 172.31.0.7 0.0.0.0/0
0 0 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0
范例: 删除自定义链3个步骤
#无法直接删除自定义链,删除自定议链和创建的顺序相反
[root@localhost ~]# iptables -X WEB_CHAIN
iptables: Too many links.
1)[root@localhost ~]# iptables -F WEB_CHAIN
[root@localhost ~]# iptables -vnL
Chain INPUT (policy ACCEPT 6 packets, 428 bytes)
pkts bytes target prot opt in out source destination
350 23978 WEB_CHAIN all -- * * 172.31.0.0/16 0.0.0.0/0
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 4 packets, 464 bytes)
pkts bytes target prot opt in out source destination
Chain WEB_CHAIN (1 references)
pkts bytes target prot opt in out source destination
# 清空默认的表filter
2)[root@localhost ~]# iptables -F
3)[root@localhost ~]# iptables -X WEB_CHAIN
# 查看执行后的效果
[root@localhost ~]# iptables -vnL
Chain INPUT (policy ACCEPT 10 packets, 724 bytes)
pkts bytes target prot opt in out source destination
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 6 packets, 680 bytes)
pkts bytes target prot opt in out source destination
规则优化最佳实践
1. 安全放行所有入站和出站的状态为ESTABLISHED状态连接,建议放在第一条,效率更高
2. 谨慎放行入站的新请求
3. 有特殊目的限制访问功能,要在放行规则之前加以拒绝
4. 同类规则(访问同一应用,比如:http ),匹配范围小的放在前面,用于特殊处理
5. 不同类的规则(访问不同应用,一个是http,另一个是mysql ),匹配范围大的放在前面,效率更
高
6. 应该将那些可由一条规则能够描述的多个规则合并为一条,减少规则数量,提高检查效率
7. 设置默认策略,建议白名单(只放行特定连接)
iptables -P,不建议,容易出现“自杀现象”
规则的最后定义规则做为默认策略,推荐使用,放在最后一条
iptables保存规则
以上命令都是临时生效,持久保存规则需要如下操作:
方法一:
# 保存规则
[root@localhost ~]# iptables-save > /home/iptables.ruls
# 执行导入保存的规则
[root@localhost ~]# iptables-restore < /home/iptables.ruls
写入开机启动配置
[root@localhost ~]# vim /etc/rc.d/rc.local
iptables-restore < /home/iptables.ruls
# 加执行权限
[root@localhost ~]# chmod +x /etc/rc.d/rc.local
方法二:(CentOS7,8)
# 安装
[root@localhost ~]# yum install iptables-services
添加到配置文件里面
[root@localhost ~]# iptables-save > /etc/sysconfig/iptables
启动
[root@localhost ~]# systemctl start iptables
设置开机启动
[root@localhost ~]# systemctl enable --now iptables