ログってなんぼ

日々のメモです

WordPressのwp-login.phpにブルートフォース攻撃が頻繁に来るのでいくつか対策したメモ

パフォーマンス監視のSaaS「New Relic」のダッシュボードを見ていたら f:id:Okisanjp:20160715123325p:plain なんか、wp-login.phpへのアクセスが異常なんですが・・・ココ数日、IPアドレスを変えて数カ所から何時間かおきに定期的にいらっしゃるんですよね~・・・

サーバーに入りアクセスログを確認

# tail -f /var/log/httpd/access_log
5.135.185.71 - - [30/Aug/2014:22:09:46 +0900] "POST /wp-login.php HTTP/1.0" 200 5529 "-" "-"
5.135.185.71 - - [30/Aug/2014:22:09:48 +0900] "POST /wp-login.php HTTP/1.0" 200 5529 "-" "-"
5.135.185.71 - - [30/Aug/2014:22:09:49 +0900] "POST /wp-login.php HTTP/1.0" 200 5529 "-" "-"
5.135.185.71 - - [30/Aug/2014:22:09:50 +0900] "POST /wp-login.php HTTP/1.0" 200 5529 "-" "-"
5.135.185.71 - - [30/Aug/2014:22:09:52 +0900] "POST /wp-login.php HTTP/1.0" 200 5529 "-" "-"
5.135.185.71 - - [30/Aug/2014:22:09:53 +0900] "POST /wp-login.php HTTP/1.0" 200 5529 "-" "-"
5.135.185.71 - - [30/Aug/2014:22:09:54 +0900] "POST /wp-login.php HTTP/1.0" 200 5529 "-" "-"
5.135.185.71 - - [30/Aug/2014:22:09:55 +0900] "POST /wp-login.php HTTP/1.0" 200 5529 "-" "-"
5.135.185.71 - - [30/Aug/2014:22:09:56 +0900] "POST /wp-login.php HTTP/1.0" 200 5529 "-" "-"
5.135.185.71 - - [30/Aug/2014:22:09:58 +0900] "POST /wp-login.php HTTP/1.0" 200 5529 "-" "-"

ブルートフォース攻撃でしょうねえ・・・

とりあえず、一定時間の間に設定した回数、ログインミスをしたらそのIPアドレスからのログインをブロックするプラグインがあるのでとりあえずそれを入れて様子見

Login LockDownプラグイン

WordPressのプラグインインストール画面から「Login LockDown」で検索してインストール

f:id:Okisanjp:20160715123345p:plain

5分間の間に3回間違えたら24時間ログイン画面をロックする設定にしました。

f:id:Okisanjp:20160715123403p:plain

とりあえずちゃんと動いてはいるようです。実際に何をやってるのかはソース読むかな・・・

とはいえ、アクセスログは発生し続けてしまうので、一応iptablesでも弾く

iptables -I INPUT -s 5.135.185.71 -j DROP

とりあえず通常の状態になりました・・・

f:id:Okisanjp:20160715123505p:plain

ただ、イタチごっこなんだよな~。

とりあえずBASIC認証

wp-login.phpのソースとファイル名を書き換えて別の名前のファイルにしてしまってもいいけど、WordPress本体のバージョンアップでおかしなことになりそうですし、今のところいい案が思い浮かばないので普通にBASIC認証をかけて、先ほどのプラグイン&iptablesと併用で運用しようと思います。

パスワードファイルを作る

# htpasswd -c /etc/httpd/.htpasswd secret

BASIC認証

WordPressのルートディレクトリにある.htaccessに追記

<FilesMatch "wp-login.php">
AuthType Basic
AuthName "Secure Page"
AuthUserFile "/etc/httpd/.htpasswd"
Require user secret
</FilesMatch>