2026年5月20日

2026年5月20日

mod_securityが原因の403エラーの解決方法【WAF誤検知の対処】

はじめに

mod_security は Apache/Nginx のセキュリティモジュールで、SQLインジェクションやXSSなどの攻撃を検知してブロックします。しかし誤検知も多く、WordPressの管理画面操作や正常なフォーム送信が403エラーになることがあります。

mod_securityが原因の403エラーの特徴

  • 投稿を保存しようとすると403になる
  • 特定の文字列(HTMLタグ・スクリプト等)を入力すると403になる
  • 画像アップロードが403になる
  • エラーログに「ModSecurity」の記録がある
  • .htaccess やプラグインを確認しても問題がない

ステップ1:エラーログでmod_securityを確認する

cPanel → ログ → エラー

または SSH で:

sudo tail -f /var/log/apache2/error.log | grep ModSecurity

以下のような記録があれば mod_security が原因です:

ModSecurity: Access denied with code 403 (phase 2).
Pattern match "..." at ARGS:post_content.
[id "941100"] [hostname "example.com"]
[uri "/wp-admin/post.php"]

ルールID(941100 等)をメモしておきます。

解決方法①:ホスティングサポートに依頼する(推奨)

共有ホスティングでは mod_security の設定変更が制限されていることが多いため、サポートに依頼するのが最も確実です。

伝えるべき情報:

  • エラーが発生するURL
  • エラーログのルールID(例:941100)
  • エラーが起きる操作内容

解決方法②:.htaccessでルールを除外する

cPanel 系ホスティングでは .htaccess でルールを除外できる場合があります:

# 特定のルールIDを除外
<IfModule mod_security2.c>
    SecRuleRemoveById 941100
    SecRuleRemoveById 942100
</IfModule>

または特定のURLパスに対してmod_securityを無効化:

<IfModule mod_security2.c>
    <Location /wp-admin/>
        SecRuleEngine Off
    </Location>
</IfModule>

解決方法③:CloudflareのWAFルールを確認する

Cloudflare を使っている場合は Cloudflare の WAF が原因の場合もあります:

1. Cloudflare 管理画面 → セキュリティ → WAF

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

3. WordPress 管理ページのURLをホワイトリストに追加

解決方法④:VPS・専用サーバーでの設定変更

SSH でサーバーに接続して設定ファイルに除外ルールを追加:

# modsecurityの設定ファイルを編集
sudo nano /etc/modsecurity/custom_rules.conf

# WordPressの管理画面を除外するルール
SecRule REQUEST_FILENAME "@contains /wp-admin/" \
    "phase:2,nolog,allow,id:99001"

# Apacheを再起動
sudo service apache2 restart

注意事項

  • mod_security を完全に無効化するのはセキュリティリスクがあります。問題のあるルールIDのみを除外することを推奨します。
  • 本番環境での設定変更前には必ずバックアップを取ってください。

まとめ

mod_securityによる403エラーは、エラーログでルールIDを確認し、そのルールだけを除外するか、ホスティングサポートに対応を依頼することで解決します。

関連記事:

お気軽にご相談ください

お見積りへ お問い合わせへ