Conformidad de Datadog con los estándares FIPS

El proxy FIPS del Datadog Agent sólo está disponible en la región US1-FED.

El proxy FIPS del Datadog Agent garantiza que la comunicación entre el Datadog Agent y Datadog utilice un cifrado conforme a FIPS.

El proxy FIPS del Datadog Agent es un componente distribuido por separado que se despliega en el mismo host que el Datadog Agent. El proxy actúa como intermediario entre la ingesta del Agent y Datadog. El Agent se comunica con el proxy FIPS del Datadog Agent, que cifra las cargas útiles utilizando una criptografía validada FIPS 140-2 y retransmite las cargas útiles a Datadog. El Datadog Agent y el proxy FIPS del Agent deben configurarse en tándem para comunicarse entre sí.

La conformidad con FIPS no se mantiene si el proxy FIPS del Datadog Agent y el Datadog Agent no están en el mismo host.
Del mismo modo, la conformidad con FIPS no se mantiene si la opción fips.enabled no se define como verdadero en datadog.yaml.

Plataformas compatibles y limitaciones

La conformidad del proxy FIPS del Datadog Agent se basa en su uso del Módulo criptográfico - Certificado #4282 validado por FIPS 140-2. Para obtener información sobre entornos de funcionamiento validados y restricciones, consulta la política de seguridad relacionada.

**Es responsabilidad del usuario garantizar que el entorno de funcionamiento cumple la política de seguridad y las directrices generales de FIPS.

Plataformas compatibles:

Bare metal y máquinas virtuales (VM)RHEL >= 7
Debian >= 8
Ubuntu >= 14.04
SUSE >= 12
Nube y contenedorAmazon ECS
AWS EKS (Helm)

Productos compatibles (Agent v7.45 o posterior):

  • Métricas
  • Logs
  • Trazas de APM
  • Perfiles APM
  • Procesos
  • Orchestrator Explorer
  • Seguridad en tiempo de ejecución

El proxy FIPS del Datadog Agent no admite lo siguiente:

  • Monitorización serverless
  • Comunicación entre el Agent de clúster y los Agents de nodo
  • Integraciones del Agent
  • Comunicación saliente a un destino distinto de GovCloud

Requisitos previos

  • Rango de puertos TCP disponible: 9803 a 9818
  • Datadog Agent >= v7.41

Instalar el Agent con compatibilidad FIPS

Instalar el Agent en un nuevo host

Para instalar el Datadog Agent con el proxy FIPS del Datadog Agent, añade DD_FIPS_MODE=1 a las instrucciones de instalación en un solo paso de la página de la integración Datadog Agent. Por ejemplo:

DD_API_KEY=<DD_API_KEY> \
DD_SITE="ddog-gov.com" \
DD_FIPS_MODE=1 \
bash -c "$(curl -L \
   https://install.datadoghq.com/scripts/install_script_agent7.sh)"

Al definir la variable de entorno DD_FIPS_MODE se instala el paquete FIPS junto con el Agent y se configura el Agent para utilizar el proxy. Si utilizas este método, no hay pasos de configuración adicionales, pero deberías verificar tu instalación.

Añadir el proxy FIPS del Datadog Agent a un Agent existente

Sigue los pasos que se indican a continuación para añadir el el proxy FIPS del Datadog Agent a una instalación existente del Agent.

Instalar el paquete del proxy FIPS del Datadog Agent

  1. Ejecuta los siguientes comandos para instalar el proxy FIPS del Datadog Agent:

    Debian:

    apt-get update && apt-get install datadog-fips-proxy
    

    RHEL y Fedora:

    yum makecache && yum install datadog-fips-proxy
    

    SLES:

    zypper refresh datadog && zypper install datadog-fips-proxy
    
  2. La primera vez que realices una actualización, copia el archivo de configuración de ejemplo en la localización correspondiente y reinicia el proxy. No es necesario copiar la configuración en actualizaciones posteriores, a menos que haya cambios significativos en la configuración ascendente del proxy:

    sudo cp /etc/datadog-fips-proxy/datadog-fips-proxy.cfg.example \
       /etc/datadog-fips-proxy/datadog-fips-proxy.cfg
    sudo chown dd-agent:dd-agent \
       /etc/datadog-fips-proxy/datadog-fips-proxy.cfg
    sudo chmod 640 /etc/datadog-fips-proxy/datadog-fips-proxy.cfg
    sudo systemctl restart datadog-fips-proxy
    

