GNU/Linux >> Tutoriales Linux >  >> Panels >> Docker

Cómo automatizar las auditorías de seguridad de Docker con Docker Bench for Security

Docker es conveniente, pero también puede ser un riesgo para la seguridad. Es importante proteger Docker Engine contra posibles amenazas, especialmente si está ejecutando un host Docker en producción.

Docker Bench for Security es un script automatizado que puede ayudarlo a encontrar problemas con su configuración. El script de Bench escanea su host para encontrar debilidades en la configuración de su Docker Engine. Docker lo proporciona como una herramienta de auditoría de seguridad de código abierto.

Ejecutando el script

La forma más fácil de usar Docker Bench es descargar el script y ejecutarlo directamente. Puede inspeccionarlo en GitHub si le preocupa su contenido.
Use Git para clonar el repositorio de Bench. Ejecute el script usando su shell. Docker Bench debe ejecutarse con sudo , ya que incluye comprobaciones que requieren acceso de root.

git clone https://github.com/docker/docker-bench-security.git
cd docker-bench-security
sudo sh docker-bench-security.sh

Verá los resultados de la auditoría en su terminal. El escaneo tomará varios segundos. Puede tomar un minuto o más si tiene muchos contenedores en ejecución.

Comprender el informe

El informe está codificado por colores, para que pueda identificar rápidamente los problemas. Azul INFO Entrada de registro de líneas en diferentes secciones de escaneo. Un PASS verde La línea muestra que su sistema cumplió con el control. Rojo WARN las líneas son indicativas de una vulnerabilidad potencial.

Docker Bench ejecuta más de 200 comprobaciones individuales en total. La lista exhaustiva está disponible en el repositorio de GitHub del proyecto. Así es como se clasifican las pruebas.

Configuración del host

Este grupo de pruebas se enfoca en las debilidades en la auditoría de seguridad de su host. Se realizan comprobaciones para la auditoría adecuada de los directorios de Docker, el uso de una partición dedicada para contenedores y la instalación de una versión actualizada de Docker.

Configuración del demonio

Las pruebas orientadas al daemon verifican que el socket de Docker no esté expuesto a través de una conexión no segura. Tráfico de red entre contenedores en el bridge predeterminado la red debe ser restringida y los registros inseguros eliminados.

Esta sección también busca otorgamientos de privilegios inapropiados a los contenedores. Los contenedores no deberían poder adquirir nuevos privilegios. Esto podría permitir que un atacante supere el tamaño del contenedor.

La siguiente sección, Archivos de configuración del demonio Docker, tiene un enfoque similar. Garantiza que el directorio de instalación de Docker y el socket de Unix tengan los permisos y la propiedad adecuados. El sistema de archivos de Docker debe ser propiedad de root:root con permisos restrictivos de 644 .

Imágenes de contenedores

RELACIONADO Cómo evaluar la seguridad del motor Docker

Docker Bench realiza una verificación básica de los Dockerfiles para sus imágenes conocidas. Buscará usuarios de contenedores dedicados, la presencia de HEALTHCHECK instrucciones y el uso de Content Trust para verificar la integridad de los datos.

Esta sección de prueba también emitirá advertencias que le recordarán los pasos básicos para fortalecer la imagen. Use imágenes base confiables, aplique nuevos parches de seguridad y evite la instalación de paquetes innecesarios. Estas medidas ayudan a eliminar las vulnerabilidades dentro contenedores.

Tiempo de ejecución del contenedor

Las pruebas de Container Runtime inspeccionan sus contenedores en ejecución. Esta sección contiene más de 30 pruebas, que van desde la disponibilidad de SELinux y AppArmor hasta el uso de montajes de sistemas de archivos y opciones de red apropiados.

Obtendrá puntos si utiliza contenedores privilegiados o monta el socket de Docker en un contenedor. Los contenedores no deben poder obtener privilegios adicionales ni interferir con el sistema host.

Bench también busca servidores SSH que se ejecuten dentro contenedores Esto es desaconsejable, ya que debe evitarse el acceso directo al contenedor. Es preferible usar docker exec del host para interactuar con los contenedores.

Las pruebas adicionales analizan el uso de la CPU y los límites de memoria. Un contenedor ilimitado podría consumir recursos excesivos y eventualmente provocar una condición de falta de memoria en el host. Las comprobaciones de red marcan los puertos no utilizados, así como las solicitudes para asignar puertos privilegiados a contenedores.

Enjambre Docker

Docker Bench incluye una sección adicional para usuarios de Docker Swarm. Se enfoca en marcar secretos no seguros y certificados que no se rotan correctamente. También requiere una configuración de red correcta, incluido el uso de redes superpuestas cifradas.

La sección Swarm generará una advertencia si el modo Swarm está habilitado pero no se usa realmente. Si no planea usar Swarm, desactívelo ejecutando docker swarm leave --force .

Abordar Problemas Comunes

La mayoría de los hosts de Docker presentarán varias advertencias si no ha tomado medidas activas para fortalecerlos. Estas son algunas medidas que puede tomar para abordar algunos de los informes de Docker Bench más comunes.

Habilitación de auditoría para archivos Docker

Docker recomienda el uso de auditorías a nivel de sistema en los directorios clave de Docker. La auditoría registra cualquier operación que afecte a los archivos y directorios supervisados. Esto le permite realizar un seguimiento de los cambios potencialmente destructivos.

