ログインフォームと wp-admin 以下を保護する

この記事は約2分で読めます。
本記事は最終更新日より 1 年以上経過しております。
スポンサーリンク

先日まではログインフォームに Captcha 系のプラグインを噛ませていた。
これによりブルートフォースアタックを困難にさせる事である程度の保護としていた。
もう少し何か無いかな!? とあちこち見て回っていたら面白い手法が載っていたので実行した。


Digest認証とWordPressに自動ログイン – REIMA’s Blog
上記サイトを参考にして少し手直しが必要な所もあったが、そのままで大丈夫だった。

できること
ログインフォームと /wp-admin 以下を Apache の Digest 認証で保護をする。

やること
認証に使うパスワードが記述されたファイルを作成し、public_html 以下の
.htaccess に Digest 認証の記述を行う。
で、この認証が通ったとき、その情報を使って WordPress にもログインさせる。

認証に使うパスワードが記述されたファイルの作成
Apache 同梱の htdigest コマンドを用いて作成する。

$ htdigest -c ~/.htpasswd ‘WP Login’ USERNAME

“-c” を付けるとその次の引数で指定されたファイルを新規作成する。
ファイル指定の次が relm。ログインする領域の名称を書く事に。
ラストにログインに使うユーザ名を指定。
実行するとパスワード入力を促されるので 2 度入力する。
尚、パスワードファイルは home 直下にした。(public_html の 1 つ上)

.htaccess に Digest 認証の記述を行う
以下を追記し必要な所は任意に書き換える事。
[php]AuthUserFile /home/USERNAME/.htpasswd
AuthType Digest
AuthName “wordpress login”

require valid-user


require valid-user
[/php]
認証に使うファイルを指定する。1 つ前のステップで作ったファイルを指定。
認証タイプを Digest とし、認証名を “wordpress login” とした。
認証をかける所は “wp-login.php” で終わる URI と “/wp-admin/” 以下全て。

Digest 認証から WordPress にもログインさせる
次の php ファイルを任意のファイル名で作成し、Wordpress でプラグインを有効にする。
[php]ID;

wp_set_current_user($wp_AutoLogin_userID, $wp_AutoLogin_wpname);
wp_set_auth_cookie($wp_AutoLogin_userID);
do_action(‘wp-login’, $wp_AutoLogin_wpname);
wp_safe_redirect(admin_url());
}
}
add_action(‘login_form’, ‘WPAutoLogin’);
[/php]
“Plugin Name:” の次に来ている文字列が WordPress からはプラグイン名として認識される。
この場合は “auto login” になるが、自分に分かりやすい記述へ変えても良い。
“$wp_AutoLogin_httpname” には Digest 認証時のユーザ名と同じにする。
“$wp_AutoLogin_wpname” はログインする WordPress のユーザ名を指定する。
出来上がったファイルを /wp-content/plugins/ 以下へ設置し、Wordpress から有効化させる。

テスト
以上全てのステップ完了後、Wordpress からログアウトし、ログインページにアクセスすると
認証フォームが出るので、Digest 認証の設定時に指定したユーザ名とパスワードを入力して
ログイン。
認証が通ると WordPress のログインフォームをすっ飛ばしてダッシュボードに行ける。

ログインフォームや wp-admin 以下に飛んでくるリクエスト全てに認証がかかるので
怪しい攻撃なんかも未然に防げるので良いかも。

スポンサーリンク

コメント

タイトルとURLをコピーしました