Configurar el Agent para utilizar el proxy FIPS del Datadog Agent

El paquete del proxy FIPS del Datadog Agent viene preconfigurado para su uso con el centro de datos US1-FED. Si estás actualizando un Datadog Agent existente, debes configurar el Agent para utilizar el proxy.

Para Configurar el Agent para utilizar el proxy, define fips.enabled como true y fips.https como false en el archivo de configuración del Agent:

fips:
  enabled: true
  https: false

El parámetro fips está disponible en las versiones del Agent 7.41 o posteriores. Cuando el parámetro está activado, el Datadog Agent redirige todas sus comunicaciones al proxy FIPS del Datadog Agent para los productos compatibles. Este parámetro ignora las opciones de URL personalizadas, como dd_url.

La opción https se define como false porque el Agent utiliza HTTP para comunicarse con el proxy. El proxy FIPS del Datadog Agent se ejecuta en el mismo host que el Agent y confía en la seguridad del host para la protección de esa comunicación.

Proteger y reforzar el host es tu responsabilidad.

El parámetro fips.enabled está predeterminado como false en el Agent. Debe tener el valor true para garantizar que todas las comunicaciones se reenvían a través del proxy FIPS del Datadog Agent.

Si fips.enabled no tiene el valor true, el Agent no es compatible con FIPS.

Verificación de tu instalación

Verifica qué métricas, trazas y logs están correctamente reportados en la aplicación.

Para las métricas, ejecuta el comando de diagnóstico de conectividad y asegúrate de que todos los checks se aprueben:

sudo -u dd-agent datadog-agent diagnose --include connectivity-datadog-core-endpoints
# Para el Agent v7.48 o posteriores, ejecuta el siguiente comando:
# sudo -u dd-agent datadog-agent diagnose datadog-connectivity

Si no ves métricas, trazas o logs reportados en la aplicación, consulta la sección Solucionar problemas.

Ver logs

sudo journalctl -u datadog-fips-proxy

Configuración de logs de journald

Si utilizas Log Management y quieres enviar los logs del proxy FIPS del Datadog Agent a Datadog, configura el Datadog Agent para leer logs de journald.

  1. En el archivo de configuración del Agent, dale a logs_enabled el valor true, para activar Logs Agent. En el directorio de configuración, crea un archivo en fips_proxy.d/conf.yaml, con el siguiente contenido:

    logs:
      - type: journald
        source: datadog-fips-proxy
        include_units:
          - datadog-fips-proxy.service
    
  2. Asegúrate de que el usuario dd-agent está en el grupo systemd-journal. Para más información, consulta la documentación sobre la integración con journald.

  3. Reinicia el Agent.

Configura los siguientes valores en tu archivo values.yaml:

fips:
  enabled: true
  use_https: false

El parámetro fips está disponible en las versiones del Agent 7.41 o posteriores. Cuando el parámetro está activado, el Datadog Agent redirige todas sus comunicaciones al proxy FIPS del Datadog Agent para los productos compatibles. Este parámetro ignora las opciones de URL personalizadas, como dd_url.

El parámetro use_https tiene el valor false, ya que el Agent utiliza HTTP para comunicarse con el proxy. El proxy FIPS del Datadog se ejecuta en el mismo host que el Datadog Agent y, para proteger la comunicación, se emplea el sistema de seguridad del host.

