403 禁止エラーは、セキュリティ システムがサイトを保護しているときに最も頻繁に発生します。多くの場合、当社の Web アプリケーション ファイアウォール (Mod Security または modsec と呼ばれます) は、自動化されたハッキングの試みから Web サイトを保護しています。
ただし、場合によっては、正当なアクションが攻撃として誤って識別され、アクションがブロックされることがあります。これは偽陽性と呼ばれます。これが発生した場合の一般的なシナリオを次に示します。
- ウェブサイト ビルダーを使用すると、変更を保存できない場合があります
- WordPress の Divi テーマ/ビルダーを使用している場合、「ページの保存中にエラーが発生しました」などのメッセージが表示され、考えられる原因のリストが表示されます。
- Web サイトの管理パネル (Plesk File Manager や FTP ではなく) から JavaScript または PHP コードを追加する場合
上記のアクションのいずれとも一致しない 403 禁止エラーが発生した場合は、まず 403 エラーのトラブルシューティングに関する一般的なガイドを確認してください。
これは、突然発生する可能性があります ファイアウォール ルールは毎週更新されるため。サイトの運用に影響を与える可能性のある新しいルールを毎週追加する可能性があります。ルールは提出に影響を与える可能性が最も高いことに注意してください フォームを送信したり、サイトのバックエンドでデータを更新したりするときなどに、データをサーバーに送信します。
ファイアウォール ログを見つけて解釈する方法
最初のステップは、サーバー ログをチェックして、このようなエラーが発生している理由を確認することです。 Plesk ファイルマネージャを使用して Web サイトのログを分析する方法については、ガイドをご覧ください。
Google のウェブ アプリケーション ファイアウォールは一般的な攻撃をブロックするのに役立つため、ログに多くの ModSecurity エントリが表示される場合があります。 .直接的なログ エントリを特定することが重要です そうしないと、ファイアウォールを弱体化させ、同時に問題を解決できなくなります。
ファイアウォール関連のエラーは次のようになります:
ModSecurity: Access denied with code 403 (phase 2). Pattern match "(asfunction|data|javascript|livescript|mocha|vbscript):" at ARGS:input_5_7_data_canvas. [file "/etc/httpd/conf/modsecurity.d/rules/comodo/07_XSS_XSS.conf"] [line "227"] [id "212770"] [rev "4"] [msg "COMODO WAF: XSS Attack Detected||customerdomain.tld|F|2"] [data "Matched Data: data: found within ARGS:input_5_7_data_canvas: data:image/png;base64,{{{{snipped}}}}] [severity "CRITICAL"] [hostname "customerdomain.tld"] [uri "/specific_uri_requested/"]
上記のログ エントリの例は、画像を添付して Gravity Forms フォームを送信したときに発生した誤検出です。
これをもう少し読みやすくするために、たくさんのゴブルディグックを切り取り、{{{{snipped}}}} に置き換えました。また、最も関連性の高い部分を示すために特定の部分を太字にしています。
太字のセクションを順番に読むと、このエラーはファイアウォールが検出したことを示しています:
- 禁止エラー (コード 403) によりアクセスが拒否されました ) (注:「コード 403」または「アクセスが拒否されました」が表示されない場合、表示している ModSecurity ログ エントリは関係ありません。次のエントリに進みます。一部のエントリは、デバッグまたは一般情報用であり、すべてブロック用です。)
- ある種のスクリプト (javascript、livescript など)
- ルール ID 212770 の使用
- XSS 攻撃と見なされたこと (クロスサイト スクリプティング)
- エンコードされた base64 形式 (data:image/png;base64) で画像を送信したとき )
- 重要度「CRITICAL」 (DEBUG または WARNING の重大度が表示された場合、それらは目に見える 403 エラーの原因ではない可能性が高いことに注意してください)
- URI /specific_uri_requested/ で
ファイアウォールはそれについてかなり神経質になっています!理解できる:これは奇妙に見えるデータを含むランダムなスクリプトです…
正当なユーザーが Gravity フォームを送信したときに問題が発生し、実際に画像が含まれていることがわかっているため、これはおそらく正当な使用例であり、したがってエラーは誤検知です。
通訳の助けが必要な場合は、チケットを開いてください!迅速に分析できるように、必ずログ エントリを含めてください。
以下に、これらのエラーを回避する 2 つの方法を示します。1) ファイアウォールを無効にする (一部のケースでのみ推奨)、2) 誤検知を生成している特定のルールを除外する。
解決策 1 (一時的):開発中ですか?ファイアウォールを無効にする
現在サイトを開発している場合は、WordPress 内で HTTP 経由でサーバーにコードを送信する (つまり、CSS の変更を保存する) ときに多くの障害に遭遇する可能性があるため、単純にファイアウォールを完全に無効にすることをお勧めします。
サイトの編集が完了したら、ファイアウォールを再度有効にすることを忘れないでください。そうしないと、多数の一般的な攻撃からサイトを保護できなくなります。
無効にする方法は次のとおりです。
- Plesk で、[ウェブサイトとドメイン] または [ドメイン] に戻り、ドメインをクリックします。
- [ウェブ アプリケーション ファイアウォール] をクリックします。
- [Web アプリケーション ファイアウォール モード] で [オフ] を選択します。
注:[検出のみ] を選択した場合でも、TCP レベルのファイアウォールがログ エントリを取得し、一時的な禁止を設定します。開発中はオフが最適です。 - [OK] または [適用] をクリックして保存します。
開発が完了したら、同じ手順に従ってファイアウォールを再度有効にしますが、「オフ」ではなく「オン」を選択します。
解決策 2 (恒久的):ModSec ルールを除外する
あなたのサイトのユーザーが、定期的に 403 をトリガーしたのと同じアクションを実行する場合、ファイアウォールを完全に無効にするだけでは不十分です!
代わりに、このルールをドメインのファイアウォールから除外しましょう。上記の例では、セキュリティ ルール ID 212770 を識別しましたが、あなたのものは確実に異なります。 ID が見つかるまでログ エントリをスキャンすると、次のようになります:[id “212770”] それから…
- Plesk で、「ウェブサイトとドメイン」に戻ります
- [ウェブ アプリケーション ファイアウォール] をクリックします。
- [Switch off security rules] の下に、ログで見つけた ID 番号を入力します (複数ある場合は通常、1 行に 1 つずつ)。
- [OK] または [適用] をクリックして保存します。
ここで、以前に問題を引き起こしたアクションを実行してみてください。
問題が解決せず、それでも 403 エラーが発生する場合は、アクションが 複数 トリガーされた可能性があります ファイアウォール ルール。問題の原因となっているすべてのルール ID を見つけて除外するまで、上記のプロセスを繰り返します。このエラーの原因となっているルール ID が複数ある場合は、よく似ている可能性が高いことに注意してください。 そのため、最新のログ エントリをチェックするときは、表示されているログ エントリが既に除外したログ エントリとわずかに異なることを確認してください。
一度に除外しなければならなかった最大数は 5 であるため、わずか 2 ~ 3 回の除外でこれを修正できる可能性が高くなります。
トラブルシューティング
一連のルールを除外すると、ID が関連付けられていない次のようなエラーが発生します。
ModSecurity: Output filter: Response body too large (over limit of 524288, total not specified).
つまり、これらの制限を引き上げる必要があります。 Plesk への管理者アクセス権がある場合は、[ツールと設定]> [ModSecurity]> [設定] タブ> [カスタム ディレクティブ] の下に以下を挿入できます:
SecResponseBodyLimit 546870912
SecRequestBodyInMemoryLimit 546870912
Plesk への管理者アクセス権がなく、Plesk でホストされている場合は、チケットを開いてください。私たちが対応します!