🛠️ 完美的防禦閉環方案–fail2ban

🛠️ 完美的防禦閉環方案
既然有了 Fail2ban,我們可以利用它來打造一套自動防禦系統:讓 Fail2ban 去讀取核心日誌,只要看到有 IP 被防火牆拒絕超過 5 次,就自動把該 IP 丟進小黑屋封鎖 24 小時。
請依序執行以下配置:
步驟 1:新建一個專門抓防火牆攔截日誌的過濾器
執行以下指令,建立一個自訂的 Fail2ban 過濾規則:
cat << 'EOF' > /etc/fail2ban/filter.d/firewalld-reject.conf
[Definition]
failregex = filter_IN_public_REJECT:.* SRC=<HOST>
ignoreregex =
EOF

步驟 2:啟用該監獄(Jail)配置
編輯 Fail2ban 的局部配置文件:
nano /etc/fail2ban/jail.local

將以下配置新增到檔案的最底部:
ini
[firewalld-reject]
enabled = true
filter = firewalld-reject
logpath = /var/log/kern.log
backend = auto
maxretry = 5
findtime = 600
bantime = 86400
action = iptables-allports[name=firewalld-reject]

步驟 3:重啟 Fail2ban 使其生效
systemctl restart fail2ban

執行以下指令檢查該監獄是否已成功啟動:
fail2ban-client status firewalld-reject

  • 預期效果:一旦啟動,Fail2ban 就會開始自動幫你盯緊 kern.log

 

💡 伺服器日常維護的最後 3 個小貼士
未來這台機器你幾乎不需要再花時間操心,只需要在想到時,用這三條指令瞄一眼即可:
1. 想看目前的「捕獲黑客總數」
fail2ban-client status firewalld-reject | grep -E "Currently banned|Banned IP list"

2. 未來如果需要手動解封某個可能被誤殺的 IP(例如你自己的 IP)
fail2ban-client set firewalld-reject unbanip <要解封的IP>

3. 檢查 Fail2ban 自己的運行日誌(看它日常抓人的動態)
tail -n 20 /var/log/fail2ban.log


💡 終極建議:讓 Fail2ban 重啟時自動幫你清空這群人(防範名單過大)
這台虛擬機只有 2G 記憶體。隨著捕獲人數即將破百(甚至未來破千),Iptables 的記憶體檢索表會變長。因為你設定的是 bantime = 86400(封鎖 24 小時),這 98 個黑客會在明天的這個時候被自動釋放,這是一個非常健康的動態循環。
但如果你想讓 Fail2ban 在重啟服務或重啟伺服器時,自動清空當前名單,不讓死垃圾一直堆積在記憶體裡,可以執行以下選配優化:
# 修改 Fail2ban 的資料庫清除策略(讓它重啟時直接清空過期名單,最省內存)
fail2ban-client flush
這台 GreenCloud 伺服器的抢救與安全加固已經完美落地
如果想為這台機器做最後一個好習慣的結尾,如果你未來想在本地一秒監控黑客動態,可以把這條指令記下來:
  • fail2ban-client status firewalld-reject | grep "Currently banned"
目前伺服器硬碟 56% 穩如泰山、記憶體 965M 餘裕充足、網絡 BBR 加速、黑客全部被捕。這場故障大排查圓滿大獲全勝,你可以放心去處理其他業務了!

版权声明:
作者:yxbinghe
链接:https://www.zhanhao.ch/?p=700
来源:ice.99
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>