Docker esegue processi contenitore come root - dovrei essere preoccupato?

7

Sto utilizzando un NAS (QNAP) con funzionalità Docker (" containerstation "). Ho pensato che sarebbe stato molto più sicuro installare app tramite container anziché app dal negozio (o da negozi di terze parti).

Molti pacchetti sono obsoleti nel loro negozio ufficiale e QNAP esegue tutti i programmi e le app come root / admin (anche il webserver), quindi ho pensato che Docker sarebbe stata una soluzione.

Ora ho implementato alcune istanze Docker e i loro processi sembrano essere eseguiti anche come root / admin.

Ilchemifapensare:èunfalsosensodisicurezzachehoinquestomomento?Ostausandoicontainerdockermoltopiùsicuridellaroot"regolare"?

    
posta Critical joe 27.12.2017 - 19:45
fonte

1 risposta

8

Presumo che tu sia preoccupato per le applicazioni containerizzate eseguite come root.

root in container è un rischio. Interagisce ancora con il kernel come root. E se un'applicazione riesce ad uscire dal contenitore, ha i privilegi di root sull'host.

Tuttavia, root in container ha limitato capacità rispetto a root su host. Per esempio. non ha capacità SYS_ADMIN necessaria per mount . Tuttavia, evita il root nel contenitore quando possibile per ridurre al minimo i rischi.

Se le applicazioni containerizzate non hanno bisogno dei privilegi di root, è possibile eseguire container con un utente non privilegiato. Il modo più semplice è specificare l'opzione --user UID:GID in docker run .

Ma presumo che tu abbia bisogno dei privilegi di root per le tue applicazioni containerizzate. Docker mette a disposizione namespaces utente .

Non fornisco un esempio di installazione qui perché non sono molto familiare con il namespace dell'utente. L'ho impostato una volta e posso confermare che funziona. Raccomando di leggere la documentazione: link

In breve: l'installazione dello spazio dei nomi utente esegue un utente root "falso" nel contenitore che sull'host è mappato a un utente non privilegiato. Se l'applicazione si rompe, non ha i privilegi di root sull'host.

Oltre a ciò, è possibile ridurre le funzionalità del contenitore per migliorare la sicurezza del contenitore. Usa l'opzione --cap-drop=xyz e elimina tutto ciò di cui il tuo contenitore non ha bisogno. O ancora meglio, usa --cap-drop=ALL e aggiungi solo le funzionalità realmente necessarie con ad es. %codice%. Guarda link

Un'altra opzione per migliorare la sicurezza del contenitore è --cap-add=CHOWN .

    
risposta data 30.12.2017 - 00:40
fonte

Leggi altre domande sui tag