Proteger y reforzar el host es tu responsabilidad.

El parámetro fips.enabled está predeterminado como false en el Agent. Debe tener el valor true para garantizar que todas las comunicaciones se reenvían a través del proxy FIPS del Datadog Agent.

Si fips.enabled no tiene el valor true, el Agent no es compatible con FIPS.

Para obtener instrucciones sobre la instalación del proxy de FIPS en Amazon ECS, consulta la sección Proxy de FIPS para entornos GOVCLOUD.

Seguridad y endurecimiento

Como cliente de Datadog, eres responsable de la seguridad y el endurecimiento del host.

Consideraciones de seguridad:

  • Aunque las imágenes de Datadog que se proporcionan fueron creadas teniendo en cuenta la seguridad, no se han evaluado en función de las recomendaciones de referencia del CIS ni de las normas STIG de DISA.
  • Si reconstruyes, reconfiguras o modificas el proxy FIPS del Datadog Agent para adaptarlo a tus necesidades de despliegue o test, es posible que obtengas una configuración que funcione técnicamente, pero Datadog no puede garantizar la conformidad con FIPS si el proxy FIPS del Datadog Agent no se utiliza exactamente como se explica en la documentación.
  • Si no has seguido los pasos de instalación anteriores, exactamente de la forma que se indica, Datadog no puede garantizar la conformidad con FIPS. Una configuración correcta incluye tener tu Datadog Agent configurado para comunicarse con el proxy FIPS del Datadog Agent, definiendo la opción fips.enabled, y tener un proxy FIPS del Datadog Agent en ejecución.

Comunicación entre el Agent y el proxy FIPS

El proxy FIPS del Datadog Agent sólo protege la comunicación que se origina en el Agent y se dirige a los endpoints de la API de admisión de Datadog. Esto significa que otras formas de comunicación que terminan en el Agent o se originan en el Agent no son conformes con FIPS si se utiliza esta solución.

Comunicación entre el Agent de clúster y los Agents de nodo

El proxy FIPS del Datadog Agent sólo protege la comunicación que se origina en Cluster Agent y se dirige a los endpoints de la API de admisión de Datadog. Esto significa que otras formas de comunicación que terminan en Cluster Agent o se originan en Cluster Agent no son conformes con FIPS si se utiliza esta solución.

Versiones de lanzamiento

Las versiones de proxies FIPS del Datadog Agent están desacopladas de las versiones del Datadog Agent. Utiliza las últimas versiones tanto del Datadog Agent como del proxy FIPS del Datadog Agent para garantizar que el Datadog Agent y el proxy FIPS son compatibles con todos los productos disponibles.

Solucionar problemas de un host o de una instalación para máquinas virtuales

Para solucionar los problemas del proxy FIPS del Datadog Agent, verifica lo siguiente:

  • El Datadog Agent y el proxy FIPS del Datadog Agent se están ejecutando.
  • El Datadog Agent puede comunicarse con el proxy FIPS del Datadog Agent.
  • El proxy FIPS del Datadog Agent puede comunicarse con los endpoints de admisión de Datadog.

Comprobar el estado del proxy

Para obtener información sobre el estado del proxy FIPS del Datadog Agent, ejecuta el siguiente comando:

sudo systemctl status datadog-fips-proxy

Si el proxy se está ejecutando, la salida debería ser similar a la siguiente:

- datadog-fips-proxy.service - Datadog FIPS Proxy
  Loaded: loaded
    (/lib/systemd/system/datadog-fips-proxy.service;
      enabled; vendor preset: enabled)
  Active: active (running) since Tue 2022-07-19 16:21:15 UTC; 1min 6s ago

Si el estado del proxy es inactive (dead), inicia el proxy FIPS del Datadog Agent:

sudo systemctl start datadog-fips-proxy

Si el estado del proxy es failed, el proxy FIPS del Datadog Agent no se ha podido iniciar debido a un error. Ejecuta el siguiente comando y busca los errores en los logs del proxy:

