「SiteGuard WP Plugin」でダッシュボードを保護する

プラグイン
この記事は約12分で読めます。

「SiteGuard WP Plugin」とは

SiteGuard WP Pluginをインストールするだけで、WordPressのセキュリティが向上します。
本プラグインは、ブルートフォースのログイン攻撃に特化した、保護・管理機能などのセキュリティプラグインです。

注書き

WordPressのマルチサイト機能には対応していません。
WebサーバーのApache 1.3、2.xのみ対応しています。
CAPTCHA機能を利用するためには、phpに拡張ライブラリ「mbstring」「gd」がインストールされている必要があります。
管理ページフィルター機能、ログインページ変更機能を利用するためには、Apacheに「mod_rewrite」がロードされている必要があります。
WAFチューニングサポートを利用するためには、WAF(SiteGuard Server Edition)がApacheにインストールされている必要があります。

以下の機能があります。

管理画面IPフィルタ

管理画面(wp-admin以下)への攻撃を防御するための機能です。
管理ページにログインしていない接続元IPアドレスからのアクセスに対しては、404(Not Found)を返します。
ログイン時には、接続元IPアドレスを記録し、そのページへのアクセスを許可します。
24時間以上ログインしない接続元IPアドレスは、順次削除されます。
本機能を除外するURL(wp-admin以下)を指定することができます。

ログイン名変更

ブルートフォース攻撃やパスワードリスト攻撃など、不正なログインを試みる攻撃に対する脆弱性を低減するための機能です。
ログインページ名(wp-login.php)が変更されます。初期値は「login_<ランダム5桁>」ですが、好きな名前に変更することが可能です。

CAPTCHA

ブルートフォースアタックやパスワードリスト攻撃など、不正なログインを試みる攻撃に対する脆弱性を低減するための機能です。
また、コメントスパムを減らすための機能です。CAPTCHAの文字は、ひらがなと英数字を選択することができます。

ログインロック

ブルートフォースアタックやパスワードリスト攻撃など、不正なログインを試みる攻撃に対する脆弱性を低減する機能です。
特に、自動化された攻撃を防止する機能です。接続元IPアドレスのうち、一定期間内にログインに失敗した回数が規定回数に達した場合、ログインをロックします。
指定された期間内に指定された回数に達した接続元IPアドレスは、指定された時間ブロックされます。
各ユーザーアカウントはロックされません。

ログインアラート

不正なログインに気付きやすくする機能です。ログイン時に、ログインユーザー宛にメールを送信します。
ログインした覚えのないメールが届いた場合は、不正ログインを疑ってください。

フェイルワンス

パスワードリスト攻撃に対する脆弱性を軽減する機能です。ログイン入力が正しくても、1回目のログインに失敗する必要があります。
5秒後、60秒後にもう一度正しく入力すると、ログインに成功します。1回目のログインに失敗すると、以下のエラーメッセージが表示されます。

ピンバック機能を無効化する

pingback 機能を無効化し、その乱用を防止します。

作者クエリをブロックする

author=”アクセスによるユーザー名の漏えいを防止します。

アップデート通知

セキュリティの基本は、常に最新版を利用することです。WordPressのコア、プラグイン、テーマの更新が必要な場合、管理者にメールで通知します。

WAFチューニングサポート

WordPressの誤検知(通常アクセスでの403エラー発生も含む)を回避するためのルールを作成する機能です。
EGセキュアソリューションズのWAF(SiteGuard Server Edition)がWebサーバーにインストールされている場合。WAFは、Webサーバーに対する外部からの攻撃を防止するものです。
しかし、WordPressやプラグインの機能によっては、実際には攻撃ではないものをWAFが検知し、その機能をブロックしてしまうことがあります。
WAF除外ルールを作成することで、指定した機能に対する誤検知を防ぎつつ、WAFの保護機能を有効にすることができます。

「SiteGuard WP Plugin」プラグインをインストール

では早速「SiteGuard WP Plugin」をインストールしてみましょう。
以下のように「SiteGuard WP Plugin」プラグインを新規インストールします。

インストール自体は数秒で終わると思いますので、有効化します。
さらに、設定の下あたりに「SiteGuard WP Plugin」専用のこんなメニューが登場するようになります。

SiteGuard WP Pluginの機能一覧

SiteGuard WP Pluginにはサイバー攻撃から身を守る機能として以下の機能があります。

それでは早速設定を1つ1つ見ていきましょう。
ダッシュボードにメニュー一覧があります。

とりあえず、設定してみよう!

細かいことはどうでもよい!と言う方は画像だけ見て設定していけば、筆者おすすめの設定が完成しますので、ぜひ気軽にやってみてください。

管理ページアクセス制限

「管理ページアクセス制限」の設定は、ログインしていない接続元から/wp-admin/以下のファイルを守ります。

何のためどんな機能?

