WordPressはブルートフォースアタックなどの外部からの攻撃を受けやすいので、個人で運用しているブログであってもセキュリティ対策をやっておかないといけません。
本日ご紹介するXO Securityは、WordPress側でできる最低限のセキュリティ対策が1つになったプラグインで、主にログイン周りを中心に、作成者アーカイブの無効化できたりコメントにCAPTCHAをつけることができたり、あとはXML-RPC PingbackやREST APIを無効にすることができます。
今回の記事では、XO Securityのオススメ設定も合わせて紹介しますので、ぜひ参考にしてもらえればと思います★
目次
XO Securityプラグインでできること・特徴
まずはXO Securityできることから見ていきます。
- ログインに関するセキュリティ対策
- コメントCAPTCHAによるスパム対策
- XML-RPCピンバクックの無効化
- REST APIの無効化およびREST API URL(wp-json/)の変更
- 投稿者アーカイブページの無効化
- ログインログも管理画面で簡単チェック(ログ自動削除付き)
- プラグインは日本語対応(日本人が作者)
特にログイン周りのセキュリティ対策が手厚いのが大きな特徴です。ログインURLの変更やロックアウト、ログインアラートの通知、CAPTCHA、言語制限といった、主にブルートフォースアタック対策にも有効な機能が勢揃いです。
そのほかにも、使用しないリモート操作の機能はOFFにできたり、投稿者アーカイブページの無効化が管理画面から簡単にコントロールできます。「これだけ機能盛りだくさんで、本当に無料で使っていいの?」って思うくらい、かなりオトクなプラグインなんじゃないかと思います。
・・・
ではここからはXO Securityプラグインのインストールから設定の流れを見ていくことにしましょう★
XO Securityプラグインのインストール
管理画面左メニューの「プラグイン」>「新規追加」へ進みます。
「XO Security」を検索してインストールします。
プラグインを有効化したら、XO Securityの設定ページへ進みます。
XO Securityの設定
XO Securityの設定画面です。ここでは現在のステータスが表示され、緑の印になっているところは有効になっている設定だということを示しています。
XO Securityを入れた直後は「ログインログの記録」しか有効になっていないので、ページ上部の「ログイン」「コメント」「XML-RPC」「REST API」「秘匿」の各タブリンクから、1つずつ設定していきましょう。
ログイン
まずはログイン。設定項目が一番多いです。それだけログイン周りのセキュリティ対策ってのが重要なんだということでしょう。
①試行回数制限
ログインに失敗したときのリトライ数に制限をかけることができます。プルダウンメニューで選択できるのは1、12、24、48の「時間」で、その下のテキストフィールドには「数字(回数)」を入力します。初期値は「4」です。
②ブロック時の応答遅延
ログインをブロックした際の応答遅延の時間を設定します。0から120秒の間から選ぶことができ、初期値は「10」です。ここはできるだけ長い時間が良いので「120」にしておけばOK。
③失敗時の応答遅延
ログインのリトライに失敗したときの応答遅延の時間を設定します。0から10秒の中で時間を選ぶことができます。初期値は「1」ですが、これも長めの「10」でOKかと。
④ログインページの変更
WordPressのログインページはドメイン名/wp-login.phpと決まっているので、これを別のURLヘと変更することができます。
⑤ログインアラート
ログインしたら通知メールを飛ばすかどうかの設定と、その通知メールの中身を編集することができます。
必要であればこのアラートはONにしたら良いかもですが、個人ブログだったらわたしはOFFでも良いかなと思っています。
⑥ログインエラーメッセージの変更
ログイン失敗時のエラーメッセージを汎用的なものへと変更します。
で、パスワードが間違っていれば「エラー:ユーザー名*********のパスワードが間違っています。パスワードをお忘れですか?」のような、とても親切なメッセージが表示されます。
しかしこれ、親切が故に第三者が見たら「どっちかは合ってるんだな」ということが分かってしまうことにもなるわけです。
そこでログインエラーメッセージの変更をオンにしておくことで、仮にユーザー名、パスワードどちらかが合っているときでも「ユーザー名またはパスワードが間違っています。」のような汎用的なメッセージを出してくれるようになります。
⑦メールアドレスによるログインの無効化
ログインの際にメールアドレスは使えないようにします(ユーザー名のみにする)。この辺は今までfunctions.phpとかでやっていたコントロールが、管理画面からできるのはホント楽で良いですね★
⑧ログイン言語制限
最初から「無効」になっていて、変更できないぽいです。
⑨ログインCAPTCHA
ログイン時に画像認証するかどうかを決めます。CAPTCHAを使う場合「英数字」「ひらがな」から選ぶようにします。
⑩ログインログの自動削除
ログをずっと貯めておくか、一定期間過ぎたログは削除するのかを選びます。
コメント
次に「コメント」の設定について見てみましょう。
①コメントCAPTCHA
コメントフォームにCAPTCHAを付けるかどうかを決めます。CAPTCHAを使う場合、ログインのときと同じように「英数字」「ひらがな」から選びます。
コメントはホントにスパムが多い。。。
XML-RPC
続いて「XML-RPC」です。
ここでは以下の2つの機能を無効化することができるんですが、
①XML-RPCの無効化
②XML-RPCピンバックの無効化
まずはXML-RPCについて簡単な解説から。
いちおう、↓こんなコトができるとされています。
- リモートで投稿の追加や削除、編集ができる
- リモートでファイルのアップロードができる
- WordPressにサイトに貼られたURLへのピンバック送信
便利であることは間違いないんですが、リモートから操作ができるということは悪用されるケースもあるということなので、セキュリティ上、取り扱いが難しい機能ではあります。
XML-RPC、XML-RPCピンバックは無効化した方が良いか?
わたしが運営する複数のWordPressブログのログインログを見ても、XML-RPC(xmlrpc.php)へのアクセスは多いです。
これはブルートフォースアタックか、大量のピンバック送信により相手サーバーへ攻撃するDDosなのか…?は分かりませんが、リモート機能は(今後も)使わないよという場合は無効化しておく(XO Securityの画面でオンにチェックを入れておく)でOKかと思います。
REST API
REST APIでは、以下下の2つの設定をします。
①REST API の無効化
②REST API URLの変更
ここでもまずは「WordPressのREST APIって何ぞや?」についてざっくり説明します。
ブログの記事を書いて運営しているだけだと、REST APIに触れる機会が少ないかもしれないですが、
例えばドメイン名の最後に/wp-json/wp/v2/posts/のように打ち込むと、投稿一覧の結果を返してくれるのが分かると思います。
ただし、取得できるのは記事やページの情報だけではなく、WordPressのユーザー情報にまで及ぶので、これをどうしようか・・・がネックになるわけです。
REST APIの無効化について
REST APIを使用しないなら全部無効化(REST API の無効化をオンにして、その下の各チェックボックスにも全てチェック入れる)しておけばOKです。
で、ユーザー名だけ知られたくないという場合は、以下の2つにチェックしておくと良いです。
- /wp-json/wp/v2/users
- /wp/v2/users/(?P
[\d]+)
無効化したら、ドメイン名/wp-json/wp/v2/usersでアクセスして"rest_no_route"
と返ってくればOKです。
REST API URLの変更
さきほどの話の中で出てきた「wp-json/」のURLを別の文字列に変更することができるのが「REST API URLの変更」です。
ココはお好みで設定変更すればいいのかなと思います。
秘匿
最後に「秘匿」です。
ユーザー情報を隠したいのではあれば、基本的に下の2つはどちらもチェックしておくことをオススメします。
①作成者アーカイブの無効化
②コメント著者名クラスの無効化
ログインログの確認
管理画面の左メニュー「ユーザー」>「ログインログ」からログを確認することができます。
ログインログのページでは以下の情報が表示されます。
結果(成功か失敗か)
ログイン時のIPアドレス
ログイン時の言語
ユーザーエージェント
ユーザー名
パスワード
第三者が自分のユーザー名を使ってログインしている(を試している)とか、パスワードがバレちゃってる…なんてときは、すみやかにユーザー情報を変更した方がよいです。
※ちなみに、WordPressのユーザー名変更の方法は、以下の関連記事でも紹介していますので、合わせて参考にしてみてくださいね。
例えばログイン時にベーシック認証やアプリを使った2段階認証を掛け合わせてしておけば、仮にユーザー名がバレたところで、めちゃくちゃ大きな問題にはなりません。(あと、複雑なパスワードにしている、てってのも前提です。)
XO Securityなどのプラグインは、あくまでWordPressの中だけでできるセキュリティ対策であって、他の対策(認証など)と組み合わせることで、セキィリティレベルをグンッとアップさせることができます。
XO Securityのオススメ設定
ここまで個別にXO Securityの設定について解説をしてきましたが、最後にXO Securityのオススメ設定を一覧でまとめておきます。
ログイン | |
---|---|
試行回数制限 | 12時間で4回 |
ブロック時の応答遅延 | 120 |
失敗時の応答遅延 | 10 |
ログインページの変更 | オン |
ログインアラート | オフ(どっちでもOK) |
ログインエラーメッセージの変更 | オン |
メールアドレスによるログインの無効化 | オン |
ログインCAPTCHA | オン |
ログインログの自動削除 | 30日以前 |
コメント | |
---|---|
コメントCAPTCHA | オン |
XML-RPC | |
---|---|
XML-RPCの無効化 | オン |
XML-RPCピンバックの無効化 | オン |
REST API | |
---|---|
REST APIの無効化 | オン /wp/v2/users /wp/v2/users/(?P |
REST API URLの変更 | 任意 |
秘匿 | |
---|---|
作成者アーカイブの無効化 | オン |
コメント著者名クラスの無効化 | オン |
XO SecurityとSiteGuard WP Pluginとの違い
XO Securityと同じようなセキュリティ対策用プラグインとして「SiteGuard WP Plugin」があります。
両方のプラグインを使ったことがあるので、SiteGuardとXO Securityとでは何がどう違うのか?を比較してみると、だいたいこんな感じです。
- メールアドレスによるログインの無効化
- 作成者アーカイブの無効化
- コメント著者名クラスの無効化
- REST APIの無効化
- ログインログの自動削除
- XML-RPC無効化はあるにはあるけど、XMLRPCの無効化かピンバックの無効化か、いずれか一方しか選択できない
- 管理ページアクセス制限(ログインしていない接続元IPアドレスからwp-admin/を保護する機能)
- フェールワンス(正しい入力であってもログインを一回失敗させる機能)
- バージョンアップの更新通知
- IPアドレス取得方法の選択
ログインURLを変更したり、ログインブロックができるなど、他の機能はどちらもほぼ同じです。
どっちが優れているとかの話ではないので、必要な対策と使いたい機能を比較検討して選べばいいかなと思います。
XO Securityプラグインの特徴と使い方のまとめ
最後に、XO Securityできることのまとめを以下に挙げておきます。
- ログインURLの変更やロックアウト、ログインアラート、CAPTCHAといったログイン周りのセキュリティ対策が手厚い
- CAPTCHAによるコメントスパム対策もできる
- XML-RPC、XML-RPCピンバクックの両方を無効化できる
- REST APIの無効化や、wp-json/のREST API URLの変更もできる
- 投稿者アーカイブページが管理画面から簡単に無効化できる
- ログインログの確認ができ、ログの自動削除設定もできる
ここではその時間と回数の設定できる訳ですが、例えば「24時間で4回」の指定にすると、「24時間の間に4回までリトライを許可する」ということなります。