sudo journalctl -u datadog-fips-proxy --no-pager

El proxy no puede enlazar el socket

Si los logs del proxy muestran un error bind socket, el proxy está intentando utilizar un puerto que ya está en uso en el host. El proxy FIPS del Datadog Agent utiliza el rango de puertos TCP, desde el 9803 al 9818 inclusive. Los puertos de este rango deben estar disponibles en el host y no deben ser utilizados por otros servicios.

En el siguiente ejemplo, el proxy FIPS del Datadog Agent no puede enlazar un socket en el puerto 9804 porque el puerto ya está en uso:

[ALERT] (4518) : Starting frontend metrics-forwarder: cannot bind socket (Address already in use) [0.0.0.0:9804]
[ALERT] (4518) : [/opt/datadog-fips-proxy/embedded/sbin/haproxy.main()] Some protocols failed to start their listeners! Exiting.

El Agent no puede conectarse al proxy

Para saber si existen problemas de red, comprueba los logs en /var/log/datadog/agent.log o ejecuta:

datadog-agent diagnose --include connectivity-datadog-core-endpoints
# Para versiones del Agent 7.48 o anteriores, ejecuta el siguiente comando:
# datadog-agent diagnóstico datadog-connectivity

Busca errores como:

connect: connection refused, context deadline exceeded (Client.Timeout exceeded while awaiting headers), or connection reset by peer
  • Sigue los pasos del artículo Comprobar el estado del proxy para asegurarte de que el proxy FIPS del Datadog Agent se está ejecutando.
  • Comprueba que el rango de puertos del proxy coincida con el del Agent.

Si el proxy se está ejecutando y el rango de puertos es correcto, es posible que un cortafuegos local de la máquina esté bloqueando el acceso del Agent al proxy. Configura tu cortafuegos para permitir conexiones a los puertos TCP, desde el 9804 al 9818.

Puedes utilizar curl para comprobar que se puede acceder al proxy:

curl http://localhost:9804/

Para obtener más ayuda, consulta la sección Solucionar problemas del Agent.

El proxy FIPS del Datadog Agent no puede conectarse a la admisión de Datadog

Si se producen errores de HTTP como 502, 503, o si el proxy devuelve una respuesta vacía, es posible que el proxy FIPS del Datadog Agent no pueda reenviar tráfico al backend de Datadog.

Verifica los logs del proxy FIPS del Datadog Agent con:

sudo journalctl -u datadog-fips-proxy --no-pager

Comprueba si los logs contienen errores como:

haproxy[292759]: [WARNING] (292759) : Server
datadog-api/mothership3 is DOWN, reason: Layer4 timeout, vcheck duration: 2000ms. 0 active and 0 backup servers left. 0 sessions active, 0 requeued, 0 remaining in queue.
[ALERT] (292759) : backend 'datadog-api' has no server available!

o

haproxy[1808]: [WARNING] (1808) : Server
datadog-metrics/mothership2 is DOWN, reason: Layer4
connection problem, info: "Connection refused", check duration: 0ms. 0 active and 0 backup servers left. 0
sessions active, 0 requeued, 0 remaining in queue.
haproxy[1808]: [ALERT] (1808) : backend 'datadog-metrics' has no server available!

Estos errores indican que el proxy FIPS del Datadog Agent no puede ponerse en contacto con los sistemas de backend, posiblemente debido al bloqueo de un cortafuegos u otro problema de red. El proxy FIPS del Datadog Agent requiere acceso de Internet a los endpoints de admisión de Datadog. Puedes encontrar las direcciones IP de estos endpoints a través de la API.

Para más información sobre conexiones salientes desde el Agent, consulta la guía Tráfico de red.

Si sigues teniendo dudas sobre tu problema, ponte en contacto con el servicio de asistencia de Datadog).

Referencias adicionales