AWS WAF における誤検出の管理
概要
WAF などのセキュリティ制御を Web アプリケーションに追加すると、誤検知が発生するリスクが高まります。誤検知とは、正当なユーザーリクエストがブロックされる現象であり、WAF を使用することによる望ましくない副作用です。誤検知の管理には、誤検知を最小限に抑えるルールの設計、発生の検出、アプリケーション側またはWAFでの誤検出の軽減が含まれます。AWS WAF では、ルール言語の柔軟性と、生成されたログで詳細を確認できるため、誤検知の管理が簡単になります。
誤検知が少ないWAFルールの設計
AWS WAF を使用する際の低評価を減らすには、WebACL のルールを慎重に設定してください。まず、ルールの検出しきい値を調整します。たとえば、このブログでは、レート制限検出しきい値の設定に関するガイダンスを提供しています。もう 1 つの例は、SQL インジェクション (SQLi) ルールの検出感度を設定することです。次に、アプリケーションの最も関連性の高い部分で最も関連性の高いルールを最も具体的な方法で有効にします。たとえば、アプリケーションが SQL データベースを使用する場合にのみSQLiルールを有効にし、その範囲をこのデータベースとやり取りするURLに限定します。3 つ目は、一致したリクエストに微妙なアクションで対応することです。この方法では、リクエストの悪意に確信がある場合にのみ、ブロックアクションを設定することになります。リクエストをブロックすることに自信がない場合は、以下の微妙な対応戦略のいずれかを検討してください。
- リクエストをカウントして、アプリケーションの上流に流れるようにしますが、アプリケーションに転送されるリクエストには WAF で生成されたヘッダーを含めてください。これにより、アプリケーションはヘッダー値に基づいて異なる応答をすることができます。たとえば、不審なログインを試みると多要素認証をトリガーできます。また、進行中の脅威レベルに基づいて WAF 応答の重大度を動的に高めることもできます。たとえば、OLXはアプリケーションのリスクレベルに基づいて、疑わしいIPへの対応を動的に変更します。低リスクモードでは、より多くのトラフィックがアプリケーションを通過できるため、誤検知が最小限に抑えられます。高リスクモードでは、疑わしいIPをすべてブロックすることで、偽陽性よりも偽陰性を減らすことを好みます。
- CAPTCHA またはサイレントチャレンジで応答します。これにより、ブラウザがチャレンジに失敗した場合にのみリクエストがブロックされます。
Amazon マネージドルール
AWS WAF には、WAF WebACL に追加できるアマゾンマネージドルールグループ (AMR) のリストが用意されています。AMR は、誤検知を最小限に抑えながら、最も重大で影響の大きい脅威をブロックするようにキュレーションされています。
誤検知をより適切に管理するために、AMRS には次のような構成が用意されています。
- AMR による自動更新を無効にして、代わりに特定のバージョンを使用して手動で更新することができます。これにより、最新バージョンを有効にする前に、更新プログラムの誤検出をテストできます。
- AMR は評価されるとラベルを発します。AMR のデフォルトのブロックルールを使用する代わりに、それらをカウントするように設定し、発行されたラベルを他の WAF ルールと組み合わせて使用することで、より高い信頼度でリクエストをブロックします。たとえば、Amazon IP レピュテーションリスト AMR をカウントモードで使用し、この AMR によって発行されるラベルに基づいて後続のルールを作成し、非常に低いしきい値でレート制限を行うことができます。AMR で生成されたラベルは WAF ドキュメントに記載されています。
同じことが、このサービスに登録して自動アプリケーションレイヤーの DDoS 緩和を有効にしたときに Shield Advanced によって作成されたマネージドルールグループにも当てはまります。ドキュメントで説明されているように、Shield Advanced は、過去のトラフィックパターンに基づいて、ルールが攻撃シグネチャにのみ一致することが確信できる場合にのみ、ブロックルールを WAF に設定します。
偽陽性の識別
次のガイダンスは、誤検知が発生した場合にそれを特定するのに役立ちます。
- 開発環境やステージング環境で WAF ルールをテストし、最終的なデプロイ前に本番環境でカウントモードで検証するなどして、ソフトウェアリリースプロセスやインフラストラクチャ変更プロセスに誤検出を含めてください。AWS WAF ドキュメントには、Bot Controlルールとアカウント乗っ取り防止ルールを安全に本番環境にデプロイするためのガイドラインが記載されています。
- WAF ルールによって生成される CloudWatch メトリックスにアラームを設定します。ルールが異常なレベルのトラフィックと一致すると通知されます。たとえば、アプリケーションコードの変更が攻撃と誤って識別され、それが本番環境に伝わった後に発生する可能性があります。
- WAF ロギングを有効にし、ブロックされたトラフィックを定期的に監査して、ブロックされた正当なトラフィックを特定します。シンプルなユースケースでは、AWS WAF コンソールのサンプルリクエストダッシュボードを使用できます。
- ユーザーが予期しない 403 応答を報告できるようにアプリケーションを更新してください。たとえば、WAF が CloudFront でデプロイされている場合、CloudFront のカスタムエラーページを使用して、403 エラーページの代わりに、問題を報告できるページを返すことができます。
誤検知をルールスコープから除外
誤検知が確認されたら、WAF ルールを更新して除外を追加し、誤検知を軽減できます。カスタムルールでは、AND/ORロジックを使用して除外を簡単に表現できます。たとえば、リクエストのIPが許可IPリストに含まれておらず、リクエストURLが除外URLに含まれていない場合は、SQLiルールを適用します。AMR では、スコープダウンステートメントを使用して除外を作成できます。WS WAF ボットコントロール AMR に固有の誤検知を管理するには、以下のドキュメントを検討してください。