WAF

【グローバルサービス】

WAF(Web Application Firewall) は、アプリケーション層(L7)を保護するマネージド型のファイアウォールサービスです。

CloudFront、ALB(Application Load Balancer)、API Gateway、App Runner、Global Accelerator に適用することができ、さまざまなアプリケーション環境で柔軟に利用できます。

WAFでは、Web ACL(Web Access Control List) を作成し、その中に複数の Rule(ルール)Rule Group(ルールグループ) を設定して、アクセス制御や防御ポリシーを構築します。これにより、コードを変更することなく、アプリケーション層のセキュリティを実現することが可能です。

Managed Rule Groups(マネージドルールグループ)を利用すると、AWSが提供する CRS(Common Rule Set) に基づいた一般的な脆弱性対策(例:SQLインジェクションやXSSなど)を自動的に適用できます。また、Rate-based Rule(レート制限ルール) によって一定時間内のリクエスト数を制御し、DoS/ブルートフォース攻撃を軽減できます。

IP Set を用いて特定のIPアドレスやCIDR範囲を許可・拒否することも可能です。

Bot Control やカスタムルールを活用することで、スクレイピングや自動化された不正アクセスにも柔軟に対応できます。

Shield との連携により、DDoS攻撃を含むL3〜L7層の包括的な防御を強化することもできます。

可視化や監視については、CloudWatch メトリクスおよびログ出力を通じてリアルタイムに分析することができ、攻撃の傾向やトラフィックパターンを容易に把握することができます。

重要用語

ユースケース

Webアプリケーションの攻撃対策SQLインジェクションやクロスサイトスクリプティングなど、よくあるWeb攻撃パターンをマネージドルールでブロックし、アプリ側の防御を補強する。
Bot・スクレイピング対策特定のUser-Agentやリクエスト頻度を検知して制限し、コンテンツの不正取得やクローリングを抑止する。
国別・IPアドレス制限日本国内からのアクセスのみに許可する、特定IPレンジからのアクセスのみ許可するといったポリシーを定義し、不審なアクセス元を遮断する。

ベストプラクティス

マネージドルールの利用一般的な攻撃から守るためにAWSマネージドルールを有効にする。
レートベースルールの設定特定IPからの大量リクエストを検知し、自動的にブロックする。
ログ記録と可視化WAFログをKinesis Firehose経由でS3やSIEMに送信し、分析・監査に活用する。

高可用性・バックアップ・リトライ

高可用性・バックアップ・リトライ設計のポイント
【デフォルト】AWS内部で冗長化
 ・WAFルールエンジン
 ・Web ACL(アクセス制御リスト)設定データ
 ・リクエスト検査エンジン
 ・ログ記録システム
 ・WAF管理APIエンドポイント
 ・グローバルWAF(CloudFront用)の配置

セキュリティ

関連サービス設定内容
CloudTrail(操作履歴の記録・監査・追跡)【自動記録】
作成・更新・削除・設定変更は自動記録される。(コントロールプレーンAPI)
データ操作は追跡できない(データプレーンAPI)
Config(リソースの構成状態・設定変更を記録)【Configが有効な場合】
「WebACL/ルール」構成変更履歴・ロギング/スコープ設定の準拠評価
GuardDuty(脅威を自動検出)【GuardDutyが有効な場合】
ルール変更のAPI異常検知

ログ・監視

ログ出力先ログの種類
CloudWatch LogsウェブACLログ
CloudWatch Logs優先の原則
標準メトリクス
メトリクス名説明
AllowedRequests許可されたリクエスト数
BlockedRequestsブロックされたリクエスト数
CaptchaRequestsCAPTCHA要求数
ChallengeRequestsチャレンジ要求数
CountedRequestsカウントされたリクエスト数
PassedRequests通過したリクエスト数

制限値(固定値/ハードリミット/ソフトリミット)

ソフトリミット制限値
Web ACL数/リージョン100
ルールグループ数/リージョン100
ルール数/Web ACL1,500
ルール数/ルールグループ1,000
IPセット数/リージョン100
IPアドレス数/IPセット10,000
Regex パターンセット数/リージョン10
Web ACL容量単位(WCU)5,000
リクエストボディ検査サイズ8 KB(デフォルト)、最大64 KB

AWS CLIのサンプルコード

CloudFormationのサンプルコード

Terraformのサンプルコード

料金計算

課金項目説明
Web ACLWeb ACLの月額料金
ルールWeb ACL内のルール数
リクエスト数Web ACLで検査されるリクエスト数
ボット管理ボットコントロールの検査リクエスト数
料金計算ツール

公式ページ

AWSドキュメント WAF