WordPressのセキュリティ強化として有名なAll In One WP Securityプラグインでできることをまとめます。

設定できることを一通りまとめただけなので、設定の方法や「この機能は絶対に有効にするべき」ということは書いてないです。
インストールして有効化すると、メニューに「WPセキュリティ」が追加されます。

上から順番に内容を確認していきます。
長くなったので、記事を2つに分けました。
この記事では、「ダッシュボード」から「ファイアウォール」までの内容をまとめています。
「総当たり攻撃」から「2要素認証」の内容を確認されたい場合は、以下の記事を参照してください。
ダッシュボード
現状のセキュリティに関するステータスがわかりやすいようになっています。

セキュリティ強度メーターでは、現状設定されているセキュリティに応じたセキュリティの強度がわかりやすくメーターで表示されています。 なるべく最高ポイントに近づけるようにするのが良いと思います。
セキュリティポイントの内訳は、設定しているセキュリティの設定でどんな内容が含まれているのかをわかりやすく円グラフでまとめています。 ポイントの合計が高くても、割合が低いところを気を付けたりするみたいな使い方が出来ると思います。
重要な機能のステータスは、推奨される最低限のセキュリティレベルを達成するために、サイト上で有効化すべき重要な機能のステータスが現在オンになっているかがわかりやすくなっています。 それぞれの項目のトグルボタンを押すと、対応するページに遷移できます。
メンテナンスモードのステータスは、All In One WP Securityプラグインを使用したメンテナンスモードの状態がわかりやすくなっています。トグルボタンを押すと、対応するページに遷移します。
他にはログインしているユーザーやロックしているIPアドレス、ブロックリストなどの内容を確認することができます。
設定
設定では、ファイルのバックアップやプラグインを削除した時の動作、インストールされているWordPressのバージョンについて、AIOWPS の設定のエクスポート、インポート、IPアドレス検出設定や、2要素認証などの設定が行えます。
それぞれ簡単に内容を紹介します。
一般設定
セキュリティ機能の無効化、ファイアウォールのルールをすべて無効化、設定のリセット、デバッグの有効化/無効化などが行えます。
.htaccess file
サーバーの動作をディレクトリ単位で制御できる.htaccess
ファイルに関する内容が行えます。
現在の.htaccess
ファイルの保存と、保存しておいた.htaccess
ファイルを使用した復元が行えます。
wp-config.php file
データベースの接続情報や、セキュリティ強化のための秘密鍵、WordPress の動作設定などが書かれているwp-config.php
ファイルに関する内容が行えます。
現在のwp-config.php
ファイルの保存と、保存しておいたwp-config.php
ファイルを使用した復元が行えます。
Delete plugin settings
All In One WP Securityプラグインをアンインストールした際に実行されるものを設定できます。
アンインストールした際に、サイトのすべてのデータベーステーブルを削除する、サイトのすべてのプラグイン設定を削除する(ファイアウォールのルールが追加されていればそれも含む)の有効化/無効化が行えます。
デフォルトでは2つともONの設定になっています。
WPバージョン情報
WordPress サイトの HTML ソースコードから WordPress のバージョン番号を示すメタタグを削除する機能です。このメタタグは通常、ウェブサイトのソースコードの <head> セクションに <meta name=”generator” content=”WordPress X.X.X” /> の形式で含まれており、サイトがどのバージョンの WordPress を使用しているかを公開しています。
WordPress のバージョン情報を公開することで、セキュリティ上の問題が生じる可能性があります。特に、古いバージョンの WordPress には既知の脆弱性が存在する場合があり、これを悪用しようとする攻撃者にとっては有益な情報になります。そのため、WordPress のバージョン情報を削除することは、サイトのセキュリティを向上させる一つの手段とされています。
デフォルトではOFFの設定になっています。
インポート/エクスポート
All In One WP Securityプラグインの設定のインポートとエクスポートができます。
エクスポートを行うと、テキストファイルが自動的にダウンロードされます。
インポートを行う際には、保存したファイルを選択して行うことになります。
高度な設定
訪問者のIPアドレスをどのように検出するかを設定できます。
主に以下のオプションがあります。
- REMOTE_ADDR: これは最も一般的に利用される方法で、サーバーに直接接続している端末のIPアドレスを取得します。多くの場合、これが最も信頼性の高いIPアドレスを提供します。 デフォルトではこれになっていると思います。
- HTTP_X_FORWARDED_FOR: このオプションは、プロキシサーバーまたはロードバランサーを介して接続している場合に使用されます。このヘッダは、元々のリクエストを送信した端末のIPアドレスを含むことがありますが、偽装されることがあるため、セキュリティが低下する可能性があります。
- HTTP_CLIENT_IP: このヘッダもまた、プロキシを介してアクセスがあった際にクライアントのIPアドレスを示す可能性があります。このヘッダは、HTTP_X_FORWARDED_FORと同様に、操作される可能性があるため注意が必要です。
2要素認証
2要素認証に関する主な設定が行えます。
2要素認証を適用するユーザーのロール、XMLRPCを通じたリクエストにも2要素認証を適用するか、ユーザーのデバイスが生成する認証コードに使用されるアルゴリズムの設定、2要素認証に使用される秘密鍵をデータベース内で暗号化するかなどが行えます。
ユーザーセキュリティ
ユーザーセキュリティでは、管理者ユーザーやその他ユーザーに関する設定が行えます。
User accounts
WordPress サイトのユーザーアカウントに関連するセキュリティの強化の設定が行えます。
管理者アカウントの一覧
この機能では、サイト上の全ての管理者アカウントを一覧表示します。これにより、サイト管理者はどのユーザーが管理者権限を持っているかを簡単に確認でき、不正なアカウントや不要なアカウントが管理者として登録されていないか監視できます。
管理者ユーザー名の変更
WordPress のデフォルトの管理者ユーザー名は「admin」とされがちですが、これはセキュリティ上のリスクを高めるため、この設定を利用して簡単に管理者のユーザー名を変更できます。ユーザー名を予測しにくいものに変更することで、ブルートフォース攻撃(無差別にパスワードを試す攻撃)のリスクを低減できます。
ログイン名と表示名が同じアカウント修正
WordPress では、ユーザーのログイン名(ユーザー名)と表示名を同じに設定することができますが、これはセキュリティ上推奨されません。ログイン名と表示名が同じ場合、外部からの攻撃者にログイン名が露呈しやすくなります。この設定を利用して、ログイン名と表示名が同じアカウントを検出し、表示名を変更することを推奨します。
ユーザー番号無効化
WordPress では、各ユーザーに一意のユーザーIDが割り当てられます。このIDは通常、連番であり、サイトの最初のユーザー(多くの場合は管理者)は「1」となります。このような予測可能なユーザーIDは、攻撃者が特定のユーザー(特にサイトの管理者)を狙う際の手がかりとなるため、ユーザー番号を無効にすることで、攻撃者がユーザーIDを利用した攻撃を行うことを難しくします。
Login lockout
ログイン試行に関するセキュリティ対策を強化するものです。
ログインのロックダウン設定
この機能は、連続したログイン失敗を検出した場合にアカウントを一時的にロックする設定です。特定の時間内に設定された回数以上のログイン失敗が発生すると、そのIPアドレスからのさらなるログイン試行を一定時間阻止します。この目的は、ブルートフォース攻撃(無差別なパスワード試行攻撃)に対する防御強化です。
現在ロックアウトされているIPアドレス範囲
現在ロックアウトされているIPアドレスのリストを表示します。これにより、管理者はどのIPアドレスがセキュリティシステムによって一時的にブロックされているかを確認できます。通常、これらは多数の失敗したログイン試行を行ったIPアドレスです。
Login Lockdown IPホワイトリスト設定
この設定では、特定のIPアドレスをホワイトリストに登録して、ログインのロックアウトメカニズムの対象外とすることができます。信頼できるIPアドレスや、特定の場所(例えばオフィスなど)からのアクセスを確実に許可したい場合に有効です。ホワイトリストに登録されたIPアドレスからのログイン試行は、たとえ何度失敗してもロックアウトの対象とはなりません。
Force logout
特定の条件下でユーザーを自動的にログアウトさせる機能です。この設定を利用することで、セキュリティをさらに強化し、アカウントが不正に使用されるリスクを低減できます。
Logged in users
現在ログインしているユーザーの情報を確認できる機能です。この機能を通じて、サイト管理者はリアルタイムでサイトにアクセスしているユーザーの状態を見ることができます。
手動承認
新しいユーザーの登録プロセスにおいて、サイト管理者がアクティブな役割を果たすための設定です。これにより、新規ユーザーがサイトに登録した後、そのアカウントが自動的にアクティブになるのではなく、管理者の手動での承認を必要とします。
新規登録の手動承認
この設定を有効にすると、新しいユーザーがサイトに登録するとき、そのユーザーアカウントは自動的にアクティブになりません。代わりに、サイトの管理者に通知が送られ、管理者がそのユーザーのアカウントを手動で確認し、承認する必要があります。これにより、不正なユーザーの登録を防ぎ、管理者がどのようなユーザーがサイトに参加しているかをコントロールできるようになります。
登録ユーザーの承認
この機能も新規登録の手動承認と似ていますが、既にサイトに登録されているユーザーが新たな役割やアクセス権を要求した場合、それを管理者が手動で承認する必要があることを意味します。たとえば、一般ユーザーがコンテンツ投稿者になりたいと申請した場合、その変更を管理者が承認する必要があります。
Salt
WordPress サイトのセキュリティをさらに強化するための高度な設定です。
Salt とは
Saltとは、パスワードや他の認証データをハッシュする際に追加されるランダムなデータのことで、ハッシュ値の予測を困難にし、セキュリティを向上させるために用いられます。WordPress では、wp-config.php ファイル内に設定される一連のセキュリティキー(AUTH_KEY, SECURE_AUTH_KEY など)と共に使用されます。
Add salt postfix
「Add salt postfix」は、これらのセキュリティキーに追加の文字列(postfix)を加えることによって、既存のセキュリティキーを強化します。具体的には、設定されたpostfixが各セキュリティキーの末尾に追加され、これによって生成されるハッシュ値がよりユニークになります。
Additional settings
WordPress サイトでのアプリケーションパスワード機能を無効にするオプションです。この機能を理解するために、まずアプリケーションパスワードについて説明します。
アプリケーションパスワードとは
WordPress 5.6以降、アプリケーションパスワード機能が導入されました。これは、REST APIを介してWordPressサイトに外部からアクセスするためのパスワードです。各ユーザーは自分のアカウントで複数のアプリケーションパスワードを生成し、管理できます。これにより、外部アプリケーションがユーザーの通常のログイン情報を使用せずに、WordPressのデータにアクセスすることが可能になります。
アプリケーションパスワードを無効化する理由
アプリケーションパスワードは便利ですが、セキュリティ上のリスクも伴います。特に、不正に使用されると、サイトのデータにアクセスされる危険があります。また、すべてのWordPressサイトがAPIを通じた外部アプリケーションとの連携を必要とするわけではありません。このため、不要な機能を無効にすることで、余計なセキュリティリスクを排除できます。
データベースセキュリティ
データベースに関するセキュリティ対策が行えます。
WordPressのデータベーステーブルの接頭辞(プレフィックス)をデフォルトの「wp_」から変更する、データベースの手動バックアップ、自動スケジュールバックアップなどの設定が行えます。
手動バックアップと自動スケジュールバックアップには、追加でUpdraftPlusプラグインが必要になります。
File security
WordPress サイトのファイルとフォルダに関するセキュリティ対策を集中的に管理する機能です。
File permissions
WordPress サイトのファイルおよびディレクトリのパーミッション(権限設定)をスキャンし、セキュリティ上のリスクを評価するためのツールです。
サイト内のファイルとディレクトリのパーミッションが適切かどうかをチェックし、その結果が表示されます。
File protection
WordPress サイトのファイルに対する保護を強化するための具体的な機能群です。それぞれの機能は、サイトのセキュリティを向上させるために特定のリスクを緩和することを目的としています。
デフォルトのWPファイルへのアクセスを防止
この機能は、WordPress のインストール時にデフォルトで含まれる特定のファイルへのアクセスを制限します。例えば、readme.html
, license.txt
, wp-config-sample.php
など、サイトの設定や構成に関する情報を含むファイルです。これらのファイルは外部からアクセスされるとセキュリティ上のリスクとなる可能性があるため、アクセスを制限することで情報漏洩のリスクを低減します。
直リンクの防止
画像やPDFファイルなど、メディアファイルへの直接的なリンクを通じたアクセスを阻止する設定です。これにより、他のサイトからのコンテンツの無許可使用(ホットリンキング)を防ぐことができます。ホットリンキングは帯域幅の無駄遣いにつながり、サイトのパフォーマンスに悪影響を及ぼすことがあります。
PHPファイル編集を無効化
WordPress の管理画面から直接PHPファイルを編集する機能(テーマエディターやプラグインエディター)を無効にする設定です。これは、誤って重要なファイルを変更するリスクや、悪意のあるユーザーによるファイル改変を防ぐために有効です。特に複数の人がサイトを管理している場合、この設定を有効にすることで、意図しない変更や不正な変更からサイトを守ることができます。
ホストシステムログ
サーバー上で生成されるシステムログを確認することができる機能です。このログにはサーバーの動作や、ウェブサイトへのアクセス詳細、エラー情報など、サーバーに関連する重要な活動の記録が含まれています。
コピー・プロテクション
訪問者がウェブサイト上のテキストを右クリックやキーボードショートカットを使用してコピーすることを防ぐ機能です。この設定は、特にコンテンツの著作権を保護したいウェブサイトにおいて有効です。
フレーム
他のウェブサイトがあなたのサイトをフレーム(またはiframe)内に表示することを防ぐ機能です。この設定は、主にクリックジャッキング攻撃からウェブサイトを保護するために使用されます。
クリックジャッキングとは
クリックジャッキングは、悪意のあるウェブサイトがユーザーをだまして、知らないうちに別のサイト上でクリック操作を行わせる攻撃です。これは通常、透明なフレームを使用してユーザーの意図しないクリックを誘発します。たとえば、悪意あるウェブサイトが透明なフレームを使ってあなたのサイトのログインボタンの上に配置し、ユーザーがそのフレームをクリックすると、実際にはあなたのサイトで何らかの操作が行われることになります。
ファイアウォール
WordPress サイトを様々なセキュリティ脅威から保護するための包括的な設定とツールを提供します。
PHP rules
PHPを介したリクエストを制御し、WordPress サイトのセキュリティを向上させるための詳細設定です。
WordPress XMLRPCとピンバック脆弱性保護
WordPress XML-RPC: XML-RPCはリモートからWordPressにアクセスするためのプロトコルで、多機能ですが、しばしばブルートフォース攻撃(無差別なログイン試行)のターゲットにされます。この設定を有効にすると、XML-RPC機能を無効にして、そうした攻撃からサイトを守ります。
ピンバック脆弱性保護: ピンバックは他のブログがあなたの記事にリンクしていることを通知するWordPressの機能ですが、これを悪用したDDoS攻撃(分散型サービス拒否攻撃)が可能です。この設定を有効にすると、ピンバック機能を無効にし、そのような攻撃のリスクを減らします。
Disable WordPress RSS and ATOM feeds
このオプションを有効にすると、WordPress サイトのRSSおよびATOMフィードを無効にします。フィードを利用しない場合、この機能を無効にすることで、サイトの負荷を減少させ、潜在的なデータ漏洩のリスクを低減できます。
プロキシ経由のコメント投稿
このルールは、プロキシサーバーを使用して行われるコメントの投稿をブロックします。不正なユーザーやスパムボットがプロキシを利用してアイデンティティを隠し、スパムコメントを投稿することがあります。この設定を有効にすると、そのような不正なコメント投稿を防ぐことができます。
不正なクエリー文字列
この保護機能は、URL内に含まれる悪意のあるクエリー文字列を検出してブロックします。SQLインジェクションやスクリプトインジェクションなどの攻撃を防ぐために重要です。
高度な文字列フィルター
この設定は、入力データに対する高度なフィルタリングを提供します。これにより、クロスサイトスクリプティング(XSS)攻撃など、ユーザー入力を介した様々な脅威からサイトを守ることができます。
.htaccess rules
サーバーの .htaccess
ファイルを通じて特定のセキュリティ対策を実施する機能です。.htaccess
は、Apache サーバーでディレクトリレベルの設定を行うための非常に強力な設定ファイルです。
基本的なファイアウォール設定
この設定は、一般的なWeb攻撃を防ぐための基本的なルールを .htaccess
ファイルに追加します。これには、特定の不正なトラフィックパターンや疑わしいリクエストをブロックするルールが含まれており、SQLインジェクション、クロスサイトスクリプティング(XSS)、およびその他の一般的な攻撃からサイトを保護することを目的としています。
デバッグログファイルへのアクセスをブロック
WordPressではデバッグを有効にすると、エラーメッセージやその他のデバッグ情報が debug.log
ファイルに保存されることがあります。この設定を有効にすると、外部からの直接的なアクセスを debug.log
ファイルに対してブロックします。これにより、潜在的に機密性の高い情報が漏洩するリスクを減少させることができます。
TRACEとTRACK
HTTP TRACE メソッドと TRACK メソッドは、Webサーバーに対する診断技術ですが、これらを悪用すると、クロスサイトスクリプティング (XSS) やその他のセキュリティ攻撃の脆弱性を露呈することがあります。All In One WP Security の設定では、これらのメソッドを無効にすることで、この種の攻撃から保護します。.htaccess
ファイルにルールを追加することで、サーバーがこれらのメソッドの使用を拒否するように設定されます。
6G firewall rules
Webサイトを様々な種類の脅威から保護するための強化されたファイアウォール規則セットです。これらの設定は、サイトを保護するために特定のHTTPトラフィックパターンをブロックするためのルールを提供します。これらは主に .htaccess
ファイルを通じて実装されます。
6G Firewall Settings
「6G Firewall」は、「5G Firewall」の更新版であり、より最新のセキュリティ脅威に対応するための改良が加えられています。6G Firewallは、より広範な攻撃パターンをカバーし、特に新しいタイプの攻撃や複雑な脅威に対して効果的です。このセットには、より厳格なルールが含まれており、不正なアクセス試みをさらに広範にブロックします。
5G Firewall Settings
「5G Firewall」は、一連のファイアウォール規則であり、SQLインジェクション、クロスサイトスクリプティング(XSS)、マルウェア、その他の一般的な攻撃からサイトを保護するために設計されています。これらの規則は、悪意のあるリクエストを自動的に検出しブロックすることで、サイトのセキュリティを向上させます。
オンラインのボット
特定の悪意あるボットや不正なリクエストを防ぐための機能です。これらはウェブサイトを不正なスクレイピングやスパムから保護する目的で設計されています。
偽のGooglebotsをブロック
この設定は、自身をGooglebot(Googleのクローラー)と偽ってウェブサイトにアクセスしようとする不正なボットを検出しブロックするものです。本物のGooglebotは特定のIPアドレス範囲からのみアクセスします。
All In One WP Security は、アクセスしてきたボットがGoogleの公式IPアドレス範囲から来ているかどうかをチェックします。偽のGooglebot、つまりGoogleが所有していないIPアドレスから来たリクエストをブロックすることで、サイトをクローリングやインデックス生成を装った悪意ある行為から保護します。
空白のHTTPヘッダー
通常、正当なHTTPリクエストにはユーザーエージェントやリファラーなどの情報がHTTPヘッダーに含まれます。この設定は、これらの重要なHTTPヘッダーが空白のリクエストをブロックします。
空白のHTTPヘッダーを持つリクエストは、しばしばスクリプトやボットによるもので、正規のブラウザ使用からは発生しないことが多いです。このようなリクエストをブロックすることで、自動化された攻撃やスパムからサイトを守ることができます。
Blacklist
特定のIPアドレスやユーザーエージェントをサイトから遮断する設定が可能です。これにより、悪意のあるユーザーやボットからのアクセスを効果的にブロックすることができます。
IPホストのブラックリスト設定
この機能を使用すると、特定のIPアドレスからのすべてのアクセスを禁止することができます。管理者はブラックリストにIPアドレスを追加することで、そのIPアドレスが使用されているユーザーからのアクセスをサイトに拒否します。
不正アクセスの試みが繰り返されるIPアドレス、スパムを送信するIP、DDoS攻撃などに関与していると疑われるIPアドレスをブラックリストに登録します。
ユーザーエージェントのブラックリスト設定
ユーザーエージェントは、ブラウザやその他のクライアントアプリケーションがサーバーに対して自己を識別するために使用する文字列です。この設定では、特定のユーザーエージェントを持つリクエストをブロックすることができます。これにより、特定のボットや自動化ツールによるアクセスを防ぐことが可能です。
悪意のあるスクレイピングツールや自動化スパムボット、古いブラウザや特定のクローラーからのアクセスを制限したい場合に有効です。
WP REST API
WordPress REST APIへのアクセスを制御する機能です。この設定を有効にすると、認証されていないユーザーからのREST APIを通じたリクエストをブロックします。
WP REST APIとは
WordPress REST APIは、WordPressのデータと機能にプログラム的にアクセスするためのインターフェイスです。このAPIを通じて、外部アプリケーションやウェブサイトはWordPressサイトのコンテンツを読み取り、更新することが可能です。これには投稿の読み取り、ユーザー情報の取得、コンテンツの更新などが含まれます。
高度な設定
より詳細かつカスタマイズされたファイアウォールの設定を可能にする機能群です。ここには「firewall setup」と「許可リスト」が含まれています。
Firewall Setup
「firewall setup」とは、サイトのセキュリティ要件に合わせてファイアウォールの動作を詳細に設定する機能です。このセクションでは、ファイアウォールのルールを手動で調整し、特定のトラフィックパターンやリクエストタイプを許可または拒否するためのオプションを提供します。管理者はここで、様々なセキュリティレベルや特定の保護機能をカスタマイズし、サイトに最適なセキュリティ対策を施すことができます。
許可リスト
「許可リスト」とは、ブロックされることなくサイトにアクセスできるIPアドレスやドメインを指定する機能です。これは、特定の信頼できるソースからのアクセスを常に許可するために用いられます。許可リストに登録されたIPアドレスやドメインからのリクエストは、ファイアウォールによってブロックされることがないため、安全な通信が保証されます。
許可リストは、ビジネスパートナーや特定の顧客、開発者のIPアドレスを登録しておくことで、彼らがサイトへのアクセスや管理を行う際の障害を避けるために特に有用です。また、自分自身のIPアドレスを許可リストに追加することで、管理作業中にファイアウォールによるアクセス制限を受けることなく作業を続けることができます。