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

10 mejores prácticas de seguridad de Docker

Introducción

Los contenedores Docker y Kubernetes son la fuerza impulsora de un ciclo de vida de desarrollo de software moderno. Aunque Docker es una opción más segura que trabajar directamente en la máquina host, pueden surgir muchos problemas de seguridad potenciales al trabajar con contenedores.

Este artículo incluye diez prácticas recomendadas de seguridad de contenedores que pueden ayudarlo a prevenir ataques e infracciones de seguridad.

1. Actualizar Docker y Host con regularidad

Asegúrese de que su host y Docker estén actualizados. Utilice la versión más reciente del sistema operativo y el software de contenedorización para evitar vulnerabilidades de seguridad. Cada actualización incluye parches de seguridad críticos que son esenciales para proteger el host y los datos.

Mantener Docker actualizado no se limita a la plataforma en sí. Los contenedores en ejecución no se actualizan automáticamente. También debe actualizar los contenedores y las imágenes en las que se basan.

2. Configurar cuotas de recursos

Para evitar contenedores comprometidos que consumen recursos en exceso, establezca límites de uso de memoria y CPU de Docker.

Sin configurar cuotas de recursos, le otorga al contenedor acceso a todos los recursos de RAM y CPU del host. Como esta es la configuración predeterminada, se recomienda limitar la cantidad de recursos que puede usar un contenedor, para que no interrumpa otros servicios.

Esto no solo evita que un contenedor consuma todos los recursos, sino que también ayuda a mantener un entorno Docker eficiente. Las cuotas de recursos garantizan que los contenedores funcionen a la velocidad prevista y mejoran la seguridad.

3. Usar usuarios no root

Docker permite ejecutar un contenedor en modo privilegiado. Aunque puede ser una forma más rápida de eludir algunos protocolos de seguridad, siempre debe abstenerse de usar esta práctica.

El peligro de ejecutar un contenedor privilegiado es que abre la puerta a posibles actividades maliciosas. Un usuario privilegiado de Docker tiene los mismos privilegios que el root. Esto significa que tiene acceso a las funciones del kernel y otros dispositivos en el host. Un usuario malintencionado puede ingresar a su sistema host a través del contenedor y poner en peligro todo lo que contiene.

Cumplir con los usuarios no root exclusivamente es simple, ya que es la configuración predeterminada de Docker. Para modificar la configuración predeterminada, tendría que agregar el --privileged marcar a docker run dominio. Sin embargo, este es un riesgo de seguridad significativo y no debe utilizarse.

4. Capacidades de límite

Los contenedores tienen un conjunto restringido de capacidades de Linux. Por ejemplo, pueden permitir que un usuario ejecute un contenedor con una eficiencia similar a la de un root pero sin privilegios completos de root.

Las capacidades limitadas de Docker son la configuración de seguridad predeterminada y son las mismas para cada contenedor. Por lo tanto, se recomienda modificar las capacidades para incluir solo lo que se necesita. El administrador los administra usando el --cap-add y --cap-drop opciones.

La forma más segura de configurar las capacidades del contenedor es eliminar todo (usando el --cap-drop=ALL opción) y luego agregue los necesarios.

Para obtener una lista de todas las capacidades y abreviaturas, consulte la sección de capacidades de la página del manual de Linux.

5. Prohibir nuevos privilegios

Como se ve en el ejemplo anterior, Docker permite cambiar las capacidades y los privilegios de los contenedores una vez que se han lanzado. Para evitar ataques de escalada de privilegios, es una buena idea definir los privilegios del contenedor.

Para impedir que los procesos de contenedores obtengan nuevos privilegios, utilice --security-opt marcar con el valor no-new-privileges:true . Agregando la bandera a la docker run El comando sobrescribe cualquier regla que establezca usando el comando --cap-add y --cap-drop opciones..

Además, puede eliminar o deshabilitar el setuid y setgid binarios en las imágenes. Si lo hace, se asegurará de que la función no se utilice para cruzar/inyectar rutas, desbordamientos de búfer y ataques de escalada de privilegios.

6. Usar imágenes de confianza

Al extraer una imagen de los registros en línea, asegúrese de que provenga de una fuente segura y confiable. La opción más segura es apegarse al hub oficial de Docker. Evite los registros públicos de terceros que carecen de políticas de control.

Si usa bibliotecas en línea, siempre revise el contenido dentro de la imagen. Además, utilice herramientas de análisis de imágenes para buscar vulnerabilidades antes de descargar nada en el sistema host.

Lo mejor es consultar Docker Hub y ver si puede encontrar la imagen deseada allí. Es la biblioteca y comunidad más grande del mundo para Docker con más de 100 000 imágenes de contenedores.

7. Mantenga las imágenes y los contenedores livianos

Minimice la superficie de ataque de los contenedores de Docker utilizando una imagen base mínima y reduciendo la cantidad de componentes del contenedor. Mantener el tamaño de la imagen pequeño ayuda a prevenir brechas de seguridad y acelera el rendimiento del contenedor.

Para obtener sugerencias sobre cómo reducir el tamaño de la imagen, consulte Cómo mantener pequeñas las imágenes de Docker.

8. Registros seguros

Un registro de Docker es un sistema de entrega de contenido que se utiliza para almacenar y proporcionar imágenes para sus contenedores. Puede usar el registro en línea oficial de Docker o configurar un registro privado en su host.

Para una solución de almacenamiento de imágenes de nivel empresarial, debe usar el Docker Trusted Registry (DTR) . Puede instalar el registro detrás de su firewall para ayudar a prevenir posibles infracciones.

9. No exponga el zócalo del demonio Docker

Docker se comunica con un socket de dominio UNIX llamado /var/run/docker.sock . Este es el punto de entrada principal para la API de Docker. Cualquiera que tenga acceso al socket del demonio de Docker también tiene acceso sin restricciones a la raíz.

Permitir que un usuario escriba en /var/run/docker.sock o exponer el zócalo a un contenedor es un gran riesgo de seguridad para el resto del sistema. Si lo hace, esencialmente le da privilegios de root.

Montar el socket de Docker dentro de un contenedor no lo restringe al acceso privilegiado dentro del contenedor. Permite que el contenedor controle por completo el host y todos los demás contenedores. Por lo tanto, no es una práctica recomendada.

10. Supervise las API y la actividad de la red

Las API y las redes juegan un papel crucial en la seguridad de Docker. Los contenedores Docker se comunican a través de API y redes. Por lo tanto, para evitar intrusiones, la arquitectura debe configurarse de forma segura.

Los administradores de seguridad han descubierto recientemente un nuevo tipo de ataque que explota las API de Docker mal configuradas. Los piratas informáticos aprovechan las API mal configuradas y la seguridad de la red, las utilizan para implementar una imagen y ejecutar un contenedor malicioso en el sistema host.

Además de configurar las redes y las API de forma segura, también debe monitorear las actividades para detectar posibles anomalías.


Docker
  1. Prácticas recomendadas de seguridad de OpenSSH

  2. Algunos comandos DOCKER

  3. Una introducción a Docker

  4. Cómo usar SSH en un contenedor Docker

  5. Cómo asignar una IP estática a un contenedor Docker

10 mejores prácticas de seguridad de bases de datos

Aprendizaje de Docker:Cómo crear un contenedor Docker

Cómo ejecutar PHPMyAdmin en un contenedor Docker

Cómo ejecutar Grafana en un contenedor Docker

Cómo configurar un contenedor Apache Docker

Configuración del servidor Ubuntu:mejores prácticas de seguridad