SQLi と XSS を防ぐために AWS WAF ルールを作成する方法を教えてください。
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 攻撃ルールステートメントを作成するには、次の操作を行います。
- AWS WAF コンソールを開きます。
- ナビゲーションペインの [AWS WAF] の下で、[Web ACL] (ウェブ ACL) を選択します。
- [Region] (リージョン) で、ウェブ ACL を作成した AWS リージョンを選択します。
注: ウェブ ACL が Amazon CloudFront 用に設定されている場合は、[Global] (グローバル) を選択します。 - ウェブ ACL を選択します。
- [Rules] (ルール) を選択し、[Add Rules] (ルールを追加) を選択します。ドロップダウンから [Add my own rules and rule groups] (独自のルールとルールグループを追加) を選択します。
- [Name] (名前) で [rule name] (ルール名) を入力し、[Regular Rule] (通常ルール) を選択します。
- [If a request] (リクエストが次の場合) で、[matches the statement] (ステートメントに一致) を選択します。
- [Inspect] (検査) で、SQLi 組み込み緩和エンジンに対して評価するリクエストコンポーネント を選択します。
- [Match Type] (マッチタイプ) で、ドロップダウンから [Contains SQL injection attacks] (SQL インジェクション攻撃を含む) を選択します。
- テキスト変換を選択します。
- [Action] (アクション) で [Block] (ブロック) を選択します。
- [Add Rule] (ルールを追加) を選択します。
- [Save] (保存) を選択します。
XSS 攻撃ルールステートメント
クロスサイトスクリプティング攻撃ルールステートメントを作成して、ウェブリクエストコンポーネント内の悪意のあるスクリプトを検査します。XSS 攻撃ルールステートメントを作成するには、次の操作を行います。
- AWS WAF コンソールを開きます。
- ナビゲーションペインの [AWS WAF] の下で、[Web ACL] (ウェブ ACL) を選択します。
- [Region] (リージョン) で、ウェブ ACL を作成した AWS リージョンを選択します。
注: ウェブ ACL が Amazon CloudFront 用に設定されている場合は、[Global] (グローバル) を選択します。 - ウェブ ACL を選択します。
- [Rules] (ルール) を選択し、[Add Rules] (ルールを追加) を選択します。ドロップダウンから [Add my own rules and rule groups] (独自のルールとルールグループを追加) を選択します。
- [Name] (名前) で [rule name] (ルール名) を入力し、[Regular Rule] (通常ルール) を選択します。
- [If a request] (リクエストが次の場合) で、[matches the statement] (ステートメントに一致) を選択します。
- [Inspect] (検査) で、XSS 組み込みの緩和エンジンに対して評価するリクエストコンポーネントを選択します。
- [マッチタイプ] で、ドロップダウンから [XSS インジェクション攻撃を含む] を選択します。
- テキスト変換を選択します。
- [Action] (アクション) で [Block] (ブロック) を選択します。
- [Add Rule] (ルールを追加) を選択します。
- [Save] (保存) を選択します。
複数のリクエストコンポーネントに対して評価する SQLi と XSS の攻撃ルール
複数のリクエストコンポーネントに対して評価する攻撃ルールを作成するには、次の操作を行います。
- AWS WAF コンソールを開きます。
- ナビゲーションペインの [AWS WAF] の下で、[Web ACL] (ウェブ ACL) を選択します。
- [Region] (リージョン) で、ウェブ ACL を作成した AWS リージョンを選択します。
注: ウェブ ACL が Amazon CloudFront 用に設定されている場合は、[Global] (グローバル) を選択します。 - ウェブ ACL を選択します。
- [Rules] (ルール) を選択し、[Add Rules] (ルールを追加) を選択します。ドロップダウンから [Add my own rules and rule groups] (独自のルールとルールグループを追加) を選択します。
- [Name] (名前) で [rule name] (ルール名) を入力し、[Regular Rule] (通常ルール) を選択します。
- [If a request] (リクエストが次の場合) で、[matches at least one of the statements (OR)] (少なくとも 1 つのステートメントに一致する) を選択します。
- [Inspect] (検査) で、SQLi または XSS の組み込み緩和エンジンに対して評価する [Request components] (リクエストコンポーネント) を選択します。
- [Match Type] (マッチタイプ) で、ドロップダウンから [Contains SQLi injection attacks] (SQLi インジェクション攻撃を含む) または [Contains XSS injection attacks] (XSS インジェクション攻撃を含む) を選択します。
- テキスト変換を選択します。
- 各ステートメントについて、手順 8~10 を繰り返します。追加のルール評価には、[Add another statement] (別のステートメントを追加) を選択します。
- [Action] (アクション) で [Block] (ブロック) を選択します。
- [Add Rule] (ルールを追加) を選択します。
- [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 マネージドルールグループを追加するには
- AWS WAF コンソールを開きます。
- ナビゲーションペインの [AWS WAF] の下で、[Web ACL] (ウェブ ACL) を選択します。
- [Region] (リージョン) で、ウェブ ACL を作成した AWS リージョンを選択します。
注: ウェブ ACL が Amazon CloudFront 用に設定されている場合は、[Global] (グローバル) を選択します。 - ウェブ ACL を選択します。
- [Rules] (ルール) を選択し、[Add Rules] (ルールを追加) を選択します。ドロップダウンから [Add managed rule groups] (マネージドルールグループの追加) を選択します。
- [AWS managed rule groups] (AWS マネージドルールグループセクション) を展開します。
- ルールグループを見つけて、[Add to web ACL] (ウェブ ACL に追加) を有効にします。
たとえば、SQLi 保護の SQL データベースと XSS 保護のコアルールセットの両方で [Add to web ACL] (ウェブ ACL に追加) をオンにすることができます。 - (オプション) [Edit] (編集) を選択して、ルールグループの設定を表示および変更します。
- [Add Rules] (ルールを追加) を選択します。
- [Save] (保存) を選択します。
ウェブ ACL の既存の AWS マネージドルールグループを編集するには
- AWS WAF コンソールを開きます。
- ナビゲーションペインの [AWS WAF] の下で、[Web ACL] (ウェブ ACL) を選択します。
- [Region] (リージョン) で、ウェブ ACL を作成した AWS リージョンを選択します。
注: ウェブ ACL が Amazon CloudFront 用に設定されている場合は、[Global] (グローバル) を選択します。 - ウェブ ACL を選択します。
- [Rules] (ルール) を選択し、 [Edit] (編集) を選択して設定を表示および変更します。
注: 設定の編集の詳細については、「マネージドルールグループの操作」を参照してください。 - 編集が終わったら、[Save] (保存) を選択します。
AWS マネージドルールルールグループで誤検出のシナリオが発生した場合は、「AWS WAF の AWS マネージドルール」を参照してください。

関連するコンテンツ
- 質問済み 12日前lg...
- 質問済み 5年前lg...
- 質問済み 6年前lg...
- AWS公式更新しました 9ヶ月前
- AWS公式更新しました 1年前
- AWS公式更新しました 4ヶ月前
- AWS公式更新しました 1年前