SQLi と XSS を防ぐために AWS WAF ルールを作成する方法を教えてください。

最終更新日: 2022 年 7 月 12 日

SQL インジェクション (SQLi) やクロスサイトスクリプティング (XSS) を防ぎたいです。AWS WAF は SQLi および XSS 攻撃を防ぐためにどのようなオプションを提供していますか?

簡単な説明

AWS WAF は、SQLi および XSS 攻撃を防ぐために次の保護を提供します。

  • 組み込みの SQLi および XSS エンジン
  • SQLi および XSS インジェクション攻撃に使用できる AWS マネージドルール

これらの保護を設定するには、AWS WAF をセットアップし、ウェブ ACL を作成していることを確認してください。

注: AWS WAF には、本文、ヘッダー、または クッキーのリクエストコンポーネントを検査する際の制限があります。詳細については、「リクエスト本文、ヘッダー、および Cookie の検査」を参照してください。

解決方法

重要: [Action] (アクション) を [Count] (カウント) に設定した非本番環境でルールをテストするのがベストプラクティスです。AWS WAF サンプルリクエストまたは AWS WAF ログと組み合わせた Amazon CloudWatch メトリクスを使用して、ルールを評価します。ルールが希望どおりに動作することを確認したら、[Action] (アクション) を [Block] (ブロック) に変更します。

組み込みの SQLi および XSS エンジンを使用する

攻撃は、HTTP ヘッダー、クエリ文字列や URI などの HTTP リクエストのさまざまな部分に対して行われます。組み込みの緩和エンジンに対して HTTP リクエストのさまざまな部分を検査するには、AWS WAF ルールを設定します。

SQLi 攻撃ルールステートメント

悪意のある SQL コードを検査する SQL インジェクション攻撃ルールステートメントを作成します。SQLi 攻撃ルールステートメントを作成するには、次の操作を行います。

  1. AWS WAF コンソールを開きます。
  2. ナビゲーションペインの [AWS WAF] の下で、[Web ACL] (ウェブ ACL) を選択します。
  3. [Region] (リージョン) で、ウェブ ACL を作成した AWS リージョンを選択します。
    注: ウェブ ACL が Amazon CloudFront 用に設定されている場合は、[Global] (グローバル) を選択します。
  4. ウェブ ACL を選択します。
  5. [Rules] (ルール) を選択し、[Add Rules] (ルールを追加) を選択します。ドロップダウンから [Add my own rules and rule groups] (独自のルールとルールグループを追加) を選択します。
  6. [Name] (名前) で [rule name] (ルール名) を入力し、[Regular Rule] (通常ルール) を選択します。
  7. [If a request] (リクエストが次の場合) で、[matches the statement] (ステートメントに一致) を選択します。
  8. [Inspect] (検査) で、SQLi 組み込み緩和エンジンに対して評価するリクエストコンポーネント を選択します。
  9. [Match Type] (マッチタイプ) で、ドロップダウンから [Contains SQL injection attacks] (SQL インジェクション攻撃を含む) を選択します。
  10. テキスト変換を選択します
  11. [Action] (アクション) で [Block] (ブロック) を選択します。
  12. [Add Rule] (ルールを追加) を選択します。
  13. [Save] (保存) を選択します。

XSS 攻撃ルールステートメント

クロスサイトスクリプティング攻撃ルールステートメントを作成して、ウェブリクエストコンポーネント内の悪意のあるスクリプトを検査します。XSS 攻撃ルールステートメントを作成するには、次の操作を行います。

  1. AWS WAF コンソールを開きます。
  2. ナビゲーションペインの [AWS WAF] の下で、[Web ACL] (ウェブ ACL) を選択します。
  3. [Region] (リージョン) で、ウェブ ACL を作成した AWS リージョンを選択します。
    注: ウェブ ACL が Amazon CloudFront 用に設定されている場合は、[Global] (グローバル) を選択します。
  4. ウェブ ACL を選択します。
  5. [Rules] (ルール) を選択し、[Add Rules] (ルールを追加) を選択します。ドロップダウンから [Add my own rules and rule groups] (独自のルールとルールグループを追加) を選択します。
  6. [Name] (名前) で [rule name] (ルール名) を入力し、[Regular Rule] (通常ルール) を選択します。
  7. [If a request] (リクエストが次の場合) で、[matches the statement] (ステートメントに一致) を選択します。
  8. [Inspect] (検査) で、XSS 組み込みの緩和エンジンに対して評価するリクエストコンポーネントを選択します。
  9. [マッチタイプ] で、ドロップダウンから [XSS インジェクション攻撃を含む] を選択します。
  10. テキスト変換を選択します
  11. [Action] (アクション) で [Block] (ブロック) を選択します。
  12. [Add Rule] (ルールを追加) を選択します。
  13. [Save] (保存) を選択します。

複数のリクエストコンポーネントに対して評価する SQLi と XSS の攻撃ルール

