AWS WAFの概要記事。
AWS WAFとは
- AWSが提供するWAF(Web Application Firewall)。
- WAFとは...
* Webアプリケーションの脆弱性を突いた攻撃からWebアプリケーションを守るためのセキュリティ対策ソリューション。
* 一般的なWebアプリケーションに対する攻撃手法(SQLインジェクションやXSSなど)からWebアプリを保護する。
* 利用形態には、ソフトウェア、ハードウェア、サービスなどがある。
* L7保護のためのもので、L3/L4保護のためのファイアウォールとは異なる役割を持つ。
- WAFとは...
- CloudFront、 ALB、API Gatewayにアタッチして利用する。
提供機能
-
悪意のあるリクエストのブロック
- SQLインジェクション、クロスサイトスクリプティングなど。
- AWSや他のパートナーが提供するマネージドルールに基づいたブロック処理。
-
カスタムルールに基づいたWebトラフィックのフィルタ
- ルールベースフィルタリング
- IPベース、正規表現・文字列
- サイズ制限
- ルール判定結果に応じたアクション(アクセス許可/拒否)
- ルールベースフィルタリング
-
モニタリングとチューニング
- CloudWatchと連携した状態の可視化・アラート。
概念
-
ルール
- リクエスト(攻撃)に対する戦略を定義する設定。
- ステートメント:リクエストの検査条件
- アクション:条件に一致した際のリクエストの処理方法。ALLOW(許可)/BLOCK(拒否)/COUNT(カウント)の3種。
- リクエスト(攻撃)に対する戦略を定義する設定。
-
ルールグループ
- 複数のルールをまとめて管理する際の単位。
-
Web ACL
- CloudFront、ALB、API Gatewayへの設定単位。
- 1リソースあたり1ACLの設定が可能。
- 同一ACLを複数のリソースで共有可能。
- ルール/ルールグループを包含管理。
- CloudFront、ALB、API Gatewayへの設定単位。
ステートメント
判定内容
- リクエスト発生国の一致
- リクエスト送信元IPアドレスの一致
- サイズ制約
- SQL injection
- XSS injection
- 文字列の一致
- 正規表現パターンセット
判定対象
- リクエストヘッダー
- HTTPメソッド
- クエリ文字列
- 単一クエリパラメータ
- すべてのクエリパラメータ
- UR
- Body
ルール
レートベースルール
- 5 分あたりの同一IPからのリクエスト数が設定閾値を超過した場合、Block/Countする。
- 5 分あたりの閾値の設定範囲は、100 〜 20,000,000。
- ルール作成時にRate-based Ruleを選択。
- 全リクエストを対象にするか、ステートメント内の条件に一致したリクエストだけを対象にするかを選択可能。
AWS Managed Rules for AWS WAF (AMR)
- AWS WAFに組み込み可能なルールセット。
- AWS Threat Research Team (TRT)が作成及びメンテナンス。
- OWASP Top 10 をメインに対応。
- WAF Capacity Unit(WCU) は消費するが、それ以外の追加費用は不要。
- WCU:WAFのルールに対する処理コストの考え方。
- ルールに応じて、消費するWCUは異なる。
AWS WAF導入(Web ACL設定)の流れ
- Web ACL名の入力と適用対象AWSリソースの選択。
- ルールの設定。
- 利用ルールの選択(+AWS マネージドルール追加)
- デフォルトアクション(Allow/Block)を選択
- ルールの適用順序を設定
- CloudWatchメトリクスを選択。
- 設定内容を確認し、作成完了。