share facebook facebook facebook twitter twitter menu hatena pocket slack

2021.07.02 FRI

やさしい AWS Shield Advanced

新川 貴章

WRITTEN BY 新川 貴章

AWS Shield の概要

AWS Shield とは

  • Webサービス提供者は、インターネットに公開しているWebアプリケーションを分散型サービス拒否攻撃(DDoS)から適切に保護する必要があります。AWS Shield は、AWS で実行されるWebアプリケーションを DDoS攻撃から保護するマネージド型のサービスです。
  • AWS Shield には、Standard・Advanced の2種類があります。

AWS Shield Standard とは

  • AWSのリソースには、標準でAWS Shield Standard が適用されており、追加の費用なく、一般的なレイヤー 3 およびレイヤー 4 のDDoS攻撃を防御することができます。

AWS Shield Advanced とは

  • AWS Shield Advanced を利用することで、レイヤー 3 およびレイヤー 4 のDDoS攻撃を防御するだけでなく、攻撃の通知や、レイヤー 7(アプリケーションレイヤー)の攻撃を防御でき、DRT(DDoSレスポンスチーム)のサポートを受けることもできます。
  • AWS Shield Advanced で保護可能なリソースは、下記となります。API Gateway は対象ではありません。
    • Amazon Route 53 ホストゾーン
    • Amazon CloudFront ディストリビューション
    • Application Load Balancer
    • AWS Global Accelerator
    • Elastic IP アドレス(EC2だけでなく、EIPが割り当てられたNLBなども対象となります)
  • AWS Shield Standard と AWS Shield Advanced の詳しい比較は、下記ドキュメントを参照ください。
を使用するAWS WAFを使用して、Amazon CloudFront および ELB ロードバランサーに転送されるリクエストをモニタリングします。

AWS Shield Advanced で知りたかったこと

  • AWS Shield Advanced は1年間のサブスクリプション契約のため、手軽に試すことができません。私がAWS Shield Advanced を利用するために調べたことをまとめました。

AWS Shield Advanced のメリット

  • レイヤー 3 およびレイヤー 4 のDDoS攻撃緩和が自動で行われる。
  • CloudFront、ALBに設定した WebACL にレートベースルールを使用することで、レイヤー 7 のDDoS攻撃を防御することができる。レートベースルールは、5分間あたりの同一送信元からのリクエスト数がしきい値(100から20,000,000まで)を超過した場合にBlock or Countを可能とする。
  • レイヤー 7 のDDoS攻撃に対する、DRT(DDoSレスポンスチーム)のサポートが利用できます。
  • AWS Shield Advanced を使用してリソースを保護した場合、AWS WAF の利用料も含まれるためコスト的なメリットが受けられます。
  • DDoS攻撃によってスケーリングした料金のサービスクレジットを受けることができ、予期せぬリソース使用料の増加を回避できます。(但し、サポート経由でのリクエストが必要)
  • CloudFront のカスタムオリジンを使用することで、AWS 以外のリソースにも利用できます。
  • CloudFront、Route 53 への攻撃は 1 秒未満、ELB への攻撃は 5 分未満で、AWS Shield により検出されたレイヤー 3 およびレイヤー 4の攻撃の 99% が緩和されます。
  • AWS Shield Advanced では、DDoS攻撃を検出してから数分以内に通知が行われます。

AWS Shield Advanced の利用料

  • 組織あたり 3,000 USD の月額料金(*)かつ1年間のサブスクリプション契約が必要になります。サブスクリプションは、毎年自動で更新されます。
    • (*)月額料金は、AWS Shield Advanced をサブスクライブしている組織単位で適用される。1つの組織が複数の AWSアカウントを使用している場合、上記月額料金は、代表のアカウントでまとめて請求される。
  • AWS Shield Advanced で保護したリソースのデータ転送(アウト)の料金は、上記月額料金とは別に、AWSアカウント単位で請求が行われます。なお、Route 53 については、追加の料金はありません。
  • AWS Shield Advanced を使用してリソースを保護した場合、保護リソースに対する AWS WAF の利用料(WebACL、ルール、リクエストに対する追加料金)が免除されます。
    • ※AWS Shield Advanced の有効化だけでなく、保護リソースの設定が必要。
    • ※AWS Marketplace で提供されるマネージドルールグループは免除の対象外となる。
  • Route 53 ヘルスチェックは、ヘルスチェック毎に課金されます。

