0. はじめに
こんにちは。ワラゴンです。
以前、Wordpressのセキュリティ対策に関する記事を書いたときに、
WordPressでは割と簡単に管理画面のログインユーザ名が露出する、
という問題があることを書きました。
当たり前ですが、ユーザ名が知られてしまった場合、
攻撃者にとっては、「あとはパスワードさえ分かればよい」という状況になるため、非常に危険です。
しかも、WordPressの場合、初期設定のままでユーザ名が露出してしまうので
多くのWordpress管理者は、「ユーザ名が第三者に丸見え」だということを
知らないまま運用しているケースも多いのではないかと想像します。
そこで、今日はどのようにユーザ名が露出するか、具体的な露出経路の確認と、
それに対する対策を見ていきたいと思います。
以前にも書いた通り、ユーザ名が露出する経路としては以下の2つがあります。
・ニックネームからログインユーザ名が露出
・http://ドメイン.com/?author=1から露出
それでは順番に見ていきましょう。
1. ニックネームからログインユーザ名が露出
1.1. 露出経路の確認
WordPressではインストール時に設定した管理者のユーザ名がそのままニックネームとして設定されるという親切(お節介?)機能があります。
そして、使用しているテーマによっては、記事投稿者のニックネームが表示されるものがあります。
例えば、以下の画面は最新のWordpress(ver. 4.9.7)のデフォルトテーマである
Twenty Seventeenの記事詳細画面です。
ご覧の通り、ばっちりログインユーザ名が表示されています。
Wordpressとしては、ここはニックネームを表示しているわけですが、
いかんせん、前述の親切機能によってニックネームはデフォルトでログインユーザ名と同一の
値が設定されているため、間接的にログインユーザ名が露出してしまっています。
1.2. 対策
この問題に対策するためには、ニックネームを修正する必要があります。
管理画面で「ユーザー」 → 「あなたのプロフィール」と選択し、
「ユーザー名」 と「ニックネーム(必須)」に設定されている値が同一であること、
さらに、「ブログ上の表示名」も同じであることを確認します。
↑
実際には「ニックネーム」に設定されている値が露出するわけではなく、
「ブログ上の表示名」で選択されている値が露出します。
つまり、「ニックネーム」の欄の値を変更したとしても、
「ブログ上の表示名」の選択を変更しなければ無意味となりますので、注意してください。
実際に設定を変更する場合は以下のようにします。
↓
↑
必ず「ブログ上の表示名」を新しいものに付け替えるようにしましょう。
設定が終わったら、正しく機能しているか確認してみます。
↑
正しく設定できているようです。
2. http://ドメイン.com/?author=1から露出
2.1. 露出経路の確認
この問題を確認するためには、ブラウザのURL欄にhttp://ドメイン.com/?author=1と入力します。
以下は、ワラゴンのテストサイトで試す場合です。
Enterを押してアクセスすると、ブラウザのURLの部分が変化(リダイレクト)して、
見覚えのあるユーザ名が出ているのではないでしょうか。
というのも、先ほど入力した?author=1というのは、
「ユーザIDが1であるユーザの投稿記事を一覧表示する」というURLであるためです。
ですので、author=1の1の部分を2, 3, 4と変更すれば、
別のユーザの投稿記事一覧を表示させることができます。
1の部分を2,3,4くらいに変更しても、表示されていないようであれば、既に何らかの対策がされていると見て良いでしょう。
参考までに、デフォルトテーマの場合、以下のように表示されます。
↓
2.2. 対策
私が知る限り、この問題に対応できるプラグインが2つあります。(もちろん他にもあると思いますが、、、)
(対策その1)Edit Author Slug
(対策その2)Wordfence
どちらが良いかはケースバイケースです。
Edit Author Slugは、この問題に対応するために特化したプラグインですが、
Wordfenceは総合的なセキュリティプラグインですので、
ユーザ名露出問題対策機能はWordfenceの持つ数ある機能のうちのひとつにしか過ぎません。
ですので、サイトへの影響度合いを考慮して導入するのが良いでしょう。
それでは具体的なインストールと設定の手順を見ていきましょう。
(対策その1)Edit Author Slugをインストールする場合
まず、プラグインの新規追加ページに行き「Edit Author Slug」と検索し、
対象のプラグインをインストールします。
↓
インストールが終わったら、「ユーザー」→「あなたのプロフィール」と進み、
下の方に行くと「Edit Author Slug」という項目が見つかります。
↓
↑
ここで、上のように「カスタム設定」を選び、その中に適当な名前や
キーワードを入れます。
ここで「Edit Author Slug」が表示されていない場合があります。
そんな時は、既にEdit Author Slugが入っていて、特殊な設定が施されている場合があります。
「設定」→「Edit Author Slug」と進み、「役割を元にした Author Base」のチェックを確認しましょう。
これがONになっていると、「あなたのプロフィール」画面で「Edit Author Slug」の項目が表示されません。
設定が終わったら、保存するだけです。
それでは、設定が有効になっているか見てみましょう。
↓
↑
先ほど入力した値が表示されていますね。
お気づきの方もいるかもしれませんが、この設定はユーザ単位になります。
つまり、ユーザIDを露出させたくない全てのユーザでこの設定を行う必要があります。
ユーザがたくさんあったら面倒ですね、、、
(対策その2)Wordfenceをインストールする場合
Wordfenceをインストールする場合は、Wordfenceのデフォルト設定でこの対策が有効になっているため、普通にインストールするだけです。
↓
インストールが終わったら、ちゃんと機能しているか確認してみましょう。
↓
ちゃんと機能しているようですね。
Wordfenceの場合は、これだけで全てのユーザに対しての対策が完了します。
簡単でいいですね。
ちなみに、Wordfenceを入れた場合、デフォルトでこの機能は有効になっていますが、
設定内容をきちんと確認したい場合は「All Options」の中に以下のような項目があるので、
そのチェックボックスをONにするだけです。
Prevent discovery of usernames through '/?author=N' scans, the oEmbed API, and the WordPress REST API
少し階層が深いので、以下のスクリーンショットを参考までに用意しました。
↓
3. まとめ
いかがだったでしょうか?
知らないうちにユーザ名が丸見えになっているなんて、
ちょっと驚きだったのではないでしょうか。
私もそうでした。
ここで上げた対策をきちんと実施して、
Wordpressサイトの防御力をアップしましょう。