我更改了 INPUT 链的策略,添加了以下命令。
iptables -P INPUT DROP
在我插入下一个规则以允许来自网络端口 80 和 443 的输入数据包后,但端口仍然关闭(例如,我不能使用 Web 浏览器)。
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
输出iptables -L
:
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT tcp -- anywhere anywhere tcp dpt:http
ACCEPT tcp -- anywhere anywhere tcp dpt:https
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
如何允许来自 HTTP 和 HTTPS 端口的网络流量?
您需要允许端口 80 和 443 上的传入请求,这已使用两个接受规则完成。
您还需要允许
ESTABLISHED
流量,但这可以在您的中跳过,因为您将OUTPUT
策略设置为ACCEPT
.您的规则似乎足以仅允许传入请求。您将无法启动与其他计算机的连接。这是因为您拒绝所有
INPUT
流量(包括ESTABLISHED
连接)。要解决此问题,您可以添加如下规则:为了帮助调试您的问题,您可以尝试几件事:
tcpdump
捕获流量以确认其丢弃位置。INPUT
将策略更改为ACCEPT
临时以确认它是否与您的防火墙规则有关。iptables -L -n -v
显示每个规则的命中可以帮助您确认您的规则是否匹配某些流量(当您尝试访问允许的端口时)。这仅在非繁忙服务器上有用。LOG
iptables 中的 target 在您的接受规则之前记录数据包,以确认数据包源/目标 IP 和端口符合您的期望。