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