📋 目次

🛡️ 1. WAFとは何か:仕組みと必要性

WAF(Web Application Firewall)はWebサーバーへのHTTPリクエストをリアルタイムに解析し、悪意のあるリクエストをブロックするセキュリティシステムです。通常のファイアウォールがネットワーク層(IPアドレス・ポート)で判断するのに対し、WAFはHTTPの内容そのもの(パラメータ・ヘッダー・Cookie等)を解析します。

WAFがブロックできる攻撃の種類

攻撃の種類手法WAFの検知方法
SQLインジェクションURLやフォームにSQL命令を埋め込んでDBを操作リクエスト内のSQL構文パターンを検知
XSS(クロスサイトスクリプティング)悪意のあるJavaScriptを被害者のブラウザで実行スクリプトタグや危険なJSパターンを検知
ローカルファイルインクルージョンサーバーの内部ファイルを読み取るパストラバーサル(../)パターンを検知
ブルートフォース攻撃ログインページへの大量試行同一IPからの短時間の大量リクエストを検知
DDoS攻撃大量のリクエストでサーバーをダウンさせる異常なリクエスト数・パターンを検知しレート制限
悪意のあるボットコンテンツ盗用・脆弱性スキャンボットのユーザーエージェントや行動パターンを検知
💡 差別化情報:WAFが検知できないことも把握する
WAFは万能ではありません。ゼロデイ攻撃(未知の脆弱性)・暗号化されたマルウェア・正規ユーザーに偽装した攻撃(低速ブルートフォース)の検知は苦手です。WAFは多層防御の一つとして位置づけ、ログインセキュリティログ監視と組み合わせることが重要です。

📊 2. WAFの種類と比較

WAFの種類代表的サービス費用設置場所向いているサイト
クラウド型WAF Cloudflare・Sucuri 無料〜月数千円 サーバーの手前(CDNエッジ) ほぼ全サイトにおすすめ
プラグイン型WAF Wordfence・iThemes 無料〜月1,000円程度 WordPressアプリケーション層 小〜中規模サイト
サーバー内蔵WAF 各レンタルサーバー標準 多くは無料(サーバー料金込み) サーバーOS・Webサーバー層 手軽に始めたい初心者
.htaccessルール 手動設定 無料 Apacheの設定層 技術者・細かい制御が必要な場合
✅ 最強の組み合わせ(推奨):Cloudflare無料プラン + Wordfence無料版 + サーバー内蔵WAFの3層構成。攻撃をエッジ → WordPressレイヤー → サーバー層の順でフィルタリングできます。

☁️ 3. Cloudflare WAFの設定手順

Cloudflare概要 無料〜有料

世界最大規模のCDN・セキュリティネットワークを持つCloudflareは、ドメインのDNSをCloudflare経由にすることで全トラフィックを保護します。無料プランでも基本的なDDoS保護・ボット管理・SSLが利用できます。

Cloudflare無料プランの設定手順

1

Cloudflareアカウント作成・サイト追加

cloudflare.comでアカウントを作成し、「サイトを追加」→ドメインを入力→無料プランを選択します。Cloudflareが現在のDNSレコードを自動スキャンして取り込みます。

2

ネームサーバーをCloudflareに変更

ドメインレジストラ(お名前.com・Xserverドメイン等)の管理画面で、ネームサーバーをCloudflareが指定する2つのネームサーバーに変更します。反映には最大48時間かかります。

3

SSL/TLS設定を「Full (strict)」に変更

Cloudflare管理画面 →「SSL/TLS」→「概要」→「Full (strict)」に設定。サーバー側でSSLが有効になっている場合はこれが最も安全です。

4

セキュリティレベルを設定

「セキュリティ」→「設定」→セキュリティレベルを「中」以上に設定。「ボットとの戦い」を「オン」にすると既知の悪意あるボットを自動ブロックします。

5

WordPress専用の設定:wp-admin保護

「セキュリティ」→「WAF」→「カスタムルール」(無料プランは5ルールまで)→ wp-adminへのアクセスを自分のIPアドレスのみ許可するルールを作成します(Proプラン以上推奨)。

Cloudflareで設定すべき重要ルール

