Fail2Ban 並不能阻止 Server 被立即性的攻擊,但可以大量減緩破解速度的可能性及大量掃描 或 DOS,在實務上很多IP是攻擊被鎖定後,過陣子又會再來嘗試。只要利用LOG文字特殊性建立多個層次封鎖規則,可以再次降低風險。
測試環境
- CentOS 7
- Nginx
- WordPress
建立方式
首先在建立規則時把所有條件[sshd] >> [A-sshd]做出更名
#SSH 嘗試登入
[A-ssh]
enabled = true
filter = sshd
logpath = /var/log/secure
maxretry = XXX
findtime = XXX
bantime = XXXXX
[B-ALL-BAN]
enabled = true
port = http,https
filter = Banag
logpath = /var/log/fail2ban.log
maxretry = 2
findtime = 604800
bantime = 604800
利用”A-“做出層級方式再創立一個filter 專門監視 fail2ban 的 Log ,只要出現符合 [A-XXX] BAN 幾次以上就 BAN。
[Definition]
failregex =^.*fail2ban.actions.*\: NOTICE \[A-.*\] Ban <HOST>
ignoreregex =
讓惡意攻擊的IP被封印更久,增加攻擊方的困難度。
注意事項
- Log 還是要常常觀察,只要找得出規律就有辦法解決。
- Fail2Ban只能夠降低不正確的身份驗證嘗試的速度,但是它無法消除弱身份驗證所帶來的風險。