Iptables

80埠沒有被封鎖,為什麼我不能訪問我的網站?

  • September 13, 2020

在我的 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 中,第三條規則是“全部接受 – 0.0.0.0/0 0.0.0.0/0”,這意味著它將接受到所有埠的所有連接。我是不是誤會了什麼?

是的,你錯過了一個重要的細節。但這不是你的錯;這是非常糟糕的記錄,顯然並不為人所知。

該命令有一個重大的設計缺陷:除非您使用命令行選項iptables,否則它實際上不會顯示完整的防火牆規則。-v

如果您重複 iptables 命令並添加-v,您將看到該規則接受名為 的介面上的所有流量lo,即所有 localhost 流量。

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

由於iptables現在已棄用,並且該缺陷基本上永遠存在,因此不太可能改變。

引用自:https://serverfault.com/questions/1033691