Configuración de un encabezado IP de cliente

ASM intenta resolver automáticamente http.client_ip a partir de varios encabezados conocidos, como X-Forwarded-For. Si utilizas un encabezado personalizado para este campo, o quieres evitar el algoritmo de resolución, establece la variable de entorno DD_TRACE_CLIENT_IP_HEADER. Si estableces esta variable, la biblioteca solo comprueba el encabezado especificado para la IP del cliente.

Rastrear a los atacantes autentificados

Muchos ataques críticos son realizados por usuarios autenticados que pueden acceder a tus endpoints más confidenciales. Para identificar a los atacantes que generan actividades de seguridad sospechosas, añade información de usuario a trazas instrumentando tus servicios con las etiquetas de usuario estandarizadas. Puedes añadir etiquetas personalizadas a tu tramo raíz o utilizar funciones de instrumentación.

La biblioteca de rastreo de Datadog intenta detectar el inicio de sesión de usuarios y los eventos de registro cuando se utilizan marcos de autenticación compatibles y ASM está activado.

Consulta Seguimiento de la actividad del usuario para obtener más información sobre cómo realizar un seguimiento manual de la actividad del usuario, o ve cómo desactivar el seguimiento automático.

Excluir parámetros específicos de la activación de detecciones

Puede haber un momento en que una señal de ASM, o una traza de seguridad, sea un falso positivo. Por ejemplo, ASM detecta repetidamente la misma traza de seguridad y se genera una señal, pero la señal ha sido revisada y no es una amenaza.

Puedes añadir una entrada a la lista de aprobados, que ignora eventos de una regla, para eliminar los patrones de señales ruidosas y centrarte en las trazas de seguridad legítimas.

Para añadir una entrada a la lista de aprobados, realiza una de las siguientes acciones:

  • Haz clic en una señal en ASM Signals y haz clic en el enlace Add Entry (Añadir entrada) junto a la acción sugerida Add to passlist (Añadir a la lista de aprobados). Este método añade automáticamente una entrada para el servicio objetivo.
  • Accede a la Configuración de la lista de aprobados y manualmente configura una nueva entrada de la lista de aprobados según tus propios criterios.

Nota: Las solicitudes (trazas) que coincidan con una entrada de la lista de aprobados no se facturan.

Cuestiones de seguridad de los datos

Los datos que recopilas con Datadog pueden contener información confidencial que desees filtrar, enmascarar, depurar, filtrar, modificar o simplemente no recopilar. Además, los datos pueden contener tráfico sintético que puede hacer que la detección de amenazas sea inexacta o que Datadog no indique con precisión la seguridad de tus servicios.

Por defecto, ASM recopila información de trazas de seguridad para ayudarte a entender por qué la solicitud fue marcada como sospechosa. Antes de enviar los datos, ASM los analiza en busca de patrones y palabras clave que indiquen que los datos son confidenciales. Si los datos se consideran confidenciales, se sustituyen por un indicador <redacted>. Esto permite observar que, aunque la solicitud era sospechosa, los datos de la solicitud no se recopilaron por motivos de seguridad de los datos. Los datos relacionados con el usuario, como los identificadores de usuario de solicitudes autenticadas, no forman parte de los datos que se están ocultando.

Para proteger los datos de los usuarios, el escaneo de datos confidenciales está activado por defecto en ASM. Puedes personalizar la configuración utilizando las siguientes variables de entorno. El escaneo se basa en la sintaxis RE2. Para personalizar el escaneo, establece el valor de estas variables de entorno en un patrón RE2 válido:

  • DD_APPSEC_OBFUSCATION_PARAMETER_KEY_REGEXP: patrón para analizar claves cuyos valores contengan habitualmente datos confidenciales. Si se encuentran, los valores y cualquier nodo secundario asociado a la clave se redactan.
  • DD_APPSEC_OBFUSCATION_PARAMETER_VALUE_REGEXP: patrón para analizar valores que puedan indicar datos confidenciales. Si se encuentra, el valor y todos sus nodos secundarios se redactan.
Solo para Ruby, comienza en ddtrace versión 1.1.0

También puedes configurar patrones de escaneo en código:

Datadog.configure do |c|
  # ...

  # Configurar expresiones regulares personalizadas RE2
  c.appsec.obfuscator_key_regex = '...'
  c.appsec.obfuscator_value_regex = '...'
end

Los siguientes son ejemplos de datos que se marcan como confidenciales por defecto:

  • 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

Consulta Seguridad de datos de APM para obtener información sobre otros mecanismos de Datadog Agent y bibliotecas que también pueden utilizarse para eliminar datos confidenciales.

Consulta Modos de rastreo automático de los eventos de actividad del usuario para obtener información sobre los modos de rastreo automático de la actividad del usuario y cómo configurarlos. Descubre cómo las bibliotecas de Datadog permiten configurar la instrumentación automática usando la variable de entorno DD_APPSEC_AUTO_USER_INSTRUMENTATION_MODE con el nombre abreviado para el modo: ident|anon|disabled.

Configuración de una página de bloqueo personalizada o una carga útil

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 página se muestra como solicitudes de bloqueo de ASM que se originan desde IPs bloqueadas

Referencias adicionales