WordPressは世界中で高く評価されているCMSですが、その普及に伴うセキュリティの懸念が存在します。 この記事では、WordPressサイトのセキュリティ向上策の一つとして、ログインURLを変更する方法に焦点を当ててみました。

ログインURLの変更は、サイトを保護し、不正アクセスを防ぐための効果的な手法です。 ウェブサイトを悪意のある第三者からの攻撃から守るために、ログインページのセキュリティを強化すること検討してみてください。

なぜログインURLを変更するの?

WordPressは非常に人気のあるウェブプラットフォームであり、多くのウェブサイトが利用しています。 その知名度ゆえに、セキュリティ上の懸念を引き起こす原因となることがあります。

具体的には、WordPressのデフォルトのログインURLは広く知られており、悪意のあるユーザーやボットに対する攻撃の標的となりやすくなります。 攻撃者はデフォルトのログインページに直接アクセスし、さまざまな不正なログインを試みる可能性が高まります。

セキュリティを向上させるためには、ログインページのURLを変更することが推奨されています。 下記はWordPressのデフォルトログインURLです。

  • https://〇〇/login
  • https://〇〇/admin
  • https://〇〇/wp-admin
  • https://〇〇/wp-login.php

上記のログインURLを変更することは、セキュリティを向上させる重要なステップの一つです。 ログインURLをデフォルトのままにしていた場合、悪意のある攻撃者にとっては攻撃対象となりやすく、ブルートフォース攻撃などの標的とされる可能性が高まります。 しかし、ログインURLを見つけにくい場所に変更することで、単純にセキュリティを向上させることができるのです。

WordPressのログインURLを変更する方法

攻撃者からの不正アクセスを防ぎ、サイトのセキュリティを向上させるために、ログインURLの変更方法について詳細に解説します。 ログインURLの変更には主に3つの方法があります。 以下でそれぞれの方法について説明します。

プラグインを使用する方法

WordPressのプラグインを利用することで、ログインURLの変更を簡単に実現できます。 プラグインを使うことで、技術的な知識が不要で、迅速にログインURLを変更できます。 ログインURLを変更できるプラグインになります。

  • WPS Hide Login
  • SiteGuard WP Plugin
  • Login rebuilder

WPS Hide Login


参考元:WPS Hide Login

WPS Hide Loginは非常に軽量のプラグインで、簡単にログインulを変更できるプラグインです。 設定は非常にシンプルです。 まずはプラグインをインストールし、有効化をしてください。

次に、設定からWPS Hide Loginを選択し、WPS Hide Loginの設定画面を表示します。


ログインURLとリダイレクトURL、の2つの設定項目があります。 ログインURLは新しいログインURLを設定する箇所です。 入力して保存をすれば設定は完了です。 なお、設定したログインURL以外ではアクセスできなくなりますので、設定したURLを忘れないように注意しましょう。

※初期設定のアドレスはloginになっています

functionに記入してリダイレクトする方法

WordPressのfunctions.phpファイルにコードを追加することで、ログインURLをカスタマイズし、ユーザーを新しいURLにリダイレクトさせることができます。 この方法はプラグインを使用しない手動のカスタマイズ方法であり、プラグインを入れたくない方にはオススメの方法となります。

ステップ1.ログイン用のリダイレクトPHPを用意する

まず、アクセスさせたいURLと同じ名前のPHPファイル用意します。 今回は例として、https://〇〇/new-login.phpにしたいので、new-login.phpという名前にしています。 new-login.phpは、WordPressのインストリーディレクトリにある、login.phpと同じディレクトリに作って下さい。 以下はソースコードの例です。

<?php
  define('MY_LOGIN', password_hash('key※別の文字に置換してください', PASSWORD_DEFAULT));
  require_once './wp-login.php';
?>

このコードでは、MY_LOGINという定数を定義し、パスワードハッシュを使用してキーを設定しています。そして、wp-login.phpファイルを読み込んでいます。 このキー(key)は新しいログインURLにアクセスするための認証に使用されます。

次に、functionに下記コードを設定します。

// 定数を定義 ※先ほど作ったPHPと同じ名前を設定
define('MY_LOGIN_PAGE', 'new-login.php');

// ホームにリダイレクトする
if(!function_exists('login_redirect_home')){
  function login_redirect_home(){
    if(defined('MY_LOGIN') === false || password_verify('key※別の文字に置換してください', MY_LOGIN === false)){
      wp_safe_redirect(esc_url(home_url()));
      exit;
    }
  }
}
add_action('login_init', 'login_redirect_home');

// ログインページのURLを変更します
if(!function_exists('login_replace_url')){
  function login_replace_url($path, $scheme){
    if(strpos($path, 'wp-login.php') && (is_user_logged_in() || strpos($_SERVER['REQUEST_URI'], MY_LOGIN_PAGE) !== false)){
      $path = str_replace('wp-login.php', MY_LOGIN_PAGE, $path);
    }
    return $path;
  }
}
add_filter('site_url', 'login_replace_url', 10, 2);
  1. MY_LOGIN_PAGE という定数に、新しいログインURL(new-login.php)を定義しています。
  2. ログインしていない状態で、新しいログインURLに変移した場合、新しいログインURLの有効性を確認します。 この確認は、MY_LOGINという定数に保存されているハッシュ化されたパスワードが、'key' というキーで生成されたものと一致するかどうかを検証することによって行われます。
  3. もし新しいログインURLが有効でない場合、ユーザーはトップページにリダイレクトされます。
  4. もし新しいログインURLが有効な場合、ユーザーは通常通りログインフォームが表示されます。

