WordPressセキュリティ設定 /「?author=1」からユーザー名を隠す

最近、もう一つブログを開設し、.htaccessの中身について気になるところがあったので調べていた所、気になる記事がありました。

どうやら、ワードプレスの最初の設定のままだと、WordPressへのログイン時の名前(ユーザー名)が分かる人にはバレてしまうとのこと。

というわけで、その対策のための設定方法をメモしておきたいと思います。

え?
どゆこと??

目次

WordPress での「?author=1」から ユーザー名 が分からないようにする

「それ、気になってたんだ」という人向けに、まずは結論です。説明は後ほど。

サーバーとしてネットオウルを使ってる人向けです。(関連会社のエックスサーバーでも多分大丈夫かと思います。)

てっとり早く教えてー

ちょっと!
チョットchotto!
何の話???

.htaccessを開いて以下を追記してください。「# WordPress author表示禁止」の部分は単なるコメントです。そのままコピペで大丈夫と思います。

# WordPress author表示禁止
RewriteEngine On
RewriteRule ^\?author=(.*)? / [R=302,L]
RewriteRule ^author/(.*)? / [R=302,L]

ちなみにwindowsだと 上記をコピペすると ^\?authorのバックスラッシュが 「円マーク」になると思いますが問題ないようです。 スターサーバーのファイルマネージャーから.htaccessにコピペすると自動で「円マーク」に変わり、そのまま保存しても普通に動きました。

富士通の以下のページを見ると

https://www.fmworld.net/cs/azbyclub/qanavi/jsp/qacontents.jsp?rid=535&PID=7507-4556 より

バックスラッシュと円マークは同様の機能を持ちます。

とあります。

追記の具体例

私の場合は、次のように記載すると上手く動きました。先程のコードの配置場所に注目してください。#BEGIN WordPress ~ #END WordPressのに配置しています。(仕組みはよく分かりません。)

RewriteEngine On
RewriteCond %{HTTPS} !on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

# WordPress author表示禁止
RewriteEngine On
RewriteRule ^\?author=(.*)? / [R=302,L]
RewriteRule ^author/(.*)? / [R=302,L]


# BEGIN WordPress
# "BEGIN WordPress" から "END WordPress" までのディレクティブ (行) は
# 動的に生成され、WordPress フィルターによってのみ修正が可能です。
# これらのマーカー間にあるディレクティブへのいかなる変更も上書きされてしまいます。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

これでOKのハズです。

うまくいかなかった具体例

コードの配置場所に注目してください。#BEGIN WordPress ~ #END WordPressのに配置しています。

最初は、以下のように後ろの方に追記したのですが、上手く動きませんでした。SSL化の部分は普通に動いていたと思います。

# BEGIN WordPress
# "BEGIN WordPress" から "END WordPress" までのディレクティブ (行) は
# 動的に生成され、WordPress フィルターによってのみ修正が可能です。
# これらのマーカー間にあるディレクティブへのいかなる変更も上書きされてしまいます。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

RewriteEngine On
RewriteCond %{HTTPS} !on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

# WordPress author表示禁止
RewriteEngine On
RewriteRule ^\?author=(.*)? / [R=302,L]
RewriteRule ^author/(.*)? / [R=302,L]

なので、先ほど紹介したように、#BEGIN WordPress ~ #END WordPressのに持っていくと上手く動きました。

著:Lotus Web Studios
¥1,756 (2021/06/07 07:43時点 | Amazon調べ)
SBクリエイティブ
¥2,486 (2021/06/07 07:55時点 | Amazon調べ)

上で説明した設定をしていない場合どうなるのか?

記事を投稿したりする場合は以下の画面で「ユーザー名 or メアド」「パスワード」を入れてログインすると思います。

前の項目で説明した設定をしていない場合、このWordPressにログインする際の「ユーザー名」が知られる可能性があります。

え?別にいいんじゃないの?
パスワードかけてるんだし。

ネットで簡単に検索したみたところ、ブルートフォースアタック(総当たり攻撃)というのをされて、他者にログインされてしまう可能性があるようです。

