Hardening de contenedores Docker: Cómo Mejorar la Seguridad en Entornos Corporativos

Hardening de contenedores Docker: Cómo Mejorar la Seguridad en Entornos Corporativos

por Raúl Unzué

Implementación segura de Docker

Docker ha cambiado las reglas del juego en cómo desplegamos aplicaciones. Su velocidad, portabilidad y flexibilidad lo han convertido en una pieza fundamental en entornos DevOps y CI/CD. Pero con esa comodidad también llega una gran responsabilidad. En el mundo corporativo, donde una brecha puede afectar a clientes, partners o datos sensibles, dejar los contenedores "por defecto" es una mala idea.

La mayoría de los desarrolladores saben cómo construir una imagen o levantar un servicio, pero no siempre se presta atención a la seguridad real del entorno donde vive ese contenedor. ¿Corre como root? ¿Tiene acceso innecesario al host? ¿Se escanea antes de enviarse a producción? ¿Quién audita qué hace ese contenedor en tiempo real? Estas preguntas marcan la diferencia entre una infraestructura robusta y un incidente de seguridad.

El objetivo de esta guía no es darte teoría o fórmulas mágicas, sino mostrarte prácticas reales, técnicas que se usan de verdad en entornos de producción. Cosas que puedes aplicar hoy mismo para reforzar tus contenedores sin romper tu flujo de trabajo ni convertirte en un experto en seguridad.

Geeknetic Hardening de contenedores Docker: Cómo Mejorar la Seguridad en Entornos Corporativos 1

Empieza por la base: Imágenes limpias y oficiales

Cada contenedor empieza con una imagen. Si esa base está mal, da igual lo que le montes encima. Usa imágenes oficiales del hub de Docker o, mejor aún, manten las tuyas internas. Y nada de meter Ubuntu completo si tu app solo necesita Python: usa versiones slim o Alpine.

FROM python:3.11-slim

¿Y si necesitas más control? Crea una base desde cero (scratch) o gestiona tus propias imágenes en un registry privado.

Geeknetic Hardening de contenedores Docker: Cómo Mejorar la Seguridad en Entornos Corporativos 2

No uses el usuario root, ni dentro ni fuera

Por defecto, muchos contenedores corren como "root". Error clásico. Crea un usuario dentro del Dockerfile y cambia el contexto:

RUN adduser --disabled-password appuserUSER appuser

Y si puedes, configura Docker en el host con --userns-remap, así ni aunque escapen tienen privilegios.

Bloquear todo lo que no necesite

Por cada contenedor, quita capacidades del kernel que no uses. Mejor quitar todo y luego añadir lo justo:

docker run --cap-drop=ALL --cap-add=NET_BIND_SERVICE myapp

Además, evita contenedores con --privileged. Eso equivale a abrirles la puerta con llave maestra.

Ficheros: solo lectura, y controlados

Evita que el contenedor escriba en cualquier parte. Usa --read-only y monta solo lo necesario:

docker run --read-only -v /data:/data myapp

Para temp o logs, monta volúmenes específicos y monitorea qué se escribe.

Seguridad del host: Seccomp, AppArmor, SELinux

Docker ya incluye un perfil Seccomp (Security Computing Mode) por defecto, igual que pasa con AppArmor (en Ubuntu) o SELinux (en RHEL).

Para entenderlo, es una característica de seguridad del kernel de Linux, que permite restringir las llamadas al sistema que un proceso puede hacer.

Cada contenedor corre como un proceso aislado, pero aún puede hacer miles de llamadas al sistema: abrir archivos, acceder a memoria, crear procesos, conectarse a redes... Muchas de estas llamadas no son necesarias para la aplicación que corre dentro, y si un atacante logra ejecutar código malicioso dentro del contenedor, podría aprovechar esas llamadas para escalar privilegios o dañar el host.

Un ejemplo:

docker run --security-opt seccomp=mi_perfil.json myapp

 

Escanea antes de subir

No metas contenedores con vulnerabilidades conocidas. Usa herramientas como:

  • Trivy (rápido, sencillo)
  • Grype (para CI/CD)
  • Clair (para escaneo en repos)

Escanéalo antes de subirlo al registry. Que no te explote en producción algo que podías haber evitado.

Geeknetic Hardening de contenedores Docker: Cómo Mejorar la Seguridad en Entornos Corporativos 3

Control de redes

Nada de exponer puertos que no hacen falta. Usa redes personalizadas o VLANs, aísla servicios y nada de --network=host sin necesidad. Segmenta por microservicio y limita el acceso entre ellos con firewalls de capa 7 si hace falta.

Monitorización en tiempo real

No basta con que el contenedor funcione, tienes que ver qué hace. Integra logs con herramientas de monitorización para detectar comportamientos anómalos (accesos indebidos, procesos extraños...)

En resumen, Docker es seguro si tú lo haces seguro. La mayoría de los ataques exitosos a contenedores vienen por errores básicos: imágenes con fallos, permisos excesivos, sockets abiertos, y poca visibilidad. Con estas prácticas puedes proteger tus contenedores sin complicarte la vida ni romper tu pipeline de CI/CD. Y si estás en una empresa, el hardening no es un extra, es parte del trabajo bien hecho.

Fin del Artículo. ¡Cuéntanos algo en los Comentarios!

Temas Relacionados: Ciberseguridad Docker Hardening
Redactor del Artículo: Raúl Unzué

Raúl Unzué

Soy un apasionado de la virtualización con más de 20 años de experiencia, especializado en soluciones como VMware(premio vExpert y vExpert Pro desde 2013), Proxmox e Hyper-V. Durante mi carrera, he ayudado a empresas a optimizar sus infraestructuras TI mientras comparto mis conocimientos como redactor IT. Mi objetivo es traducir lo complejo en algo práctico y accesible, combinando teoría con experiencia real. Si te interesa la virtualización, las herramientas TI o simplemente aprender algo nuevo, espero ayudarte con mis artículos.