AWS WAF による SQL インジェクションと大量リクエストの遮断
産業用機械メーカーが、代理店向けの受注ポータルを Application Load Balancer の背後にある EC2 上で運用しています。外部のペネトレーションテストで、クエリ文字列に SQL 文を埋め込む攻撃の試行と、特定の送信元 IP アドレスからの毎秒数千件に及ぶ大量リクエストが観測されました。アプリケーション本体の改修には数か月かかるため、まずは HTTP リクエストのレベルで両方の脅威を遮断したいと考えています。運用負荷を抑えつつ要件を満たす方法はどれですか。
解説を読む(正解: A)
AWS WAF は HTTP/HTTPS リクエストのレイヤー 7 の内容、すなわち URI、クエリ文字列、ヘッダー、Cookie、ボディまでを検査して、許可・ブロック・カウントを判定できるウェブアプリケーションファイアウォールです。Web ACL という単位でルールをまとめ、Amazon CloudFront、Application Load Balancer、Amazon API Gateway、AWS AppSync などに関連付けて使用します。AWS が管理・更新する AWS マネージドルールグループには SQL データベース向けのルールセットが用意されており、SQL インジェクションに典型的なパターンをアプリケーションを改修することなく遮断できます。さらにレートベースルールを追加すると、送信元 IP アドレスごとに一定時間内のリクエスト数を数え、しきい値を超えた IP を自動的にブロックできるため、特定 IP からの大量リクエストにも同じ仕組みで対応できます。したがって A が要件を満たします。B のネットワーク ACL はサブネット境界で動作するステートレスなレイヤー 3/4 のフィルターであり、評価できるのは送信元・宛先の IP アドレス、ポート、プロトコルだけで、HTTP ペイロードに含まれる SQL 文字列を検査する機能はありません。C のセキュリティグループはステートフルではあるものの、こちらもレイヤー 3/4 の許可リストであり、そもそもアウトバウンドルールで受信リクエストの本文を検査するという動作は存在しません。D の Amazon GuardDuty は CloudTrail イベント、VPC フローログ、DNS ログなどを機械学習と脅威インテリジェンスで分析して不審な挙動を検出するサービスで、検出結果 (Findings) を出すだけであり、リクエストをインラインでブロックする機能は持ちません。
Web アプリの DDoS と SQL インジェクション対策
アパレルの EC サイトを運営する小売企業が、Application Load Balancer の背後に配置した EC2 の Auto Scaling グループでオンラインストアを公開しています。セール開始直後に大量のパケットフラッド攻撃を受けて一時的にサイトが応答しなくなったほか、脆弱性診断で SQL インジェクションを狙う不正なクエリ文字列が多数記録されていました。経営層は、L3/L4 の大規模攻撃に対する専門チームの支援と攻撃起因のスケーリング費用の補填を受けられる体制と、アプリケーション層の不正リクエスト遮断の両方を求めています。実施すべき対策を 2 つ選択してください。
複数選択問題です (正解 2 つ)。選んでから判定してください。
解説を読む(正解: A、B)
AWS の Web アプリケーション防御は、レイヤーごとに担当サービスが分かれています。AWS WAF は HTTP/HTTPS リクエストを検査する Web アプリケーションファイアウォールで、Application Load Balancer、Amazon CloudFront、Amazon API Gateway などに Web ACL を関連付けて、SQL インジェクションやクロスサイトスクリプティングを狙うリクエストをマネージドルールやカスタムルールで遮断できます。一方、AWS Shield Standard はすべての AWS 利用者に自動適用されますが、AWS Shield Advanced を契約すると、より高度な L3/L4 攻撃の検知と緩和に加えて、AWS Shield Response Team による支援、攻撃可視化、そして攻撃に起因して急増した利用料金の補填 (コスト保護) が受けられます。
したがって、アプリケーション層の不正リクエスト遮断には A、大規模攻撃への専門支援とコスト補填には B が必要であり、この 2 つが正解です。
C の手動でのネットワーク ACL 更新は、送信元を変えながら行われる大規模攻撃には追随できず、ルール数の上限もあるため現実的ではありません。D の Amazon GuardDuty は CloudTrail や VPC フローログ、DNS ログを分析して脅威を検出する検知サービスであり、それ自体が通信を遮断する機能は持ちません。E の Amazon Macie は Amazon S3 に保存されたデータから個人情報などの機密データを検出・分類するサービスで、HTTP リクエストの内容を検査する用途には使えません。
特定の国からのアクセスをブロックする方法
国内向けの動画配信サービスを運営する企業が、AWS 上で新しい視聴サイトを構築しました。フロントエンドは Application Load Balancer の背後に配置した複数の Amazon EC2 インスタンスで、視聴履歴は Amazon RDS for MySQL、動画ファイルは Amazon S3 に保存されています。コンテンツのライセンス契約上、一部の国からのアクセスを遮断する必要があり、対象国は今後も追加・変更される見込みです。この要件を満たすために、ソリューションアーキテクトはどの対策を講じるべきでしょうか。
解説を読む(正解: D)
AWS WAF は HTTP/HTTPS リクエストをレイヤー 7 で検査するウェブアプリケーションファイアウォールで、Application Load Balancer、Amazon CloudFront、Amazon API Gateway などに Web ACL として関連付けて使用します。Web ACL のルールには地理的一致 (geo match) ステートメントがあり、AWS が管理する IP ジオロケーションデータベースを用いて送信元の国コードを判定し、指定した国からのリクエストをブロックできます。IP レンジの一覧を自分で保守する必要がなく、対象国が追加・変更されても国コードを足すだけで対応できるため、選択肢 D が正解です。選択肢 A は誤りです。Application Load Balancer のリスナールールが条件にできるのはホストヘッダー、パス、HTTP ヘッダー、HTTP リクエストメソッド、クエリ文字列、送信元 IP アドレスなどであり、送信元の国を条件にする機能はありません。選択肢 B も誤りです。セキュリティグループは許可 (Allow) のルールしか記述できない仕組みであり、「特定の送信元を拒否する」というルールを定義することはできません。選択肢 C のネットワーク ACL は Deny ルールを書けますが、1 つの国に割り当てられた CIDR ブロックは数千件規模に及ぶ一方で、ネットワーク ACL に登録できるルール数には上限があります。さらに CIDR の割り当ては随時変更されるため、リストを維持する運用負荷が現実的ではありません。