Iptables
使用 cloudflare 阻止除 80 和 443 之外的所有埠
我嘗試阻止除 22、80 和 443 之外的所有埠。我將以下規則添加到
iptables
.*filter :INPUT ACCEPT [36878:18003219] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [33947:26518456] -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT -A INPUT -s MY_IP -p tcp -m tcp --dport 22 -j ACCEPT -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT -A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT -A INPUT -j DROP COMMIT
埠 22 工作正常,但 Cloudflare 無法連接到 Web 伺服器。
-A INPUT -j DROP
導致問題。事實上,443 連接直到列表末尾才匹配規則。
因此,經過長時間的評論會議,以下是我們匯總的內容:
當您啟用自定義防火牆時,CloudFlare 報告了 504 網關超時。但值得注意的是,它說這是它從您的伺服器收到的錯誤,而不是它嘗試訪問您的伺服器時超時。區別很微妙但很重要:這意味著 CloudFlare 與您的伺服器正常通信,但您的伺服器沒有與自己通信。
您有一個代理到在 localhost 上執行的內部 Web 應用程序的 Web 伺服器。但是您的自定義防火牆不允許本地主機連接。這是 Web 伺服器與 Web 應用程序通信以及許多其他內部服務相互通信所必需的,因此您可能使用的每個專業防火牆建構器都會毫無疑問地允許 localhost 流量。
(PS:您應該啟用 ICMP 以防止其他類型的損壞,例如路徑 MTU 發現。)