Saltar la navegación

8.3 Seguridad al arrancar los contenedores

Si queremos aumentar la seguridad al desplegar los contenedores podemos actuar en dos sentidos:

  • Limitar los recursos que puede usar el contenedor. Esto será de especial utilidad para evitar ataques de DoS.
  • Deshabilitar "capabilities" del contenedor que voy  a arrancar.

LIMITAR RECURSOS

Para limitar recursos hay un serie de flags de docker run que podemos usar, entre ellos los más destacados son:

  • --memory/-m  que establece el límite de memoria que puede llegar a usar un contenedor.
  • --memory-reservation que es similar al anterior pero es un límite blando. Si se sobrepasa docker intentará reducir la memoria consumida por el contenedor.
  • --cpus que limita el número de cpus del sistema que un contenedor puede utilizar.
  • ....

Por ejemplo:

# Arranco un contenedor con un límite de 4GB y 4cpus

> docker runt -it -m 4Gb --cpus=4 httpd .....

DESHABILITAR LAS CAPACIDADES

Si además queremos quitar capacidades a nuestros contenedores los haremos con el flag --cap-drop, el contrario al flag --cap-add que vimos en el módulo de redes para habilitar iptables usando la capacidad NET_ADMIN.

La lista de las capacidades de los sistemas Linux es larga. Podemos encontrarla en la siguiente dirección: https://man7.org/linux/man-pages/man7/capabilities.7.html

Por citar algunas podemos destacar:

  • AUDIT_WRITE: Escribe mensajes en los log de auditoría del Kernel.
  • CHOWN: Para permitir cambios en el UID y GUID de los ficheros.
  • NET_BIND_SERVICE: Permite asociar un socket a un puerto que puede ser accedido desde Internet.
  • NET_ADMIN: Configuración de interfaces, masquerading, enrutamiento, iptables etc...
  • SETUID: Manipulación del UID de los procesos etc...
  • SETGUID:  Manipulación del GUID de los procesos etc..
  • FOWNER: Para manipulación de todo tipo de permisos y ACLs en ficheros.

Un ejemplo de cómo deshabilitar una de estas capacidades sería:

# Deshabilitar la escritura de mensajes en el log de auditoría del Kernel

> docker runt -it --cap-drop=audit_write  ubuntu:20.04

Habilitar o deshabilitar capacidades requiere un estudio minucioso para cada contenedor. En general debemos limitar al máximo las capacidades cuando llevemos esos contenedores a producción.

Creado con eXeLearning (Ventana nueva)