SQL インジェクションやクロスサイトスクリプティング (XSS) 攻撃対策用の AWS WAF ルールを作成したいと考えています。
簡単な説明
次のいずれかの保護手法で SQL インジェクションと XSS 攻撃に対策します。
- 組み込みの SQL インジェクションと XSS 対策エンジン
- SQL インジェクションと XSS インジェクション攻撃に対する AWS マネージドルール
注: AWS WAF では、リクエスト本文、ヘッダー、Cookie の検査には、最大サイズクォータが適用されます。詳細については、「Oversize web request components in AWS WAF」(AWS WAF におけるサイズ超過したウェブリクエストコンポーネント) を参照してください。
解決策
注: 本番以外の環境で [アクション] を [カウント] に設定し、ルールをテストすることをお勧めします。AWS WAF ログの Amazon CloudWatch メトリクスを参考に、ルールを評価します。ルールをテストした後、[アクション] を [ブロック] に変更します。
組み込みの SQL インジェクションと XSS 対策エンジンを使用する
攻撃は、HTTP ヘッダー、クエリ文字列、URI など、HTTP リクエストの複数部分に対して行われる可能性があります。AWS WAF ルールで設定を行い、HTTP リクエストの複数部分を組み込みの攻撃対策エンジンと照合します。
悪意のある SQL コードの有無を検査するには、SQL インジェクション攻撃に対するルールステートメントを作成します。ウェブリクエストコンポーネントに悪意のあるスクリプトが含まれていないかを検査するには、XSS 攻撃に対するルールステートメントを作成します。
SQL インジェクションまたは XSS 攻撃に対するルールステートメントを作成する
次の手順を実行します。
- AWS WAF コンソールを開きます。
- ナビゲーションペインの [AWS WAF] で [保護パック (ウェブ ACL)] をクリックします。
- 目的の保護パックを選択します。
- [ルールの管理] をクリックし、[ルールを編集] を選択します。
- [カスタムルール] を選択し、[次へ] をクリックします。
- [カスタムルール] をもう一度選択し、[次へ] をクリックします。
- ルールに次のオプションを使用します。
[アクション] で [BLOCK] を選択します。
[ルール名] に、ルールの名前を入力します。
[リクエストが以下の場合:] で [ステートメントに一致] を選択します。
[検査] で、ルールステートメントにより評価するリクエストコンポーネントを選択します。
[マッチタイプ] で [SQL インジェクション攻撃を含む] または [XSS インジェクション攻撃を含む] を選択します。
(オプション) テキスト変換を選択します。
- [ルールを追加] をクリックします。
SQL インジェクションまたは XSS 攻撃対策ルールステートメントを作成し、複数のリクエストコンポーネントに対する評価を行う
次の手順を実行します。
- AWS WAF コンソールを開きます。
- ナビゲーションペインの [AWS WAF] で [保護パック (ウェブ ACL)] をクリックします。
- 目的の保護パックを選択します。
- [ルールの管理] をクリックし、[ルールを編集] を選択します。
- [カスタムルール] を選択し、[次へ] をクリックします。
- [カスタムルール] をもう一度選択し、[次へ] をクリックします。
- ルールに次のオプションを使用します。
[アクション] で [BLOCK] を選択します。
[ルール名] に、ルールの名前を入力します。
[リクエストが以下の場合:] で、[少なくとも 1 つのステートメント (OR) と一致する] を選択します。
[検査] で、ルールステートメントにより評価するリクエストコンポーネントを選択します。
[マッチタイプ] で [SQL インジェクション攻撃を含む] または [XSS インジェクション攻撃を含む] を選択します。
(オプション) テキスト変換を選択します。
[ステートメント 2] の [検査] で、ルールステートメントにより評価するリクエストコンポーネントを選択します。
[マッチタイプ] で [SQL インジェクション攻撃を含む] または [XSS インジェクションを含む] を選択します。
(オプション) テキスト変換を選択します。
- [ルールを追加] をクリックします。
注: ルールを動作させるには、正しいテキスト変換を適用する必要があります。例えば、AWS WAF でクッキーを検査する場合は、URL デコード、HTML エンティティのデコード、小文字を使用する必要があります。
SQL インジェクションおよび XSS インジェクション攻撃に対し、AWS マネージドルールを使用する
独自のルールは作成せずに、アプリケーションの脆弱性やその他の望ましくないトラフィック保護するには、AWS WAF で AWS マネージドルールを使用します。
注:
SQL インジェクション攻撃から保護するには、SQL データベースマネージドルールグループを使用します。XSS インジェクション攻撃から保護するには、コアルールセット (CRS) マネージドルールグループを使用します。
ウェブ ACL に AWS マネージドルールのルールグループを追加する
次の手順を実行します。
- AWS WAF コンソールを開きます。
- ナビゲーションペインの [AWS WAF] で [保護パック (ウェブ ACL)] をクリックします。
- 目的の保護パックを選択します。
- [ルールの管理] をクリックし、[ルールを編集] を選択します。
- [AWS マネージドルールグループ] を選択し、[次へ] をクリックします。
- [SQL データベース] または [コアルールセット] ルールグループを選択します。
- ルールの詳細を更新したら、[ルールを追加] をクリックします。
注: 既存の AWS マネージドルールのルールグループを使用するには、マネージドルールグループを選択し、詳細を編集します。詳細については、「Working with managed rule groups」(マネージドルールグループの使用) を参照してください。
関連情報
Getting started with AWS WAF using the new console experience (新しいコンソールエクスペリエンスを使用した AWS WAF の開始)
Testing and tuning your AWS WAF protections (AWS WAF 保護のテストと調整)