La seguretat és un aspecte crític en qualsevol entorn de TI, i Docker no és una excepció. En aquest tema, explorarem les millors pràctiques per assegurar els teus contenidors Docker i l'entorn en el qual s'executen.

  1. Principis bàsics de seguretat en Docker

1.1. Mantenir Docker actualitzat

  • Actualitzacions regulars: Assegura't de tenir sempre la versió més recent de Docker instal·lada. Les actualitzacions sovint inclouen correccions de seguretat importants.
  • Monitoratge de vulnerabilitats: Utilitza eines com Docker Bench for Security per avaluar la seguretat de la teva instal·lació de Docker.

1.2. Utilitzar imatges oficials i verificades

  • Imatges oficials: Sempre que sigui possible, utilitza imatges oficials del Docker Hub, ja que són mantingudes i verificades per la comunitat.
  • Verificació de signatures: Utilitza Docker Content Trust (DCT) per assegurar-te que les imatges que descarregues no han estat manipulades.

1.3. Minimitzar la superfície d'atac

  • Imatges lleugeres: Utilitza imatges base lleugeres com Alpine Linux per reduir la superfície d'atac.
  • Eliminar paquets innecessaris: Assegura't que les imatges només continguin els paquets necessaris per a l'aplicació.

  1. Configuració de seguretat dels contenidors

2.1. Utilitzar usuaris no privilegiats

  • No executar com a root: Configura els teus contenidors per executar-se amb usuaris no privilegiats. Això limita l'impacte d'un possible atac.
# Exemple de Dockerfile
FROM alpine:latest
RUN addgroup -S mygroup && adduser -S myuser -G mygroup
USER myuser

2.2. Configurar capacitats de Linux

  • Capacitats mínimes: Utilitza l'opció --cap-drop per eliminar capacitats innecessàries i --cap-add per afegir només les que siguin absolutament necessàries.
docker run --cap-drop=ALL --cap-add=NET_ADMIN mycontainer

2.3. Utilitzar AppArmor o SELinux

  • AppArmor: Configura perfils AppArmor per restringir les accions que poden realitzar els teus contenidors.
  • SELinux: Utilitza SELinux per aplicar polítiques de seguretat addicionals als teus contenidors.

  1. Xarxes segures

3.1. Xarxes privades

  • Xarxes bridge: Utilitza xarxes bridge per aïllar els teus contenidors i limitar la seva exposició a la xarxa pública.
docker network create --driver bridge my_bridge_network

3.2. Polítiques de tallafocs

  • Regles de tallafocs: Configura regles de tallafocs per controlar el trànsit d'entrada i sortida dels teus contenidors.
  • Docker Firewall: Utilitza Docker's built-in firewall per aplicar polítiques de seguretat a nivell de xarxa.

  1. Emmagatzematge segur

4.1. Volums de només lectura

  • Volums de només lectura: Configura els volums com a només lectura sempre que sigui possible per evitar modificacions no autoritzades.
docker run -v /data:ro mycontainer

4.2. Xifratge de dades

  • Xifratge en repòs: Utilitza xifratge per protegir les dades emmagatzemades en volums Docker.
  • Xifratge en trànsit: Assegura't que les dades que es transmeten entre contenidors estiguin xifrades.

  1. Monitoratge i registre

5.1. Registre d'activitats

  • Registre centralitzat: Utilitza eines com ELK Stack (Elasticsearch, Logstash, Kibana) per centralitzar i analitzar els registres dels teus contenidors.
  • Alertes de seguretat: Configura alertes per detectar activitats sospitoses o no autoritzades.

5.2. Monitoratge de seguretat

  • Eines de monitoratge: Utilitza eines com Prometheus i Grafana per monitoritzar la seguretat i el rendiment dels teus contenidors.
  • Auditoria regular: Realitza auditories de seguretat regulars per identificar i corregir vulnerabilitats.

Exercici pràctic

Objectiu

Configurar un contenidor Docker amb les millors pràctiques de seguretat.

Passos

  1. Crear un Dockerfile que utilitzi una imatge base lleugera i afegeixi un usuari no privilegiat.
  2. Executar el contenidor amb capacitats mínimes i en una xarxa bridge.
  3. Configurar volums com a només lectura.

Solució

# Dockerfile
FROM alpine:latest
RUN addgroup -S mygroup && adduser -S myuser -G mygroup
USER myuser
CMD ["sh"]
# Comandes per executar el contenidor
docker build -t secure-container .
docker network create --driver bridge secure_network
docker run --cap-drop=ALL --cap-add=NET_ADMIN --network secure_network -v /data:ro secure-container

Conclusió

La seguretat en Docker és un procés continu que requereix atenció constant. Seguint aquestes millors pràctiques, pots reduir significativament els riscos associats amb l'ús de contenidors Docker. Recorda mantenir-te informat sobre les últimes vulnerabilitats i actualitzacions per assegurar un entorn segur.

© Copyright 2024. Tots els drets reservats