SWELL│軽量でセキュアなおすすめのセキュリティ設定

SWELL公式では2種類のパターンのセキュリティプラグインを紹介しています。

  • Wordfence Security
  • XO Security + BBQ Firewall

ちなみによく使われるSiteGuard WP Pluginは不具合が起きるケースがあるのでおすすめしていません。

今回はXO Security + BBQ Firewallのパターンを採用

ちなみにWordfence Securityは不具合の報告があったり、動作が重くなった、別のセキュリティチェックに引っ掛かるという報告もあるので選びませんでした。

さらにレンタルサーバー側のセキュリティ設定を見直したところ、BBQ Firewallとほぼ機能が重複することが判明したので

  • XO Security + レンタルサーバー側のセキュリティ

で最適なセキュリティ設定を模索してみました。

セキュリティ備考
XO Securityログイン関連のセキュリティ機能や、コメント保護、XML-RPCやREST APIの制限など、WordPress固有の脆弱性に対して幅広い対応が可能です。特にログイン保護やコメントスパム対策などが強力
レンタルサーバーのセキュリティ設定サーバーレベルでのアクセス制限や、リクエスト制限(XSS、SQLインジェクション防止など)は、XO Securityと併用しても有効。サーバー側でのセキュリティはWordPressに依存せず、全体的なサイト保護に効果があり。
BBQ FirewallSQLインジェクションやXSS、悪意のあるボットからの防御に特化していますが、上位のXO Securityやレンタルサーバー側でこれらの機能がカバーされるため、基本的には使いません。

その備忘録です。

目次

著者

WEB制作をしているデジタルノマド
WordPressのカスタマイズが好きで、色々と自作しています。

WordPressのカスタマイズに困ったらご相談ください!

レンタルサーバーのセキュリティ設定まとめ

プラグインでセキュリティを強化する前に、まずは契約しているレンタルサーバーのセキュリティ設定を見直しましょう。

たとえばシンレンタルサーバーだと以下の機能があります。

セキュリティの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に関するセキュリティの設定をします。

後述しますが、XO Securityと機能が全て被るので、OFFでも大丈夫です。

以下に、各対策項目の意味をわかりやすく解説した表をまとめました。

セキュリティカテゴリ対策項目解説
国外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のセキュリティ機能の比較表

セキュリティカテゴリ対策項目レンタルサーバーの機能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日本語を含まないコメントをスパムと見なします。
スパムコメントスパムコメント処理ブロックするスパムとして保存されているコメントのメールアドレスをブロックします。
ボット保護チェックボックスOFFJavaScriptが無効、フォーム表示後3秒以内の応答、チェックなしをボットと見なします。

XML-RPC周りの設定

XML-RPC関連の設定です。

設定カテゴリ設定項目設定値説明
XML-RPCXML-RPC の無効化ONXML-RPCの認証が無効化され、XML-RPCピンバックが無効化されている場合はXML-RPC全体が無効化されます。
XML-RPCXML-RPC ピンバックの無効化ONXML-RPCピンバック機能が無効化され、攻撃リスクを軽減します。

REST API周りの設定

REST API関連の設定です。

設定カテゴリ設定項目設定値説明
REST APIREST APIの無効化オンログインしていないユーザーからREST APIエンドポイントへのアクセスを制限します。
REST API保護するエンドポイント/oembed/1.0, /code-snippets/v1, /redirection/v1 など

※特にチェックは無し
ログインしていないユーザーから特定のエンドポイント(oEmbed, Code Snippets, Redirectionなど)へのアクセスを無効化します。

秘匿

秘匿関連の設定です。

設定カテゴリ設定項目設定値説明
ユーザー名投稿者スラッグの編集ONプロフィール画面に投稿者スラッグ(Nicename)項目が追加され、編集が可能になります。
ユーザー名投稿者ベースの編集OFFパーマリンク設定画面に投稿者ベース項目が追加され、編集できます。
ユーザー名投稿者アーカイブの無効化OFF投稿者アーカイブページを無効にし、標準サイトマップのユーザープロバイダーも削除します。
ユーザー名コメント投稿者クラスの削除ONコメントリストのタグに追加されるユーザー名を含むクラスを削除します。
ユーザー名oEmbedユーザー名の削除OFFoEmbedレスポンスデータからユーザー名(author_name)およびURL(author_url)を削除します。
RSS/Atom フィードRSS/Atomフィードの無効化OFFRSS/Atomフィードを無効にし、データの流出を防ぎます。
WordPress バージョンバージョン情報の削除ONgeneratorメタタグやリンク、スクリプトタグなどのWordPressバージョン情報を削除します。
WordPress コアファイルreadme.htmlの削除OFFWordPressコアのreadme.htmlファイルを削除し、バージョン情報を隠します。

以上です。メンテナンスや環境は特に設定しなくても大丈夫です。

まとめ

WordPressはセキュリティが不安という意見を聞きますが、適切な対策をすれば十分にセキュアなサイトが作成できます。

設定に困ったらぜひ、お問い合わせくださいませ。

  • URLをコピーしました!
目次