ホーム » WordPressのログイン画面のURLを隠すセキュリティー対策を

WordPressのログイン画面のURLを隠すセキュリティー対策を

by MOMO

通常、サーバーに接続するときはSSHという方式で公開鍵と秘密鍵の合致でのみアクセスできるように仕立てますよね。ただし、デフォルトでこのSSHに充てられるポートは22番ポート。それはOpenSSHを弄ったことがある人は皆さん知っているポート番号ですね。
実際にこのポートに向けられる悪意のある攻撃がいかに多いか… そういう攻撃から少しでも身を守る(サーバーをね)ために必ずインストール直後にすぐSSHのポート番号を変更します。
実際、このポート番号を変更するだけでそこに向けての攻撃はほぼ無くなりますから、効果覿面ですよ。
今回のログインのURLを誰も知らないものに変更するのはもう皆さんも絶対にやった方がいいと思います。WordPressを使ったサイトって全体の30%以上のシェアがあるんでしょう? ランダムに攻撃する相手が豊富なんだから悪い人は喜んで仕掛けてきます。そして前回も言いましたけど…そういう管理が甘い人が狙われるんです。

意外にも簡単な設定でOK

ログインURLのPHPファイルをテキストエディタで作ればいいだけなんですよ。
たとえばここの
https://momo-s.info/wp-login-php
と初期設定のままのURLを
https://momo-s.info/arekore-iroiro
に変更したいときは

arekore-iroiro.php

という新規PHPを作ればいいんです(たとえなのでphpファイル名はなんでもいいんですよ)

編集はちゃんとテキストエディタでね

皆さんテキストエディタ、ちゃんとお気に入りががありますよね? 間違ってもメモ帳などで作成しないこと。もちろんPHPが弄れるIntelliJ IDEAでもOKですけどね。ちゃんと色で構文が解るやつとか全角スペースをマークしてくれるようなものを一つはインストールして欲しいです。
昨今のテキストエディタはもうVS Code(Visual Studio Code)が一人勝ちの状態ですね。

ああ、テキストエディタのお話もいつかしたいと思ってますけど。私も今やVC Codeを使ってます。でも長くはATOM派だったんです。GitHubがMicrosoftに買収されたんだからATOMもいっしょに育てて欲しかったなぁ。そもそもATOMからの派生のVS Codeだったのに… ATOMのプラグインの開発も圧倒的に減りましたし更新も減って… 老いていく姿を見せられるようで本当に悲しいんです。

ああ、横道にまた逸れちゃいましたね…

できればデフォルトでエンコードがUTF-8で立ち上がるものを使ってね

はい、エンコード…これを意識している使い始めの方は少ないかしら?
人気の高機能な無料テキストエディタはほぼ現在は新規ファイルをUTF-8で開いてくれます。
日本製の「秀丸」は設定変更をしないとshift-JISで開いちゃう。日本文字やハングル文字などの『2バイト文字(全角と呼ばれる文字)』はエンコード指定しないと文字化けしちゃうんです。WebはデフォルトでUTF-8の世界なのでこれならエンコード宣言を省略できます。
そういうことまで踏まえてこの際一緒に覚えていけば、今後のテキストエディタ生活が楽しくなるはず。

まぁまぁ、そこから言い出したらいつまでたってもこんな数行のPHPさえ書けませんね。

新規PHPファイルへの記述例

				
					<?php
define( 'LOGIN_CHANGE', sha1( 'haretarikumottari' ) );
require_once './wp-login.php';
?>
				
			

スペースも半角です。ちなみにVS Codeを初回に書いたように最近初期化したMac Proに新たにインストールしたらデフォルトで全角スペースはマークされて気がつくようになってました。
この全角スペースひとつ付くだけでWordPressが動なくなったりするんです… ドキドキしないように、これをそのままコピーしてお使いくださませな。
*2行目の’haretarikumottari‘は皆さんが任意で変更できる唯一のところです。忘れないようにして頑強なものをどうぞ。
PHPはサーバサイドで稼働するScriptなのでJavaScriptやHTMLとは違いファイルの中身はローカルからは見ることができません。よってここにパスワードを書いてても大丈夫なんです。
「パスワード忘れたらどうしよう…」
誰しも不安になると思いますけれど、これも慣れです。パスワードとIDの管理はもう鉄壁にやりましょう! 今時はみんな写メで記録していますね。写真を撮って♡マークのお気に入りに入れておけばいいようです。便利な時代ですね。

では使用Themeのfunction.phpを弄りましょう

本物の親Themeとは別のChild Themeを使っていますか? 『百聞』ではまだTheme選びの記事は書いていませんけど、一度決めたデザインはできるだけ変更せずに使いたいので更新のたびにカスタマイズで右往左往しないために必ずChild Themeを使うようにしてます。親Themeが更新されてもChildの方はそのまま使っていいはず。更新の差分だけ変更することもあるかもしれないけど、それだってほんのわずかだと思います。
Themeがインストールされているルートは解りますよね?

公開ディレクトリ/wp-content/themes/

この中に使用中のThemeが見つかるはず。その目的のディレクトリの中のfunction.phpをこれまたテキストエディタで開きます。

Child Themeの親Themeと同名のファイルは修正箇所の上書きと追加する目的に使われます。
PHPは記述を誤ると真っ白くなったりエラーになったりしますから、修正箇所が解るよう最終行に追記する形で書くのをおすすめします。

実際の書き加えるコードはこれです

}とかの途中に混ぜ込まないように要注意!
書けたら拡張子.phpをつけて保存します。

				
					//URL変更のカスタマイズ--ここから
define( 'LOGIN_CHANGE_PAGE', 'arekore-iroiro.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( 'haretarikumottari' ) != LOGIN_CHANGE ) {
      status_header( 403 );
      exit;
    }
  }
}

// ログイン中の場合は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行目は先ほど作ったPHPファイル名を拡張し付きで明記。(例:arekore-iroiro.php)
*10行目には先ほどの任意のキーワードを(例:haretarikumottari)
あとはコピーのままでOK。’(シングルクォート)とかもしっかり付けましょう。

これで大丈夫なはず。

ただし、今回は自分のブログなので少し実験的な意味で頑固に守ってみようと思います。

候補に挙がったプラグインは『Hide My WP Ghost』です

プラグインのご紹介までしただけですが、この記事はここでいったん終わりにして次に回しましょう。5分もからないような記述を横道に逸れながら説明してきましたけど、基本プラグインが多くなると搭載されたJavaScriptなどが動作の妨げになったりと不具合の元にもなります。

そしてプラグインを入れるときにはまず、しっかりデータベースのバックアップ等をとってからにしましょうね。
WordPressはルート内にPhpMyAdminを設置することもできるので、サーバ単位でPhpMyAdminを使えるような場合以外はこれもおすすめします。これはWordPressのコアにインストールするわけじゃないので便利で簡単ですよ。

Hide My WP Ghostの使い方はこちらの記事に書いてます。併せて読んでくださいね。

https://momo-s.info/web/hide-my-wp-ghost/

You may also like