ルール名条件アクション必要プラン
wp-admin IP制限URIパスが /wp-admin/ AND IPが自分以外チャレンジ or ブロック無料
xmlrpc.phpブロックURIパスが /xmlrpc.phpブロック無料
wp-login.php保護URIパスが /wp-login.php AND リクエスト数超過レート制限無料(レート制限は有料)
悪意あるボットブロック既知のスキャナーUAを含むブロック無料
OWASP Top 10対応マネージドルールセット自動ブロックProプラン以上
⚠️ Cloudflareのオレンジ雲(プロキシ有効)を確認:DNSレコードのオレンジ雲(プロキシ有効)が付いているドメインのみCloudflareの保護が機能します。MXレコード(メール)はグレー(DNSのみ)のままにしてください。

🔌 4. Wordfence WAFの設定手順

Wordfence WAF概要 無料〜有料

WordPressプラグインとして動作するWAFです。WordPress自体が処理する前にリクエストをインターセプトするため(Extended Protection有効時)、高い保護効果があります。無料版でも十分に機能します。

1

Wordfenceをインストール・有効化

プラグイン → 新規追加 → 「Wordfence Security」を検索してインストール・有効化します。メールアドレスを登録するとアラートが届きます。

2

「最適化されたWAF」に変更する

Wordfence管理画面 →「ファイアウォール」→ WAFステータスの「最適化する」をクリック。指示に従って自動的に.htaccessを変更し、PHP実行前にWordfenceが起動するように設定します。

3

ブルートフォース保護を設定

「ファイアウォール」→「ブルートフォース保護」→ ログイン失敗の最大試行回数(推奨:5回)と失敗後のロックアウト時間(推奨:30分)を設定します。

4

リアルタイムIPブロックリストを有効化

「ファイアウォール」→「リアルタイムIPブロックリスト」を有効化(Premiumのみ)。無料版では「サイトを保護している国のIPをブロック」で代替します。Wordfence無料版は30日遅延のシグネチャを使用。

💡 差別化情報:Wordfence無料版とPremium版の本質的な違い
無料版は最新の脅威シグネチャが30日遅れで適用されます。つまり、新しいWordPressプラグインの脆弱性が発見されてから30日間は、無料版では保護されない可能性があります。リアルタイム保護が必要な重要サイトはPremium(年約119ドル)への移行を検討してください。Cloudflareのマネージドルールと組み合わせることで、コスト削減しながら保護を高めることも可能です。

🖥️ 5. レンタルサーバーのWAFを活用する

主要なレンタルサーバーはほとんどがWAFを無料提供しています。有効化するだけで基本的な保護が得られます。

サーバーWAF名称設定場所デフォルト状態
エックスサーバーXserver WAF(SiteGuard)サーバーパネル → WAF設定無効(手動有効化が必要)
ConoHa WINGWAF(ModSecurity)WING管理画面 → セキュリティ有効
さくらインターネットさくらのWAFコントロールパネル → セキュリティ無効(オプション申し込み)
ミックスホストModSecuritycPanel → ModSecurity有効
⚠️ レンタルサーバーのWAFで誤検知が発生する場合:WAFがWordPressの正規リクエスト(特にACFプラグインや一部の決済プラグイン)をブロックすることがあります。管理画面が403エラーになった場合、サーバーのWAFを一時無効化して確認してください。

📄 6. .htaccessで実装する簡易WAF

.htaccessに特定のルールを追加することで、軽量なWAFとして機能させることができます。Apache使用サーバーで有効です。

基本的なセキュリティルール

# ========================================
# WordPress .htaccess セキュリティ設定
# ========================================

# 悪意のあるクエリ文字列をブロック
RewriteEngine On
RewriteCond %{QUERY_STRING} (<|%3C).*script.*(>|%3E) [NC,OR]
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
RewriteRule ^(.*)$ - [F,L]

# ディレクトリリスティングの無効化
Options -Indexes

# 特定の悪意あるボットをブロック
SetEnvIfNoCase User-Agent "^libwww-perl*" block_bot
SetEnvIfNoCase User-Agent "^Python-urllib" block_bot
SetEnvIfNoCase User-Agent "nikto" block_bot
SetEnvIfNoCase User-Agent "sqlmap" block_bot
SetEnvIfNoCase User-Agent "WPScan" block_bot
Deny from env=block_bot