Asegúrate de tener auditd instalado. Edite /etc/audit/audit.rules y agregue las siguientes líneas al final del archivo:

-w /etc/default/docker -p wa
-w /etc/docker -p wa
-w /etc/docker/daemon.json -p wa
-w /lib/systemd/system/docker.service -p wa
-w /lib/systemd/system/docker.socket -p wa
-w /usr/bin/docker -p wa
-w /usr/bin/docker-containerd -p wa
-w /usr/bin/docker-runc -p wa
-w /var/lib/docker -p wa

El -p wa instrucción significa que auditd registrará las escrituras y los cambios de atributos que afectan a los archivos. Si su salida de Docker Bench sugiere que use la auditoría para directorios adicionales, agréguelos también a la lista. Los directorios de Docker pueden cambiar con el tiempo.

Deberá reiniciar auditd para aplicar sus cambios:

sudo systemctl restart auditd

Fortalecimiento del Demonio

Docker Bench generalmente encontrará problemas con la configuración de su daemon. Agregar lo siguiente a /etc/docker/daemon.json silenciará varias advertencias de demonios.

{
    "icc": false,
    "live-restore": true,
    "no-new-privileges": true,
    "userland-proxy": false,
    "userns-remap": "default"
}
  • icc:  Esto evita que los contenedores se comuniquen entre sí a través del bridge predeterminado. red. Los contenedores solo se conectarán entre sí si están vinculados explícitamente mediante un --link. .
  • restauración en vivo: Configurar esto permite que los contenedores sigan ejecutándose incluso si el daemon se detiene. Esto es recomendable en entornos de producción donde desea minimizar el tiempo de inactividad.
  • sin privilegios nuevos: Esto evita que los contenedores eleven sus privilegios usando comandos como setuid y setgid .
  • proxy-usuario:  Deshabilitar esto significa que iptables se utiliza para enrutar el tráfico del puerto del host a los contenedores. Sin él, se utiliza el proceso de proxy de la zona de usuario de Docker, lo que aumenta la superficie de ataque de su daemon.
  • reasignación de usuarios:  Esto permite el uso de espacios de nombres de usuario, por lo que root en un contenedor se asigna a un usuario de host menos privilegiado. Esto reduce el riesgo de que un contenedor comprometido pueda ejecutar root comandos en su anfitrión. Usando default indicará a Docker que configure una cuenta de usuario dedicada para este fin.

RELACIONADO: Cómo utilizar Cron con sus contenedores Docker

Personalizar la salida del informe

Docker Bench admite varias banderas que puede usar para ajustar su salida:

  • -b:  Deshabilitar colores. Útil si está ejecutando el script en un entorno de CI que no admite la salida ANSI completa.
  • -p:  No incluya las medidas de remediación sugeridas. Útil cuando desea concentrarse en las advertencias y reducir el ruido en la salida.
  • -l informe.txt:  Escribir salida en report.txt en lugar de la terminal.
  • -c comprobar_5.1, comprobar_5.2:  Ejecute las comprobaciones 5.1 y 5.2 únicamente. La lista de pruebas está disponible en GitHub.
  • -e comprobar_5.1, comprobar_5.2:  Excluya los controles 5.1 y 5.2.

Puede combinar banderas para generar el informe que necesita. Si una sección completa de comprobaciones no se aplica a usted, considere crear un alias de shell para que pueda ejecutar rápidamente Docker Bench con una secuencia de indicadores aplicados.

Conclusión

RELACIONADO Cómo usar Docker Scan para encontrar vulnerabilidades en sus imágenes

El uso del script Docker Bench for Security lo ayuda a encontrar y resolver las debilidades en la seguridad de su host Docker. Abordar cualquier advertencia que emita ayudará a fortalecer su host y mejorar su postura de seguridad.

Recuerde que Docker Bench no es una prueba exhaustiva. Hay otros aspectos del mantenimiento de la seguridad de Docker que tampoco deben pasarse por alto.

Un contenedor comprometido podría dar a los atacantes un punto de apoyo en sus sistemas, incluso si tiene una sólida seguridad a nivel de host. Puede reducir este riesgo utilizando Docker Bench, junto con escáneres de vulnerabilidad de contenedores activos como Trivy y Clair. Estos le ayudarán a identificar problemas dentro sus contenedores, como dependencias obsoletas que podrían explotarse.

Si bien el objetivo siempre es una buena puntuación, también debe tener en cuenta que Docker Bench está diseñado para cargas de trabajo de producción. No todas las comprobaciones son relevantes para la instalación local de Docker de un desarrollador. Ejecute el script, lea las advertencias y evalúe cuáles se aplican a su entorno.


Docker
  1. Cómo implementar microservicios con Docker

  2. Cómo usar Docker Compose

  3. Cómo conectar contenedores Docker

  4. Cómo implementar aplicaciones con Rancher

  5. Cómo evaluar la seguridad del motor Docker

Cómo escanear imágenes de contenedores Docker en busca de vulnerabilidades con Trivy

Cómo podar los recursos de Docker no utilizados

Cómo editar código en contenedores Docker con Visual Studio Code

Cómo ejecutar contenedores Docker

Cómo eliminar contenedores Docker

Cómo detener los contenedores de Docker