[WordPress General] wp-login.php への不正アクセスを防ぐ
wp-login.php への不正アクセスは常態化しているので、その対策を調べてみました。
[markdown]
## ログインを知らせる
### [Crazy Bone][1]
[1]: http://wordpress.org/plugins/crazy-bone/
管理画面からログイン履歴を確認できる。
「ユーザー – ログイン履歴」から利用する。
### [WP Security Login Notification][2]
[2]: http://wordpress.org/plugins/wp-security-login-notification/
ログインが完了すると、メールでお知らせしてくれる。
「設定 – 一般」に設定しているメールアドレスに送られる。
## ログインをロックする
### [Limit Login Attempts][3]
[3]: http://wordpress.org/plugins/limit-login-attempts/
一定期間内に一定回数以上のログイン失敗が起こった場合に、一定期間ログイン不可にする。
同様のプラグインもいくつかある。
* [Simple Login Lockdown][4]
* [Login LockDown][5]
[4]: http://wordpress.org/plugins/simple-login-lockdown/
[5]: http://wordpress.org/plugins/login-lockdown/
## /?author=1 でわかるユーザー名を隠す
テーマから削除しても、/?author=1 といった形式でアクセスするとユーザー名が分かってしまうので、これを隠してみる。
mod_rewrite を使って 404.php にリダイレクトするよう .htaccess を編集する
“`htaccess
# WordPress author req to 404
RewriteCond %{REQUEST_URI} ^/$
RewriteCond %{QUERY_STRING} ^/?author=([0-9]*)
RewriteRule ^(.*)$ /404.php? [L,R=301]
“`
> * [WordPress › フォーラム » セキュリティ向上:ログインIDをURLにしたくない][6]
> * [WordPress の /?author=1 リクエストで404を返す | 備忘録的 Mini Tips][7]
[6]: http://ja.forums.wordpress.org/topic/12262
[7]: http://mini-tips.com/2013/08/29/803.html
## ログイン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 で確認しました。
> * [Rubyのディレクトリ・ファイル操作周りの使い回しが効きそうなTipsをまとめる – knt45の日記][8]
> * [Rubyで簡単にランダム文字列のパスワード作成 – 僕の車輪の再発明][9]
[8]: http://knt45.hatenablog.com/entry/2013/01/29/114647
[9]: http://kazuph.hateblo.jp/entry/2012/09/20/112928
## Basic 認証で制限する
> * [htpasswd でファイルを作成して Basic 認証をかける | deadwood](https://www.d-wood.com/blog/2014/09/08_6784.html)
[/markdown]