自從安裝 Fail2Ban 後, 持續收到它寄來的 IP 封鎖報告郵件, 企圖暴力破解 ssh 密碼的駭客行為一天至少 10 次以上 :
目前的封鎖設定如下 :
tony1966@LX2438:~$ sudo cat /etc/fail2ban/jail.local
[sudo] tony1966 的密碼:
...
(略)
...
[sshd]
enabled = true
port = 22
logpath = /var/log/auth.log
maxretry = 5
bantime = 1h
findtime = 10m
action = %(action_mw)s
此設定為十分鐘內超過 5 次錯誤就封鎖一個小時, 我決定加強封鎖條件, 修改如下 :
tony1966@LX2438:~$ sudo nano /etc/fail2ban/jail.local
新設定是 15 分鐘內超過 3 次錯誤就封鎖 12 個小時, 改完須重啟服務才會生效 :
tony1966@LX2438:~$ sudo systemctl restart fail2ban
檢視目前的封鎖項目 :
tony1966@LX2438:~$ sudo fail2ban-client status
Status
|- Number of jail: 5
`- Jail list: nginx-404, nginx-badbots, nginx-noscript, recidive, sshd
檢視目前 sshd 封鎖狀態 :
tony1966@LX2438:~$ sudo fail2ban-client status sshd
[sudo] tony1966 的密碼:
Status for the jail: sshd
|- Filter
| |- Currently failed: 7
| |- Total failed: 16
| `- File list: /var/log/auth.log
`- Actions
|- Currently banned: 4
|- Total banned: 4
`- Banned IP list: 213.6.203.226 5.29.135.63 103.189.235.60 189.47.10.153
透過減少嘗試次數可降低暴力破解成功機率, 用 12 小時長時間封鎖來拖垮機器人駭客.
2025-09-01 補充 :
因為 Fail2Ban 封鎖條件變嚴格後, Gmail 收到封鎖通知信的頻率變高, 收件夾都被淹沒了. 問 ChatGPT 解決方案, 原來可以用 Buffered 的方式, 指定 12/24 小時才整批寄出一封通知信, 作法很簡單, 就是把 jail.local 裡 [sshd] 的 action 從 %(action_mw)s 改成 %(action_mwlb)s :
用 nano 編輯 jail.local 設定檔 :
tony1966@LX2438:~$ sudo nano /etc/fail2ban/jail.local
[sudo] tony1966 的密碼:
這樣會將多次封鎖事件暫存起來, 定期批次寄一封信, 信件內容會包含多個被封鎖的 IP. 預設批次寄信的間隔約 1 小時, 可以在 [DEFAULT] 中指定 :
[DEFAULT]
mta = sendmail
destemail = 我的 Gmail
sender = 我的 Gmail
banaction = iptables-multiport
action = %(action_mwlb)s[name=SSH, buffer=43200]
此處 buffer 參數用來指定美批次送信間隔秒數 :
buffer=86400 : 每 24 小時寄一次彙整通知
buffer=43200 : 每 12 小時寄一次
按 Ctro+O 存檔再按 Ctrl+X 跳出 nano.
但重啟卻出現錯誤 :
tony1966@LX2438:~$ sudo fail2ban-client reload
[sudo] tony1966 的密碼:
2025-09-01 16:36:45,085 fail2ban [399327]: ERROR Failed during configuration: Bad value substitution: option 'action' in section 'sshd' contains an interpolation key 'action_mwlb' which is not a valid option name. Raw value: '%(action_mwlb)s'
原因是 action_mwlb 並不存在, 「b」(buffer) 的版本在某些發行版或新版 Fail2Ban 才有, 不是通用的. 只好恢復原狀.



沒有留言 :
張貼留言