Iptables

使用 cloudflare 阻止除 80 和 443 之外的所有埠

  • August 17, 2021

我嘗試阻止除 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 發現。)

引用自:https://serverfault.com/questions/1074665