AWS WAF
SQL インジェクションやクロスサイトスクリプティングなどの Web 攻撃からアプリケーションを保護するマネージドな Web アプリケーションファイアウォール
概要
AWS WAF (Web Application Firewall) は、Web アプリケーションや API を一般的な Web 攻撃から保護するマネージドファイアウォールサービスです。CloudFront、ALB、API Gateway、AppSync に統合して動作し、SQL インジェクション、クロスサイトスクリプティング (XSS)、HTTP フラッド攻撃などの脅威をリアルタイムでブロックします。Web ACL (Access Control List) にルールを定義し、リクエストの許可、ブロック、カウント、CAPTCHA チャレンジなどのアクションを設定します。AWS マネージドルールグループを使えば、OWASP Top 10 の脅威に対する防御を数分で有効にでき、セキュリティの専門知識がなくても基本的な保護を実現できます。Bot Control 機能により、スクレイピングボットやクレデンシャルスタッフィング攻撃も検出・ブロックできます。
マネージドルールとカスタムルールの多層防御
WAF のルール設計では、AWS マネージドルールグループを基盤に、アプリケーション固有のカスタムルールを重ねる多層防御が効果的です。マネージドルールグループには Core Rule Set (SQL インジェクション、XSS、パストラバーサルなどの一般的な攻撃)、SQL Database (SQL インジェクションの詳細パターン)、Known Bad Inputs (既知の悪意あるペイロード) などがあり、Web ACL に追加するだけで OWASP Top 10 の脅威に対する基本防御が有効になります。カスタムルールでは、IP アドレスセットによる特定 IP のブロック/許可、正規表現パターンセットによるアプリケーション固有の攻撃パターン検出、地理的条件による国単位のアクセス制御を定義できます。Azure WAF が OWASP Core Rule Set をベースとした定義済みルールセット中心の運用であるのに対し、AWS WAF は正規表現や複合条件の組み合わせなど、より細かなカスタムルールの記述が可能です。
Bot Control とレートベースルール
WAF の Bot Control 機能は、リクエストの送信元がボットかどうかを自動分類し、カテゴリごとに異なるアクションを設定できます。検索エンジンクローラーやソーシャルメディアのボットは許可しつつ、スクレイピングボットやクレデンシャルスタッフィング攻撃を検出してブロックするといった使い分けが可能です。レートベースルールは、同一 IP アドレスからの過剰なリクエスト (例: 5 分間に 2,000 リクエスト以上) を自動的にブロックし、DDoS 攻撃やブルートフォース攻撃を緩和します。CAPTCHA アクションを組み合わせれば、疑わしいリクエストに対して人間であることの確認を求め、正当なユーザーのアクセスを維持しながらボットを排除できます。Web セキュリティの専門書 (Amazon) では、ボット対策の実践的なアプローチが解説されています。
Count モードによる段階的導入とログ分析
WAF ルールの導入で最も重要なのは、いきなり Block モードで適用しないことです。まず Count モードでルールを有効にし、WAF ログを分析して正当なトラフィックが誤検知されていないことを確認してから Block モードに切り替えます。この段階的なアプローチにより、ビジネスへの影響を最小限に抑えながらセキュリティを強化できます。WAF ログは S3、CloudWatch Logs、Kinesis Data Firehose に出力でき、S3 に保存したログを Athena でクエリすることで、ブロックされたリクエストのパターン分析や誤検知の調査を効率的に行えます。特定のルールで誤検知が多い場合は、そのルールにスコープダウンステートメント (除外条件) を追加して、特定の URL パスやヘッダーパターンを検査対象から除外する調整が可能です。WAF は CloudFront、ALB、API Gateway、AppSync に統合して動作しますが、WAF との統合は ALB でのみ利用可能な点に注意が必要です。