複数のリクエストコンポーネントに対して評価する攻撃ルールを作成するには、次の操作を行います。

  1. AWS WAF コンソールを開きます。
  2. ナビゲーションペインの [AWS WAF] の下で、[Web ACL] (ウェブ ACL) を選択します。
  3. [Region] (リージョン) で、ウェブ ACL を作成した AWS リージョンを選択します。
    注: ウェブ ACL が Amazon CloudFront 用に設定されている場合は、[Global] (グローバル) を選択します。
  4. ウェブ ACL を選択します。
  5. [Rules] (ルール) を選択し、[Add Rules] (ルールを追加) を選択します。ドロップダウンから [Add my own rules and rule groups] (独自のルールとルールグループを追加) を選択します。
  6. [Name] (名前) で [rule name] (ルール名) を入力し、[Regular Rule] (通常ルール) を選択します。
  7. [If a request] (リクエストが次の場合) で、[matches at least one of the statements (OR)] (少なくとも 1 つのステートメントに一致する) を選択します。
  8. [Inspect] (検査) で、SQLi または XSS の組み込み緩和エンジンに対して評価する [Request components] (リクエストコンポーネント) を選択します。
  9. [Match Type] (マッチタイプ) で、ドロップダウンから [Contains SQLi injection attacks] (SQLi インジェクション攻撃を含む) または [Contains XSS injection attacks] (XSS インジェクション攻撃を含む) を選択します。
  10. テキスト変換を選択します
  11. ステートメントについて、手順 8~10 を繰り返します。追加のルール評価には、[Add another statement] (別のステートメントを追加) を選択します。
  12. [Action] (アクション) で [Block] (ブロック) を選択します。
  13. [Add Rule] (ルールを追加) を選択します。
  14. [Save] (保存) を選択します。

重要: ルールが期待どおりに機能するには、正しいテキスト変換を適用する必要があります。たとえば、クッキーを検査する場合は、クッキーに関連付けられた次の変換を使用します。

  • URL デコード
  • HTML エンティティのデコード
  • 小文字

SQLi および XSS インジェクション攻撃に使用できる AWS マネージドルールを使用します

AWS Managed Rules for AWS WAF を使用すると、独自のルールを作成することなく、アプリケーションの脆弱性やその他の不要なトラフィックから保護できます。

注: マネージドルールは、バージョン変更と有効期限が切れる場合があります。詳細については、「マネージドルールグループのバージョンを処理するためのベストプラクティス」を参照してください。

SQL データベースマネージドルールグループを使用して、SQL インジェクション攻撃から保護します。SQL データベースマネージドルールグループ (デフォルトバージョン 1.1) には、保護を提供する次のルールがあります。

  • SQLiExtendedPatterns_QUERYARGUMENTS
  • SQLi_QUERYARGUMENTS
  • SQLi_Body
  • SQLi_COOKIE
  • SQLi_URIPATH

コアルールセット (CRS) マネージドルールグループを使用して、XSS インジェクション攻撃から保護します。コアルールセット (CRS) マネージドルールグループ (デフォルトバージョン 1.3) には、保護を提供する次のルールがあります。

  • CrossSiteScripting_COOKIE
  • CrossSiteScripting_QUERYARGUMENTS
  • CrossSiteScripting_BODY
  • CrossSiteScripting_URIPATH

ウェブ ACL に AWS マネージドルールグループを追加するには

  1. AWS WAF コンソールを開きます。
  2. ナビゲーションペインの [AWS WAF] の下で、[Web ACL] (ウェブ ACL) を選択します。
  3. [Region] (リージョン) で、ウェブ ACL を作成した AWS リージョンを選択します。
    注: ウェブ ACL が Amazon CloudFront 用に設定されている場合は、[Global] (グローバル) を選択します。
  4. ウェブ ACL を選択します。
  5. [Rules] (ルール) を選択し、[Add Rules] (ルールを追加) を選択します。ドロップダウンから [Add managed rule groups] (マネージドルールグループの追加) を選択します。
  6. [AWS managed rule groups] (AWS マネージドルールグループセクション) を展開します。
  7. ルールグループを見つけて、[Add to web ACL] (ウェブ ACL に追加) を有効にします。
    たとえば、SQLi 保護の SQL データベースと XSS 保護のコアルールセットの両方で [Add to web ACL] (ウェブ ACL に追加) をオンにすることができます。
  8. (オプション) [Edit] (編集) を選択して、ルールグループの設定を表示および変更します。
  9. [Add Rules] (ルールを追加) を選択します。
  10. [Save] (保存) を選択します。

ウェブ ACL の既存の AWS マネージドルールグループを編集するには

  1. AWS WAF コンソールを開きます。
  2. ナビゲーションペインの [AWS WAF] の下で、[Web ACL] (ウェブ ACL) を選択します。
  3. [Region] (リージョン) で、ウェブ ACL を作成した AWS リージョンを選択します。
    注: ウェブ ACL が Amazon CloudFront 用に設定されている場合は、[Global] (グローバル) を選択します。
  4. ウェブ ACL を選択します。
  5. [Rules] (ルール) を選択し、 [Edit] (編集) を選択して設定を表示および変更します。
    注: 設定の編集の詳細については、「マネージドルールグループの操作」を参照してください。
  6. 編集が終わったら、[Save] (保存) を選択します。

AWS マネージドルールルールグループで誤検出のシナリオが発生した場合は、「AWS WAF の AWS マネージドルール」を参照してください。


この記事は役に立ちましたか?


請求に関するサポートまたは技術サポートが必要ですか?