WordPressの管理者名を非表示にする

セキュリティ

 WordpressのユーザIDが外部から確認できるようになっているとの記事
  日本のWordPress 約15%がユーザーID丸見え、4割がログイン画面むき出し! 18万サイトを調査【プライム・ストラテジー調べ】 | Web担当者Forum
を見て、自分のサイトを確認したところ、15%に入っていることに気づきました。
 さっそくSiteGuard WP Pluginを入れて対策したので備忘録です

環境

WordPressバージョン 6.7.2

現状確認

バージョンの確認方法は、管理者でログインしてダッシュボードを開くと表示されます。
今日の最新バージョンは6.7.2になっていました。

サイトの管理者名が表示されるのか確認しました。
chromeを使って、クッキーを使わないシークレットモードでアクセスしています。

URLに、「?author=1」を入力すると管理者名が表示されています。
恥ずかしいですね。

ちなみに、curlを使って次のコマンドを使って管理者名が取得できるか確認したところ、この方法ではcurlでユーザ名を表示することはできませんでした。(json apiを使うとcurlでもユーザ名は取得できました)

# curl から呼び出すと管理者名を表示しないように対策されている
c:\ > curl https://tansunohazama.sakura.ne.jp/wordpress/?author=1
  [何も表示されません]

# UAを偽装しても管理者名を表示しないように対策済み
c:\ > curl -a "Mozilla/5.0 (Windows 2000; Win2000; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36 Edg/121.0.0.0" https://tansunohazama.sakura.ne.jp/wordpress/?author=1
  [何も表示されません]

次はログインページにアクセスできるかを確認しました。
wp-login.phpがログインphpですので、URLを入力すると、ログインページが表示されます。
こんなとこまで対策しないとあーだこーだ言われる時代になったのですね。
確かにやろうと思えばブルートフォース攻撃できますもんね。

対策

表示名の変更

画面上に表示される名前をニックネームに変更します。
管理画面から[ユーザー]-[プロフィール]を選択して、ニックネームを作成し、ブログ上の表示名をニックネームに変更しました。
一番下に「プロフィールを更新」というボタンがあるので、押すのを忘れなく。

セキュリティプラグインを導入する

細かい設定は一人の力では成し遂げられません。もうプラグインに頼りましょう。
SiteGurd WPの評判が良いので使いました。
プラグインのインストールは、管理画面から、[プラグイン]を選択

そして、「新規プラグインを追加」を押します。

「SiteGuard WP Plugin」を今すぐインストールします。 君に決めたっ!

今すぐインストールを押して、10秒くらい待つとインストールが完了しました。
次は「有効化」を選択

インストールが完了するとこんな感じになりました。

メニューから[SiteGuard]を起動すると、こんな感じでした。
説明書がなくてもやっていけそう!

ログインページ変更ではログインページの名前が変えられるようです。
ログインページがわからなくなると困るので、ブックマークしておきましょう

ログインロックでは、ブルートフォース攻撃対策の設定ができます。

ログイン履歴では、履歴を確認することができます。

?author=1対策は「ユーザ名漏えい防御」で行うことができます。
初期値では「無効」になっているので、「有効」にします。
REST APIも使用していないので、併せて「無効化」しました。
変更後は一番下の「変更を保存」を押すのを忘れなく。

対策後の確認

もう一度、Chromeのシークレットモードを使ってwordpressにアクセスします。
?author=1 と入力してもユーザ画面に遷移しないことが確認できました。

入力中のURL

エンターを押してもURLが遷移しません

次はwp-logion.phpによるログイン画面が見えてしまう問題について確認します。
次のURLを呼び出しても、ログインすることができなくなっています。

変更したログインページを使ってログインします。
パストラバーサルなので、拡張子以降は必要ありません。
キャプチャ認証まで追加されていますね。

最後に

「SiteGuard WP Plugin」すごいですね。
直感的に使えるのはありがたいです。
ログインページのPATHが変更できる機能はありがたいのですが、ログインPATHを忘れてしまいそうで怖いです;
尚、ログイン履歴については、ログインの失敗まで記録されていました。
狙われているのかがわかるので、ありがたい機能です。

変更したWPログインページのPATHを忘れた時は

 大丈夫。どうにかなります。
 wordpressがインストールされているフォルダの直下にある
  .htaccessファイル
に、ログインページのPATHが保存されています。
 隠しファイルなので、
ls -a
コマンドで表示されます。

$ > ls
[.から始まるファイルは表示されない]
$ > ls -a
 .htaccess ・・・
$ > cat .htaccess
:
#SITEGUARD_PLUGIN_SETTINGS_START
#==== SITEGUARD_RENAME_LOGIN_SETTINGS_START
<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteBase /wordpress/
    RewriteRule ^wp-signup\.php 404-siteguard [L]
    RewriteRule ^wp-activate\.php 404-siteguard [L]
    RewriteRule ^login_?????(.*)$ wp-login.php$1 [L]
</IfModule>
#==== SITEGUARD_RENAME_LOGIN_SETTINGS_END
#SITEGUARD_PLUGIN_SETTINGS_END
:

SiteGuardの「よくある質問」や、困ったときのリンクにこの辺りの説明が書かれていないのはマイナス1点と感じました。
 尚、WinSCPから.htaccessファイルを開くには、
   [オプション]-[環境設定]-[パネル]-[隠しファイルを表示する]
で表示されるようになります。