概要

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

Application Security Management (ASM) Protect enables you to slow down attacks and attackers by blocking them. Security traces are blocked in real-time by the Datadog tracing libraries. Blocks are saved in the Datadog platform, automatically and securely fetched by the Datadog Agent, deployed in your infrastructure, and applied to your services.

前提条件

To use protection capabilities with your service:

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

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

From there, all ASM-protected services block incoming requests performed by the blocked IP or user, for the specified duration. All blocked traces are tagged with security_response.block_ip or security_response.block_user and displayed in the Trace Explorer. Services where ASM is disabled aren’t protected. See Investigate Security Signals for more information.

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

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

To get started, navigate to Security > Application Security > Protection > Detection Rules. You can create a new rule or edit an existing rule with type Application security. For example, you can create a rule to trigger Critical severity signals when Credential Stuffing attacks are detected, and automatically block the associated attackers’ IP addresses for 30 minutes.

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

攻撃者を境界でブロック - 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 は、脆弱性が公開された後すぐにゼロデイ脆弱性に対する保護を自動的に展開し、脆弱なアプリケーションをターゲットにして、誤検出のリスクを抑えることができるようにします。

How In-App WAF blocks security traces

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 でフィルターをかけて、ブロックされたセキュリティトレースを表示します。

ASM Trace Explorer filtered using facet Blocked set to true.

アプリ内 WAF の構成

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

  2. Associate your ASM/Remote Configuration-enabled services with a policy. After Remote Configuration is enabled on a service, navigate to Security > Application Security > Protection > In-App WAF. The service appears under the Datadog Monitoring-only policy by default. Datadog Monitoring-only is a managed policy and is read-only, meaning you cannot modify the status (monitoring, blocking, or disabled) for individual rules.

    If you need granular control, clone one of the available policies to create a custom policy where rule statuses can be modified. Associate one or more of your services with this custom policy.

    To change the policy applied by default to your services, you can update your default policy. From the In-App-WAF, click the policy you would like to set as default, then click Actions > Set this policy as default.

保護動作のカスタマイズ

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

ブロックされたリクエストは JSON または HTML のコンテンツを特徴としています。HTTP ヘッダーの Accept]103text/html のように HTML を指している場合、HTML コンテンツが使われます。そうでない場合は JSON が使われます。

どちらのコンテンツも Datadog Tracer ライブラリパッケージに埋め込まれ、ローカルにロードされます。GitHub 上の Datadog Java トレーサーのソースコードで HTML および JSON のテンプレートの例をご覧ください。

HTML と JSON のコンテンツは、アプリケーションのデプロイメントファイル内の DD_APPSEC_HTTP_BLOCKED_TEMPLATE_HTMLDD_APPSEC_HTTP_BLOCKED_TEMPLATE_JSON 環境変数を使って変更することができます。

例:

DD_APPSEC_HTTP_BLOCKED_TEMPLATE_HTML=<path_to_file.html>

または、構成エントリを使用することもできます。

Java の場合は、以下を追加します。

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

Ruby の場合は、以下を追加します。

# config/initializers/datadog.rb

Datadog.configure do |c|
  # text/html ブロックページを構成するには
  c.appsec.block.templates.html = '<path_to_file.html>'
  # application/json ブロックページを構成するには
  c.appsec.block.templates.json = '<path_to_file.json>'
end

PHP の場合は、以下を追加します。

; 98-ddtrace.ini

; ブロックされたリクエストで提供される HTML 出力をカスタマイズします
datadog.appsec.http_blocked_template_html = <path_to_file.html>

; ブロックされたリクエストで提供される JSON 出力をカスタマイズします
datadog.appsec.http_blocked_template_json = <path_to_file.json>

Node.js の場合は、以下を追加します。

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

デフォルトでは、ブロックされたアクションに応答して表示されるページは次のようになります。

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

The default HTTP response status code while serving the deny page to attackers is 403 FORBIDDEN. To customize the response, navigate to Security > Application Security > Protection > Summary.

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

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

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

Protection mode is on by default and is a toggle available to quickly disable blocking across all your services. Requests can be blocked from two sections in Datadog: all attacker requests from Security Signals, and security traces from In-App WAF.

As important as it is for you to be able to apply protection granularly and reduce the likelihood of legitimate users getting blocked, you sometimes need a simple off switch to quickly stop all blocking across all services. To turn off protection, navigate to Security > Application Security > Protection > Summary and toggle Allow Request Blocking to off.

参考資料

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