WordPressの管理画面ログインURLの変更方法解説
2016/07/02
WordPressの管理画面のセキュリティ対策
WordPressを使うことのリスクって?
WordPressは、全世界で多くのユーザが利用しているシステムですので、不正アタックの対象になりがちです。
特に、デフォルトのままでは管理画面のログイン URLは決まっていますし、IDも adminになっていることをみんなが知っていますので、そのまま利用している場合は非常に危険です。
総当たり攻撃と呼ばれるブルートフォースアタックで不正にログインする場合は、まず管理画面のログイン画面 URLが分からなといけないわけですが、WordPressの場合はデフォルトの管理画面のログイン URLは誰でも知っているわけですから、デフォルトのままでは最初のカギを開けてしまっているようなものです。
さらには、IDを adminのままにしているということは、関門としてある管理画面のログイン URL、ID、PASSの 3つあるカギのうち、最初の 2つのカギを掛けていないことと同じことですので、後はパスワードさえわかってしまえば、不正アクセスされてしまうことになってしまいます。
そうならないためにやるべきことは下記の 3点です。
管理者のアカウント adminを変更する
最初の管理者のアカウント adminを変更するという点ですが、これによって、3つあるカギのうち一つのカギをかけることができます。
これは誰でも簡単に設定できるものですので、別ページ「WordPressのユーザ名を後から変更する方法。adminの使用は危険。」を参考にしていただきながら是非とも対応してください。
管理画面のログイン URLを変更する必要性
WordPressの管理画面のデフォルトの URLは、以下のいずれかです。
http://{WordPressが入っているURL}/wp-admin
http://{WordPressが入っているURL}/wp-login.php
上記のいずれの URLでもログインできます。
「wp-admin」は管理画面の処理が入っているフォルダがこの名称ですので、分かりやすい URLともいえますが、実際のログイン処理をしているファイルという意味では「wp-login.php」になりますので、こちらのログイン URLの方がいいかもしれません。
また、「wp-admin」の管理画面のログイン URLではトラブルが発生してうまくログインできない場合が起こる場合もありますが、「wp-login.php」では問題なくログインできる場合もありますので、「wp-login.php」の方がよりトラブルに強いともいえるでしょう。
実際に利用する場合はどちらでも問題ありません。
上記の通り、WordPressは、デフォルトのままでは管理画面ログイン URLがどのサイトも同じになっていますので、そのサイトが WordPressを利用している、ということが分かれば管理画面のログイン URLも分かってしまうということになります。
そうすると、そのログイン画面に対してブルートフォースアタックを行うチャンスを与えてしまうことになります。
そうしないためには、WordPressの管理画面のログイン URLを変更してしまえばいいわけです。
管理画面のログイン URLを変更する具体的な手順
それでは、実際に WordPressの管理画面のログイン URLを変更する具体的な手順を解説していきます。
まず最初に、ログインする URLになるファイルを作成します。
http://{WordPressが入っているURL}/wp-login-change.php
例えば、管理画面のログイン URLを上記のようにしたい場合は、「wp-login-change.php」のファイルを作成します。このファイル名がそのまま URLになりますので、好きなファイル名を付けていただいて問題ありません。ただ、パスワードと同じくあまり短くない方が好ましいでしょう。
ファイルを作成する場所は、WordPressがインストールされているルートフォルダです。
本来のログインファイルである「wp-login.php」と同じ場所に作成します。
また、ファイルには下記のコードを記述します。
————————-
1 2 3 4 |
<?php define( 'LOGIN_CHANGE', sha1( 'keyword' ) ); require_once './wp-login.php'; ?> |
————————-
2行目の「keyword」の部分はこのプログラム上のキーワードになる部分ですので、好きなものに変更をしてください。
次は、WordPressの要となる「functions.php」を編集します。
「functions.php」は下記の場所にあります。
/{WordPressがインストールされている場所}/wp-content/themes/{テーマ名}/functions.php
「WordPressの functions.phpがある場所」に詳しく書いていますのでそちらも参考にしてください。
もしくは、テーマの編集画面(「外観」-「テーマ編集」から移動する画面)から編集することも出来ます。
テーマの編集に関しては「WordPressのテーマ管理方法とテーマのHTML編集のポイント解説」に記事を書いていますので、そちらを参考にしてください。
編集するソースコードは、下記のものです。
「functions.php」のどこに書いても問題ありませんが、分かりやすく一番最後に追加しておきましょう。
————————–
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
// WordPressの管理画面ログインURLを変更する define( 'LOGIN_CHANGE_PAGE', 'wp-login-change.php' ); add_action( 'login_init', 'login_change_init' ); add_filter( 'site_url', 'login_change_site_url', 10, 4 ); add_filter( 'wp_redirect', 'login_change_wp_redirect', 10, 2 ); // 指定以外のログインURLは403エラーにする if ( ! function_exists( 'login_change_init' ) ) { function login_change_init() { if ( !defined( 'LOGIN_CHANGE' ) || sha1( 'keyword' ) != LOGIN_CHANGE ) { status_header( 403 ); exit; } } } // ログイン済みか新設のログインURLの場合はwp-login.phpを置き換える if ( ! function_exists( 'login_change_site_url' ) ) { function login_change_site_url( $url, $path, $orig_scheme, $blog_id ) { if ( $path == 'wp-login.php' && ( is_user_logged_in() || strpos( $_SERVER['REQUEST_URI'], LOGIN_CHANGE_PAGE ) !== false ) ) $url = str_replace( 'wp-login.php', LOGIN_CHANGE_PAGE, $url ); return $url; } } // ログアウト時のリダイレクト先の設定 if ( ! function_exists( 'login_change_wp_redirect' ) ) { function login_change_wp_redirect( $location, $status ) { if ( strpos( $_SERVER['REQUEST_URI'], LOGIN_CHANGE_PAGE ) !== false ) $location = str_replace( 'wp-login.php', LOGIN_CHANGE_PAGE, $location ); return $location; } } |
————————-
ここで追加したソースの中で、各々のサイトで変更する必要がある点がありますので、その説明をします。
まず、2行目。
「wp-login-change.php」の部分が管理画面のログイン URLとなるファイル名ですが、最初に作成したファイル名に変更をしましょう。
続けて、9行目。
「keyword」の部分は、最初に作成したファイルにも「keyword」の部分があり、そこで設定した文字列と同じものを編集します。
これで設定は終了です。
新しくなった WordPressの管理画面のログイン URLにアクセスし、ログインできることとログアウトしたら新しいログイン URLに遷移するかどうかを確認出来れば設定完了です。
プラグインを使わず管理画面のログイン URLを変更する意図
WordPressの管理画面のログイン URLを変更するにはプラグインを用いる方法もありますが、プラグインでは処理がブラックボックスになりがちのため、こちらの方法がいいと感じています。
処理の意味が分かっていれば、何か不具合があった時にも対処方法についての手がより早く見つけることが出来るでしょう。
管理画面のログイン URLに Basic認証を設定する方法
さらなるセキュリティを高めるために、下記のように WordPressの管理画面のログイン URLに Basic認証によるアクセス制限を設定する場合、この方法でログインファイルが明確になっている方が便利である点もこの方法をオススメする理由です。
WordPressの管理画面のログインURLに Basic認証を設定する方法については「WordPressの管理画面ログインURLファイルにBasic認証を設定する方法解説」に詳細を書いていますので、続けて参照してください。
Basic認証関連の記事まとめ
Basic認証関連の記事もいろいろと書いていますので、あわせて参考にしてみてください。
ロリポップで baserCMSを利用する際の Basic認証の設置には注意しましょう
WordPressのログイン画面 URLを変更する 管理画面に Basic認証を設定する
WordPressの管理画面ログインURLの変更方法解説
WordPressの管理画面ログインURLファイルにBasic認証を設定する方法解説
Basic認証をファイル単位・URL単位で設定する方法の解説
ロリポップでWordPress+Basic認証で不具合発生!回避方法解説
Basic認証の.htaccess、.htpasswd生成ツールと解説
WP Basic AuthなどWordPressにBasic認証を設定するプラグインのまとめ
WordPressのカテゴリ単位・フォルダ単位でBasic認証を設定する方法
WordPressで特定のURL、ページ、ファイル単位でBasic認証を設定する方法
この記事が参考になったと思いましたらソーシャルメディアで共有していただけると嬉しいです!
関連記事
-
WordPressの一般設定 投稿設定 表示設定 ディスカッション メディア
基本的な設定を行う「設定」の解説です。ブログサイトを構築する際に必要な設定内容を一般設定、投稿設定、表示設定などの各項目を説明しながら設定内容を提示しています。
-
Search RegexでWordPress投稿の文字列を検索・置換する使い方解説
WordPressの投稿テキストを検索、置換するプラグイン Search Regexの使い方の詳細解説です。
-
Theme My Loginでメール認証、管理者承認付の会員管理・基本編
会員管理をするプラグインTheme My Loginの解説。メール認証、管理者認証、reCAPTCHAによるいたずら登録を防止し、ログイン攻撃対応のセキュリティも備わっている。
-
シンタックスハイライトの5システム比較のまとめ・WordPressでも使える
シンタックスハイライト5種の比較検討のまとめ記事。WordPressで使う目的だがプラグインの比較検討ではないのでどのサイトでも導入可能。
-
30分でWordPressを引越し・他のサーバに引越しや開発環境の構築手順
WordPressを他のサーバに引っ越しするとき、テスト環境を作るときなどの作業手順をまとめました。プラグインを使う方法もありますが手作業でも簡単です。
-
wp_mail()関数でWordPressのスパム対策済のメールフォーム作成
WordPressでメール送信フォームを作成するための関数「wp_mail()」の使い方の解説。CC、BCC、添付ファイルも HTMLメールも設定可能。
-
WordPressグローバルナビ・メニューの編集の方法解説
グローバルナビであるメニューの編集方法の解説です。メニューの管理画面の使い方の解説と設定のポイント、テーマによって設定する項目が違う点などを解説します。
-
WordPressの投稿プレビューのURLを変更する方法
プレビューを表示する際のURLを変更する方法の解説。「サイトアドレス (URL)」に基づいて編集されるURLを任意のURLに変更する場合の方法とその解説を行います。
-
WordPress csvインポート、エクスポートのプラグイン
WordPressから csvファイルをエクスポート、インポートする方法を紹介しています。
-
WordPressで ¥円マークが \ バックスラッシュになる原因と対処方法
円マークがバックスラッシュに変換される。その原因と対処方法を解説します。原因はCSSでのフォント指定に欧文フォントも含まれるため欧文フォントで表示されること。
Comment
非常にわかりやすい解説ありがとうございます。
この方法でログイン画面のURLを変更すると、少し弊害が出るケースがあるようです。
このカスタマイズをすると、他の「パスワードで保護」をかけているページにアクセスし、パスワードを入力してもそのページにアクセスができません。(真っ白に表示されます)
この「ログイン画面のURLを変更」のカスタマイズを維持しつつ、「パスワード保護をかけているページ」にアクセス出来る方法がありましたら、追記して頂けると幸いです。
いのぽんさん、コメントありがとうございます。
記事が参考になったということで嬉しく思います。
質問をいただいている件ですが、対応は難しいと思います。
機能として実装する方法はあるように思いますが、対処方法が思い浮かばないことと、ログイン URLを変えている意味がなくなるようにも思うためです。
初期設定では下記の URLにアクセスしても
example.com/wp-admin/
下記のログイン画面に遷移します。(こちらのログイン画面の方が実態です。)
example.com/wp-login.php
ですが、ここで解説している処理は、ログイン画面の URLを秘匿するために、このログイン画面に遷移する処理を実行しないようにしています。
このログイン画面に遷移しない処理の影響で、公開側のページでログイン認証が必要なページでは画面が真っ白になるのだと思います。
画面が真っ白になるのは、「example.com/wp-login.php」にアクセスされた場合にそのようにする処理にしてありますので、正常に処理されている状態だと思います。
ログイン画面を秘匿するために「example.com/wp-login.php」にアクセスできないようにしているのに、公開側のログインが必要な画面にアクセスするために「example.com/wp-login.php」にアクセスできるようにする、というのはログイン画面を秘匿する処理に矛盾を感じてしまいます。
WordPressのログイン認証は、管理側と公開側とで処理が分かれているわけではなさそうですので、公開側のログイン画面だけ別の処理にしようとするとその辺りからカスタマイズが必要になってくるんじゃなかろうか、と感じます。
エス技研さま
ご返信ありがとうございます。
パスワード保護を使っているサイト以外で活用したいと思います。
お手数おかけ致しました。