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

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

举例来说,我有一个防火墙,它阻止来自所有源/目的地的所有端口。

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

ping google.com

...为了能够通过浏览器浏览 google.com,我是否需要打开其他端口?

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

答案1

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

对于 HTTPS,您需要允许防火墙内 IP 地址上的任何端口与防火墙外的端口 443 之间的 TCP 数据包,或更罕见地允许防火墙外的任何端口(某些网站不在默认端口上)之间的 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

相关内容