以下のログに対応したものを作成する。
・wp-login.phpに対してPOSTをリクエストを送っているもの
※ 管理者のみがwp-login.phpするものなら良いが、不特定多数(woocommerceなど)が利用する場合は
wpのフィルター機能と連携して作成するのが良いと思う。
fail2banでWordPressを守る 2019年1月 - がとらぼ
フィルターの作成
$ vi /etc/fail2ban/filter.d/wordpress.local
failregexに、正規表現で検知したいログを記載します。
wordpress.local
[Definition] # wp-login.phpの認証時に200番を返す場合は認証失敗を意味し、301番を返す場合は成功を意味する。 failregex = ^<HOST>.* "POST .*/wp-login.php([/\?#\\].*)? HTTP/.*" 200 ignoreregex =
フィルターの動作確認
以下のコマンドで対象ログの行が出ていれば成功
$ # fail2ban-regex access.logのパス /etc/fail2ban/filter.d/wplogin.local --print-all-matched
監視設定
vi /etc/fail2ban/jail.conf に追記
[wordpress] enabled = true port = http,https logpath = access.logのパス maxretry = 5
再起動
$ systemctl restart fail2ban.service
設定されているか確認
$ fail2ban-client status wordpress
[参考]
WordPressの不正ログインと不正中継メール送信をfail2banでbanしてみた - Qiita
Using Fail2Ban to block Wordpress login attacks - PRADO
fail2ban で Wordpress のログイン攻撃を防ぐ - Qiita
How to protect your WordPress site from Brute Force Attacks (WordPress + Nginx + fail2ban) - Managed WordPress Hosting - WPOven