WordPressの不正ログインを「WP fail2ban」で検知してBANする設定
WordPress への攻撃を検知してBANするのに便利なプラグイン「WP fail2ban」の設定方法を書いておきます。
以前、CentOS 6 向けの設定方法を書いたことがありますが、CentOS 7 で firewalld が標準になって設定方法が変わったので、まとめ直しです。
WordPress 用プラグインのインストールはこちらから。
WP fail2ban の設定方法
WordPress用プラグイン「WP fail2ban」は、WordPress への特定のアクセスをログへ書き出すだけのプラグインです。なので、別途、吐き出されたログを見てBANをする fail2ban というソフトが必要になります。
fail2ban のインストール方法は以下。
# yum -y install epel-release # yum --enablerepo=epel install fail2ban fail2ban-systemd
「WP fail2ban」用の fail2ban 向けのフィルターは、WP fail2ban のプラグインディレクトリ内の「filters.d」ディレクトリに用意されています。
用意されているフィルターは、強力なアクセス制限の wordpress-hard.conf、ソフトなアクセス制限の wordpress-soft.conf の2種類。好みの設定ファイルを、以下のコマンドで fail2ban のドロップインにコピーしておきましょう。(セキュリティ上の理由からシンボリックリンクは避けるべきです。)
# cp /var/www/SITE_HOME/wp-content/plugins/wp-fail2ban/filters.d/wordpress-soft.conf /etc/fail2ban/filter.d
ここで、コピーしたフィルターの権限は他と合わせておきましょう。
次に、Jailの設定をします。
# vi /etc/fail2ban/jail.d/customisation.local [DEFAULT] banaction = firewallcmd-ipset banaction_allports = firewallcmd-allports [wordpress-hard] enabled = true filter = wordpress-hard logpath = /var/log/messages.log maxretry = 5 port = http,https
最後に、以下で設定をリロードします。
# systemctl reload fail2ban
設定は以上ですが、WP fail2ban の細かな設定が必要な場合は、wp-config.php で行っておきましょう。例えば、セキュリティ監査の対象アクションを追加したり、ログの出力先の制御をすることができます。(以下は例)
define('WP_FAIL2BAN_AUTH_LOG', LOG_AUTHPRIV); define('WP_FAIL2BAN_LOG_PINGBACKS',true); define('WP_FAIL2BAN_BLOCK_USER_ENUMERATION',true);
設定の詳細は、公式ヘルプやプラグインフォルダ内の readme.txt を確認してください。
一応、ポイントだけ説明しておくと、ログの出力先は syslog のファシリティを指定する形になっています。例えば、Cent OS で LOG_AUTHPRIV を指定すると /var/log/secure に、デフォルトでは /var/log/message に出力されます。
また、ピンバックのログ出力やユーザー名列挙のブロックなど、より強力なセキュリティ機能をONにすることもできます。