DRT(DDoSレスポンスチーム)のSupport

  • DRT のサービスを利用するには、「ビジネスサポートプラン」または「エンタープライズサポートプラン」が必要です。また、DRT がWAF および WAFログへアクセスするための権限を設定する必要があります。
  • AWS Support に問い合わせることで、DRT のエキスパートからレイヤー 7 のDDoS攻撃を防御するためのサポートが得られる。(例:レートベースのルール見直しなど)
  • AWS Shield Advanced の保護リソースに関連付けたRoute 53 ヘルスチェックが異常になった場合、プロアクティブエンゲージメント(DRTからのプロアクティブなサポート)を利用できる。
  • 以下、AWS Shield Advanced のオプション設定となりますが、プロアクティブエンゲージメントの前提条件です。
    • 正常性ベースの検出(Route 53 ヘルスチェックの関連付け)を設定する。
    • WAFのロギングが有効化されており、DRT がWAF のリソースおよび WAFログへアクセスするための権限が設定されている。
    • プロアクティブエンゲージメントにコンタクト先を登録する。コンタクト先には、Email address、Phone number、Contact notesを記載する。(10件まで)

AWS Shield Advanced の構築方法

AWS Shield Advanced 有効化

  • AWS マネジメントコンソールから、「WAF & Shield」を選択します。

  • AWS Shield の「Getting started」を選択します。「Subscribe to Shield Advanced」ボタンを選択します。 ※AWS Shield Advanced の利用には、3,000 USD の月額料金かつ1年間のサブスクリプション契約が必要となります。不用意に進まないようにご注意ください。

  • サービスの利用条件に同意、チェックを入れて、「Subscribe to Shield Advanced」ボタンを選択します。

  • 下記の画面が表示されます。「Add resources to protect」ボタンを押し、保護リソース追加の設定に進みます。

保護リソースの追加とオプション設定

  • Region、Resource Type を選択し、「Load resources」ボタンを押します。

  • 保護リソースを候補から選択し、「Protect with Shield Advanced」ボタンを押します。以下では、CloudFrontディストリビューション、Route 53 Hosted Zone を選択しています。

  • 以下の通り、Shield Advanced に保護リソース x2 が追加されました。

  • 次に、保護リソースをレイヤー 7 のDDoS攻撃から防御するため、WebACLを関連付けます。「Web ACL」からWebACL のリソース名を選択します。 ※事前にAWS WAF のWebACLを作成しておく必要があります。

  • 関連付けしたWebACL に、レートベースのルールを追加します。「Add rate limit rule」ボタンを押します。

  • 以下の画面が現れます。Rule name、Rate limit、Action を選択します。Rate limitは、5分間あたりの同一送信元からのリクエスト数となります。
  • Rate limit の算出ができない場合、Actionは「Count」を設定し、後からRate limit の見直しを行っても良いです。

  • 関連付けしたWebACL に、レートベースのルールが追加されました。

  • 次は、保護リソースの正常性ベースの検出の設定(Route 53 ヘルスチェックの関連付け)です。 ※正常性ベースの検出の設定を行う場合は、事前にRoute 53 でヘルスチェックを作成しておく必要があります。
  • 正常性ベースの検出の設定は必須ではありませんが、DRT からプロアクティブなサポートを受ける場合の必要条件です。

  • 次は、SNS Topic の設定です。DDoS検出時、Rate limit超過時の2つが設定できます。(Route 53 Hosted Zone の場合は、DDoS検出時のSNS Topicしか設定できません)

  • 設定内容を確認し、「Finish configuration」ボタンを押します。

  • 保護リソースの追加とShield Advancedの設定が完了しました。

DRT Support を有効にする前に

  • DRT のサポートには、AWS サポートプランがビジネス以上である必要があります。現在のサポートプランをご確認ください。

