Dns

需要在防火牆上打開哪些埠才能訪問 Internet?

  • April 19, 2016

假設我有一個防火牆,它阻止來自所有源/目的地的所有埠。

我需要打開哪些埠才能成功執行:

ping google.com

…還有我必須打開的其他埠才能通過瀏覽器瀏覽 google.com 嗎?

我試過打開埠 53(dns) 80(http) 和 443(https);這還不夠,我正在使用 iptables,但我不是詢問如何在 iptables 上配置它,我只是詢問需要打開哪些埠,而不管您可能使用什麼基於埠的防火牆。

對於 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

引用自:https://unix.stackexchange.com/questions/276893