RunCloud 上阻止 wp-login.php 暴力攻擊

在 RunCloud 管理的伺服器上使用 fail2ban 禁止暴力破解 WordPress 的 wp-login.php 的 IP 地址。

增加一個 WordPress 過濾規則在 fail2ban 目錄裡

 建立一個 wordpress.conf 文件,放入 /etc/fail2ban/filter.d/ 目錄下:

[Definition]
failregex = ^<HOST> .* "POST .*wp-login.php
            ^<HOST> .* "POST .*xmlrpc.php
ignoreregex =

如果只想要 wp-login.php,可以將 xmlrpc.php 這一行刪除

增加一個 WordPress 過濾規則在 fail2ban Jail 設定

建立一個 wordpress.conf 文件,放入 /etc/fail2ban/jail.d/ 目錄下:

[wordpress]
enabled = true
usedns = no
port = http,https
filter = wordpress
banaction = firewallcmd-new
logpath = /home/*/logs/nginx/*_access.log
maxretry = 4
findtime = 1200
bantime = 86400

修改限制請修改這 3 個參數:

  • maxretry
  • bantime
  • findtime

此設定是 20 分鐘內容允登入 4 次,超出此範圍,IP 會被禁止,最好將自己的 IP 加入白名單。

logpath 是使用 RunCloud 日誌路徑和 firewallcmd-new 掛鉤的 banaction 值,所以,你可以在 RunCloud 控制台中看到被 failed2ban 禁止的 IP。

重新啟動 fail2ban

service fail2ban restart

如果 fail2ban無法啟動,請確定你的 RunCloud 至少配置了一個網站,因為,這將通過 nginx 日誌來驗證日誌路徑,否則 fail2ban 將無法啟動。

檢查 fail2ban 日誌

檢查 fail2ban日誌內容,確認載入是否有錯誤

tail -f /var/log/fail2ban.log

檢查 wordpress Jail 狀態

可以檢查 WordPress jail 狀態

fail2ban-client status wordpress

這裡可以看到日誌文件列表和任何被禁止的 IP 地址。

手動禁止 IP 地址

fail2ban-client set wordpress banip 1.2.3.4

手動取消禁止 IP 地址

fail2ban-client set wordpress unbanip 1.2.3.4

在 fail2ban 中將 IP 地址永久列入白名單

永久允許你的 IP 地址,請將加入到 /etc/fail2ban/jail.local 中作為 ignoreip 中的值。

對於多個地址,用空格分隔它們,還要添加主機 IP 地址。

[DEFAULT]
ignoreip = 127.0.0.1/8  1.2.3.4
bantime = 86400
findtime = 43200
maxretry = 6
...

然後重新啟動 fail2ban

service fail2ban restart
Written By Human

發佈留言

Your Mastodon Instance