ちょっと話題の記事

「DDoS流行ってるの?」「うちには来てないよね?」をAWS Shieldで確認する方法 + 対策

「今DDoS流行ってる?」「攻撃受けてないよね?」そんな疑問にお答えするのがAWS Shieldです。(だいたいあってる)
2022.02.28

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは、臼田です。

みなさん、DDoS対策していますか?(挨拶

今回は、昨今の社会情勢もあり「DDoS流行ってるの?」「うちには来てないよね?」と不安になっている方に向けたAWS Shieldを活用したグローバルなDDoS状況の確認、自身のAWS環境のDDoSの影響確認、そしてDDoS対策について紹介します。確認部分は無料で簡単にできるのでぜひみなさんチェックしてみてください。

DDoSの状況確認

AWS ShieldはDDoS保護のサービスで、2つの種類があります。

1つは無償で全てのAWSアカウントを保護しているAWS Shield Standardで、AWS環境に対する一般的なレイヤー3レイヤー4のDDoSから自動で保護します。最初から有効化されており、明示的な設定などはいりません。

もう1つは月額$3,000で組織全体のAWSアカウントを保護するAWS Shield Advancedで、Amazon Elastic Compute (EC2)、Elastic Load Balancing (ELB)、Amazon CloudFront、AWS Global Accelerator、Amazon Route 53に対するアプリケーションレベルの検出と緩和策の提供、24/365のAWS Shield レスポンスチーム(SRT)による支援が受けられます。

以前はAdvancedでのみ、DDoSイベントのサマリを確認できるようになっていましたが、先日無償のAWS Shield Standardの機能としてAWS全体のグローバルなDDoS検知状況と、自身のAWSアカウント個別のDDoS検知状況が見れるようになりました。

グローバルなDDoS状況

というわけでこれを使って確認しましょう。まずはグローバルの状況から。AWSマネジメントコンソールにログインして、AWS Shieldの画面に移動します。「WAF & Shield」のページなので、左カラムから「AWS Shield -> Global threat dashboard」へアクセスすると、以下のようなグローバルなAttackのマッピングやサマリメトリクスなどが確認できます。

こちらは右上のプルダウンで期間を選択でき、最長2週間分が表示できます。2022/02/28現在、このサマリでは脅威レベルがNormalと表示されていることから、AWS Shieldとしては現状は通常レベルであると判断しているようです。

そのまま下にスクロールすると2週間のDDoSイベント検知状況がでてきます。どうやらAWS Shieldとしては2022/02/14から2022/02/26まではそこまで検知状況に波がなく、特別山があるような感じではありませんでした。(2022/02/13及び2022/02/27は2週間分の集計の関係でおそらく1日分ではないので、考察には含めないほうがいいでしょう)

自身のAWS環境のDDoS状況

グローバルなDDoSの状況とは別に、個別のAWSアカウントとしてのDDoS検知状況も確認できます。左カラムから「AWS Shield -> Overview」で該当AWSアカウントで検知したイベントのサマリが確認できます。もしイベントがあった場合はそのbit/packet/requestのレートや、どのAWSリソースで検知しているかなどが確認できます。

ただこれらはアカウント全体で検出されたインフラストラクチャレイヤー(レイヤー 3、レイヤー 4 )イベントの概要であるため、アプリケーションレベルの高度なDDoSなどはここに含まれていないことに気をつける必要があります。そのようなレベルのものは、アプリケーション側のモニタリングとしてCloudFrontやALB等のリクエストレートや、AWS WAFによる検知状況などを指標にしましょう。

AWS上のDDoS対策

AWSではDDoSからみなさんのサービスを保護するためのベストプラクティスを提供しています。元となるHTMLベースのガイド(英語)はこちら最新のホワイトペーパー(英語)はこちら少し古いですが日本語のホワイトペーパーはこちらにあります。

そもそもDDoSとは何なのか、というところから緩和や攻撃対象領域の縮小、運用テクニックについて紹介されています。

簡単に一部を抜粋して紹介すると、DDoS攻撃の目的はサービスを止めることにあるためいかにサービスを継続するかというところで、CloudFrontやRoute 53等の世界中に分散配置されたエッジロケーションを活用することでDDoS自体を分散隔離したり、アプリケーション固有の高度なHTTPリクエストなどはAWS WAFのマネージドルールを活用して一定のレベルで止めたりリアルタイムで個別のルールを調整したり、ALBやAutoScalingなどを組み合わせてリクエストを捌き切るなどが挙げられています。

DDoS検知のために各種AWSサービスでどのようなCloudWatchメトリクスを確認するといいか、なども紹介されています。

私のレコメンドとしては、各システムの前段にAWS WAFを導入することを忘れないようにしていただきたいです。AWS WAFは定常的に不正なリクエストを検知・ブロックするだけでなく、高度なアプリケーションDDoS攻撃などが発生した際に、AWS上のアーキテクチャを変更せずにすぐに対処を始めることが可能です。攻撃者も機械的に止まりやすい単調な攻撃だけとは限りません。

例えば商品検索機能を利用するGETリクエストで、同じようなクエリパラメータのリクエストが大量にリクエストされ、サーバーやデータベースの処理能力を枯渇させようとするDDoSは、リクエストのパターンをログで確認しながら、IPアドレスだけでなくUserAgentやクエリに対する正規表現なども組み合わせてWAFのルールを調整していくなど、最終的にはリアルタイムに変化する攻撃に対して備える必要があり、この対策としてもAWS WAFは非常に強力な機能です。

まとめ

AWS Shieldを活用したDDoSの状況の確認方法と、実際のDDoS対策の方法を紹介しました。

状況を確認したついでに、DDoS対策を始めとしたセキュリティ対策の状況を改めて確認してみてはいかがでしょうか?