因為網站伺服器 Nginx 一直遭受莫名的存取,導致 log 不斷累積,最終讓主機空間整個佔滿。雖然曾經試著使用 ufw 做阻擋,但只要攻擊者不斷的更換 IP 位置,理論上是永遠阻擋不完。因此想到要導入 fail2ban 這個工具來更積極主動的阻擋攻擊。
設定與啟用 Fail2ban
因為我的主機上已經預設有裝好 fail2ban 了,所以我們直接跳到設定的部分。設定的檔案是 /etc/fail2ban/jail.local
,如果你沒有這個檔案,可以複製 jail.conf
。
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
這個檔案的最下方已經幫你設定好各種常見的規則,你可以挑選你想要的規則進行啟用。例如我們找到 nginx-botsearch
這個規則
[nginx-botsearch]
port = http,https
logpath = %(nginx_error_log)s
maxretry = 2
只要在中間加一個 enabled = true
即可啟用
[nginx-botsearch]
enabled = true
port = http,https
logpath = %(nginx_error_log)s
maxretry = 2
Fail2ban 生效與確認
透過下面的指令重新啟動 fail2ban 服務,並且確認是否有成功導入 nginx-botsearch 規則。
sudo systemctl restart fail2ban
sudo fail2ban-client status