管理画面のパスである/wp-admin/以下に配置しているファイルに非ログイン者が原則アクセスできなくなります。
WordPressの初期設定では管理画面のページ自体のプログラムには当然権限によって制限がかかっていますが、JavaScriptや画像、その他のファイルには何も制限がかかっておらずアクセスが可能です。場合によっては予期せぬ穴があるかもしれませんので塞いでおくための機能です。
それを原則アクセス禁止にして、ログイン後24時間そのIPアドレス向けに許可するという仕様になっています。
IPアドレスのベースの許可仕様であることから、IP変更(リモートワークで移動したり、wifiルーターを再起動など)しただけでログインしなおしだったり不便なこともあります。
デフォルトではOFFになっています。

おすすめの設定

OFFでよいと思います。
特に緊急性は高くなく、念のためという機能だと思うので、この機能のせいで不便や不具合が出る可能性があるならOFFでよいかなと思いました。

ログインページ変更

「ログインページ変更」設定は、ログインページの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ページ名を変えるだけでも不特定多数の機械的な攻撃は防げます。

画像認証

「画像認証」設定では、ログイン時やコメント時、パスワード変更、ユーザー登録時にそれぞれ画像認証を追加して、認証時の入力文字列を選択することができます。

どんな機能?

コンピュータによるブルートフォース攻撃やパスワードリスト攻撃などによるログイン認証突破を防ぎます。
ログイン画面の例。いわゆるCAPTCHA認証の一種ですね(reCAPTCHAでいうところのv1)。コンピュータは読みづらく人間には読めるという特性をもった認証です。

これらがコメント時、パスワード変更、ユーザー登録時にも追加されます。
デフォルトONになっており全ての画面にCAPTHCAが挿入されます。

おすすめの設定

おすすめはONです。
ログインなりすまし攻撃だけではなくスパムコメントなどにも効果的です。
文字列は入力のしやすさからデフォルトのひらがなのみでよいと思います。

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

「ログイン詳細エラーメッセージの無効化」ではログインエラーの際のメッセージを同一内容に変更します。

何のためのどんな機能?

ログイン画面で認証が失敗した際に出るメッセージが全て同一のものになります。
デフォルトONです。

この機能がないWordPressの初期状態だと、以下のように割と攻撃者のヒントになってしまいそうな「存在しません」とか「間違っています」等の詳しいメッセージが出てしまい、セキュリティ的にあまりよろしくないです。
(以下の例だとユーザーやメアドが存在すること自体はバレてしまいます)

この「ログイン詳細エラーメッセージの無効化」をONにするとログインが失敗した場合、全て以下のようなメッセージ内容になります。

おすすめの設定

特別な理由がない限りメッセージは隠す。これはONにしたほうがよさそうです。

ログインロック

「ログインロック」設定では、ログイン失敗が一定期間に一定回数を超えた場合、接続元IPアドレスを指定時間ブロックします。

何のためのどんな機能?

ブルートフォース攻撃やパスワードリスト攻撃等の不正ログイン防止用のログインロック機能です。「失敗をカウントする期間」、「ロックするまでの失敗回数」、「実際ロックかける時間」を指定します。
デフォルトでON、期間、回数、ロック時間がそれぞれ5秒、3回、1分になっています。
ロックされるとこんな画面になります。

おすすめの設定

画像認証を設定している場合は30秒、3回、5分と厳しめの設定がいいと思います。
その設定は以下の理由からロボット向けに最大限に厳しくした設定といえます。

ただ、画像文字認証を使わない場合はかえって人間がロックされすぎて不便になる可能性があるのでデフォルトの状態でよいでしょう。大量の単純な攻撃はこれだけでも防げます。
(本当はロックの条件は数パターン登録したいところですね)

ログインアラート

「ログインアラート」設定は、新しくログインがあった場合にそのユーザーあてにメール通知をする機能です。

何のためのどんな機能?

不正ログインなどにすぐに気づくためのメール通知です。ログイン画面からログインがあるたびにそのユーザー本人にメールを送れます。
変更できるのは送信する内容と送信対象。「管理者のみ」にチェックすると、管理者権限をもつユーザーだけに送ることができます。

おすすめの設定

不正ログイン対策としてONにしておきましょう。
サイトの特性にもよりますが、心配な方は「管理者権限ユーザーのみに送る」のチェックは外していいかもしれません。
不審な通知があったらサーバー管理者宛に連絡をもらう運用にしておきましょう。

フェールワンス

フェールワンス(最初のログイン失敗)機能を有効にします。

何のためのどんな機能?

この機能を有効にすると、どんなユーザーで正しいアカウント情報でログインしても最初の1度目は失敗します。
これはブルートフォース攻撃やパスワードリスト攻撃の攻撃者をだます目くらましの役目をします。正しいパスワード情報でログインを試みても、攻撃者はログインが失敗したと勘違いし、次のパスワードを入力するでしょう。
デフォルトはOFFです。

