概要

リモート構成を有効にした Agent とそれをサポートするトレーシングライブラリのバージョンを実行しているサービスであれば、Agent やトレーシングライブラリの追加構成なしに、Datadog UI から攻撃やアタッカーをブロックすることができます。

Application Security Management (ASM) Protect は、攻撃や攻撃者を_ブロック_することでその速度を落とすことを可能にします。セキュリティトレースは、Datadog のトレーシングライブラリによってリアルタイムでブロックされます。ブロックは Datadog プラットフォームに保存され、Datadog Agent によって自動的かつ安全にフェッチされ、インフラストラクチャーにデプロイされ、サービスに適用されます。

前提条件

サービスに保護機能を活用するには

攻撃者 (IP および認証ユーザー) のブロック

ASM セキュリティシグナルでフラグが立てられた攻撃者を一時的または恒久的にブロックすることができます。シグナルエクスプローラでシグナルをクリックすると、そのシグナルを生成しているユーザーと IP アドレスが表示され、オプションでそれらをブロックすることができます。

Datadog ASM のセキュリティシグナルパネルで、攻撃者の IP をブロックすることができます

そこから、ASM によって保護されているすべてのサービスは、指定された期間、ブロックされた IP またはユーザーによって実行される着信リクエストをブロックします。ブロックされたすべてのトレースには security_response.block_ip または security_response.block_user というタグが付けられ、トレースエクスプローラーに表示されます。ASM が無効になっているサービスは保護されません。

攻撃者ブロックの自動化により、脅威へのリアルタイムな対応を実現

攻撃者を手動でブロックするだけでなく、自動化ルールを構成して、ASM がセキュリティシグナルでフラグを立てた攻撃者を自動的にブロックするようにすることも可能です。

開始するには、Security > Application Security > Configuration > Detection Rules に移動します。新しいルールを作成したり、Application security のタイプで既存のルールを編集したりすることができます。たとえば、Credential Stuffing 攻撃が検出されたときに重大度シグナル Critical をトリガーし、関連する攻撃者の IP アドレスを 30 分間自動的にブロックするルールを作成することができます。

: 認証された攻撃者をブロックできるようにするには、サービスをインスツルメンテーションする必要があります。詳しくは、ユーザーの監視と保護をご覧ください。

攻撃者を境界でブロック - ASM を既存の WAF デプロイとインテグレーション

Datadog ASM は、Security Signal から直接、攻撃者を境界でブロックすることができます。ASM はワークフローとインテグレーションし、攻撃者の IP アドレスを境界の Web アプリケーションファイアウォール (AWS WAF、Cloudflare、Fastly) にプッシュし、これらの攻撃者からのリクエストが顧客の環境に入る前にエッジでブロックされるようにします。 利用可能なブループリントからワークフローを作成し、ASM のシグナルサイドパネルから直接実行します。

Denylist

永久的または一時的にブロックされた攻撃者の IP アドレスや認証ユーザーは、Denylist に追加されます。Denylist ページでリストを管理します。Denylist は、個別 IP だけではなく IP 範囲 (CIDR ブロック) のブロックもサポートしています。

Passlist

Passlist を使用すると、特定の IP アドレスに対して、アプリケーションへのアクセスを恒久的に許可することができます。例えば、内部 IP アドレスや、アプリケーションのセキュリティ監査を定期的に実行する IP アドレスを Passlist に追加することができます。また、特定のパスを追加して、中断のないアクセスを確保することもできます。Passlist ページからリストを管理します。

アプリ内 WAF による攻撃試行のブロック

ASM アプリ内 WAF (Web アプリケーションファイアウォール) は、境界ベースの WAF の検出技術と Datadog が提供する豊富なコンテキストを組み合わせ、チームが自信を持ってシステムを保護できるようにします。

ASM はアプリケーションのルートを認識しているため、保護は特定のサービスに対してきめ細かく適用でき、必ずしもすべてのアプリケーションとトラフィックに適用する必要はありません。このコンテキストに基づく効率化により、検査の労力が軽減され、境界型 WAF と比較して誤検出率が低下します。ほとんどの Web フレームワークが構造化された経路のマップを提供するため、学習期間はありません。ASM は、脆弱性が公開された後すぐにゼロデイ脆弱性に対する保護を自動的に展開し、脆弱なアプリケーションをターゲットにして、誤検出のリスクを抑えることができるようにします。

アプリ内 WAF がセキュリティトレースをブロックする仕組み

130 以上のアプリ内 WAF ルールのそれぞれに提供される monitoring および disabled モードに加え、ルールには blocking モードもあります。各ルールは、ライブラリが疑わしいと判断する条件を受信リクエストに指定します。与えられたルールパターンが進行中の HTTP リクエストにマッチすると、そのリクエストはライブラリによってブロックされます。

マネージドポリシーは、アプリ内 WAF ルールの各々がマッチング時に動作するモードを定義します。monitoringblockingdisabled のいずれかです。ASM はアプリケーションの完全なコンテキストを把握しているため、どのルールを適用すれば誤検知の数を抑えながらアプリケーションを保護できるかを把握しています。

きめ細かい制御を行うには、Datadog が管理するポリシーを複製するか、カスタムポリシーを作成し、ニーズに合わせてモードを設定することができます。ポリシーを auto-updating に設定すると、Datadog が展開する最新の検出によってアプリケーションが保護されます。また、ポリシーをルールセットの特定のバージョンに固定するオプションもあります。

