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にすることもできます。

Hatena Pocket Line

コメントを記入