Wordpressを設置したサイトへの攻撃,乗っ取りが流行っています.
乗っ取られると
などなど,面倒なことが多々起きます.
根本的対策としては fail2ban の導入がおすすめです.以下の設定を行うだけで,サーバ側で攻撃を自動検出,不正アクセスを自動遮断できるようになります.
fail2ban のインストール
$ sudo yum install fail2ban
$ sudo apt-get install fail2ban
でインストールできます
fail2ban の全体設定
/etc/fail2ban/fail2ban.conf を編集します.
- logtarget は syslog から /var/log/fail2ban.log へ変更
logtarget = /var/log/fail2ban.log
- 上記変更に合わせて logrotate の設定も変更
/etc/logrotate.d/fail2ban を用意します
wordpress 用の設定
wordpress用に2つのファイルを作成します.
前者のファイルは,不正アクセスを検出するためのフィルタです.監視するログのファイル名や,そこに記録される不正アクセスのパターンを記述します.
後者のファイルは,不正アクセス検出後の動作を記述します.
/etc/fail2ban/filter.d/apache-wp-login.conf の中身は以下の通り
[Definition] failregex = ^<HOST> -.*"POST /wp-login.php HTTP.*$ ignoreregex =
正規表現で wp-login.php へのPOSTリクエストを抽出しています
/etc/fail2ban/jail.d/apache-wp-login.conf の中身は以下の通り
[apache-wp-login] enabled = true filter = apache-wp-login action = iptables[name=HTTP, port="http,https", protocol=tcp] logpath = /var/log/apache2/access.log maxretry = 5 findtime = 60 bantime = 900
filterで上記のフィルタを指定し,action でiptablesの書き換えを指示しています,
監視対象として,logpathでapache2 (httpd)のアクセスログのファイル名を指定します.このファイル名は,wordpressの設置状況に応じて適切に書き換える必要があります.
動作確認
wordpressのログイン画面にブラウザでアクセスします.その後,ログインのボタンを連打すると,6回目でアクセスが遮断されるはずです.
アクセス遮断は,上記の bantime の設定値にしたがっていて,900秒間続きます.