SWELL公式では2種類のパターンのセキュリティプラグインを紹介しています。
- Wordfence Security
- XO Security + BBQ Firewall
今回はXO Security + BBQ Firewallのパターンを採用
さらにレンタルサーバー側のセキュリティ設定を見直したところ、BBQ Firewallとほぼ機能が重複することが判明したので
- XO Security + レンタルサーバー側のセキュリティ
で最適なセキュリティ設定を模索してみました。
セキュリティ | 備考 |
---|---|
XO Security | ログイン関連のセキュリティ機能や、コメント保護、XML-RPCやREST APIの制限など、WordPress固有の脆弱性に対して幅広い対応が可能です。特にログイン保護やコメントスパム対策などが強力 |
レンタルサーバーのセキュリティ設定 | サーバーレベルでのアクセス制限や、リクエスト制限(XSS、SQLインジェクション防止など)は、XO Securityと併用しても有効。サーバー側でのセキュリティはWordPressに依存せず、全体的なサイト保護に効果があり。 |
BBQ Firewall | SQLインジェクションやXSS、悪意のあるボットからの防御に特化していますが、上位のXO Securityやレンタルサーバー側でこれらの機能がカバーされるため、基本的には使いません。 |
その備忘録です。
レンタルサーバーのセキュリティ設定まとめ
プラグインでセキュリティを強化する前に、まずは契約しているレンタルサーバーのセキュリティ設定を見直しましょう。
たとえばシンレンタルサーバーだと以下の機能があります。
セキュリティのWAFの設定
まずはレンタルサーバーのセキュリティの項目を選択。
不正なアクセスを検知し遮断するWAF(Webアプリケーションファイアウォール)を設定します。
以下にコピペ可能な表形式でサーバーセキュリティの文言をまとめました。
セキュリティ対策 | 説明 |
---|---|
XSS対策 | JavaScriptなどのスクリプトタグが埋め込まれたアクセスを検知します。 |
SQL対策 | SQL構文に該当する文字列が挿入されたアクセスを検知します。 |
ファイル対策 | .htpasswd、.htaccess、httpd.confなど、サーバーに関連する設定ファイルが含まれたアクセスを検知します。 |
メール対策 | to、cc、bccなどのメールヘッダーに関係する文字列を含んだアクセスを検知します。 |
コマンド対策 | kill、ftp、mail、ping、lsなどのコマンドに関連する文字列が含まれたアクセスを検知します。 |
PHP対策 | session、ファイル操作に関連する関数のほか脆弱性元になる可能性の高い関数が含まれたアクセスを検知します。 |
まずはこちらの設定をONにすることをおすすめします。
- WAF設定では、有害な可能性のあるアクセスを検知する機能を提供しますが設定により不正アクセスを100%駆除することを保証するものではありません。
- あくまでWebアプリケーションの持つ脆弱性に対する不正アクセスへの最低限の予防策となります。
脆弱性に対する不正アクセスへの根本的対応として随時最新バージョンのアプリケーションの利用やセキュリティ対応が必ず必要となりますのでご確認の上ご利用ください。- WAF設定は厳格なルールに従って不正アクセスを判断するため、ご利用のWebアプリケーションの動作についても影響を与える可能性がありますのであらかじめご了承ください。
WordPressセキュリティ設定
続いて、WordPressの項目を選択。
国外IPからのアクセスを制限したり、不正なログインを制限する等、WordPressに関するセキュリティの設定をします。
以下に、各対策項目の意味をわかりやすく解説した表をまとめました。
セキュリティカテゴリ | 対策項目 | 解説 |
---|---|---|
国外IPアクセス制限 | ダッシュボード アクセス制限 | 国外IPからWordPressの管理画面(ダッシュボード)にアクセスできないように制限します。 |
国外IPアクセス制限 | XML-RPC API アクセス制限 | XML-RPC APIを利用したリモートアクセスを国外IPから制限します。これにより不正なリモート操作を防ぎます。 |
国外IPアクセス制限 | REST API アクセス制限 | REST APIを利用したアクセスを国外IPから制限し、セキュリティを強化します。 |
国外IPアクセス制限 | wlwmanifest.xml アクセス制限 | wlwmanifest.xmlは、ブログ管理ツールの互換性のためのファイルで、国外IPからの不正アクセスを防ぎます。 |
ログイン試行回数制限 | ログイン試行回数制限 | ログイン試行の回数を制限し、ブルートフォース攻撃(多数のログイン試行を行う攻撃)を防ぎます。 |
コメント・トラックバック制限 | 単一ユーザーからの大量投稿 | 1人のユーザーが短時間に大量のコメントやトラックバックを投稿するのを防ぎます。 |
コメント・トラックバック制限 | 国外IPアドレスからの投稿 | 国外のIPアドレスからのコメントやトラックバックを制限し、スパム対策を強化します。 |
プラグイン「BBQ Firewall」のセキュリティ効果の調査
インストールして有効化するだけでセキュリティ対策できるBBQ Firewallの効果と特徴をまとめてみました。
独自のBOT周りのセキュリティが足されますが、基本的にはレンタルサーバーのセキュリティと機能が被るので必須ではありません。
ご指摘の通り、テーブル内に誤りがあるようです。以下に正しい情報を整理し直したテーブルを提示します。重複する機能は「⚪︎」、独自の機能は「×」を適切に反映しました。
レンタルサーバーとBBQ Firewallのセキュリティ機能の比較表
セキュリティカテゴリ | 対策項目 | レンタルサーバーの機能 | BBQ Firewallの機能 | 説明 |
---|---|---|---|---|
国外IPアクセス制限 | ダッシュボード アクセス制限 | ⚪︎ | × | 国外IPからWordPressの管理画面へのアクセスを制限します。 |
国外IPアクセス制限 | XML-RPC API アクセス制限 | ⚪︎ | × | XML-RPC APIを利用した不正なリモート操作を防ぎます。 |
国外IPアクセス制限 | REST API アクセス制限 | ⚪︎ | × | REST APIを利用したアクセスを国外IPから制限します。 |
国外IPアクセス制限 | wlwmanifest.xml アクセス制限 | ⚪︎ | × | wlwmanifest.xmlへの不正アクセスを制限します。 |
ログイン試行回数制限 | ログイン試行回数制限 | ⚪︎ | × | ブルートフォース攻撃を防ぐために、ログイン試行回数を制限します。 |
リクエスト保護 | SQLインジェクション攻撃防止 | ⚪︎ | ⚪︎ | サーバーとBBQ Firewallの両方でSQLインジェクション攻撃を防ぎます。 |
リクエスト保護 | XSS攻撃防止 | ⚪︎ | ⚪︎ | JavaScriptなどの不正なスクリプトを含むリクエストを防ぎます。 |
リクエスト保護 | ディレクトリトラバーサル防止 | ⚪︎ | ⚪︎ | サーバーとBBQ Firewallで不正なディレクトリアクセスを防ぎます。 |
リクエスト保護 | PHPファイル実行防止 | ⚪︎ | ⚪︎ | 不正なPHPファイルの実行を防ぎます。 |
リクエスト保護 | 悪意のあるボットからの保護 | × | ⚪︎ | BBQ Firewallは悪意のあるボットからの不正アクセスを防ぎます。 |
リクエスト保護 | 悪意のあるPOSTリクエストの保護 | × | ⚪︎ | 悪意のあるPOSTリクエストを検出してブロックします。 |
その他 | プライバシー保護 | × | ⚪︎ | BBQ Firewallはプライバシーを保護し、ユーザーデータを収集しません。 |
プラグイン「XO Security」のセキュリティ効果の調査
XO Securityは日本人開発者の制作したセキュリティプラグインで非常に多機能ながら、細かく機能をON/OFFできるのが魅力です。
項目 | 備考 |
---|---|
ログインログ記録 | ログインログを記録します。 |
ログイン試行回数制限 | ログイン失敗を繰り返す接続元をブロックします。 |
ログインページの変更 | ログインページの名前を変更します。 |
ログイン ID の種類 | ログイン ID をユーザー名またはメールアドレスのどちらかに制限します。 |
ログイン言語制限 | ログインできる言語を制限します。 |
ログインエラーメッセージ | ログインエラーメッセージを簡略化します。 |
2要素認証 | 時間ベースのワンタイムパスワード (TOTP) による認証を追加します。 |
ログイン CAPTCHA | ログインページに CAPTCHA を追加します。 |
ログインアラート | ログイン時にメールを送信します。 |
コメント CAPTCHA | コメントフォームに CAPTCHA を追加します。 |
コメントスパム保護 | コメントをスパムから保護します。 |
コメントボット保護 | コメントをボットから保護します。 |
XML-RPC の無効化 | XML-RPC を無効にします。 |
XML-RPC ピンバックの無効化 | XML-RPC ピンバック機能を無効にします。 |
REST API の無効化 | REST API を無効にします。 |
投稿者スラッグの編集 | 投稿者スラッグを編集できます。 |
投稿者ベースの編集 | 投稿者ベースを編集できます。 |
投稿者アーカイブの無効化 | 投稿者アーカイブページを無効にします。 |
コメント投稿者クラスの削除 | コメントリストのタグに追加されるユーザー名を含むクラスを削除します。 |
oEmbed ユーザー名の削除 | oEmbed レスポンスデータからユーザー名を削除します。 |
RSS/Atom フィードの無効化 | RSS/Atom フィードを無効にします。 |
バージョン情報の削除 | generator メタタグおよびリンクやスクリプトタグなどの WordPress バージョンを削除します。 |
readme.html の削除 | WordPress コアの readme.html ファイルを削除します。 |
レンタルサーバー+ XO Securityのセキュリティ機能比較まとめ
レンタルサーバーのセキュリティ設定とXO Securityの機能を比較してみました。
セキュリティ項目 | レンタルサーバー | XO Security | 説明 |
---|---|---|---|
ログインログ記録 | × | ⚪︎ | ログイン履歴を記録し、不正アクセスを監視します。 |
ログイン試行回数制限 | ⚪︎ | ⚪︎ | ブルートフォース攻撃を防ぐために、ログイン失敗を繰り返す接続元をブロックします。 機能重複 |
ログインページの変更 | × | ⚪︎ | ログインページのURLを変更し、攻撃を防ぎます。 |
ログインIDの種類制限 | × | ⚪︎ | ログインIDをユーザー名またはメールアドレスに限定します。 |
ログイン言語制限 | × | ⚪︎ | ログインできる言語を制限します。 |
ログインエラーメッセージの簡略化 | × | ⚪︎ | エラーメッセージを最小化し、攻撃者に情報を与えないようにします。 |
2要素認証 | × | ⚪︎ | ワンタイムパスワード(TOTP)を使った認証を追加します。 |
ログインCAPTCHA | × | ⚪︎ | ログインページにCAPTCHAを追加し、ボット攻撃を防ぎます。 |
ログインアラート | × | ⚪︎ | ログイン時にメール通知を送信します。 |
コメントCAPTCHA | × | ⚪︎ | コメントフォームにCAPTCHAを追加します。 |
コメントスパム保護 | × | ⚪︎ | コメントスパムから保護します。 |
コメントボット保護 | × | ⚪︎ | コメントボットによるスパム投稿を防ぎます。 |
XML-RPC の無効化 | ⚪︎ | ⚪︎ | XML-RPC機能を無効にし、リモート操作のリスクを減らします。 機能重複 |
XML-RPC ピンバックの無効化 | ⚪︎ | ⚪︎ | XML-RPCピンバック機能を無効にします。 機能重複 |
REST API の無効化 | ⚪︎ | ⚪︎ | REST APIを無効にし、攻撃リスクを軽減します。 機能重複 |
投稿者スラッグの編集 | × | ⚪︎ | 投稿者のスラッグを編集し、プライバシーを保護します。 |
投稿者ベースの編集 | × | ⚪︎ | 投稿者ベースを編集します。 |
投稿者アーカイブの無効化 | × | ⚪︎ | 投稿者アーカイブページを無効にします。 |
コメント投稿者クラスの削除 | × | ⚪︎ | コメントリストに表示されるユーザー名クラスを削除します。 |
oEmbedユーザー名の削除 | × | ⚪︎ | oEmbedデータからユーザー名を削除します。 |
RSS/Atomフィードの無効化 | × | ⚪︎ | RSS/Atomフィードを無効にし、データ漏洩を防ぎます。 |
バージョン情報の削除 | × | ⚪︎ | WordPressのバージョン情報を削除します。 |
readme.html の削除 | × | ⚪︎ | WordPressコアのreadme.htmlファイルを削除します。 |
XO Securityのセキュリティ機能設定│レンタルサーバーのセキュリティとの組み合わせ
ここでプラグインでON/OFFした方が管理がしやすいので、XO Securityを優先として場合の必要なレンタルサーバーの設定をまとめておきます。
XO Securityを優先した場合、レンタルサーバーでONにするべき機能
要するにレンタルサーバー側のWordPressセキュリティ設定の方の設定は全て必要なく、
サーバーのセキュリティ項目の設定は全てONにするのが良さそうです。
以下がXO Securityにはないレンタルサーバー側のセキュリティ設定です。
セキュリティ項目 | レンタルサーバー | XO Security | 説明 |
---|---|---|---|
XSS対策 | ⚪︎ | × | サーバー側でJavaScriptなどの不正なスクリプトタグを含むリクエストをブロックします。 |
SQLインジェクション対策 | ⚪︎ | × | サーバー側でSQLインジェクション攻撃を防止し、データベースの保護を強化します。 |
ファイル対策 | ⚪︎ | × | .htpasswdや.htaccessなどの重要ファイルへの不正アクセスを防ぎます。 |
メール対策 | ⚪︎ | × | to、cc、bccなどのメールヘッダーに関する不正なリクエストをブロックします。 |
コマンド対策 | ⚪︎ | × | サーバー側でFTPやpingなどのシステムコマンドに関連する攻撃を防ぎます。 |
PHP対策 | ⚪︎ | ⚪︎(一部対応) | サーバー側でPHPに関する脆弱性を防ぐ保護機能を強化します(XO Securityでは一部対応していますが、サーバー側での強化が推奨されます)。 |
XO Securityのおすすめの設定
セキュリティ項目 | 説明 | WAZA推奨の設定 |
---|---|---|
ログインログ記録 | ログイン履歴を記録し、不正アクセスを監視します。 | ON |
ログイン試行回数制限 | ブルートフォース攻撃を防ぐために、ログイン失敗を繰り返す接続元をブロックします。 | ON |
ログインページの変更 | ログインページのURLを変更し、攻撃を防ぎます。 | ON ※ログインページが特定されるのはおすすめしないです。 |
ログインIDの種類制限 | ログインIDをユーザー名またはメールアドレスに限定します。 | ON ※ユーザーのみ |
ログイン言語制限 | ログインできる言語を制限します。 | OFF ※お好みで |
ログインエラーメッセージの簡略化 | エラーメッセージを最小化し、攻撃者に情報を与えないようにします。 | ON |
2要素認証 | ワンタイムパスワード(TOTP)を使った認証を追加します。 | OFF ※お好みで |
ログインCAPTCHA | ログインページにCAPTCHAを追加し、ボット攻撃を防ぎます。 | ON |
ログインアラート | ログイン時にメール通知を送信します。 | OFF ※お好みで |
コメントCAPTCHA | コメントフォームにCAPTCHAを追加します。 | ON ※ひらがな |
コメントスパム保護 | コメントスパムから保護します。 | OFF ※コメント機能がない場合は不要 |
コメントボット保護 | コメントボットによるスパム投稿を防ぎます。 | OFF ※コメント機能がない場合は不要 |
XML-RPC の無効化 | XML-RPC機能を無効にし、リモート操作のリスクを減らします。 | ON |
XML-RPC ピンバックの無効化 | XML-RPCピンバック機能を無効にします。 | ON |
REST API の無効化 | REST APIを無効にし、攻撃リスクを軽減します。 | ON |
投稿者スラッグの編集 | 投稿者のスラッグを編集し、プライバシーを保護します。 | ON ※ユーザー名特定を防ぐ |
投稿者ベースの編集 | 投稿者ベースを編集します。 | OFF ※お好みで |
投稿者アーカイブの無効化 | 投稿者アーカイブページを無効にします。 | OFF ※お好みで |
コメント投稿者クラスの削除 | コメントリストに表示されるユーザー名クラスを削除します。 | ON ※ユーザー名特定を防ぐ |
oEmbedユーザー名の削除 | oEmbedデータからユーザー名を削除します。 | OFF ※お好みで |
RSS/Atomフィードの無効化 | RSS/Atomフィードを無効にし、データ漏洩を防ぎます。 | OFF ※お好みで |
バージョン情報の削除 | WordPressのバージョン情報を削除します。 | ON |
readme.html の削除 | WordPressコアのreadme.htmlファイルを削除します。 | OFF ※お好みで |
ログイン周りの設定
ログイン関連の設定です。
設定カテゴリ | 設定項目 | 設定値 | 説明 |
---|---|---|---|
ログイン | 試行回数制限 | 4回 | 12時間の間に4回までリトライを許可します。 |
ログイン | ブロック時の応答遅延 | 120秒 | ログイン試行がブロックされた際に応答までの遅延を設定します(0~120秒)。 |
ログイン | 失敗時の応答遅延 | 10秒 | ログイン失敗時に応答までの遅延を設定します(0~10秒)。 |
ログインページの変更 | ログインページ変更 | オン | ログインページのファイル名を変更。 |
ログインページの変更 | ログインファイル | xxx.php | ログインURL: https://motoki-design.co.jp/xxx.php |
ログイン ID の種類 | ログインIDの種類 | ユーザー名のみ | ユーザー名でのみログイン可能です。 |
ログイン言語制限 | 言語制限 | 無効 | XO_SECURITY_LANGUAGE_WHITE_LIST 定数で設定可能。 |
ログインエラーメッセージ | エラーメッセージ | 簡略化 | ログインエラーメッセージを簡略化します。 |
2要素認証 | 2要素認証 | OFF | 管理者、編集者、投稿者、寄稿者、購読者の権限グループに対して有効。 |
ログインフォーム | CAPTCHA | ひらがな | ログインフォームにひらがなCAPTCHAを追加。 |
ログインフォーム | パスワードリセットリンク | 有効 | ログインフォームにパスワードリセットリンクを表示。 |
ログインフォーム | サイトへ移動リンク | 有効 | ログインフォームにサイトへのリンクを表示。 |
ログインアラート | ログインアラート | OFF | ログイン時に管理者へメール通知。 |
コメント周りの設定
コメント関連の設定です。
設定カテゴリ | 設定項目 | 設定値 | 説明 |
---|---|---|---|
コメント | CAPTCHA | ひらがな | コメントフォームにひらがなCAPTCHAを追加します。 |
コメント | スパム保護フィルター | ON | 日本語を含まないコメントをスパムと見なします。 |
スパムコメント | スパムコメント処理 | ブロックする | スパムとして保存されているコメントのメールアドレスをブロックします。 |
ボット保護 | チェックボックス | OFF | JavaScriptが無効、フォーム表示後3秒以内の応答、チェックなしをボットと見なします。 |
XML-RPC周りの設定
XML-RPC関連の設定です。
設定カテゴリ | 設定項目 | 設定値 | 説明 |
---|---|---|---|
XML-RPC | XML-RPC の無効化 | ON | XML-RPCの認証が無効化され、XML-RPCピンバックが無効化されている場合はXML-RPC全体が無効化されます。 |
XML-RPC | XML-RPC ピンバックの無効化 | ON | XML-RPCピンバック機能が無効化され、攻撃リスクを軽減します。 |
REST API周りの設定
REST API関連の設定です。
設定カテゴリ | 設定項目 | 設定値 | 説明 |
---|---|---|---|
REST API | REST APIの無効化 | オン | ログインしていないユーザーからREST APIエンドポイントへのアクセスを制限します。 |
REST API | 保護するエンドポイント | /oembed/1.0, /code-snippets/v1, /redirection/v1 など ※特にチェックは無し | ログインしていないユーザーから特定のエンドポイント(oEmbed, Code Snippets, Redirectionなど)へのアクセスを無効化します。 |
秘匿
秘匿関連の設定です。
設定カテゴリ | 設定項目 | 設定値 | 説明 |
---|---|---|---|
ユーザー名 | 投稿者スラッグの編集 | ON | プロフィール画面に投稿者スラッグ(Nicename)項目が追加され、編集が可能になります。 |
ユーザー名 | 投稿者ベースの編集 | OFF | パーマリンク設定画面に投稿者ベース項目が追加され、編集できます。 |
ユーザー名 | 投稿者アーカイブの無効化 | OFF | 投稿者アーカイブページを無効にし、標準サイトマップのユーザープロバイダーも削除します。 |
ユーザー名 | コメント投稿者クラスの削除 | ON | コメントリストのタグに追加されるユーザー名を含むクラスを削除します。 |
ユーザー名 | oEmbedユーザー名の削除 | OFF | oEmbedレスポンスデータからユーザー名(author_name)およびURL(author_url)を削除します。 |
RSS/Atom フィード | RSS/Atomフィードの無効化 | OFF | RSS/Atomフィードを無効にし、データの流出を防ぎます。 |
WordPress バージョン | バージョン情報の削除 | ON | generatorメタタグやリンク、スクリプトタグなどのWordPressバージョン情報を削除します。 |
WordPress コアファイル | readme.htmlの削除 | OFF | WordPressコアのreadme.htmlファイルを削除し、バージョン情報を隠します。 |
以上です。メンテナンスや環境は特に設定しなくても大丈夫です。
まとめ
WordPressはセキュリティが不安という意見を聞きますが、適切な対策をすれば十分にセキュアなサイトが作成できます。
設定に困ったらぜひ、お問い合わせくださいませ。