Apache-2.2

fail2ban 阻止對 wp-login.php 的 Wordpress 暴力攻擊

  • July 22, 2014

有沒有辦法設置失敗禁止阻止多次點擊 wp-login 的 IP?

我試過添加這個jail.local:

[apache-wp-login]

enabled = true
action   = iptables[name=wplogin, port=http, protocol=tcp]
          sendmail-whois[name=wplogin, dest=root, sender=fail2ban@example.com]
filter  = apache-wp-login
logpath = /var/log/apache2/other_vhosts_access.log
maxretry = 5

然後在 /etc/fail2ban/filter.d/apache-wp-login.conf 中添加一個定義:

[Definition]

# Option:  failregex
# Notes.:  Regexp to catch Apache dictionary attacks on Wordpress wp-login
# Values:  TEXT
#
failregex = [\w\.\-]+ [\w\.\-]+ .*] "POST /wp-login.php

仍然讓 wp-login 嘗試超過 maxentry 限制…這可能是因為我使用的是組合日誌格式,而不是常見的嗎?

我修改了我的 WordPress 主題 functions.php 文件以添加以下內容:

add_action('wp_login_failed', 'log_wp_login_fail'); // hook failed login function log_wp_login_fail($username) { error_log("WP login failed for username: $username"); }

登錄失敗現在寫在我的錯誤日誌中。

我的 apache-wp-config.conf 看起來像這樣: [Definition] failregex = [[]client <HOST>[]] WP login failed.* ignoreregex =

我的 jail.local 包含以下內容: [apache-wp-login] enabled = true filter = apache-wp-login action = iptables-multiport[name=apache-wp-login, port="http,https"] sendmail-whois[name=apache-wp-login, dest=root, sender=fail2ban@example.com] logpath = /home/*/logs/*error.log bantime = 720 maxretry = 6

更多資訊在這個網站

引用自:https://serverfault.com/questions/614599