DDoS攻撃、特にアプリケーション層(L7)をターゲットとした攻撃は、リソースの枯渇やサービスの停止を招く恐れがあります。本記事では、AWS WAFを活用してこれらの攻撃を効果的に緩和するための5つのアプローチを解説します。
1. レートベースのルールによるリクエスト制限
特定のIPアドレスからの過剰なリクエストを自動的にブロックする、最も基本的な対策です。
基本的な設定
- AWS WAFコンソールから対象のWeb ACL(Protection Pack)を選択。
- Add rules > Add my own rules and rule groups を選択。
- Rule type で Rate-based rule を選択。
- Rate limit を設定(例:5分間で1,000リクエストなど)。
- Action を Block に設定。
特定のURIに対する制限
特定のパス(ログイン画面や検索機能など)に限定してレート制限をかけたい場合は、以下を設定します。
- Rule configuration のドロップダウンで Custom keys を選択。
- Request aggregation keys で URI path を指定。
[!NOTE]
ボリュームが極めて低い攻撃や、5分未満のカスタマイズ可能なブロック期間が必要な場合は、Amazon Athena や AWS Lambda を使用した「Security Automations for AWS WAF」によるログ解析・自動ブロックを検討してください。
2. IP制限と地理的制限(Geo Match)
攻撃元が明らかな場合や、特定の地域からのトラフィックを想定していない場合に有効です。
地理的制限ルール (Geo-based rule)
- 特定の国からのトラフィックをブロックします。
- 設定手順:Custom rule > Geo based rule を選択し、対象の国を指定してActionを Block にします。
IPセットルール (IP-based rule)
- 既知の悪意あるIPアドレスを直接ブロックします。
- 設定手順:IP set をあらかじめ作成し、ルール設定画面でそのIPセットを選択、Actionを Block に設定します。
3. 文字列・正規表現マッチングによる特定パターンのブロック
User-Agentやクエリ文字列に特定の特徴がある攻撃をフィルタリングします。
-
Inspect:
Header -
Header field name:
User-Agent(または任意のヘッダー) -
Match type:
Exactly matches stringやContains stringなどを選択。 - 特定のパターンが検出された場合に Block を実行します。
4. AWS マネージドルールの活用
AWSが提供・運用する最新の脅威リストを利用することで、運用の手間を省きつつ高度な保護が可能です。
Bot Control ルールグループ
- ボットによる活動を検知し、レート制限や CAPTCHA を適用します。
- 検査レベル(Inspection level)を Targeted に設定することで、より高度な検知が可能です。
Amazon IP Reputation List
- DDoS活動に積極的に関与していることが確認されているIPアドレスのリストです。
- 「Free rules」カテゴリから選択して追加できます。
5. Anti-DDoS マネージドルール (Layer 7)
L7 DDoS攻撃に特化した保護レイヤーを追加します。
- ATP(Anti-DDoS protection):
- Challengeアクション:アプリケーションがサポートしている場合、パズルなどのチャレンジを提示してBotを排除します。
- 感度の設定:デフォルトでは、チャレンジの感度は「High」、ブロックの感度は「Low」に設定されており、誤検知を抑えつつ不審なリクエストをブロックします。
- URIの除外:チャレンジをサポートしない特定のURIパスを正規表現で除外することも可能です。
ログの有効化と分析
攻撃の予兆検知や事後分析のために、WAFログの有効化は必須です。
- Web ACLの設定から Logging destination を選択(S3, CloudWatch Logs, Kinesis Data Firehose等)。
- 必要なフィールドやフィルタを設定して保存。
これにより、Amazon Athena等を用いてトラフィックの詳細をクエリできるようになります。
まとめ
DDoS対策は、単一のルールではなく、**「レートベース」「マネージドルール」「ログ分析」**を組み合わせた多層防御が重要です。特に Bot Control や Anti-DDoS ルールグループは強力ですが、追加料金が発生する点に注意して運用しましょう。
次に行うべきステップとして、現在のトラフィック量を確認し、まずは「カウントモード」でレートベースのルールをテスト運用してみるのはいかがでしょうか?
参考
How do I use AWS WAF to mitigate DDoS attacks?
https://youtu.be/QIf09UT49Gg?si=yKcpTJlrIClsVehY
https://repost.aws/knowledge-center/waf-mitigate-ddos-attacks