为什么 80 端口没有被封锁,我无法访问我的网站?

为什么 80 端口没有被封锁,我无法访问我的网站?

在我的 VPS(CentOS 7)上,默认的 iptables 是:

Chain INPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED
ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            state NEW tcp dpt:22
REJECT     all  --  0.0.0.0/0            0.0.0.0/0            reject-with icmp-host-prohibited

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
REJECT     all  --  0.0.0.0/0            0.0.0.0/0            reject-with icmp-host-prohibited

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

我无法访问使用 Apache/2.4.6 设置的网站,浏览器显示:“连接已重置”。

如果我使用“iptables -I INPUT -p tcp --dport=80 -j ACCEPT”在 iptables 中插入一条规则以接受端口 80 上的 tcp 连接,则一切正常,可以毫无问题地访问该网站。iptables 为:

Chain INPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:80
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED
ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            state NEW tcp dpt:22
REJECT     all  --  0.0.0.0/0            0.0.0.0/0            reject-with icmp-host-prohibited

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
REJECT     all  --  0.0.0.0/0            0.0.0.0/0            reject-with icmp-host-prohibited

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

我想知道为什么我应该添加该规则,因为在旧版 iptables 中,第三条规则是“ACCEPT all -- 0.0.0.0/0 0.0.0.0/0”,这意味着它将接受所有端口的所有连接。我误解了什么吗?

答案1

是的,你错过了一个重要的细节。但这不是你的错;这方面的记录很差,显然也不为人所知。

iptables命令有一个重大的设计缺陷:除非您使用命令行选项,否则它实际上并不会显示完整的防火墙规则-v

如果您重复 iptables 命令并添加,-v您将看到该规则接受名为的接口上的所有流量lo,即所有本地主机流量。

target     prot opt in     out     source               destination 
ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0           

由于iptables现已弃用,并且该缺陷基本上一直存在,因此不太可能改变这种情况。

相关内容