
我正在嘗試為我的 10.5 伺服器設置一些防火牆,但我似乎無法讓它工作。主要目的是嘗試阻止不斷的暴力郵件登入嘗試。
為此,我安裝了fail2ban,以發現並禁止失敗的登入。在大多數情況下,這是有效的,即提交被禁止的 IP 位址並向我發送一封電子郵件以實現這一效果的機制已經完成。如果我啟動終端會話,我會得到使用以下命令列出的數十個 IP 位址:
sudo ipfw list
條目如下圖所示:
12345 deny tcp from 123.123.23.123 to any in
但是,該禁令並不有效 - 相同的 IP 位址稍後會重試,有時每隔幾秒鐘就會重試幾個小時。
當我檢查fail2ban日誌時,它會抱怨(在多次檢測到惡意登入嘗試後):
"WARNING [sasl-ipfw] 123.123.123.123 already banned"
我嘗試過以不同的方式格式化禁令:
12345 deny tcp from 123.123.23.123 to 127.0.0.1 dst-port 25
12345 deny tcp from 123.123.23.123 to 192.168.123.123 dst-port 25
但只是沒有任何差別。我甚至嘗試了對網路服務的本地網路網路禁令:
12345 deny tcp from 192.168.123.122 to 192.168.123.123 dst-port 80
但同樣,這沒有任何效果。其他規則似乎是預設的,在 IPFW 清單中如下所示:
12300 allow log logamount 1000 tcp from any to any established
12301 allow log logamount 1000 tcp from any to any out
12302 allow log logamount 1000 tcp from any to any dst-port 22 …
清單中的最後一條規則(我在某處讀到的不能更改):
65535 allow ip from any to any
伺服器管理應用程式指示防火牆服務正在運行,ipfw 日誌中沒有「拒絕」清單。由fail2ban修補到IPFW的條目不會出現在任何地方的伺服器管理條目中,也不會出現在ipfw.conf或ipfw.conf.apple檔案中(所以我不確定它們儲存在哪裡)。但當我在終端機中獲得“ipfw 清單”時,我確實看到了它們,並且它們列在伺服器管理中防火牆部分的“活動規則”標籤中。
感謝您對這個問題的任何幫助。
答案1
您的fail2ban 腳本似乎使用了過高的規則編號。 ipfw 按數字順序評估規則,適用於給定資料包的第一個規則決定如何處理它。這意味著編號較小的規則具有較高的優先權。由於fail2ban「拒絕」規則新增的編號為12345,但伺服器管理員配置的「允許」規則從12302開始,因此至少某些允許規則會覆蓋fail2ban的拒絕規則。
簡單修復:找到fail2ban 腳本中定義規則編號的位置,並將其降低到 12200 之類的值。
順便說一句,fail2ban 的規則沒有添加到設定檔中是正常的,而且可能是好的。這些檔案在防火牆重新載入時(例如,重新啟動時)使用,但不一定反映「即時」防火牆狀態。如果需要,您可以編輯fail2ban腳本以將其規則新增至這些檔案並將它們設為即時狀態,但這意味著您的規則集會隨著時間的推移而任意增大。 IMO,您唯一應該擔心這種「永久」禁令的情況是,如果您在很長一段時間內不斷看到相同 IP 的濫用……但我希望這種情況很少見。