つまり、誰かが「パスワードを試しに入れてみて、ログインできるかを確認する」作業をパソコンを使って自動で行うことでパスワードを知ることになり、ブログを乗っ取られてしまう可能性があるということになります。

ユーザー名が分からなければ、不正ログインされる難易度は高くなると思いますが、ユーザー名がバレてしまっていると、あとはパスワードを調べればいいだけ、という状態になるので危険だと思います。

そして、管理者のユーザーでログインされて、パスワードも変更されてしまえは、ブログが盗まれたことになってしまいます。

。。。。。それはマズイ

記事がたくさんあった場合、これまでの苦労が水の泡です。

(WordPressへのログイン画面のURLも可能であれば変更したほうがよさそうですが、そちらは今は触れません。)

パスワード管理はパソコンで? スマホで? 紙にメモ?

紙にメモ派の方向けアマゾンで簡単に検索してみたので以下に紹介します。

A5タイプのルースリーフタイプの手帳

さらに小さいルースリーフタイプのバインダ

そもそもどうやってユーザー名がばれてしまうの?

例えば、あなたがwordpress.comというドメインのブログをWordPressで作ったとします。

wordpress.comとしているのは単なる例えです。あなたが作った実際のドメインに当てはめて考えてみてください。

ブラウザであなたのブログを表示し、ドメイン名のあとに?author=1と続けて入力してみてください。

wordpress.com/?author=1を入力してエンターを押すとどうなるでしょうか?

wordpress.comとしているのは単なる例えです。

以下のように「ユーザー名」がバレてしまっていないでしょうか?

「投稿者」の部分は「ニックネーム」になっているかもしれませんが、アドレスのところはユーザー名になっていないでしょうか?

wordpress.com/author/ユーザー名という形で表示されていないでしょうか?

wordpress.comは(以下同文)

これでバレてしまうようです。

これを知って、速攻で対策しました。
マズイマズイ…

一応、ネットオウルのスターサーバー では短時間にログイン処理(失敗)が行われた場合にアクセスを制限する機能は備わっていますが、それでも24時間後には解除されるようです。

追記コードのそれぞれの意味は?

というわけで、最初に示したように以下のコードを追記しましたが、それぞれの意味は何なのでしょうか?

# WordPress author表示禁止
RewriteEngine On
RewriteRule ^\?author=(.*)? / [R=302,L]
RewriteRule ^author/(.*)? / [R=302,L]

細かい部分は省きますが、以下に簡単に説明します。

RewriteRule ^\?author=(.*)? / [R=302,L]について

wordpress.com/?author=1とブラウザで入力されても、トップページを表示する設定のようです。

問い合わせると名前を返す のを止めるような設定だと思います。

設定前 BEFORE

クライアント

あなたの名前はなんですか?

サーバー

○○です。

【 相手に簡単に知られる 】

設定後 AFTER

クライアント

あなたの名前はなんですか?

サーバー

トップページを表示します

【 相手に知られない 】

RewriteRule ^author/(.*)? / [R=302,L]について

wordpress.com/author/ユーザー名でも表示されないようにする設定のようです。

例えばユーザー名としてadminを使っているとして、悪意のある人が 「もしかしてadminで登録してるかな? 試しに入力してみよう」と思い立って、wordpress.com/author/adminをブラウザのアドレスバーに入力すると、結局表示されてしまいます。それで、「あ、ユーザー名はadminだ」と確認されてしまいます。

この設定は「ユーザー名これで合ってるかな?」それを防いで、wordpress.com/author/○○○○ という入力がされてもトップページを表示させる設定になっています。

設定前 BEFORE

あなたの名前は「○○○○」でしたか?

サーバー

いいえ違います。

もしくは

サーバー

はいそうです。

【 相手に知られる可能性がある 】

設定後 AFTER

あなたの名前は「○○○○」でしたか?

トップページを表示します

【 相手に知られない 】

これは、設定しておいたほうが良さそうだ。

オレオレ詐欺も注意せねば

この記事が気に入ったら
フォローしてね!

ここで投稿は終わりです
  • URLをコピーしました!
  • URLをコピーしました!
目次