おすすめの設定

なんとも言えませんが、OFFでよいと思います。
画像文字認証含めてログインを2度しなくてはいけないなんて、ちょっと不便すぎますよね。

XMLRPC防御

XML-RPCやピンバックの機能を無効化する機能です。

何のためのどんな機能?

XML-RPC自体はWordPressの外部からデータを参照・更新するXMLデータとHTTP通信を使ったインタフェースの仕組み自体のことです。
過去の古い仕組みが残っている状態で、REST APIの方が新しい仕組みです。
主にxmlrpc.phpというファイルを通して、ピンバックの実現に使われています。
ピンバック自体はリンク貼ったよという自動通知のことです。サイト同士の相互リンク促進のために使われます。
ピンバック通知の例です。承認するとコメント欄に貼った先のURLが掲載されます。

個人的にはこのピンバック機能は無効だけではなく、「XMLRPC無効化」にしてしまってよいかな、と思います。
理由は以下。

※Jetpackプラグインを使っている場合はXML-RPC全体を無効にすると一部通信ができなくなるとのことです。
ピンバック機能だけ無効にするか、XML-RPC全体を無効にするか選べます。
デフォルトはONでピンバック無効化です。

おすすめの設定

というわけで問題なければ、XML-RPC全体を無効してしまいましょう。

ユーザー名漏えい防御

「ユーザー名漏えい防御」設定画面からは?author=というアクセスを防止したり、REST APIの使用を無効化できます。

何のためのどんな機能?

WordPressは初期状態で?author=【数字】というアクセスを許可しています。アクセスすると/author/ユーザー名/という投稿者のアーカイブ(記事一覧)ページが表示されてしまいユーザー名がバレてしまいます。

author=1は最初に作られたユーザーなので大抵管理者権限を持っています。
ユーザー名がバレるとあとはパスワードを推測すればログインできてしまうので、サイバー攻撃者に大きなヒントを簡単に与えてしまうことになります。

「ユーザー名漏えい防御」は、このような手法でユーザー名がバレてしまうのを防ぐ機能です。

REST APIはWordPressに標準実装されているデータを参照や更新ができる仕組みです。

おすすめの設定

おすすめというか必ずONにしたいくらいの設定です。
ONにすると?author=アクセスはトップページに転送されます。

更新通知

WordPress本体やプラグインの更新、テーマの更新があったときにメールで通知する機能です。

こんな内容のメールが通知されます。

デフォルト設定はONで、おすすめ設定もONです。

WAFチューニングサポート

こちらはプラグイン開発会社のWAF製品「SiteGuard Server Edition(SiteGuard Lite)」がインストールされている環境が対象の設定なので割愛します。

詳細設定

こちらはIPアドレスの取得方法の詳細を設定します。
プロキシやロードバランサがエンドユーザーとの間に存在し、IPアドレスが通常のように取得できない場合に設定します。
アクセス元のIPかHTTPヘッダのX-Forwarded-Forの中から取得するかを選択します。
通常は設定する必要はありません。

ログイン履歴

ログイン履歴を参照することができます。

ユーザーがログインに成功したり、失敗した時のログを全て保存しています。

怪しい動きがあった場合はチェックするようにしましょう。

まとめ

最後までお読みいただきありがとうございました!

一緒に使いたいセキュリティ関連の記事をまとめておきますのでよろしければご覧ください。

1password(ワンパスワード)の使い方と設定方法を解説 | タルト株式会社
パスワードの使いまわしはだめだと分かっていても、こんなことはないでしょうか。「パスワードを忘れていつも再発行しちゃう」「忘れないようにいつも同じパスワードを使ってる」「複雑にすると覚えられない」実は、私はこれでいつも困っていました。パスワー...
【完全スパム対策】問い合わせフォームContact Form 7 | タルト株式会社
この記事ではお問い合わせフォームの不正利用やスパムメールの対策方法を解説いたします。本質的な対策を紹介しますので、本記事をお読みいただければWordPressの「Contact Form 7」をお使いの方以外でも、Webサイトを運営するなら...
「モデレートしてください」WordPressコメントのスパム対策 ~Invisible reCaptchaプラグイン | タルト株式会社
WordPressでサイト運営をしているとコメント欄経由で管理者のメールアドレス宛に「モデレートしてください」のような件名のメールがしょっちゅう飛んで来て困っていませんか?しかも内容を見てみると、よくわからない英語の文章やURLが貼られてい...
安くてかんたん!脆弱性診断のSiteLockの登録方法とレビュー | タルト株式会社
サイトロック(SiteLock)とは?サイトロック(SiteLock)は「脆弱性診断&マルウェア駆除ツール」です。開発元は米国SiteLock社ですが、日本ではGMOインターネットグループの東証一部上場企業「GMOグローバルサイン」が運営と...

 

コメント