メインコンテンツまでスキップ

AWS WAF

AWS WAF解説 構成図

Overview

AWS WAFは、Webアプリケーションに対する攻撃から保護するサービス。
AWS WAFは、OSI参照モデルの7層(アプリケーション層)を防御し、SQLインジェクション、クロスサイトスクリプティング、OSコマンドインジェクション、DDoS攻撃などの攻撃を防ぐために利用される。

  • L7(HTTP/HTTPS) アプリケーション層の防御
  • Web ACLによりアクセスの制限を実現
  • SQL InjectionやXSS, アプリケーション固有の攻撃に対応
ヒント

AWS WAFはCloudFrontと連携してWEBアプリケーションに対する特定のIPアドレスへのアクセス制限を実施できます。

Image from Gyazo

Webトラフィックをフィルタリングするカスタムルールを作成することで、アプリケーションの脆弱性を悪用しようとする攻撃から保護でき、作成したルールは、次のAWSサービスに設定できます。

  1. CloudFront
  2. ALB
  3. API Gateway
  4. AppSync

保護したいすべてのアプリケーションごとにルールを再作成する必要はなく、1つのルールセットを作成し、アプリケーション間で再利用できる。

AWS WAF各用語

  • Web ACL ウェブアクセスコントロールリストで Rules を紐づける
    1つのWeb ACLに適用可能な Rule は10個まで CloudFront, ALB, API GatewayにWebACLを関連付けして利用。

  • Rules 具体的な条件を指定する Condition を紐付け管理する 1つのRuleに適用可能な Condition は10個まで。

<Conditions> 防ぎたい攻撃の条件を具体的に定義する SQL InjectionやXSSの Condition が用意されている アプリケーション固有の攻撃に対応する場合は独自の条件を記述する。

AWS WAFでWeb Applicationを防御する手順

  1. アクセス制御の目的に合わせて Condition を作成
  2. 作成した Condition を含む Rule を作成
  3. 作成した Rule を適用するための Web ACL を作成
  4. 作成したRuleを Web ACL に適用
  5. Web ACLをCloudFront, ALB, API Gatewayのいずれかに適用

AWS WAF で許可または拒否可能なリクエスト

AWS WAFでは以下の種類のリクエストを許可または拒否することが可能。 AWS WAFでは、1 Web ACLに設定できるルール数には限りがあるためサイトの用途に応じて適切に選択することが重要。

  • 送信元IPアドレスが、特定のIPアドレスまたはIPアドレス範囲
  • 送信元IPアドレスが、特定の国
  • リクエストの特定の部分の文字列マッチング(正規表現可)
  • 指定した長さを超えている
  • SQLインジェクションやクロスサイトスクリプトが含まれている