この記事では、Sitecore Managed Cloudのお客様がDDoS攻撃の影響を緩和するのに取りうる対処法について説明します。
DDoS攻撃を受けている場合、以下のような兆候が見つかる可能性があります。
攻撃の結果、アプリケーションに過度の負荷がかかって応答が遅くなるため、応答遅延アラートや可用性テスト失敗のアラートなどを受け取ることになります。
デプロイのインフラに応じた最も一般的なシナリオとして、以下のようなものが考えられます。
デプロイされたインフラによって、緩和手順が異なる場合があります。しかし、どのインフラにも共通する一般的な手順の流れがあります。
註: 攻撃に晒されているWebアプリやASKリソースを垂直または水平方向にスケーリングしても、ネットワーク レイヤーがスロットリングされるため、ほとんどの場合ウェブサイトをオンラインに戻すのに役立ちません。
以下に、考えられるシナリオは詳しく記載いたします。
攻撃を識別する方法:
緩和手順:
Webアプリ上で(Application GatewayまたはFront Doorなしに)ウェブサイトを実行されているManaged Cloudのお客様につきましては、残念ながらDDoS攻撃からソリューションを効率的に保護する方法はありません。
短期的な解決策として、ネットワーク ルールを使用してWebアプリへのアクセスを一時的に制限していただくことができます。
Webアプリのネットワーク制限ルールに関する詳細につきましては、このドキュメントをご参照ください。
長期的な解決策といたしまして、App Gateway WAF、Front DoorまたはDDoS protectionを購入していただくことをご検討ください。詳細につきましては、以下をご参照ください。
攻撃を識別する方法:
「Application gateway」リソースの「概要(Overview)」セクションで「合計要求の総数(Sum Total Requests)」を調査します。
以下のクエリを使用して、監視(Monitoring) → ログ(Logs)でApplication gatewayに不審なIPがないかを調査します。
AzureDiagnostics
| where ResourceType == "APPLICATIONGATEWAYS" and OperationName == "ApplicationGatewayAccess"
| summarize AggregatedValue = count() by clientIP_s
| top 10 by AggregatedValue
リクエストの大半を生成している疑わしいIPアドレスがないか結果を調査します。なお、スマートDDoS攻撃では幅広い範囲のIPが使用される場合があるため、IPではブロックできない可能性がある点に注意してください。
Application Gatewayの監視(Monitoring) → メトリック(Metrics)で、国/リージョン(Country/Region)で分けられたWAF合計要求数(WAF Total Requests)を確認し、疑わしいリージョンがないか調査します。
DDoS攻撃では、しばしば少数のページのみに焦点を合わせて攻撃してくることがあります。以下のクエリを使用して、監視(Monitoring) → ログ(Logs)で最も多く訪問されたページを調査することができます。
AzureDiagnostics
| where ResourceType == "APPLICATIONGATEWAYS" and OperationName == "ApplicationGatewayAccess"
| summarize AggregatedValue = count() by requestUri_s
| top 50 by AggregatedValue
攻撃者はかなりの頻度で攻撃中に共通のエージェント、ブラウザ、またはデバイスを使用します。例えば、次のクエリはユーザー エージェントごとのリクエストを返します。
AzureDiagnostics
| where ResourceType == "APPLICATIONGATEWAYS" and OperationName == "ApplicationGatewayAccess"
| summarize AggregatedValue = count() by userAgent_s
| sort by AggregatedValue desc
Azure Application Gatewayのさらなる詳細につきましては、このドキュメントをご参照ください。
緩和手順:
短期的な解決策として、調査結果を元にWAFポリシー ルールを使用してApplication Gatewayでトラフィックを一時的にブロックする方法が挙げられます。Application Gateway → 設定(Settings) → Web application firewallメニューにアクセスし、既存のポリシーを選択するか新しいポリシーを作成します(WAFポリシーの作成方法についてはこのドキュメントをご参照ください)。
ポリシーでIP、リージョン、訪問したページ、エージェント、またはその他のプロパティを元にトラフィックをブロックまたは許可するカスタム ルールを作成できます。
WAFのカスタム ルールの詳細につきましては、このドキュメントをご参照ください。
また、異常に高いレベルのトラフィックをブロックするレート制限ポリシーを作成していただくこともできます。詳細につきましては、このドキュメントをご参照ください。
Application Gatewayはトラフィックが増加すると、処理のために追加のインスタンスを必要とする場合があります。インスタンスをスケーリングする方法については、このドキュメントをご参照ください。
DDoS攻撃が終了したら、適用したブロック ルールおよびスケーリングしたインスタンスを元に戻すことを忘れないようにしてください。
長期的な解決策としては、DDoS protectionを購入していただくことをご検討ください。
ご不明な点がございましたら、Sitecoreサポートまでお問い合わせください。
攻撃を識別する方法:
Application Gatewayと同様に、Front Doorで潜在的なDDoS攻撃の有無を識別するには、監視(Monitoring) → リクエスト数(Requests Count)にアクセスします。
国でトラフィックを分けることができます。
Front Doorのログを閲覧するには、診断設定を構成していることを確認してください(詳細につきましては、このドキュメントを参照してください)。
Application Gatewayと同様に、Front Doorのログでは着信したリクエストに関する情報を抽出することができます。
クライアントIP:
AzureDiagnostics
| where Category == "FrontDoorAccessLog"
| summarize AggregatedValue = count() by clientIp_s
| sort by AggregatedValue desc
訪問したURL:
AzureDiagnostics
| where Category == "FrontDoorAccessLog"
| summarize AggregatedValue = count() by requestUri_s
| sort by AggregatedValue desc
ユーザー エージェント:
AzureDiagnostics
| where Category == "FrontDoorAccessLog"
| summarize AggregatedValue = count() by userAgent_s
| sort by AggregatedValue desc
緩和手順:
Azure Front DoorはデフォルトのAzureインフラのDDoS Protectionを活用した上で、世界中の192のエッジPOPにトラフィックを分散することで、DDoS攻撃から配信元を保護するのに役立つコンテンツ デリバリー ネットワークです。詳細につきましては、このドキュメントをご参照ください。
ただし、場合によってはデフォルトの保護は十分ではないことがあります。そこで、調査の結果を元に攻撃者をブロックするファイアウォール ルールを作成することができます。
ルールを作成するには、既存のWAFポリシーを選択するか、新しいWAFポリシーを作成します。詳細につきましては、このドキュメントをご参照ください。
また、異常に高いトラフィックをブロックするレート制限ポリシーを構成することもできます。詳細につきましては、このドキュメントをご参照ください。
デフォルトのインフラ保護ではDDoS攻撃を防げない場合は、DDoS Protectionを購入していただくことをご検討ください。なお、DDoS ProtectionはAzure Front Doorにはデプロイできない点にご注意ください。パブリックIPアドレスを持つ仮想ネットワークが構成されている必要があります。
ご不明な点がございましたら、Sitecoreサポートまでお問い合わせください。
Azure DDoS ProtectionサービスがDDoS攻撃から保護するうえで最善のソリューションです。
ご不明な点がございましたら、Sitecoreサポートまでお問い合わせください。