DRT Support を有効化する

  • AWS Shield の Overview を選択します。「3. Configure AWS DRT Support」のStatus が「Incomplete」となっていることが分かります。
  • 「Edit DRT access」ボタンを押し、DRTからのアクセス権限を設定します。

  • AWS サポートプランがビジネス or エンタープライズでない場合、下記の画面が表示されます。この状態では、DRT Support は有効にできません。

  • AWS サポートプランがビジネス以上であれば、下記の画面が表示されます。
  • DRT からアクセスに使用するロール名とWAFログが格納されたバケット名を指定します。「Save」ボタンを押します。

  • 以下の通り、DRTからアクセスに使用するロールが作成されました。

  • また、WAFログが格納されているバケットに、DRTからアクセスするためのポリシーが追加されました。

  • バケットポリシーの内容は、下記となっております。
{
    "Version": "2012-10-17",
    "Id": "PolicyAWSDDoSResponseTeamAccess",
    "Statement": [
        {
            "Sid": "AWSDDoSResponseTeamAccessS3Bucket",
            "Effect": "Allow",
            "Principal": {
                "Service": "drt.shield.amazonaws.com"
            },
            "Action": [
                "s3:GetBucketLocation",
                "s3:GetObject",
                "s3:ListBucket"
            ],
            "Resource": [
                "arn:aws:s3:::waflog-bucket",
                "arn:aws:s3:::waflog-bucket/*"
            ]
        }
    ]
}
  • AWS Shield の Overview において、「3. Configure AWS DRT Support」のStatus が「Complete」に変わりました。

DRT のプロアクティブエンゲージメント有効化

  • プロアクティブエンゲージメントを有効化すると、DRT からプロアクティブなサポートを得ることができます。
  • 以下、プロアクティブエンゲージメントの前提条件です。ここでご紹介する手順が、3つ目に記載している条件の設定内容になります。
    • 正常性ベースの検出(Route 53 ヘルスチェックの関連付け)を設定する。
    • WAFのロギングが有効化されており、DRT がWAF のリソースおよび WAFログへアクセスするための権限が設定されている。
    • プロアクティブエンゲージメントにコンタクト先を登録する。コンタクト先には、Email address、Phone number、Contact notesを記載する。(10件まで)
  • AWS Shield の Overview を選択します。「Proactive engagement and contacts」のStatus が「Disabled」となっていることが分かります。

  • Contacts の「Edit」ボタンを押し、コンタクト先を登録します。必要に応じて、Notesに、プライマリ、セカンダリの順位、対応可能な時間帯とタイムゾーンを記載します。

  • 「Edit proactive engagement feature」ボタンを押し、プロアクティブエンゲージメントを有効化します。「Enable」を選択し、「Save」ボタンを押します。

レートベースのルールをカスタマイズする

  • WebACL の画面に移動します。Shield Advanced によって作成されたレートベースのルールが追加されていることを確認します。
  • レートベースのルールは、カスタマイズ可能です。「Edit」を押します。

  • Rate limit の値には、5分間あたりの同一送信元からのリクエスト数を指定します。(100から20,000,000まで)

  • 以下では、Rate limit のしきい値を超えた場合のAction を「Count」としておりますが、適切な値が設定されたら、「Block」に切り替えます。

参考資料

AWS 公式オンラインセミナー: https://amzn.to/JPWebinar 過去資料: https://amzn.to/JPArchive
AWS には、DDoS 攻撃に対する保護のために AWS Shield Standard と AWS Shield Advanced が用意されています。AWS Shield Standard は追加料金なしで自動的に組み込まれます。AWS WAF やその他の AWS のサービスに対して支払う料金以外には必要ありません。DDoS 攻撃...
AWS WAF の料金 – アマゾン ウェブ サービス (AWS)

元記事はこちら

https://oji-cloud.net/2021/06/29/post-6379/?utm_source=rss&utm_medium=rss&utm_campaign=post-6379

cloudpack

cloudpackは、Amazon EC2やAmazon S3をはじめとするAWSの各種プロダクトを利用する際の、導入・設計から運用保守を含んだフルマネージドのサービスを提供し、バックアップや24時間365日の監視/障害対応、技術的な問い合わせに対するサポートなどを行っております。
AWS上のインフラ構築およびAWSを活用したシステム開発など、案件のご相談はcloudpack.jpよりご連絡ください。