株式会社 MIX CONCEPT ABOUT WORKS BLOG
2019/12/24

WordPressサイト公開時にやっておきたい「ログインURLの変更方法」

今回は、比較的簡単で、WordPressサイト公開時最低限のセキュリティ対策として効果の高い方法をご紹介します。

WordPressでサイトを構築し公開する時、最低限のセキュリティ設定を行わなければいけません。
WordPressでできる比較的簡単な方法で、効果の高いセキュリティ対策として、「ログインURLの変更」があります。

※今回行う実装方法はプラグインを使用しません。
※確実な安全を保証するものではありません、あくまで問題のおこる可能性を減らし、対策する事の重要性として認識してください。

ログインURL変更の必要性

WordPressのデフォルト設定では、
ドメイン末尾に

[〇〇〇.com/wp-admin]
もしくは、
[ 〇〇〇.com/ wp-login.php]

とすれば管理画面へアクセスできます。

例:
http://サイトURL/wp-login.php
http://サイトURL/wp/wp-login.php

ただ、これは全てのWordPressをインストールした時点で共通の為、
これらへのアクセス方法を変更していない場合、だれでもアクセスできてしまいます。
ですので、このURLを独自の物に変更しよう、というのが今回の目的になります。

勿論、管理画面へのアクセスができても、管理画面にログインするユーザーとパスワードが必要です。
しかし、こういったパスワードは個人運営者に多い傾向にある、

「同じパスワードを使いまわす」

事が多いです。
もしこのパスワードが何かしらの方法で流出した場合は、
WordPressだけでなく、同じパスワードを設定している他のサービスにまで影響が及ぶことがあります。
今回のログインURLの変更の前にパスワードの管理方法も考えながら進めて下さい。

それでは実装方法を解説します。

ログインURLの変更方法

作業を始める前に今から触るファイル一式バックアップをしておきましょう。

[functions.php]は根本にかかわるファイルですので、慎重に扱ってください。初めての方はローカルで作成。成功後本番環境で実行することをお勧めします。

まず、二つのファイルが必要になります。

・functions.php
・XXXXXX.php

functions.php は、テーマディレクトリ直下のもの
XXXXXX.php は新規で作成するものになります。

([ XXXXXX.php ]このファイル名が実際にログインするURLになるので任意でファイル名をつける)
※特定されにくい名前
※WordPress ルートディレクトリ (wp-config.php)があるディレクトリに新規で作成

例1:login-test.php ×
例2:mix-login.php ×
例3:aogV8a29!ag3gha.php 〇

// [〇〇〇〇〇]の部分のテキストはなんでも構いません、覚えやすいもの
define('LOGIN_KEY', password_hash( '〇〇〇〇〇', PASSWORD_BCRYPT, array('cost'=>10)));
require_once './wp-login.php';

※〇〇〇〇〇の部分は[functions.php]で記載するものと共通にする必要があります、名前は任意。

// [XXXXXX.php] の部分は上記で作成したファイル名を指定してください。
define( 'LOGIN_PAGE', 'XXXXXX.php');
add_action( 'login_init', 'admin_login_init');
function admin_login_init()
{
  if( !defined('LOGIN_KEY') || password_verify( '〇〇〇〇〇', LOGIN_KEY) === false ) {
    header('Location:' . site_url() . '/404.php');
    exit;
  }
}
add_filter( 'site_url', 'admin_login_site_url', 10, 4);
function admin_login_site_url( $url, $path, $orig_scheme, $blog_id)
{
  if( ($path == 'wp-login.php' || preg_match( '/wp-login\.php\?action=\w+/', $path) ) && (is_user_logged_in() || strpos( $_SERVER['REQUEST_URI'], LOGIN_PAGE) !== false) ) {
    $url = str_replace( 'wp-login.php', LOGIN_PAGE, $url);
  }
  return $url;
}
add_filter( 'wp_redirect', 'admin_login_wp_redirect', 10, 2);
function admin_login_wp_redirect( $location, $status) {
  if( is_user_logged_in() && strpos( $_SERVER['REQUEST_URI'], LOGIN_PAGE) !== falsee ) {
    $location = str_replace( 'wp-login.php', LOGIN_PAGE, $location);
  }
  return $location;
}

※XXXXXX.php 上記で作成したファイル(任意で付けた名前)のファイル名を指定
※現在利用中のテーマ内のfunctions.phpに追記

先述した通りローカル環境でも確認できますので、ローカル環境にて上記作業の完了が問題なく確認出来たら、
稼働中のウェブサーバーにアップしていただくとより安全にできます。
以上で完了になります。

ウェブサイトのセキュリティ対策として今回の方法をご紹介しましが、
これら以外にも、

・「.htaccess」そのものを保護する方法
・特定のディレクトリでのPHPの実行を防ぐ
・IPアドレスでの制限

など他にもできる事はあります、
今回ご紹介したのはあくまでも、WordPressでの比較的簡単で効果の高い対策方法ですので、
これよりもまだセキュリティ対策をしたい場合は各自設定を行ってください。

お問い合わせはこちらから