以上の設定で、ログインURLの変更は完了です。 テーマのPHPファイルを変更する必要はありますが、プラグインを使用せずに設定でき、ログインURLを忘れた場合でもファイルを確認することでURLを知ることができます。

.htaccessを利用してリダイレクトを設定する方法

.htaccessファイルへのリダイレクト記述は、シンプルかつ効果的なセキュリティ対策の方法です。 アクセスをリダイレクトすることで、ログインURLを変更します。 functionへの記述と同じくプラグインの導入を必要とせず、シンプルな設定でセキュリティの向上を実現できます。

今回は、WordPressの利用者が多いサーバーで有名な、Xサーバーを例に説明させていただきます。 ちなみに、通常はNginxでは.htaccessファイルが機能しないのですが、Xサーバーでは何故か.htaccessの設定が有効になっているようですw ※裏でApacheが動いているから有効らしいです。

サーバーパネルから設定

Xサーバーにログインすると、サーバーパネルへのアクセスが可能です。 サーバーパネルには複数の項目が表示されますが、その中で「.htaccess編集」という特定のメニューを見つけてください。 ここから、.htaccessファイルの編集が容易に行えます。

.htaccessに設定内容を入力

下記.htaccessがリダイレクトするためのベースとなります。

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^enter/?$ /wp-login.php?「任意の文字列に置換」 [R,L]
RewriteRule ^enter/?$ /wp-admin?「任意の文字列に置換」 [R,L]
RewriteCond %{HTTP_COOKIE} !^.*wordpress_logged_in_.*$
RewriteRule ^dashboard/?$ /wp-login.php?「任意の文字列に置換」&redirect_to=/wp-admin/ [R,L]
RewriteRule ^dashboard/?$ /wp-admin/?「任意の文字列に置換」 [R,L]
RewriteRule ^register/?$ /wp-login.php?「任意の文字列に置換」&action=register [R,L]
RewriteCond %{SCRIPT_FILENAME} !^(.*)admin-ajax\.php
RewriteCond %{HTTP_REFERER} !^(.*)「自分のドメインに置換」/wp-admin
RewriteCond %{HTTP_REFERER} !^(.*)「自分のドメインに置換」/wp-login\.php
RewriteCond %{HTTP_REFERER} !^(.*)「自分のドメインに置換」/enter
RewriteCond %{HTTP_REFERER} !^(.*)「自分のドメインに置換」/dashboard
RewriteCond %{HTTP_REFERER} !^(.*)「自分のドメインに置換」/register
RewriteCond %{QUERY_STRING} !^「任意の文字列に置換」
RewriteCond %{QUERY_STRING} !^action=logout
RewriteCond %{QUERY_STRING} !^action=rp
RewriteCond %{QUERY_STRING} !^action=register
RewriteCond %{QUERY_STRING} !^action=postpass
RewriteCond %{HTTP_COOKIE} !^.*wordpress_logged_in_.*$
RewriteRule ^.*wp-admin/?|^.*wp-login\.php /not_found [R,L]
RewriteCond %{QUERY_STRING} ^loggedout=true
RewriteRule ^.*$ /wp-login.php?「任意の文字列に置換」 [R,L]
</IfModule>

以下の2箇所を、自分のサイトに合わせて置換してください。 その後、.htaccess編集のボックスに追加し、確認御免へ進み実行するで完了です。

  1. 「任意の文字列に置換」: これはログイン時のキーワードです。 wp-login.php?「任意の文字列に置換」でログインします。
  2. 「自分のドメインに置換」: こちらはあなたのサイトのドメインです。例えば、"yourwebsite.com"のように置換してください。

以後、https://〇〇/wp-login.php?「任意の文字列」でアクセスできるようになります。 ログインURLを忘れた場合でも、.htaccessのファイルを見れば再認識することができる他、最悪の場合は.htaccessのリダイレクト設定を消去すれば元に戻す事が可能です。

WordPressセキュリティ向上の第一歩

WordPressのセキュリティ向上策の中で、ログインURLの変更は非常に効果的な方法です。 この記事では、セキュリティの観点からログインURLを変更する方法について詳しく説明しました。

WordPressは世界中で多くのウェブサイトで使用されており、デフォルトのログインURLが広く知られているため、セキュリティの懸念があります。 ログインURLを変更することで、サイトを不正アクセスから守り、セキュリティを強化することができます。

WordPressサイトのセキュリティ向上に取り組む際に、ログインURLの変更は有力な手段の一つです。 ノクトでは、WordPressのカスタマイズやセキュリティ対策に関するサポートも提供していますので、お困りの際はお気軽にご相談ください。