Capabilities

Da Linux 2.2 root non può fare tutto.

Esistono Capabilities (circa 30). Per listarle:

man capabilities

Root su host ha la capability sys-admin,

I container di docker non hanno tutte la capabilities dello host, ma un sottoinsieme limitato.

Si possono aggiungere e togliere capabilities.

Esempi:

docker run --cap-drop setuid --cap-drop setgid -ti ubuntu bash
docker run --cap-add all --cap-drop sys-admin  -ti ubuntu bash

Per lanciare un contenitore con tutte le capabilities aggiungere l'opzione --privileged.

Minimo Privilegio

Ogni container deve possedere i privilegi minimi per il suo lavoro e non di più.

Un container compromesso non deve essere in grado di compiere danni eccessivi.

La difesa consiste in:

  • assicurarsi che i processi nei contenitori non siano attivi come root
  • mappare i filesystems host come read-only se non vi è necessità di scrittura
  • ridurre le capabilities che un contenitore possiede
  • limitare le risorse host che un contenitore può usare