[WordPress General] wp-login.php への不正アクセスを防ぐ
wp-login.php への不正アクセスは常態化しているので、その対策を調べてみました。
Contents
ログインを知らせる
Crazy Bone
管理画面からログイン履歴を確認できる。
「ユーザー – ログイン履歴」から利用する。
WP Security Login Notification
ログインが完了すると、メールでお知らせしてくれる。
「設定 – 一般」に設定しているメールアドレスに送られる。
ログインをロックする
Limit Login Attempts
一定期間内に一定回数以上のログイン失敗が起こった場合に、一定期間ログイン不可にする。
同様のプラグインもいくつかある。
テーマから削除しても、/?author=1 といった形式でアクセスするとユーザー名が分かってしまうので、これを隠してみる。
mod_rewrite を使って 404.php にリダイレクトするよう .htaccess を編集する
# WordPress author req to 404
RewriteCond %{REQUEST_URI} ^/$
RewriteCond %{QUERY_STRING} ^/?author=([0-9]*)
RewriteRule ^(.*)$ /404.php? [L,R=301]
ログインURLを隠す
いっそのこと、ログイン時以外は wp-login.php の名前を変えておいた方が良いかもと思い、ruby の勉強もかねてスクリプトを書いてみた。
wp-login.php の入っているディレクトリを初期設定し、スクリプトを実行するとランダムな文字列を付けたファイル名にリネームしてくれる。
$ ruby rename-wp-login.rb
found
./wp-login.php
result
./UAPuiHtRLNJ6_wp-login.php
もう一度実行すると、wp-login.php にファイル名が戻るようトグルになっている。
$ ruby rename-wp-login.rb
found
./UAPuiHtRLNJ6_wp-login.php
result
./wp-login.php
ruby 2.0.0p247 で確認しました。