XO Security プラグインは、 ログイン関連のセキュリティを強化する WordPress プラグインです。
主な特徴
- .htaccess ファイルを作成したり書き換えたりしません。Apache のほか LiteSpeed、Nginx および IIS においても動作します。
- .htaccess ファイルを書き換えないので、.htaccess を使用するプラグインとも併用することができます。
- プラグインは外部サービスを一切使用していません。
機能
- ログインログを記録します。XML-RPC のログイン ログも記録します。
- ログイン試行を制限(ブルート フォース アタック対策)します。XML-RPC のログイン試行も制限します。
- ログインアラート(ログイン時のメール送信)。
- ログインページを変更します。
- メールアドレスまたはユーザー名によるログインを禁止します。
- ログインできる言語を制限します。
- ログインページやコメントフォームに CAPTCHA を追加します。
- ログイン時のエラーメッセージを簡略化(詳細表示しない)します。
- REST API を無効化します。
- 投稿者アーカイブページを無効化します。”http://(サイトURL)/?author=1” で表示される管理者のアーカイブページの URL より管理者のユーザー名を取得されてしまうのを防ぎます。
- コメント投稿者クラスを無効化します。コメントリストに追加されるコメント投稿者クラス “comment-author-xxx”(xxx はユーザー名)を取り除きます。ユーザー名を取得されてしまうのを防ぎます。
- XML-RPC の無効化(ブルートフォースアタック対策)します。
- XML-RPC ピンバックの無効化(DDoS 攻撃対策)します。
- WordPress マルチサイト対応(一部制限があります)。
- WooCommerce ログインページを保護します。
- スパムコメントをブロックします。
- WordPress バージョン情報を隠します。
- 投稿者スラッグ (Nicename) および投稿者ベースを編集します。投稿者スラッグおよび投稿者ベースは投稿者アーカイブページの URL などに使用されます。
- RSS/Atom フィードを無効にします。
- oEmbed レスポンスデータからユーザー名 (author_name および author_slug) を削除します。
- メンテナンスモードを有効にします。
- readme.html ファイルを削除します。
WordPress マルチサイトに関する制限事項
- メインサイトとサブサイトで個別にログインページを設定した場合、サブサイトのパスワード紛失機能は利用できません。ログインページはすべてのサイトで共通に設定することを推奨します。
インストール
- WordPress 管理画面->[プラグイン]->[新規追加] メニューより、[プラグインを追加] ページを開きます。
- 検索ボックスに、”XO Security” と入力し検索します。
- XO Security が見つかったら、[今すぐインストール] をクリックします。
- インストールが完了したら “プラグインを有効化” をクリックします。
WordPress 公式ディレクトリ
スクリーンショット
ログインログページ
XO Security 設定ページ
プロフィールページ
説明
プラグインを有効にすると、管理画面のメニューに [設定]->[XO Security] メニューと、[ユーザー]->[ログインログ] が追加されます。[XO Security] メニューより表示される XO Security 設定ページでは、XO Security プラグインのオプションを設定します。[ログインログ] メニューより表示されるログインログ一覧ページでは、ログインのログの一覧を見ることができます。
詳細な説明は、各ページの ヘルプ(画面上部の [ヘルプ] タブ)を参照してください。
定数
下記の定数を指定できます。wp-config.php に記述してください。
XO_SECURITY_UA_WHITE_LIST
ログインを許可する UserAgent の文字列(ホワイトリスト)を指定します。
複数指定する場合はカンマで区切ってください。
例:
define('XO_SECURITY_UA_WHITE_LIST', 'keyword');
XO_SECURITY_UA_BLACK_LIST
ログインをブロックする UserAgent の文字列(ブラックリスト)を指定します。
複数指定する場合はカンマで区切ってください。
例:
define('XO_SECURITY_UA_BLACK_LIST', 'XML_RPC,PEAR');
XO_SECURITY_LANGUAGE_WHITE_LIST
ログインを許可するブラウザの言語設定(ホワイトリスト)を指定します。
複数指定する場合はカンマで区切ってください。
日本語の場合のみを許可する場合の例:
define('XO_SECURITY_LANGUAGE_WHITE_LIST', 'ja');
日本語と英語を許可する場合の例:
define('XO_SECURITY_LANGUAGE_WHITE_LIST', 'ja,en');
2要素認証
ログイン時に、時間ベースのワンタイムパスワード (TOTP) による追加の認証を行います。
利用するには、TOTP 対応アプリ(Google Authenticator や Microsoft Authenticator アプリなど)に登録する必要があります。
設定手順
- XO Security 設定より、2要素認証を有効化します。
- プロフィール画面の2要素認証設定より、Google Authenticator アプリなどで QR コードをスキャンするか、手動で秘密鍵を入力します。
- アプリに表示された認証コードを入力し、「プロフィールを更新」ボタンを押下します。
- 正しい認証コードが入力されていれば、2要素認証設定に「有効」チェックボックスが表示されます。
秘密鍵はセキュリティ上の理由により再表示することはできません。再設定は一旦無効にして新規の秘密鍵で行ってください。
メンテナンスモード
メンテナンスモードは、管理者以外のユーザーに対してログインページ以外の管理画面を含むすべてのページをメンテナンス画面に切り替えます。ログイン中の管理者以外のユーザーもメンテナンスモード中は管理画面の操作もできなくなります。WordPress 本体のメンテナンスモードとは動作が異なります。
メンテナンスモードの切り替えは XO Security 設定より行います。メンテナンスモード中は、管理バーに「メンテナンスモード」と表示されます。
メンテナンス画面の表示内容を変更するには、メンテナンス画面テンプレートファイル(maintenance-page.php)を、有効化しているテーマのルートフォルダーにコピーして行います。
メンテナンス画面テンプレートファイル
(プラグインフォルダ)/xo-security/templates/maintenance-page.php
※ WordPress 本体をメンテナンスモードにする maintenance.php ファイルと名前を間違わないように注意してください。
FAQ
ログインできない。
- URL を確認してください。ログインファイル名の前にディレクトリ名が付加される場合があります。(サイトアドレス)/wp/(新しいログインファイル名).php のように「/wp/」が必要な場合があります。
- CAPTCHA を有効化しているの場合に、一部のプラグイン(Crazy Bone プラグインなど)を有効化していると、ログインできない場合があります。
- サーバ環境によっては、IP アドレスが正しく取得できない(リバースプロシキなどですべての端末が同一の IP アドレスになるなど)場合があります。この場合は、XO Security の設定「IP アドレスの取得方法」より IP アドレスの取得方法を変更してください。
- プラグインのインストールに失敗(ファイルの不整合など)して、ログインできない場合があります。プラグインを一旦削除して再インストールをお試しください。
CAPTCHA が表示されない。
- CAPTCHA 画像は mbstring および GD モジュールを使用しています。これらのモジュールがインストールされている必要があります。
- 画像を CDN 経由で配信するようなプラグイン (Flying Images プラグインなど) で、CAPTCHA 画像を指定すると表示されなくなります。CAPTCHA 画像を除外するようにしてください。
- iThemes Security プラグインの PHP Execution が有効化されていると CAPTCHA が表示されない場合があります。
ログインページが変更できない。
- WordPress ルートディレクトをパーミッションやプラグインなどで書き込みを禁止していると、ログインページの変更ができません。ログインページの変更時は書き込みを許可してください。ログインページの変更後は書き込みが禁止されていても動作します。
- 既に存在するファイル名では作成できません(エラーメッセージが表示されます)。
XML-RPC を無効化したが、XML-RPC にアクセスできる。
XML-RPC の無効化は、XML-RPC ピンバックが無効化されていない場合は XML-RPC の認証のみを無効化します。XML-RPC 全体を無効化する場合は、XML-RPC ピンバックも無効化してください。
注意事項
WordPress アプリ
WordPress アプリ (Android および iOS) を使用する場合は、下記の点にご注意ください。
- XML-RPC の無効化はしないでください。
- 試行回数制限は多め(5回以上)に設定してください。これは、アプリがログインに失敗した場合に自動でログインを繰り返す (不具合?) 場合があるためです。
- ログイン アラートは使用しないでください。アプリは頻繁にログインを繰り返します。
All In One WP Security & Firewall との併用
XO Security プラグインでログインページを変更している場合、All In One WP Security & Firewall プラグインの「フロントエンドのロックアウト」は使用しないでください。ログインページがロックアウトされて開けなくなります。代わりに XO Security プラグインのメンテナンスモードをご利用ください。
readme.html の削除
readme.html の削除は、プラグインの有効化時とプラグインの設定時、WordPress の更新時に実施されます。
readme.html を削除した場合、WordPress コア ファイルのチェックサムを確認するプラグインまたはサービスで警告が表示される場合があります。
更新履歴
バージョン | 説明 |
---|---|
1.0.0 | 最初のリリース。 |
1.5.3 | クロスサイトスクリプティング (XSS) の脆弱性を修正しました。 |
1.6.0 | プロキシサーバー経由では、HTTP_X_FORWARDED_FOR より IP アドレスを取得するように変更しました。 言語設定によるログイン制限を追加しました。 |
1.7.0 | 必須の WordPress バージョンを 4.6 へ変更しました。 |
1.8.0 | ログインページに CAPTCHA を追加しました。 |
1.9.0 | コメントフォームに CAPTCHA を追加しました。 |
2.0.0 | ログイン時のエラーメッセージを汎用的(詳細を表示しない)に変更するオプションを追加しました。 メールアドレスによるログインを無効化するオプションを追加しました。 |
2.1.0 | サイト情報を表示する機能を追加しました。 REST API をルート単位で有効無効を設定できるようにしました。 |
2.1.3 | 管理画面のダッシュボードの表示が遅くなる場合がある不具合を修正しました。 (mocchii 氏に感謝) |
2.2.0 | WordPress 5.3 に対応しました。 |
2.3.0 | ユーザー名によるログインを無効にし、メールアドレスのみによるログインを有効にする機能を追加しました。 |
2.4.0 | IP アドレスの取得方法を選択できるオプションを追加しました。 翻訳テキストの漏れを修正しました。 管理画面の CSS を微調整しました。 |
2.5.0 | ログインログにログインタイプ項目を追加しました。 一部の IPv6 アドレスをログに記録できない不具合を修正しました。 |
2.6.0 | 投稿者アーカイブの無効化時に、標準サイトマップのユーザープロバイダーを削除するように変更しました。 |
2.7.0 | 設定ページを再構成しました。 ログインフォームをカスタマイズする機能を追加しました。 |
2.7.2 | WordPress マルチサイトの場合、特権管理者のみがログインログを参照できるように変更しました。 |
2.8.0 | スパムコメントをブロックする機能を追加しました。 |
2.9.0 | WordPress バージョン情報を隠す機能を追加しました。 |
3.0.0 | 投稿者スラッグの編集機能を追加しました。 CAPTCHA 入力フィールドのオートコンプリートを無効にしました。 |
3.1.0 | WordPress マルチサイトでは、ログをサイトごとに記録するようにしました。 RSS および Atom フィードを無効にする機能を追加しました。 |
3.2.0 | WordPress マルチサイトのすべてのサイトで共通のログインページを設定するオプションを追加しました。 |
3.2.1 | 投稿者スラッグ (Nicename) を編集できない不具合を修正しました。 |
3.3.0 | oEmbed レスポンスデータからユーザー名を削除する機能を追加しました。 |
3.4.0 | WordPress の最低必要バージョンを4.9に引き上げました。 パフォーマンスの改善を行いました。 コードをリファクタリングしました。 |
3.4.1 | スパムとして保存されているコメントのメールアドレスを、スパムとする機能を追加しました。 セキュリティを強化するために、複数の翻訳テキストにエスケープ処理を追加しました。 コードをリファクタリングしました。 |
3.4.2 | xo_security_loginlog_checkbox フィルターフックを追加しました。 |
3.4.3 | 一部の環境でログインログが記録されない場合がある不具合を修正しました。 |
3.4.4 | MySQL 5.5.13 前のバージョンに対応しました。 |
3.4.5 | PHP 8.1において CAPTCHA が表示されない場合がある不具合を修正しました。 ステータス画面のサイト情報を削除しました。 |
3.5.0 | ログインログからパスワード フィールドを削除しました。 |
3.5.1 | SQLite (Performance Lab、SQLite Database Integration プラグイン) に対応しました。 |
3.6.0 | データベース テーブルを最適化する機能を追加しました。 WordPress PHP コーディング標準に準拠するためのコード リファクタリングをしました。 WordPress 6.2 に対応しました。 |
3.6.1 | テーブルの最適化機能が動作しない不具合を修正しました。 エラー出力の問題を修正しました。 |
3.6.2 | ログインログにログインタイプが表示されない不具合を修正しました。 管理画面を高速化しました。 ログイン情報ウィジェットの有効/無効オプションを追加しました。 |
3.6.3 | ログインフォームの CAPTCHA フィールドに HTML5 “required” 属性を追加しました。 WordPress 6.3 に対応しました。 |
3.6.4 | ログインログページでログが削除できない不具合を修正しました。 |
3.7.0 | WordPress 6.4 に対応しました。 |
3.7.1 | XML-RPC のログイン試行回数制限の不具合を修正しました。 WordPress coding standards 3.0.1に準拠するようにリファクタリングしました。 |
3.8.0 | メンテナンスモード機能を追加しました。 |
3.8.1 | WordPress 6.5 に対応しました。 readme.html ファイルを削除する機能を追加しました。 管理画面の文言と CSS を微調整しました。 |
3.9.0 | 2要素認証機能を追加しました。 ログインページを変更して作成したログインページファイルがアンインストール時に削除されない場合がある不具合を修正しました。 REST API URL 変更機能を非推奨にしました。 現在ご利用中の場合は引き続きご利用いただけますが、新たに利用することはできなくなりました。 |
3.9.1 | PHP 8.2 以上で管理画面にエラーメッセージが表示される不具合を修正しました。 |
3.10.0 | 投稿者ベースを変更する機能を追加しました。 CAPTCHA タイプを選択するオプションを追加しました。 コメントのボット判定をより厳しくしました。 |
3.10.1 | 2要素認証でログインできない場合がある不具合を修正しました。 コメントのボット判定をより厳しくしました。 |
3.10.2 | バージョン3.10.1の修正ミスを修正しました。 |
3.10.3 | AJAX を使用したログインフォームの CAPTCHA に対応しました。 |
紹介記事リンク
「XO Security」の初期設定とログインできないときの復旧方法【変更したログインURLを忘れた場合】 | おすすめのやり方マニュアル 「マニュオン」