需要在防火墙上打开哪些端口才能访问 Internet?

Ces*_*ian 8 firewall dns ping http port-forwarding

假设我有一个防火墙,可以阻止来自所有来源/目的地的所有端口。

我需要打开哪些端口才能成功运行:

ping google.com
Run Code Online (Sandbox Code Playgroud)

...还有我必须打开的任何其他端口才能通过浏览器浏览 google.com 吗?

我试过打开端口 53(dns) 80(http) 和 443(https);这还不够,我正在使用 iptables 但我不是在询问如何在 iptables 上配置它,我只是询问需要打开哪些端口,而不管您可能使用的是哪个基于端口的防火墙。

Gil*_*il' 9

对于 DNS,您需要允许防火墙内 IP 地址上的任何端口与防火墙外 IP 地址上的端口 53 之间的 UDP 数据包。

对于 HTTPS,您需要允许防火墙内 IP 地址上的任何端口与防火墙外的端口 443 之间的 TCP 数据包,或者更少情况下防火墙外的任何端口(某些网站不在默认端口上)。对于 HTTP,它与端口 80 相同。

TCP是连接协议;连接的两端不对称,防火墙通常会有所不同。很少有任何安全理由来阻止传出连接,除非可能强制传出电子邮件通过专用中继(以防止受感染的机器发送未被检测到的垃圾邮件)。客户端计算机的典型基本防火墙允许所有或大部分传出连接,并阻止传入连接。

对于 ping,允许 ICMP。您应该允许所有 ICMP,除非您有特定原因阻止某些类型的数据包。不加选择地阻止 ICMP 会使网络问题难以诊断,并可能由于应用程序没有得到正确的错误回复而导致泛滥。

这是一个适用于典型客户端机器的简单 Linux 防火墙配置,它允许除 SMTP 之外的所有内容都超出其他机器,smtp.example.com并阻止除端口 22 (SSH) 之外的传入 TCP 连接。

iptables -F INPUT
# Accept everything on localhost
iptables -A INPUT -i lo -j ACCEPT
# Accept incoming packets on existing connections
iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
# Accept DNS replies
iptables -A INPUT -p udp --sport 53 -j ACCEPT
# Accept incoming SSH connections
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
# Reject everything else that's incoming
iptables -A INPUT -j REJECT
iptables -F OUTPUT
# Forbid outgoing SMTP except to a known relay
iptables -A OUTPUT -p tcp --dport 22 ! -host smtp.example.com -j REJECT
# Allow everything else that's outgoing
iptables -P OUTPUT -j ALLOW
Run Code Online (Sandbox Code Playgroud)