Configurer un en-tête IP client

ASM cherche automatiquement à résoudre l’adresse http.client_ip de plusieurs en-têtes connus, tels que X-Forwarded-For. Si vous utilisez un en-tête personnalisé pour ce champ, ou si vous souhaitez contourner l’algorithme de résolution, définissez la variable d’environnement DD_TRACE_CLIENT_IP_HEADER. Lorsque cette variable est définie, la bibliothèque ne vérifie que l’en-tête fourni pour l’IP client concerné.

Suivre les personnes malveillantes authentifiées

De nombreuses attaques critiques proviennent d’utilisateurs authentifiés ayant accès à vos endpoints les plus sensibles. Pour identifier toute personne malveillante effectuant des activités suspectes d’un point de vue sécurité, ajoutez des informations utilisateur aux traces en instrumentant vos services avec les tags d’utilisateur standardisés. Vous pouvez ajouter des tags personnalisés à votre span racine ou utiliser des fonctions d’instrumentation.

Si vous utilisez des frameworks d’authentification compatibles, et que la solution ASM est activée, la bibliothèque de tracing Datadog tente de détecter les événements de connexion et d’inscription des utilisateurs.

Référez-vous à la section Surveillance et protection des utilisateurs pour consulter la marche à suivre afin de surveiller manuellement l’activité utilisateur, ou découvrez comment désactiver le suivi automatique.

Exclure certains paramètres des détections déclenchant un signal

Il arrive qu’un signal ASM, ou qu’une trace de sécurité, soit en réalité un faux positif. Cela peut se produire lorsque la solution détecte plusieurs fois une même trace de sécurité et génère un signal, mais qu’après vérification, il s’avère que la menace n’est pas réelle.

Vous pouvez ajouter une entrée à la Passlist, qui ignore les événements générés par une règle, afin de limiter les patterns de signaux inutiles et de concentrer vos efforts sur les traces de sécurité légitimes.

Pour ajouter une entrée à la PassList, effectuez l’une des actions suivantes :

  • Cliquez sur un signal sur la page ASM Signals, puis sur le lien Add Entry en regard de l’action suggérée Add to passlist. Cette méthode permet d’ajouter automatiquement une entrée pour le service ciblé.
  • Accédez à la page Passlist Configuration et configurez manuellement une nouvelle entrée dans la PassList en fonction de vos propres critères

Remarque : les requêtes (traces) qui correspondent à une entrée de la PassList ne sont pas facturées.

Considérations relatives à la sécurité des données

Les données que vous recueillez avec Datadog peuvent contenir des informations sensibles que vous souhaitez filtrer, obfusquer, nettoyer, masquer, modifier ou ne pas recueillir du tout. De plus, elles peuvent contenir du trafic Synthetic susceptible de fausser les menaces détectées ou d’empêcher Datadog d’indiquer correctement le niveau de sécurité de vos services.

Par défaut, ASM recueille des informations sur les traces de sécurité afin de vous aider à comprendre la raison pour laquelle la requête est considérée comme suspecte. Avant de transmettre les données, ASM les analyse afin de rechercher des patterns et des mots-clés permettant de conclure que les données sont sensibles. Si les données sont considérées comme sensibles, le flag <redacted> est appliqué. Ainsi, en cas de requête suspecte, aucune donnée liée à la requête n’est recueillie, afin d’éviter de compromettre la sécurité des données.

Pour protéger les données des utilisateurs, la fonctionnalité d’analyse des données sensibles est activée par défaut dans ASM. Vous pouvez personnaliser la configuration à l’aide des variables d’environnement suivantes. L’analyse est basée sur la syntaxe RE2. Pour personnaliser l’analyse, définissez la valeur de ces variables d’environnement selon un pattern RE2 valide :

  • DD_APPSEC_OBFUSCATION_PARAMETER_KEY_REGEXP : pattern permettant d’analyser des clés dont les valeurs contiennent généralement des données sensibles. Les valeurs renvoyées et tous leurs nœuds enfant associés à la clé sont censurés.
  • DD_APPSEC_OBFUSCATION_PARAMETER_VALUE_REGEXP : pattern permettant d’analyser des valeurs pouvant indiquer la présence de données sensibles. Les valeurs renvoyées et tous leurs nœuds enfant sont censurés.
Pour Ruby uniquement, à partir de la version 1.1.0 de ddtrace

Vous pouvez également configurer des patterns d'analyse dans le code :

Datadog.configure do |c|
  # ...

  # Définir des expressions régulières RE2 personnalisées
  c.appsec.obfuscator_key_regex = '...'
  c.appsec.obfuscator_value_regex = '...'
end

Les données suivantes sont pas défaut considérées comme sensibles :

  • pwd, password, ipassword, pass_phrase
  • secret
  • key, api_key, private_key, public_key
  • token
  • consumer_id, consumer_key, consumer_secret
  • sign, signed, signature
  • bearer
  • authorization
  • BEGIN PRIVATE KEY
  • ssh-rsa

Consultez la documentation relative à la sécurité des données APM pour obtenir des informations sur les autres mécanismes de l’Agent Datadog, ainsi que les bibliothèques permettant de supprimer des données sensibles.

Configurer une page de blocage ou une charge utile personnalisée

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:

La page ASM bloque les requêtes provenant des adresses IP bloquées

Pour aller plus loin

PREVIEWING: may/unit-testing