とーますメモ

Ruby on Rails / Goなどの学習メモ

【fail2ban】WordPress用の独自フィルタ作成

以下のログに対応したものを作成する。

・wp-login.phpに対してPOSTをリクエストを送っているもの

※ 管理者のみがwp-login.phpするものなら良いが、不特定多数(woocommerceなど)が利用する場合は
wpのフィルター機能と連携して作成するのが良いと思う。
fail2banでWordPressを守る 2019年1月 - がとらぼ

フィルターの作成

$ vi /etc/fail2ban/filter.d/wordpress.local

failregexに、正規表現で検知したいログを記載します。 はIPアドレスに値します。

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