在基于 Red Hat 的 Linux 上,iptables 带有某些默认规则。清理它们并从头开始是个好主意。
在我们开始学习如何使用 iptables 添加防火墙规则之前,了解如何清理所有现有的默认规则并从头开始一切会很有帮助。
IPTables 中的默认规则
如下图启动iptables防火墙。
- # service iptables status
- Firewall is stopped.
-
- # service iptables start
- Applying iptables firewall rules: [ OK ]
- Loading additional iptables modules: ip_conntrack_netbios_n[ OK ]
可以看到下面的默认规则:iptables -> Filter Table -> RH-Firewall-1-INPUT Chain,如下图。您还可以使用 'iptables –list' 查看所有规则。
- # service iptables status
- Table: filter
- Chain INPUT (policy ACCEPT)
- num target prot opt source destination
- 1 RH-Firewall-1-INPUT all -- 0.0.0.0/0 0.0.0.0/0
-
- Chain FORWARD (policy ACCEPT)
- num target prot opt source destination
- 1 RH-Firewall-1-INPUT all -- 0.0.0.0/0 0.0.0.0/0
-
- Chain OUTPUT (policy ACCEPT)
- num target prot opt source destination
-
- Chain RH-Firewall-1-INPUT (2 references)
- num target prot opt source destination
- 1 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
- 2 ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0 icmp type 255
- 3 ACCEPT esp -- 0.0.0.0/0 0.0.0.0/0
- 4 ACCEPT ah -- 0.0.0.0/0 0.0.0.0/0
- 5 ACCEPT udp -- 0.0.0.0/0 224.0.0.251 udp dpt:5353
- 6 ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:631
- 7 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:631
- 8 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
- 9 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
- 10 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
IPTables 规则存储在 /etc/sysconfig/iptables
请注意,iptables 规则存储在 /etc/sysconfig/iptables 文件中。如果您查看此文件,您将看到所有默认规则。
- # cat /etc/sysconfig/iptables
- # Firewall configuration written by system-config-securitylevel
- # Manual customization of this file is not recommended.
- *filter
- :INPUT ACCEPT [0:0]
- :FORWARD ACCEPT [0:0]
- :OUTPUT ACCEPT [0:0]
- :RH-Firewall-1-INPUT - [0:0]
- -A INPUT -j RH-Firewall-1-INPUT
- -A FORWARD -j RH-Firewall-1-INPUT
- -A RH-Firewall-1-INPUT -i lo -j ACCEPT
- -A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT
- -A RH-Firewall-1-INPUT -p 50 -j ACCEPT
- -A RH-Firewall-1-INPUT -p 51 -j ACCEPT
- -A RH-Firewall-1-INPUT -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT
- -A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT
- -A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT
- -A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
- -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
- -A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
- COMMIT
暂时删除所有防火墙规则
使用 'iptables –flush' 选项暂时删除所有规则。
- # iptables --flush
-
- # iptables --list
- Chain INPUT (policy ACCEPT)
- target prot opt source destination
-
- Chain FORWARD (policy ACCEPT)
- target prot opt source destination
-
- Chain OUTPUT (policy ACCEPT)
- target prot opt source destination
-
- Chain RH-Firewall-1-INPUT (0 references)
- target prot opt source destination
在“iptables –flush”之后,如果您重新启动 iptables,您将再次看到所有默认规则。所以,–flush 只是暂时的。
- # service iptables stop
-
- # service iptables start
-
- # iptables --list
永久删除所有默认防火墙规则
在删除所有防火墙规则之前,您将在 /etc/sysconfig/iptables 文件中看到以下内容。
- # cat /etc/sysconfig/iptables
- # Firewall configuration written by system-config-securitylevel
- # Manual customization of this file is not recommended.
- *filter
- :INPUT ACCEPT [0:0]
- :FORWARD ACCEPT [0:0]
- :OUTPUT ACCEPT [0:0]
- :RH-Firewall-1-INPUT - [0:0]
- -A INPUT -j RH-Firewall-1-INPUT
- -A FORWARD -j RH-Firewall-1-INPUT
- -A RH-Firewall-1-INPUT -i lo -j ACCEPT
- -A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT
- -A RH-Firewall-1-INPUT -p 50 -j ACCEPT
- -A RH-Firewall-1-INPUT -p 51 -j ACCEPT
- -A RH-Firewall-1-INPUT -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT
- -A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT
- -A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT
- -A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
- -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
- -A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
- COMMIT
First, flush all these rules temporarily, as we discussed above.
首先,正如我们上面讨论的那样,暂时刷新所有这些规则。
# iptables --flush
接下来,使用“service iptables save”将当前的 iptables(它是空的,因为我们刚刚刷新它)保存到 /etc/sysconfig/iptables 文件以供永久使用
- # service iptables save
- Saving firewall rules to /etc/sysconfig/iptables: [ OK ]
最后,查看 /etc/sysconfig/iptables 以确保没有规则。
- # cat /etc/sysconfig/iptables
- # Generated by iptables-save v1.3.5 on Thu Oct 28 08:44:01 2020
- *filter
- :INPUT ACCEPT [102:7668]
- :FORWARD ACCEPT [0:0]
- :OUTPUT ACCEPT [78:8560]
- COMMIT
- # Completed on Thu Oct 28 08:44:01 2020
现在,如果您停止并启动 iptables,您将不再看到默认规则。因此,请记住执行“service iptables save”以使“iptables –flush”永久化。
- # service iptables stop
-
- # service iptables start
-
- # iptables --list