
WordPressは圧倒的メジャーなCMS。オープンソースで拡張機能も大きな魅力ですが、それゆえ攻撃の対象にもなりやすくなっています。
WordPressはオープンソースのため、プログラム内容が分かっています。どこにアクセスすれば、ログインできるか、どこにセキュリティホールがあるかなどもオープンになっているのです。
不正ログインやスパム、ひいてはWebサイトの改ざんなどが行われ、深刻な状況になる可能性もあります。少しでもリスクを減らすためにも、セキュリティ対策は必須です。
そのセキュリティを強化してくれるプラグインが「SiteGuard WP Plugin」です。
SiteGuard WP Pluginとは
SiteGuard WP Pluginは(株)ジェイピー・セキュアが開発・提供を行っている、WordPressのセキュリティプラグインです。
SiteGuard WP Plugin | ソフトウェアWAFのJP-Secure
セキュリティ対策は何をすればいいかをあげるとキリがありませんが、SiteGuard WP Plugin は主にログイン・管理ページへのアクセスへの対策をすることができます。
- 国産のプラグインで、日本語対応も完璧。
- プラグインの更新もまめにあるので、メンテナンス面も安心。
- 不正ログインやコメントスパムを防ぐ。
- 不正ログインをチェックできる。
- 管理ページ(/wp-admin/)へのアクセスを制限できる。
利用するレンタルサーバーによっては、WordPressの簡単インストールなどで、デフォルトで SiteGuard WP Plugin がインストールされていることもあるほど、メジャーなプラグインです。
有効化したらログインページを確認
SiteGuard WP Pluginは、ワードプレスのプラグインメニューからインストールできます。
SiteGuard WP Plugin – WordPress プラグイン | WordPress.org 日本語
後でログインできない…という状況にならないように、有効化したらすぐにログインができるか確認します。
有効化すぐであれば、プラグイン一覧の上部に「ログインページURLが変更されました」という表示が出てくるので、ここから新しいログインページが確認できます。

メールでもURLは確認できます。有効化すると、管理者のメールアドレスに「SiteGuard WP Plugin」からメールが届きます。ここにもログインURLが記載されているので、ここからログインページにとぶこともできます。
新しいログインページにいくと、このように表示されます。

インストール > 有効化 したら、問題なくログインできるか試してみましょう。初期設定で画像認証もONになっているので、ひならが入力が追加されています。
SiteGuard WP Pluginの機能・設定
SiteGuard WP Plugin の設定項目はこちら。

緑色のチェックが付いている項目は、設定がONになっている状態です。初期で設定されているものは基本そのままに。必要・不要が分かったら都度設定していきましょう。
初期の状態のままでもひとまず大丈夫ですが、よりセキュリティを上げるために、いくつか設定し直す必要があります。
また、プラグインを有効化してエラーが出た場合もこの設定を変更することで解決する場合もあるので、それぞれがどういう内容なのかは覚えておきましょう。
管理ページアクセス制限

この設定で /wp-admin/ への不正アクセスを防ぎます。
「ログインしているIPアドレスのみ /wp-admin/ へアクセスできる」というものです。
初期値は無効になっているので必要な場合は設定しますが、以下の点に注意が必要です。
- 自分のPCのIPアドレスが変わるとログインできなくなる
- 24時間以上ログインがない場合、ログインできない
「頻繁にログインしない」「IPアドレスが定期的に変わる」といった場合はOFFのままにしておきます。
ログインページの変更

ログインアドレスは初期で https://domain/login_5桁の数字 に設定されています。
login_5桁の数字 は変更することができます。使える文字は「英数字」「-(ハイフン)」「_(アンダーバー)」です。
オプションの「管理者ページからログインページへリダイレクトしない」にもチェックを入れておきましょう。
これがないとセキュリティ半減です。
画像認証

この設定で、ログインページやコメントページに画像認証を追加します。ブルートフォース攻撃やコメントスパムを受けにくくなります。
初期設定ではひらがな入力となっていて、英数字入力への変更もできます。

ログイン詳細エラーメッセージの無効化

こちらはON・OFFのみの設定。
IDやパスワードが間違っているとエラーメッセージが表示されます。
WordPressの初期仕様では、「ユーザー名を入力してください」「パスワードを入力してください」の表示がされます。

どちらかが合っていると、合っている方の表示が消えます。

これを、どちらが合っていたとしても「入力内容を確認の上、もう一度送信してください」という一律表示にします。
表示を一つにすることで「どちらかが合っている」ということを伝えないようにしています。

ログインロック

不正ログインの攻撃では、正解に当たるまで何度もログイン情報を入力して突破しようとする方法があります。
これを防ぐために、「指定した時間内で失敗できる回数」を制限し、連続して入力できないようにログイン画面にアクセスできなくする時間を設定します。
デフォルトでは「5秒間に3回のログインがあった場合、1分間アクセスできなくなる」というものです。
初期設定のままでも問題はありません。
運用しているサイトが一時期ブルートフォース攻撃にあっていて、その度に「このIPからのログインをロックした」というメールが送られてきたときはビクビクしていました。
設定は必須ですね。
ログインアラート

ONにしていると、ログインした瞬間にSiteGuardからメールが送信されます。自分がログインしていないのに、ログインされた場合すぐ気づくことができます。
フェールワンス

「フェールワンス」は正しいログイン情報を入力しても、必ず一度エラーにする、というもの。リスト攻撃への対策になります。
一度失敗したログインを再度入力する、という不正アクセスが少ないため、この機能があります。
一度エラーになった後、5秒〜60秒以内に再度正しいログイン情報を入力することで、ログインすることができます。
ログイン時にパスワード入力が手間にならなければ、ONにしてセキュリティを高めておきましょう。
XMLRPC防御

