・ワードプレスのログインページってアドレス固定?
・WordPressのデフォルト設定で大丈夫?
こんな悩みを解決します。
ワードプレスのブログを始めたあなたが最初にすることは、初期設定を変更することです。
ワードプレスをデフォルトの設定で運用することは、セキュリティ的に決して安全とは言えません。
そこで、ワードプレスをインストールした時に最初にやるべきセキュリティに関することをリストにしました。
セキュリティ設定リスト
-
- ユーザー名を隠す。(プラグイン使用)
- ログインページを変更する。(プラグイン使用) ←今、この記事
- xmlrpcを無効化する。(プラグイン使用)
- 「.htaccess」を設定して「wp-config.php」にアクセス出来ないようにする。
- まとめ:セキュリティ系プラグインは「SiteGuard」と「XO Security」の2つで安心。
この記事はログインページのアドレスを変更する方法についてです。
WordPressのログインページのURLは通常固定で、ブログのドメインに「wp-login.php」を付けたアドレスです。
具体的には、「https://ドメイン名/ワードプレスをインストールしているディレクトリ名/wp-login.php」となっています。
つまり、不特定多数の人が誰でもログインページを開ける状態です。
(.htaccessでログインページを自分のIPアドレス以外からは弾く設定にしていれば別ですが。)
サーバーのアクセスログが見られる環境ならば「wp-login.php」への不正アクセスがいかに多いかは実感していると思います。
パスワードがバレない限りアクセスされても大丈夫ですが、やはり気持ち悪いですよね。
そんな時はプラグインを導入するかfunctions.phpや.htaccessにコードを書いてアクセス制限できます。
両方のプラグインで同じ機能があるので、どちらか片方を使えば大丈夫です。
この記事で書かれていること
-
- 「XO Security」の設定方法
- 「SiteGuard」の設定方法
- 「XO Security」と「SiteGuard」のどちらを使えば良いのか?
- 「XO Security」と「SiteGuard」の違い
- プラグインを使わない方法
「XO Security」の設定方法
「XO Security」をインストールして有効化してください。
次に管理画面の「設定」にある「XO Security」の「ログイン」タブを開いてください。
設定方法は以下の3手順。
- ログインページの変更にチェックをする。
- ログインファイル名を入力して、メモする。
- ページの一番下にある「変更を保存」ボタンをクリックする。
新しいログインページ名に使える文字は、英数字・ハイフン・アンダーバーのみです。
次回からメモをしたログインページ名にアクセスすると、ワードプレスのログインページが開きます。
忘れないように今までのログインページのブックマークを新しいアドレスに変更してください。
これで、「https://ドメイン名/wp-login.php」や「https://ドメイン名/wp-admin/~」などにアクセスしても404エラーが返るようになります。
「SiteGuard」の設定方法
「SiteGuard」をインストールして有効化すると以下のような表示が出ます。
「設定変更はこちら」のリンクを開くと、設定ページが開きます。
または、管理画面にある「SiteGuard」の「ログインページ変更」を開いてください。
設定方法は以下の4手順。
- ONのボタンが黒いことを確認。
- 変更後のログインページ名に入力して、メモする。
- オプションにチェック。
- 「変更を保存ボタン」をクリックする。
新しいログインページ名に使える文字は、英数字・ハイフン・アンダーバーのみです。
○○.phpなどには出来ません。
次回からメモをしたログインページ名にアクセスすると、ワードプレスのログインページが開きます。
忘れないように今までのログインページのブックマークを新しいアドレスに変更してください。
これで「https://ドメイン名/wp-login.php」へのアクセスが404エラーになります。
また、オプションにチェックをすると、「https://ドメイン名/wp-admin/~」などにアクセスしても404エラーが返るようになりますので、このオプションにはチェックをしたほうがいいです。
「XO Security」と「SiteGuard」のどちらを使えば良いのか?
では、どちらのプラグインの機能を使えば良いのかという話ですが、どっちでもいいというのが結論です。
ちなみに、私はSiteGuardで防いでいます。
両方を適用しても、各プラグインがぶつかることが無いので、2つのログインページが存在できます。
が、普通はどちらか1つにするでしょう。
ひとつ言うなら、.htaccessを作れない(SiteGuardの説明によると「この機能を使用するには、mod_rewriteがサーバーにロードされている必要があります。」)サーバーでWordPressを運用しているならば、「XO Security」一択になります。
「XO Security」と「SiteGuard」の違い
この2つのプラグインは、用途や結果は同じアクセス制限になる訳ですが、仕組みが違います。
「XO Security」はWordPressの内部で制御
「XO Security」は、アクションフックとフィルターフックを使って、指定されたログインページ以外のアクセスにエラーを出す仕組みです。
こちらの記事と同じ仕組みなので、参考にどうぞ。
add_action( 'login_init', 'anywhere_login_init' );
add_filter( 'site_url', 'anywhere_login_site_url', 10, 4 );
add_filter( 'wp_redirect', 'anywhere_login_wp_redirect', 10, 2 );
この3つのフックを使います。
「SiteGuard」は.htaccessで制御
「SiteGuard」は、.htaccessを使って自分で決めたログインページアドレスをwp-login.phpにリダイレクトさせます。
この記事の例では、.htaccessにはこのようなコードが追記されます。
#SITEGUARD_PLUGIN_SETTINGS_START
#==== SITEGUARD_RENAME_LOGIN_SETTINGS_START
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /wordpress/
RewriteRule ^wp-signup\.php 404-siteguard [L]
RewriteRule ^wp-activate\.php 404-siteguard [L]
RewriteRule ^login_22913(.*)$ wp-login.php$1 [L]
</IfModule>
#==== SITEGUARD_RENAME_LOGIN_SETTINGS_END
#SITEGUARD_PLUGIN_SETTINGS_END
また、オプションのチェックで、wp-admin以下のアクセスを404エラーにしますが、それはフィルターフックを使っています。
add_filter('auth_redirect_scheme', array( $this, 'handler_stop_redirect' ), 9999 );
説明は以下の記事がいいかと思います。
プラグインを使わない方法
functions.phpにコードを書き足すのですが、前述の参考記事からコピーでよいと思われます。
プログラミングの勉強というならいいですが、プラグインには他のセキュリティ機能があるので、どうせインストールしたんだからプラグインに任せた方がいいんじゃないかな?
コメント