【完全版】SiteGuard WP Pluginの設定・使い方 ~WordPress総合セキュリティ対策
この記事では「WordPressサイトのセキュリティを守る導入必須のプラグインSiteGuard WP Pluginのインストール~使い方」をどこよりも詳しくわかりやすく画像付きで説明します。
この記事を監修・執筆した専門家
こんにちは!この記事を監修・執筆した斎藤はじめと申します。
私は現役のエンジニアで、普段はWordPressの開発案件などをメインに担当しています。経歴としては誰もが知っている月間数千万人が利用するサービスの開発をしたり、今でも月間数百万人が訪問する規模のWordPressサイトの運営しております。WordPressを触らない日はありません。
そんな私がプロの目で解説していきます!
WordPressプラグイン「SiteGuard(サイトガード) WP Plugin」とは?
「SiteGuard(サイトガード) WP Plugin」はWordPressのセキュリティを強化するための無料プラグインです。
日本のセキュリティ専門企業「EGセキュアソリューションズ」が開発しており、かなり有名で人気のあるプラグインで、インストール数は40万件を超えています。
また、WordPressレンタルサーバーのロリポップやさくらでも「SiteGuard WP Plugin」公式に導入されたりと実績も申し分ありません。
なぜWordPress運用にSiteGuard WP Pluginが必要か?
なぜWordPress運用にはSiteGuard WP Pluginが必要なのでしょうか?理由はいくつかあります。
WordPressが持つセキュリティの脆弱性
WordPressに関しては不正アクセスの脆弱性への指摘が多々あります。個人的に言っても初期設定で使うのはちょっと心配であまりおすすめできません。
脆弱性がある理由としては
- WordPressが世界サイトの4割で採用されているなど圧倒的に普及しているサービスなので狙われやすい
- オープンソース(プログラムを公開しているソフト)なのでセキュリティの穴が発見されやすい
- 歴史が古く、昔の仕様を引き継いだ結果脆弱性になる
などなどありますが、サイバー攻撃者にとってはどれも関係ありません。
増え続けるサイバー攻撃
2000年移行、インターネットの普及とともにサイバー攻撃は世界中で増え続けています。加えて、コロナ禍によるネット利用の増加やロシアのウクライナ侵攻以降、サイバー攻撃の伸びは爆発的です。
個人ブログでも必ず狙われているサイバー攻撃
WordPress自体は無料ソフトウェアなことから、自己責任で利用します。
現状はレンタルサーバー会社などがよくある最低限の不正アクセスのセキュリティ対策を導入はしていますが、それも十分ではありません。
サイバー攻撃は大企業だけの問題ではありません。攻撃者はその大企業を狙う踏み台の1つにしようとして、個人のブログしか持っていないあなたのサーバーにも毎日のようにセキュリティの脆弱性を探す通信をしてスキャンしています。いつのまにかサーバーがのっとられて、大量の加害者の1人になってしまいます。
この脆弱性スキャンのための通信は小さい個人のサイトでも数十件~数百件くらいは毎日のようにあります。ないと思っている人も、おそらくログを見てないか、気づいていないだけです。
サイバー攻撃による不正アクセスは自分事として考え、自分のサービスのセキュリティ対策は自分で責任を持つことが大切です。
「SiteGuard WP Plugin」プラグインをインストール
では早速「SiteGuard WP Plugin」をインストールしてみましょう。
以下のように「SiteGuard WP Plugin」プラグインを新規インストールします。
インストール自体は数秒で終わると思いますので、有効化します。
有効化すると早速ログインページのURLが自動的に変更され上部に通知が出てきます。いったん無視します。
さきほどの機能によって、こんなメール通知も飛びます。受信の確認だけしてください。
さらに、設定の下あたりに「SiteGuard WP Plugin」専用のこんなメニューが登場するようになります。
SiteGuard WP Pluginの機能一覧
SiteGuard WP Pluginにはサイバー攻撃から身を守る機能として以下の機能があります。
# | メニュー名 | 初期状態 | 説明 |
---|---|---|---|
1 | 管理ページアクセス制限 | OFF | ログインしていない接続元から管理ディレクトリ(/wp-admin/)を守ります。 |
2 | ログインページ変更 | ON | ログインページ名を変更します。 |
3 | 画像認証 | ON | ログインページ、コメント投稿に画像認証を追加します。 |
4 | ログイン詳細エラーメッセージの無効化 | ON | ログインエラー時の詳細なエラーメッセージに変えて、単一のメッセージを返します。 |
5 | ログインロック | ON | ログイン失敗を繰り返す接続元を一定期間ロックします。 |
6 | ログインアラート | ON | ログインがあったことを、メールで通知します。 |
7 | フェールワンス | OFF | 正しい入力を行っても、ログインを一回失敗します。 |
8 | XMLRPC防御 | ON | XMLRPCの悪用を防ぎます。 |
9 | ユーザー名漏えい防御 | OFF | ユーザー名の漏えいを防ぎます。 |
10 | 更新通知 | ON | WordPress、プラグイン、テーマの更新が必要になった場合に、管理者にメールで通知します。 |
11 | WAFチューニングサポート | OFF | WAF (SiteGuard Lite)の除外ルールを作成します。 |
12 | 詳細設定 | – | IPアドレスの取得方法を設定します。 |
13 | ログイン履歴 | – | ログインの履歴が参照できます。 |
それでは早速設定を1つ1つ見ていきましょう。
ダッシュボードにメニュー一覧があります。
細かいことはどうでもよい!と言う方は画像だけ見て設定していけば、筆者おすすめの設定が完成しますので、ぜひ気軽にやってみてください。
1. 管理ページアクセス制限
「管理ページアクセス制限」の設定は、ログインしていない接続元から/wp-admin/以下のファイルを守ります。
何のためどんな機能?
管理画面のパスである/wp-admin/以下に配置しているファイルに非ログイン者が原則アクセスできなくなります。
WordPressの初期設定では管理画面のページ自体のプログラムには当然権限によって制限がかかっていますが、JavaScriptや画像、その他のファイルには何も制限がかかっておらずアクセスが可能です。場合によっては予期せぬ穴があるかもしれませんので塞いでおくための機能です。
それを原則アクセス禁止にして、ログイン後24時間そのIPアドレス向けに許可するという仕様になっています。
IPアドレスのベースの許可仕様であることから、IP変更(リモートワークで移動したり、wifiルーターを再起動など)しただけでログインしなおしだったり不便なこともあります。
デフォルトではOFFになっています。
おすすめの設定
OFFでよいと思います。
特に緊急性は高くなく、念のためという機能だと思うので、この機能のせいで不便や不具合が出る可能性があるならOFFでよいかなと思いました。
2. ログインページ変更
「ログインページ変更」設定は、ログインページのURLを変更します。
何のためのどんな機能?
/wp-login.phpという世界共通のWordPressログインページ名を変更することで攻撃者からログインURLを隠しサイバー攻撃からのセキュリティを高めます。
例えるなら犯罪者が家に侵入するのを防ぐために玄関の場所を隠してしまうことと同じです。
旧ログインURL) https://ドメイン/wp-login.php
↓
新ログインURL) https://ドメイン/login_【5桁の乱数】
デフォルトでONになっており仮のログインページ名に変更されています。
おすすめの設定
ONにします。ページ名はデフォルトだとlogin_【5桁の乱数】という名前のページになりますが、人気の機能のデフォルト設定というのもちょっとセキュリティ的にカッコ悪いので、もうちょっと複雑なランダムな文字列に変えるとよいでしょう。
また、ログインページへのリダイレクトについてはチェックONにします。
WordPressの初期仕様では/wp-admin/以下にブラウザでアクセスすると、ログインしていない場合は自動的にログイン画面に転送されます。
このリダイレクトあるままだと、せっかく名前を隠したログインURLが自動転送によって簡単にバレてしまいます。
ただ、このリダイレクト禁止オプションはバージョンによってはエラーで動作しない場合もあるのでその場合は外しておきましょう。
それでもloginページ名を変えるだけでも不特定多数の機械的な攻撃は防げます。
3. 画像認証
「画像認証」設定では、ログイン時やコメント時、パスワード変更、ユーザー登録時にそれぞれ画像認証を追加して、認証時の入力文字列を選択することができます。
どんな機能?
コンピュータによるブルートフォース攻撃やパスワードリスト攻撃などによるログイン認証突破を防ぎます。
ログイン画面の例。いわゆるCAPTCHA認証の一種ですね(reCAPTCHAでいうところのv1)。コンピュータは読みづらく人間には読めるという特性をもった認証です。
これらがコメント時、パスワード変更、ユーザー登録時にも追加されます。
デフォルトONになっており全ての画面にCAPTHCAが挿入されます。
おすすめの設定
おすすめはONです。
ログインなりすまし攻撃だけではなくスパムコメントなどにも効果的です。
文字列は入力のしやすさからデフォルトのひらがなのみでよいと思います。
4. ログイン詳細エラーメッセージの無効化
「ログイン詳細エラーメッセージの無効化」ではログインエラーの際のメッセージを同一内容に変更します。
何のためのどんな機能?
ログイン画面で認証が失敗した際に出るメッセージが全て同一のものになります。
デフォルトONです。
この機能がないWordPressの初期状態だと、以下のように割と攻撃者のヒントになってしまいそうな「存在しません」とか「間違っています」等の詳しいメッセージが出てしまい、セキュリティ的にあまりよろしくないです。
(以下の例だとユーザーやメアドが存在すること自体はバレてしまいます)
この「ログイン詳細エラーメッセージの無効化」をONにするとログインが失敗した場合、全て以下のようなメッセージ内容になります。
おすすめの設定
特別な理由がない限りメッセージは隠す。これはONにしたほうがよさそうです。
5. ログインロック
「ログインロック」設定では、ログイン失敗が一定期間に一定回数を超えた場合、接続元IPアドレスを指定時間ブロックします。
何のためのどんな機能?
ブルートフォース攻撃やパスワードリスト攻撃等の不正ログイン防止用のログインロック機能です。「失敗をカウントする期間」、「ロックするまでの失敗回数」、「実際ロックかける時間」を指定します。
デフォルトでON、期間、回数、ロック時間がそれぞれ5秒、3回、1分になっています。
ロックされるとこんな画面になります。
おすすめの設定
画像認証を設定している場合は30秒、3回、5分と厳しめの設定がいいと思います。
その設定は以下の理由からロボット向けに最大限に厳しくした設定といえます。
- ①デフォルトの5秒、3回の状態だと2秒に一度ログイン実行するだけで通り抜けられるので甘い
- ②失敗回数のカウントはパスワードを入力し、画像文字認証を突破したものがカウントされる
- ③人間だと30秒でパスワードと画像文字の認証を入力した上で3回失敗というのは、かなり高速に操作しない限りは到達できない
ただ、画像文字認証を使わない場合はかえって人間がロックされすぎて不便になる可能性があるのでデフォルトの状態でよいでしょう。大量の単純な攻撃はこれだけでも防げます。
(本当はロックの条件は数パターン登録したいところですね)
6. ログインアラート
「ログインアラート」設定は、新しくログインがあった場合にそのユーザーあてにメール通知をする機能です。
何のためのどんな機能?
不正ログインなどにすぐに気づくためのメール通知です。ログイン画面からログインがあるたびにそのユーザー本人にメールを送れます。
変更できるのは送信する内容と送信対象。「管理者のみ」にチェックすると、管理者権限をもつユーザーだけに送ることができます。
おすすめの設定
不正ログイン対策としてONにしておきましょう。
サイトの特性にもよりますが、心配な方は「管理者権限ユーザーのみに送る」のチェックは外していいかもしれません。
不審な通知があったらサーバー管理者宛に連絡をもらう運用にしておきましょう。
7. フェールワンス
フェールワンス(最初のログイン失敗)機能を有効にします。
何のためのどんな機能?
この機能を有効にすると、どんなユーザーで正しいアカウント情報でログインしても最初の1度目は失敗します。
これはブルートフォース攻撃やパスワードリスト攻撃の攻撃者をだます目くらましの役目をします。正しいパスワード情報でログインを試みても、攻撃者はログインが失敗したと勘違いし、次のパスワードを入力するでしょう。
デフォルトはOFFです。
おすすめの設定
なんとも言えませんが、OFFでよいと思います。
画像文字認証含めてログインを2度しなくてはいけないなんて、ちょっと不便すぎますよね。
8. XMLRPC防御
何のためのどんな機能?
XML-RPC自体はWordPressの外部からデータを参照・更新するXMLデータとHTTP通信を使ったインタフェースの仕組み自体のことです。
過去の古い仕組みが残っている状態で、REST APIの方が新しい仕組みです。
主にxmlrpc.phpというファイルを通して、ピンバックの実現に使われています。
ピンバック自体はリンク貼ったよという自動通知のことです。サイト同士の相互リンク促進のために使われます。
ピンバック通知の例です。承認するとコメント欄に貼った先のURLが掲載されます。
個人的にはこのピンバック機能は無効だけではなく、「XMLRPC無効化」にしてしまってよいかな、と思います。
理由は以下。
- ピンバック通知自体がスパムによく使われてしまうこと
- そもそもピンバック機能自体がWordPressユーザーに認識と理解がされていない
- 内部リンクを記事に貼っても通知が飛んできてしまう
- xmlrpc.phpは度々DDos攻撃の対象になる
※Jetpackプラグインを使っている場合はXML-RPC全体を無効にすると一部通信ができなくなるとのことです。
ピンバック機能だけ無効にするか、XML-RPC全体を無効にするか選べます。
デフォルトはONでピンバック無効化です。
おすすめの設定
というわけで問題なければ、XML-RPC全体を無効してしまいましょう。
9. ユーザー名漏えい防御
「ユーザー名漏えい防御」設定画面からは?author=というアクセスを防止したり、REST APIの使用を無効化できます。
何のためのどんな機能?
WordPressは初期状態で?author=【数字】というアクセスを許可しています。アクセスすると/author/ユーザー名/という投稿者のアーカイブ(記事一覧)ページが表示されてしまいユーザー名がバレてしまいます。
author=1は最初に作られたユーザーなので大抵管理者権限を持っています。
ユーザー名がバレるとあとはパスワードを推測すればログインできてしまうので、サイバー攻撃者に大きなヒントを簡単に与えてしまうことになります。
「ユーザー名漏えい防御」は、このような手法でユーザー名がバレてしまうのを防ぐ機能です。
REST APIはWordPressに標準実装されているデータを参照や更新ができる仕組みです。
おすすめの設定
おすすめというか必ずONにしたいくらいの設定です。
ONにすると?author=アクセスはトップページに転送されます。
10. 更新通知
WordPress本体やプラグインの更新、テーマの更新があったときにメールで通知する機能です。
こんな内容のメールが通知されます。
デフォルト設定はONで、おすすめ設定もONです。
11. WAFチューニングサポート
こちらはプラグイン開発会社のWAF製品「SiteGuard Server Edition(SiteGuard Lite)」がインストールされている環境が対象の設定なので割愛します。
12. 詳細設定
こちらはIPアドレスの取得方法の詳細を設定します。
プロキシやロードバランサがエンドユーザーとの間に存在し、IPアドレスが通常のように取得できない場合に設定します。
アクセス元のIPかHTTPヘッダのX-Forwarded-Forの中から取得するかを選択します。
通常は設定する必要はありません。
13. ログイン履歴
ログイン履歴を参照することができます。
ユーザーがログインに成功したり、失敗した時のログを全て保存しています。
怪しい動きがあった場合はチェックするようにしましょう。
まとめ
最後までお読みいただきありがとうございました!
一緒に使いたいセキュリティ関連の記事をまとめておきますのでよろしければご覧ください。