DDoS 保護
概要
分散型サービス拒否 (DDoS) 攻撃は、標的となるサーバー、サービス、またはネットワークに大量のインターネットトラフィックを集中させて通常のトラフィックを妨害しようとする悪意のある攻撃です。DDoS 攻撃を効果的に軽減しないと、Web アプリケーションの可用性が低下したり、応答時間が低下したりする可能性があります。このような状況では、アプリケーションが攻撃を吸収するようにスケーリングすると、望ましくないスケーリングコストが発生します。幸い、AWS で構築されたアプリケーションにはネイティブ DDoS 保護のメリットがあり、AWS のサービスとセキュリティコントロールを使用してこれらの攻撃に対して高い回復力を持つように設計できます。
DDoS 保護に対する AWS のアプローチ
セキュリティは AWS とお客様の間で共有される責任です。 AWS は、クラウドサービスを支えるインフラストラクチャを保護する責任があります。インフラストラクチャを保護するために、AWS はインフラストラクチャの DDoS 攻撃 (レイヤー 3 および 4) に対するネイティブ保護を追加料金なしで採用しています。これらの保護は Shield Standard を通じて提供され、以下のコンポーネントに基づいています:
- 監視システムは 、ネットワークデバイスからの NetFlow やサービスログなどのさまざまなソースを分析して、DDoS 攻撃を検出します。
- スクラビングシステムは 、ディープパケットインスペクション、ファイアウォール、トラフィックシェーピングを使用して DDoS 攻撃からトラフィックをクリーンアップします。CloudFront や Route 53 などのサービスでは、スクラビングシステムがポイントオブプレゼンス (POP) 内にデプロイされ、1 秒未満の検出と軽減が可能になります。一方、ALB や EC2 などの地域サービスでは、スクラビングシステムが検出後、通常は数分以内に攻撃を軽減します。
- シールドレスポンスチームは、監視システムやスクラビングシステムによって自動的に検出および軽減されない DDoS 攻撃の迅速な解決を推進します。
責任分担モデルでは、DDoS 防御に対するお客様の責任は、お客様が使用する AWS クラウドサービスによって異なり、それによって、実行する必要のある設定作業の量が決まります。たとえば、EC2 インスタンスではなく S3 からファイルを公開すると、DDoS 攻撃に対して採用する必要のあるセキュリティ制御が軽減されます。使用するサービスに関係なく、AWS はお客様の責任範囲内で DDoS 攻撃を保護、監視、対応する機能を提供します。
AWS サービスを使用して DDoS 耐性のあるアーキテクチャを設計するのはお客様の責任です。いくつかのベストプラクティスは次のとおりです:
- ウェブアプリケーションには CloudFront を、その他のユースケースには Global Accelerator を使用することで、AWS 分散エッジネットワーク全体で数百 Tbps の緩和能力の恩恵を受けることができます。CloudFront と Global Accelerator はどちらも、SYN プロキシなどの高度な DDoS 緩和技術を採用しています。SYN プロキシは、新しい接続がアップストリームに進む前に SYN クッキーを送信して新しい接続に挑戦することで、SYN フラッドからの保護を提供します。CloudFront は、既知のレイヤー 3 および 4 の DDoS 攻撃、Slowloris や HTTP/2 ラピッドリセット攻撃などの HTTP プロトコルを標的とする DDoS 攻撃に対して、最速 (ミリ秒以下) かつ最も完全な保護を提供します。
- オリジンクローキングのテクニックを使ってオリジンのアタックサーフェスを減らします。
- EC2 ベースのオリジンでオートスケーリングを使用するなどして、アプリケーションをスケーリングできるように準備します。
- AWS WAF を使用して HTTP フラッドをブロックする
- アプリケーションの動作を監視して異常なアクティビティを警告し、脅威を分析し、事前に確立されたランブックを使用して対応します。AWS にサポートを依頼することもできます。
AWS WAF を使用して HTTP フラッドをブロックする
HTTP フラッド (レイヤー 7 での DDoS 攻撃) を効果的にブロックするために、AWS WAF は複数のルールを組み合わせて提供しています。
- 予期しないリクエストパターンを拒否することで、アプリケーションの表面攻撃を減らすためのルール。たとえば、API の URL スキームに準拠していない URL を含むリクエスト、API でサポートされていない HTTP 動詞を含むリクエスト、または単にドメイン名の一部ではない ホストヘッダー値を含むリクエストを拒否するルールを作成できます。このようなルールは、望ましくないトラフィックを即座にブロックします。
- IP レピュテーションに基づくルールで、レピュテーションの悪い IP からのトラフィックをブロックします。AWS が収集した脅威情報に基づく Amazon マネージドルールや、 Imperva などの AWS Marketplace のベンダーによる AWS WAF のマネージドルールを使用できます。また、独自の IP レピュテーションリストを作成して AWS WAF を自動的に更新することもできます。IP レピュテーションベースのルールは、HTTP フラッドのかなりの部分を即座にブロックする傾向があります。
- 設定されたディメンション(IP など)に従ってリクエストを集約し、集約されたリクエスト量が特定の期間(1分など)内に設定されたしきい値(100リクエストなど)を超えた場合にトラフィックをブロックするレート制限ルール。レート制限は、トラフィックのボリュームが設定されたしきい値を下回るまで、問題のあるトラフィックを数十秒以内にブロックします。レート制限のブロック期間を延長したい場合は、このブログで説明されているカスタムソリューションを実装してください。レート制限ルールの例としては、しきい値が高い包括的な IP ベースのルール(2,000 など)、しきい値が低い URI 固有 (例:/login) の IP ベースのルール (例:100) 、意味のあるビジネスを行っていない国のための国ベースのルール、問題のある認証セッションをブロックするための Cookie ベースのルールなどがあります。
- JavaScript Challenge アクションを含むルール。正規のブラウザのように JavaScript の実行や課題の解決に失敗したツールによって生成される望ましくないトラフィックを即座にブロックします。
- 回避型ボットによって編成された HTTP フラッドから保護するための Bot Control ルール。AWS WAF Bot Control を使用するボット管理手法には、行動検出、調整されたアクティビティの ML ベースの検出、ブラウザ自動化検出、CAPTCHA チャレンジなどがあります。検出と緩和は数十秒以内に行われます。
- Shield Advanced の 自動アプリケーションレイヤー DDoS 緩和機能 (L7AM).によって自動的に作成された 攻撃シグネチャに基づくルール。Shield Advanced のこの機能を有効にすると、AWS WAF WebACL に空のマネージドルールグループが作成され、通常のトラフィックのベースラインを構築するためにアプリケーショントラフィックが少なくとも 72 時間監視されます。トラフィックプロファイルが確立されたベースラインから大幅に逸脱すると、Shield Advanced は DDoS 検出を通知し、トラフィックの分析を開始して攻撃シグネチャの有無を確認します。シグネチャが見つかった場合は、まずそのシグネチャを過去のトラフィックでテストして誤検出のリスクを軽減します。その後、安全に使用できる場合は、対応する WAF ルールが以前に作成されたルールグループに配置されます。一定時間が経過して攻撃が停止すると、ルールはルールグループから自動的に削除されます。成功すると、このプロセスには数分かかります。
さらに、認識されている脅威レベルに適応する動的な WAF ルールを実装できるため、重大度の高い DDoS 攻撃の際には、より積極的な対応(CAPTCHA やチャレンジアクションなど)が可能になります。このソリューションを使用してこのパターンを実装する方法の詳細をご覧ください。
Shield Advanced の使用
Shield Advanced はは、DDoS 攻撃に対するセキュリティ体制を強化する追加の AWS サービスです。ウェブアプリケーションには AWS WAF を使用してレイヤー 7 で自動的に緩和し、帯域幅容量の大きいボーダーネットワークでネットワークアクセスコントロールリスト (NACL) ルールを適用するなど、非ウェブアプリケーションの保護を強化します。Shield Advanced では、自動的に軽減されない攻撃をシールドレスポンスチームにエスカレーションして、手動で軽減することができます。
Shield Advancedの全機能を活用するには、次のことをお勧めします。
- Shield アドバンスドに登録したら、インターネットに接続する AWS リソースに Shield アドバンスド保護を追加してください。アプリケーショントラフィックがベースライン化され、緩和策が適用されるように、攻撃の 72 時間前に保護対策を講じる必要があります。
- CloudFront および ALB リソースについては、AWS WAF WebACL を前のセクションで説明したベストプラクティス (レート制限、IP レピュテーションなど) に関連付けてください。これらのリソースのレイヤー 7 保護を有効にします。オプションで、AWS WAF ロギングを設定します。
- AWS Shield レスポンスチーム (SRT) から直接連絡を受けるようにプロアクティブエンゲージメントを設定します。Amazon Route53 ヘルスチェックを作成する前に、プロアクティブなエンゲージメントを有効にすることができます。アプリケーションに関連するヘルスチェックにより、Shield Advancedの検出感度が向上します。たとえば、ヘルスチェックでアプリケーションから返されるエラーが 5xx 件増加したことが検出されると、Shield Advanced は検出しきい値を下げます。ヘルスチェックの設定方法については、この短い動画をご覧ください。
- 攻撃を受けたときに通知を受け取るように Shield と WAF の CloudWatch アラームを設定します。
Shield Advanced の設定を監査するには、AWS Systems Manager で DDoSResiliencyAssessment runbook を実行してください。Amazon Route 53、Amazon ロードバランサー、Amazon CloudFront ディストリビューション、AWS Global Accelerator、AWS Elastic IP の各リソースを、AWS Shield Advanced プロテクションの推奨ベストプラクティスに従って収集、分析、評価し、構成設定を行います。
DDoS レジリエンスのテスト
DDoS シミュレーションテストは AWS で許可されており、このページに詳述されている利用規約が適用されます。AWS には DDoS シミュレーションテストの実行方法として、NCC Group plc、RedWolf、Red Button などの認定済みの AWS パートナーによる本番トラフィックでのシミュレート DDoS 攻撃、もう 1 つは Shield Response Team による合成シミュレート DDoS 攻撃 (ファイアドリルとも呼ばれます) の 2 つです。