アプリ内 WAF ルールがモード間で切り替わるため、リモート構成が有効のサービスでは、ほぼリアルタイムで変更が反映されます。それ以外のサービスでは、アプリ内 WAF ページでポリシーを更新し、アプリ内 WAF ルールの定義を行うことで、動作の変更が適用されます。

Security –> Application Security –> Configuration –> In-App WAF と進み、アプリ内 WAF を管理します。

トレースエクスプローラーで、ファセット Blocked:true でフィルターをかけて、ブロックされたセキュリティトレースを表示します。

ファセット Blocked を true に設定してフィルターされた ASM トレースエクスプローラー。

アプリ内 WAF の構成

  1. リモート構成を有効にすると、ASM が有効なサービスがアプリ内 WAF の下に表示されるようになります。これは、Datadog バックエンドからインフラストラクチャー内のトレーシングライブラリにアプリ内 WAF の構成を安全にプッシュするために必要です。

  2. ASM/リモート構成が有効なサービスをポリシーと関連付けます。リモート構成が有効なサービスは、デフォルトで Datadog Recommended ポリシーの下に表示されます。Datadog Recommended は管理されたポリシーで、読み取り専用です。つまり、個々のルールのステータス (監視、ブロック、または無効) を変更することはできません。

    詳細な制御が必要な場合は、Datadog Recommended ポリシーを複製して、ルールステータスを変更できるカスタムポリシーを作成します。このカスタムポリシーに、1 つまたは複数のサービスを関連付けます。

  3. 各サービスのブロッキングを構成します。デフォルトでは、特定のアプリ内 WAF ルールのステータスがブロッキングであっても、リクエストはブロックされません。Security > Configuration > Application > In-App WAF に移動して、サービスのブロッキングモードをオンにします。

保護動作のカスタマイズ

ブロックされたリクエストへの対応をカスタマイズする

The blocked requests feature JSON or HTML content. If the Accept HTTP header is pointing to HTML, like text/html, the HTML content is used. Otherwise, the JSON one is used.

Both sets of content are embedded in the Datadog Tracer library package and loaded locally. See examples of the templates for HTML and JSON in the Datadog Java tracer source code on GitHub.

The HTML and JSON content can both be changed using the DD_APPSEC_HTTP_BLOCKED_TEMPLATE_HTML and DD_APPSEC_HTTP_BLOCKED_TEMPLATE_JSON environment variables within your application deployment file.

Example:

DD_APPSEC_HTTP_BLOCKED_TEMPLATE_HTML=<path_to_file.html>

Alternatively, you can use the configuration entry.

For Java, add the following:

dd.appsec.http.blocked.template.html = '<path_to_file.html>'
dd.appsec.http.blocked.template.json = '<path_to_file.json>'

For Ruby, add the following:

# config/initializers/datadog.rb

Datadog.configure do |c|
  # To configure the text/html blocking page
  c.appsec.block.templates.html = '<path_to_file.html>'
  # To configure the application/json blocking page
  c.appsec.block.templates.json = '<path_to_file.json>'
end

For PHP, add the following:

; 98-ddtrace.ini

; Customises the HTML output provided on a blocked request
datadog.appsec.http_blocked_template_html = <path_to_file.html>

; Customises the JSON output provided on a blocked request
datadog.appsec.http_blocked_template_json = <path_to_file.json>

For Node.js, add the following:

require('dd-trace').init({
  appsec: {
    blockedTemplateHtml: '<path_to_file.html>',
    blockedTemplateJson: '<path_to_file.json>'
  }
})

By default, the page shown in response to a blocked action looks like this:

ASM がブロックされた IP からのリクエストをブロックする際に表示されるページ

攻撃者に拒否ページを提供する際のデフォルトの HTTP レスポンスステータスコードは、403 FORBIDDEN です。このレスポンスをカスタマイズするには、Security > Application Security > Configuration > Protection に移動してください。

拒否ページが提供されるときにレスポンスコードを 200 OK または 404 NOT FOUND にオーバーライドすることで、攻撃者が検出されブロックされた事実をオプションで隠すことができます。

また、オプションで攻撃者をカスタム拒否ページにリダイレクトさせ、重要なサービスやインフラストラクチャーから遠ざけることができます。リダイレクト URL とリダイレクトの種類 (例: 永久 (301 レスポンスコード) または一時 (302 レスポンスコード)) を指定します。

すべてのサービスで保護を無効にする (保護モードの無効化)

保護モードはデフォルトでオンであり、すべてのサービスにおけるブロッキングを迅速に無効にするための切り替えが可能です。リクエストは Datadog の 2 つのセクションからブロックすることができます。つまり、セキュリティシグナルからのすべての攻撃者リクエストと、アプリ内 WAF からのセキュリティトレースです。後者は、アプリ内 WAF でサービスごとにブロッキングを構成する必要があります。

保護機能をきめ細かく適用し、正規のユーザーがブロックされる可能性を減らすことは重要ですが、すべてのサービスにわたるすべてのブロックをすばやく停止するためのシンプルなオフスイッチが必要な場合があります。保護をオフにするには、Security > Application Security > Configuration > Protection に移動して、Protection mode をオフに切り替えます。

その他の参考資料

お役に立つドキュメント、リンクや記事: