Dns
需要在防火牆上打開哪些埠才能訪問 Internet?
假設我有一個防火牆,它阻止來自所有源/目的地的所有埠。
我需要打開哪些埠才能成功執行:
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