WordPressはHP制作する場合とても便利なシステムの一つです。
ページを表示されるファイルをテキストエディタでhtmlの知識を使って編集などする必要なく、ページや投稿などの情報はWebブラウザ上で作業が行え、それらの情報はDBに保存し、指定のURLを入力することによりDBから呼び出されたページの情報を表示させるというWebサイト管理にはもう欠かせないものの一つです。
しかし、ネットの技術が向上し誰もが開発できるような時代となり、WordPressの仕組みを知ることができる今では外部から不正アクセスを行おうとするネットユーザーが非常に増えました。
ブラウザからそのサイトはWordPressを使用しているかどうかもブラウザのソース確認から解読できたりします。
そうなると、WordPressの管理画面のURLはある程度共通な文字列なため、悪意を持ったユーザーは簡単にログイン画面を表示させられます。
WordPressのログイン画面共通のURL文字列
https://ドメイン/wp-login.php
ログイン画面にたどり着くと、ユーザー名とパスワードを求められます。
この二つは表に知られたくないものだと思いますが、WPのデフォルトのままだとユーザー名は残念ながら簡単に知られてしまいます。
方法はいくつか存在します。
- ドメインの後に指定のゲット値を入力
- WordPressのREST APIを入力
- WPの標準サイトマップxml
仮に、管理者のユーザー名をadminとします。
ドメインの後に以下の文字列を入力すると、存在した場合はユーザーの投稿アーカイブページが表示されてしまいます。
https://ドメイン/?author=1
大抵最初にWPをインストールし管理者を作成すると、ユーザーの番号は1が割り当てられます。
このユーザーが投稿などすると、ドメインの後にauthorというスラッグが出来、このユーザーが投稿してきた情報の一覧が確認できるURLが準備されます。
https://ドメイン/author/admin
これでadminというユーザー名の存在が確認できました。
存在しない場合、エラー画面が表示します。
次にREST APIを利用する方法です。REST APIとはJSON形式で取得・更新できるAPIで、外部からウェブサイトのデータを取得でき、管理画面を介さずに投稿や編集などの操作ができます。
こちらは以下のようなURLを入力することで表示します。
https://ドメイン/wp-json/wp/v2/users
ページに表示するもの
[{"id":1,"name":"admin","url":"","description": ~以下省略
複数ユーザーがいる場合、 それらも表示してしまいます。
WPの標準サイトマップxmlは、そのWebサイトの構成しているページ群のURL一覧となっていて、そのURL一覧の中にはユーザーの記事が表示する投稿のURL群が含まれて表示します。
以下のようにドメインの後に文字列を入力します。
https://ドメイン/wp-sitemap.xml
Webサイトを構成するURL一覧の中にauthor-sitemap.xmlというリンクがあり、これをクリックすると先ほどのauthorアーカイブのURLにつながります。
WPは対策せず標準のままではユーザー名は簡単に見つかってしまい、あとはパスワードを解読されるまで時間の問題となってしまいます。
その為、セキュリティ対策は必然となり、良く行われる対策として、ログイン画面のURL変更、強固なパスワード、画像認証の設定は最低限行っておきたいものです。
それらを含め、不正アクセスのセキュリティ強化は以下のプラグインを使用して行っておきましょう。
SiteGuard WP Plugin
セキュリティプラグインの一つで、管理画面URLの偽装や、ログイン失敗によるロック、アクセス記録などが行えます。
プラグインをインストールした後、サイドメニューに表示されたSiteGuardのメニューから「ユーザー名漏えい防御」を選択します。
この機能を有効にすることで、?author=1で確認することが出来たページが表示されなくなり、トップページへ戻されます。
また、「REST API 無効化」にチェックを入れることによって、URL末尾に/wp-json/wp/v2/usersを入力しても401エラーの文字列が表示する画面になり、ユーザー名は表示されなくなりました。
Yoast SEO
SEO対策に使用されるプラグインですが、sitemap.xmlの表示非表示設定が行えます。
インストール後にサイドメニューに表示される項目から設定を選び、表示されたサブメニューの「高度な設定」で投稿者アーカイブを選びます。
投稿者アーカイブ画面で「投稿者アーカイブを有効化」をオフにし、設定を保存します。
これにより、WordPress標準のsitemap.xmlの中からユーザーに関わるauthor-sitemap.xmlが表示されなくなります。
まとめ
上部二つのプラグインによってユーザー名を表示させる方法を停止させ、漏えい防止対策を強化させました。
ただ、悪意を持ったユーザーはいろんな手を使ってでも情報収集し不正アクセスを試みようとしますので、SiteGuardプラグインのログインページ変更や画像認証も追加して、しっかりと不正アクセス対策しましょう。
インストール後に注意
セキュリティプラグインの一つとして紹介したSiteGuard WP Pluginですが、このプラグインはインストール後には注意が1点あります。
インストールすると、初期はログイン画面変更が有効になっていて、そのままログアウトすると次ログインしようとしてもURLが変わっているためログインできなくなってしまいます。
その為、インストールしたら最初に「ログインページ変更」メニューに移動し、ログイン画面のURLがどのように変わったか確認しておきましょう。