-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,不建议,容易出现“自杀现象” 规则的最后定义规则做为默认策略,推荐使用,放在最后一条
以上命令都是临时生效,持久保存规则需要如下操作:
方法一:
# 保存规则 [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