情報セキュリティマネジメント試験合格者として、クライアント方々のセキュリティ意識を高めるべく活動しています。
ここでは、WordPressプラグイン「WP Cerber Security 8.9」の使い方をご案内します。
もうひとつの有名なプラグインであるSiteGuard WP Pluginと比較しながら、設定方法に触れていきます。
SiteGuard WP Pluginのログイン画面のエラー
SiteGuardで「ログインURLの変更ができない」「captcha認証の画像が表示されない」といった状況もよくお聞きします。
上記のような状況では、SiteGuardのフォルダ名を変更して無効にし、ディレクトリのパーミッション変更作業が発生するケースがあります。
サーバによってはWP Cerber Securityに切り替えるというのがわかりやすい対策でもあります。
WordPressは脆弱性の塊
企業案件では、WordPress導入に際し、ITセキュリティ部署から許可が出る可能性は低いです。
ローカルPCでJSONを作成し記事のアップロードを行ったり、管理画面へのアクセスを遮断、プラグイン利用を回避と、気にすることが多すぎるためです。
それでも利便性があるため、WordPressの利用者は多いですね。
そこでせめてものセキュリティ対策として「SiteGuard WP Plugin | ソフトウェアWAFのJP-Secure」をお使いになるケースを見かけます。
皆がSiteGuard WP Pluginを使う理由
何故SiteGuard WP Pluginなのか。
どうやら多くのメディアで取り上げられているからというのも原因のようです。
更に「無意識に.htaccessを利用している」のが理由ではないでしょうか?
ApacheのWebサーバーでWordPressを運営する人が多いからかと。
私はApacheなんて使ってないという人
Apacheが何かわからずに「そんなの使ってない」と言い切る方もいらっしゃいます。
サーバを調べてみると思いっきり使っていたりします。
レンタルサーバを借りると、管理画面がついていて各種設定が可能だったりしますよね。
あれこれ設定済みで便利にしてあります。
サーバは、本来そのままだとなにもない箱です。
そこでユーザーが「あなたのサイトを見たいよ」といった時に、「これ見てね」と返すプログラムが必要です。
それがApache(アパッチ)です。
長年サーバのソフトウェアとして運用されているApacheは、安定性や信頼性が高く、多くのレンタルサーバがApacheを採用しています。
Apacheには.htaccessという設定ファイルがあります。 これが各ディレクトリにあることで、データへのアクセスなどのルールが設定できます。
そのルールをコントロールするのが「SiteGuard WP Plugin」です。
Apacheとnginxを比較する
みなさん、無意識にApacheサーバを使ってらっしゃいます。
ですから「やや遅くても安定稼働しているサーバ」を使っていることになります。
Apache HTTP Server – Wikipedia
- 初版1995年
- 初版2004年10月
歴史も違いますが、後発のnginx(エンジンエックス)を使うと、同時多発的にサーバへのアクセスが発生した場合に、1.5倍近くの速度差が出ることがあります。
基本的にnginxは速いです。
※Apacheでも設定次第で速度アップができます
nginxには.htaccessがありません。
SiteGuard WP Pluginは.htaccessを使うので、nginxサーバでは使えない(使いにくい)ということになります。
WP Cerber Securityの使い方と設定
コアウェブバイタルを意識したSEO対策では、そもそものサーバ速度が重要です。
さて、高速で動作するnginxサーバを契約したなら、WP Cerber Securityプラグインでのセキュリティ設定をしていきましょう。
WP Cerber Documentation – WordPress security plugin, firewall, anti-spam
WP Cerber Securityの管理画面
プラグインをインストールして左側のメニューから管理画面を開きました。
メイン設定のタブから見ていきましょう。
メイン設定
初期化モード
「レガシー」と「通常」が選べます。 いきなり意味がわからないと思いますが、通常モードにする必要があります。
通常モードが有効にできない場合は、プラグインフォルダ周りに書き込み権限がない場合があります。
画面上にフォルダ名が出ているはずなので、サーバ上でファイルの書き込み権限を変更してみてください。
通常モードにする理由
以下公式より引用です。
通常モードでは、他のプログラムより先行して動作し、セキュリティチェックをしてくれるということのようです。
このモードでは、プラグインはWordPressコアが初期化された直後で、他のプラグインまたはテーマがロードされる前に自動的に起動します。 Development version 6.3 – WordPress security plugin, firewall, anti-spam
ログインセキュリティ
ブルートフォース攻撃の軽減とユーザー認証の設定という項目がずらっと並んでいます。
ログイン試行回数制限
○分以内に○回の再試行が可能
あまりここの数値を厳しくすると、自分でログイン失敗した時に長時間ログインができなくなります。
参考として、弊社ではログインIDとパスを滅多に間違わないため、60分で5回といった感じです。
実際にブルートフォース攻撃(総当り攻撃)を受けると、短時間でかなりのアクセス数が発生します。
ログインの試行回数の間隔を空けておくことで、サイトの安全性が高まります。
高速のブルートフォース攻撃はこれである程度防げます。
しかし、低速でログイン試行するブルートフォース攻撃もあります。
いずれの設定も、全ての悪質な攻撃を完全に防げるわけではありません。
ですが、簡単にセキュリティを破られてしまうことはなくなります。
企業ですとルールが決まっていたりするので、あらかじめ定められたルールに従うといったところですね。
IP アドレスをブロックする時間
60分
ログイン試行に失敗したIPアドレスをブロックする時間となります。
60分後に設定すると、60分後にまたアクセスできるようになるということです。
(のはずです)
攻撃試行の軽減
過去24時間の2回ロックアウト後、ロックアウト期間を4時間に延長します
上記の設定は、
24時間以内に2回のログイン試行に失敗したIPアドレスは、次にログイン試行できる時間を4時間後にするという設定内容です。
これで不正アクセスを試行する時間が、基本設定として60分ならログイン失敗後に4倍かかることになります。
ホワイト IP アクセスリストを使用
ホワイト IP アクセスリスト内の IP アドレスにログインルールを適用する
これを有効にすると、ホワイトIPアクセスリストに設定したIPアドレスも、他のIPアドレス同様にログインルールの対象になります。
通常はホワイトリスト型の運用だと、ホワイトリストに入れたIPは安全という扱いです。
しかし、管理者本人であっても、IPアドレスが変わることもあるため注意が必要です。
wp-login.php の認証リクエストの処理
- デフォルト処理
- wp-login.phpへのアクセスをブロックする
- wp-login.phpによる認証の拒否
上記の内容が選択できます。
WordPressのログイン画面のURLは、デフォルト設定だとURL+wp-loginです。
「https://サイトのドメイン/wp-login.php」というような形で呼び出しやすくなっています。
ログイン画面のURLがわかりやすいので、IDとパスワードの組み合わせだけで、悪質な攻撃者が総当り攻撃しやすい状況です。
そこでカスタムログインURLを使うと、ログイン画面のURLを変更できるため安全性が高まります。
しかし、この設定を有効にしただけでは、ログインURLが2つに増えるだけです。
カスタムログインURLを有効にする前提で「https://サイトのドメイン/wp-login.php」を無効にしてしまいましょう。
wp-login.phpへのアクセスをブロックするに設定です。
注意
自分のドメインでデフォルトのログイン画面へのアクセスをブロックしたはずなのに、ログイン画面にアクセスできる時があります。
それはあなたのPCが利用しているIPアドレスからのアクセスが許可されているからです。
スマートフォンがPCと同一Wi-Fi内だと、IPも同じなのでアクセスできてしまいます。
例えば、PCがWi-Fi接続ならお持ちのスマートフォンのWi-Fiも切ってから、「https://サイトのドメイン/wp-login.php」にアクセスしてみてください。
404のページがないというエラーが出るはずです。
デフォルトのログインエラーメッセージを無効にする
ログイン試行失敗のメッセージに、存在しないユーザー名やメールを表示しない
ここを有効にすると、ログインのエラーメッセージが一定のものに固定されます。
存在しないユーザー名でログインしようとしたときに、エラー内容を詳しく表示しないことで、攻撃者が実在するユーザー名やメールアドレスを推測するのを防ぐのに役立ちます。
企業案件では、ログインヒントの無効化は大事な設定の一つです。
デフォルトのパスワードリセットのエラーメッセージを無効にする
パスワードリセットのエラーメッセージに、存在しないユーザー名やメールを表示しない
ここを有効にすると、パスワードリセット時のエラーメッセージを固定します。
こちらも攻撃者側が情報を推測することを防ぐのに有効な手段です。
カスタムログインページ
カスタムログインURLは、オリジナルのログイン画面のURLを設定できます。
忘れてしまうとログインできなくなってしまうので注意してください。
遅延レンダリング
カスタムログインページを有効した時に注意してほしいのが、プラグインの動作です。
カスタムログインページを有効にすると、一部のプラグインが機能しなくなる場合があります。
この理由はWP Cerber Securityが、他のプラグインが必要とするJavaScriptやCSSなどの読み込みを阻害してしまうのが原因にあるようです。
遅延レンダリングを有効にすると、この問題が解決される可能性があります。
ただセキュリティプラグインとしての性能が落ちることにもなります。
そのため、意味なくこの設定を有効にするのはいけません。
事前のセキュリティルール
ダッシュボードのリダイレクトを無効化
有効
WordPressにログインしていな居状態で、管理画面のURLへ直接アクセスされた時に、通常はログイン画面に画面遷移されます。
存在しないユーザー
存在しないユーザー名でログイン試行した IP を即ブロック
ONでも問題ないと思いますが、WordPressを複数ユーザーで運用していると即ブロックは厳しすぎるかもしれませんね。
wp-login.php をリクエスト
wp-login.php にアクセスしてきた IP を即ブロック
カスタムログインページの変更でログインURLを変えていれば、ONでも問題ないと思います。
サブネットをブロック
サブネットクラス C の侵入者 IP を常にブロックする
サブネット?クラスC?となりますよね、私も解答に困ります。
攻撃者のIPアドレスで、一定数値の範囲をまとめてブロックする機能だろう、多分。 (調べておきます)
サブネットは、ひとつのネットワークを内部で分割したネットワークです。
サブネットマスクとは|「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典
サイト固有の設定
リバースプロキシ内にある場合に選択する項目です。
リバースプロキシとは?仕組みをわかりやすく解説 | カゴヤのサーバー研究室
あなたのサイトのWebサーバへの負荷分散をした場合に、設定されている場合があります。
籠城モード
籠城モードでは、ホワイト IP アクセスリストの IP 以外は誰もログインできません。
ということで、ホワイトリスト型(WordPressを利用するIPアドレスが固定されている場合)の運用の場合はONです。
ログ監視はONでいいと思います。
通知テストもしておくことを推奨します。
アクティビティ
ログの保存期間などを設定します。
あまり長期スパンで保存すると解析も大変なので、長くて2ヶ月でしょうか。
個別設定
ここは全体的に任意設定ですね。
まとめ
ざーっと見ていきました。 随時更新していきます。
※なかなか全ての項目をフルに活用するケースはないかもしれません。
当サイトはリンクフリーです。
ご自身のブログでの引用、TwitterやFacebook、Instagram、Pinterestなどで当サイトの記事URLを共有していただくのは、むしろありがたいことです。
事前連絡や事後の連絡も不要ですが、ご連絡いただければ弊社も貴社のコンテンツを紹介させていただく可能性がございます。