【XMLRPC】
WordPressと他のシステムとの通信ができるようにした仕様のこと。便利な機能ではあるが、脆弱性もあり攻撃対象になる可能性がある。今ではRESET APIが主流なので無効にすることを推奨している。
XMLRPCは、他のプラグイン、連携している外部のツールによっては支障が出る場合もあるので、確認してから無効化にします。
現在では、REST APIがXML-RPCに取って代わったため、サイトのxmlrpc.phpは無効にするのがいいでしょう。
引用元 : https://kinsta.com/jp/blog/xmlrpc-php/
【ピンバック】
リンクを貼られたら自動的に通知されるというもの。WordPress同士で相互リンクをする仕組み。脆弱性のあるピンバックは、スパマーからのリンクがたくさん来る可能性がある。
ピンバックは初期のまま無効で問題にしておきましょう。
ユーザー名漏えい防御

WordPressサイトでは https://domain/?author=数字 でユーザー名がわかります。
このURLでアクセスすると https://domain/author/ユーザー名 にリダイレクトされるためです。
ユーザー名が分かると、ログイン情報の一つが判明してしまいます。あとはパスワードを入れるだけになるので、セキュリティリスクが高まります。
REST APIを無効化
「/wp-json/wp/v2/users」にアクセスすると、WordPressにあるユーザー情報を見ることができます。知らなかったという人はぜひ自分のサイトでチェックしてみてください。json形式で情報が書かれているのが確認できると思います。
これを防ぐために「REST APIを無効化」があります。
ここにチェックを入れることで、WP REST APIにアクセスしてもエラーコードが表示され、情報が取得できません。
プラグインの中にはWP REST APIを利用しているものもあります。プラグインごとの除外ができるので、分かる場合はONにしておきましょう。
注意点は、プラグイン以外は除外できないことです。もしプラグイン以外でWP REST APIを利用している場合、正常に動作しなくなります。その場合はここにはチェックを入れず、ユーザー情報の漏えい防止のためのコードを別途記述する必要があります。
更新通知

デフォルトはONの状態なので、不要なものは無効に設定する必要があります。
毎日、もしくは定期的にログインしてサイトをチェックしている場合には、設定しなくてもいいと思います。放置サイトを運営している場合は設定していた方が無難です。
WAFチューニングサポート

WAFは改ざんや情報漏洩を防ぐ機能のことです。
サーバーにWAF (SiteGuard Lite)が導入されていないと意味がありません。レンタルサーバーによってはセキュリティのために導入しているところもあります。
WAFは外部からの攻撃を防ぐと同時に、攻撃でないものもブロックすることもあります。このことを防ぐために、除外ルールをここで設定します。
WAFによってエラーが出てしまった場合は、ONにしてこの除外ルールを設定してみましょう。
よく分からない場合、誤作動やログインできないといった状態になる可能性もあるので、OFFにしておきます。
詳細設定

詳細設定では、クライアント(サイトにアクセスしてくる)IPアドレスの取得方法の変更ができます。
特に問題なければ「リモートアドレス」のままでOK。
プロキシーサーバーの設定や、ロードバランサーによってIPアドレスが取得できない場合、「X-Forwarded-For」からIPアドレスを取得するようにする機能です。
ログイン履歴

ユーザー名が使用していないもの、使用していないIPアドレスからの履歴などは不正ログインの証拠です。
定期的にチェックしてみましょう。
無効でもOKだと思う機能
機能がたくさんあるのがSiteGuard WP Pluginの魅力ですが、全てを有効化する必要はありません。
以下は必要に応じて有効化する形でも問題ないかなと思う機能です。
- 管理ページアクセス制限
- XMLRPC防御
- WAFチューニングサポート
メールが邪魔くさい、頻繁にサイトチェックする人は、以下の設定も無効でいいと思います。
- ログインアラート
- 更新通知
もちろんよりセキュリティを強化したい場合は、全てチェックして設定した方が良いです。
セキュリティは完璧になることはありませんので、できる範囲のことをしっかりやることが大切です。
変更したログインページの確認
プラグイン内ではもちろん、ログインURLは最初に送られるメール、.htaccessでも確認ができます。
ログインURLがわからなくなってしまった場合は、これらから確認します。
.htaccess
を確認できるならこの部分を確認します。
#==== SITEGUARD_RENAME_LOGIN_SETTINGS_START
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /
RewriteRule ^login_xxxxx(.*)$ wp-login.php$1 [L]
</IfModule>
#==== SITEGUARD_RENAME_LOGIN_SETTINGS_END
RewriteRule ^login_xxxxx(.*)$ wp-login.php$1 [L]
の login_xxxxx が変更されたログインURLです。
ログインページを変える、wp-admin からリダイレクトしない必要性
WordPressのログインページは初期の状態で /wp-login.php または /wp-admin/ でアクセスできます。 /wp-login.php がログイン画面で、/wp-admin/ は管理者ページへのURLです。
ログインしていない状態で /wp-admin/ にアクセスすると、ログインページにリダイレクトするのがデフォルトの仕様です。
攻撃してくる人たちは、このことを分かっています。
なので、仕様のままにすると、不正ログイン攻撃を受けやすくなります(ブルートフォース攻撃やリスト攻撃)
それを防ぐために、ログインページの変更、/wp-admin/ にアクセスした時のリダイレクトをしないように設定する必要があります。
動作確認
- WordPressバージョン
5.8
- プラグインバージョン
1.6.0
- 動作確認日
2021/09/02