【プラグインなし】WordPressのログインURLを変更する

みなさん、こんにちはいしかわつかさです。

WordPressを始めたらまず最初にやっておきたいことの1つに、セキュリティの強化があがると思います。
僕も、一番最初に下記のプラグインを入れて、不正アクセスの対策を行いました。

すると、案の定、頻繁に不正アクセスの通知が来るようになりました。

海外からの不正アクセスから、サーバー側で制御すればいいんじゃない?と思うかもしれませんが、今僕が住んでいる場所も日本国外なので、制限を掛けると僕自身がログイン出来なくなるのです。

メール画像の一番上は、僕がログインした時に来た通知です。

なので、日本国内にいる方は、素直にサーバーの機能を使えばいいと思います。

でもやっぱり気になるのは、ログインする際のURLですよね。
デフォルトの状態では、固定な為、ログイン画面まですぐに辿り着きます。
パスワードは複雑にしましたし、Google reCAPTCHAを接しましたが、ログイン画面にも辿り着きにくくしようと考えました。今回は、そのお話です。簡単に出来るのに効果は高いと思います。

特に、僕のようになるべくプラグインを使用したい方にはおすすめです。

https://ドメイン名/wp-login.php

目次

ログイン画面のURLを変更する

もう、お気づきになっている方もいると思いますが、WordPressにログインする為のログイン画面なので、WordPressからログアウトした状態でインストールしたサーバー上で設定を行うことになります。

新しいログインページを作成する

まず、通常のログインページである「wp-login.php」の代わりとなるログインページを作ります。
このファイル名が新ログインページへのURLになります。

https://ドメイン名/new-login-page.php

ここでは、「new-login-page.php」として、進めます。ファイルは「wp-login.php」と同じ階層に作成して下さい。
内容は下記です。

<?php
  define('MY_LOGIN', password_hash('keyword', PASSWORD_DEFAULT));
  require_once './wp-login.php';
?>

2行目の” keyword ” は任意の文字列で大丈夫です。
これは、「function.php」で認証する為のパスコードとなります。
その為、それぞれに同じ文字列が記載されていたら問題ありません。

「functions.php」を編集する

次に、「function.php」を編集します。この「function.php」はWordPressで最も重要なファイルとなる為、必ずバックアップをとるようにお願いします。何かあった時に、戻せるようにです。

バックアップを取ったら、下記のプログラムを「function.php」の一番下に追記して下さい。
それで、作業は完了です。

// ログインURLを変更
// 定数を定義
define('MY_LOGIN_PAGE', 'new-login-page.php');

// 新ログインURL以外はトップページにリダイレクト
if(!function_exists('login_redirect_home_url')){
  function login_redirect_home_url(){
    if(defined('MY_LOGIN') === false || password_verify('keyword', MY_LOGIN === false)){
      wp_safe_redirect(esc_url(home_url()));
      exit;
    }
  }
}
add_action('login_init', 'login_redirect_home_url');

// ログイン済み or 新しいログインURLは、「wp-login.php」のリンクを新ログインURLに置換
if(!function_exists('login_replace_new_url')){
  function login_replace_new_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_new_url', 10, 2);

3行目の「new-login-page.php」は、新しいログインページのファイル名を記述します。
8行目の「keyword」は、新しいログインページのファイルに入力した任意の文字列を記述します。

まとめ

以前のログインURLを入力すると、トップページにリダイレクトされるようになり、使えません。
今後は、新しく設定したログインURLで運用することになりますので、間違えないようにして下さい。

自宅に置き換えると、これまでカギをテンプルキーやカードキー、顔認証にすることに加え、SECOMなどでなにかあった時に通報するシステムにしていたけど、そもそも玄関を正面に作らず別の場所に作ろうというのが、今回実践した事です。

これで第三者にログイン画面を特定されにくくなったので、よりセキュリティに強くなったと言えますね。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次