# WordPressのコアファイルへの直接アクセスを防止
RewriteRule ^wp-admin/includes/ - [F,L]
RewriteRule !^wp-includes/ - [S=3]
RewriteRule ^wp-includes/[^/]+\.php$ - [F,L]
RewriteRule ^wp-includes/js/tinymce/langs/.+\.php - [F,L]
RewriteRule ^wp-includes/theme-compat/ - [F,L]
⚠️ .htaccessの変更は必ずバックアップ後に:誤ったルールを追加するとサイト全体が表示されなくなります。変更前に必ず既存の.htaccessをバックアップし、変更後はすぐにサイトの動作を確認してください。

⚙️ 7. 誤検知(False Positive)の調整方法

WAFが正当なリクエストをブロックする「誤検知」への対処方法を解説します。

誤検知が起きやすいシチュエーション

Cloudflareでの誤検知対応

1

ブロックされたリクエストを確認

Cloudflare管理画面 →「セキュリティ」→「セキュリティイベント」でブロックされたリクエストの詳細(IP・ルールID・リクエスト内容)を確認します。

2

特定のIPやパスをホワイトリストに追加

「セキュリティ」→「WAF」→「カスタムルール」で、特定のIPアドレスや正規のUser-Agentに対して「バイパス」アクションを設定します。

💥 8. DDoS攻撃への対策

DDoS(分散サービス拒否)攻撃はWordPressサイトでも発生します。特に規模が大きくなってきたサイトや、競合との関係で意図的に攻撃されるケースも増えています。

対策方法費用効果
Cloudflare有効化DNS変更のみ無料★★★★☆ 基本的なDDoSは無料版でも十分防げる
レート制限Cloudflare Pro / .htaccessのLimitIPConn無料〜有料★★★☆☆ 同一IPからの集中攻撃に有効
キャッシュプラグインWP Rocket・W3 Total Cache無料〜有料★★★☆☆ サーバー負荷を分散
CDN活用CloudflareのCDN機能無料★★★★☆ 静的ファイルの負荷を分散
マネージドWAFSucuri・Cloudflare Business月数千〜数万円★★★★★ 大規模攻撃にも対応
🚨 DDoS攻撃を受けている兆候:サーバーの応答が極端に遅い・管理画面にログインできない・サーバーのCPU使用率が異常に高い・アクセスログに同じIPから大量のリクエストが記録されている。このような状況はまずログ監視ページで確認し、サーバー会社のサポートに連絡してください。

❓ よくある質問(FAQ)

WAFとファイアウォールの違いは何ですか?
従来のファイアウォールはIPアドレスやポートレベルでの通信制御が主目的です。一方WAFはHTTPの内容を解析し、SQLインジェクションやXSSなどWebアプリケーション特有の攻撃パターンを検出・ブロックします。WordPressのセキュリティにはWAFが特に重要です。
CloudflareのWAFは無料で使えますか?
Cloudflareの基本的なDDoS保護とボット管理は無料プランで利用できます。ただしカスタムWAFルールやマネージドルール(OWASP Top 10対応)はProプラン(月約20ドル)以上が必要です。WordPressサイトの基本的な保護は無料プランでも可能です。
WAFを入れるとサイトが遅くなりますか?
Cloudflareを使用する場合、CDN機能もセットになるためむしろサイトが高速化するケースが多いです。Wordfenceは同一サーバー上で処理するため若干の負荷がかかりますが、設定によって影響を最小化できます。適切に設定したWAFはセキュリティと速度の両方を改善します。
正当なユーザーがWAFにブロックされた場合はどうすれば?
「誤検知(False Positive)」と呼びます。Cloudflareの場合、管理画面の「セキュリティ」→「イベント」でブロックされたリクエストを確認し、ホワイトリストに追加できます。特定のIPアドレスや国からのアクセスをブロックしている場合、正規ユーザーへの影響が出ることがあるため定期的に確認が必要です。
レンタルサーバーのWAFとCloudflareのWAFはどちらが良いですか?
それぞれ異なる役割があります。レンタルサーバーのWAFはサーバーに到達した後のリクエストをフィルタリングします。CloudflareはサーバーへのリクエストがCloudflareのネットワークを通過する段階でブロックするため、サーバーへの負荷自体を減らせます。両方を組み合わせることが最も効果的です。