GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Privilegiato Docker - Dovresti eseguire container Docker privilegiati?

Introduzione

Privilegio Docker è una delle tante funzioni utili di questa potente piattaforma di virtualizzazione. Prima di iniziare a lavorare in modalità privilegiata, assicurati di aver compreso come funziona.

In questo tutorial imparerai quali sono i container Docker privilegiati, quando utilizzarli e se è una buona opzione per te.

Cos'è la modalità privilegiata Docker?

La modalità privilegiata Docker garantisce le funzionalità di root del contenitore Docker a tutti i dispositivi sul sistema host. L'esecuzione di un container in modalità privilegiata gli conferisce le capacità della sua macchina host. Ad esempio, gli consente di modificare le configurazioni di App Arm e SELinux.

Con le funzionalità del kernel dell'host e l'accesso al dispositivo, puoi persino installare una nuova istanza della piattaforma Docker all'interno del container privilegiato. In sostanza, questa modalità consente di eseguire Docker all'interno di Docker.

Come verificare se un container è privilegiato?

Per verificare se stai eseguendo un container in modalità privilegiata, usa il comando:

docker inspect --format='{{.HostConfig.Privileged}}' [container_id]

Se il contenitore è privilegiato, l'output risponde con true , come nell'immagine qui sotto.

Se invece il contenitore non è privilegiato, l'output visualizza il messaggio false .

Come eseguire la modalità privilegiata Docker?

Indica a Docker di eseguire un contenitore in modalità privilegiata aggiungendo il --privileged opzione per eseguire il comando:

sudo docker run --privileged [image_name]

Esempio con privilegi Docker

Per eseguire un contenitore Ubuntu (in modo interattivo) in modalità privilegiata, dovresti usare:

sudo docker run -it --privileged ubuntu

Per verificare se il container ha accesso all'host, puoi provare a creare un file system temporaneo (tmpfs ) e montalo su /mnt :

mount -t tmpfs none /mnt

Ora, elenca le statistiche sullo spazio su disco (in leggibile dall'uomo format) con il comando:

df -h

Il file system appena creato dovrebbe apparire nell'elenco, come nell'immagine sottostante.

Perché l'esecuzione di container con privilegi non è sicura?

Proprio come Ubuntu scoraggia l'uso del sistema come root, così fa Docker. Esporre il kernel e le risorse hardware dell'host a qualsiasi attacco informatico esterno è sempre una potenziale minaccia per il sistema.

Per questo motivo, non è consigliabile utilizzare contenitori privilegiati in un ambiente di produzione.

Possibili violazioni tramite container privilegiati

Avere contenitori privilegiati è un rischio per la sicurezza per qualsiasi organizzazione. Crea opportunità per utenti malintenzionati di assumere il controllo del sistema.

Consentire a un container root di accedere a tutto sul sistema apre una finestra di opportunità per gli attacchi informatici. Un cyberattaccante potrebbe connettersi all'host dal container e mettere in pericolo l'infrastruttura e la configurazione stabilite.

Lo scenario più comune è quando un utente legittimo abusa del privilegio dato per attività dannosa.

Come ridurre al minimo l'escalation dei privilegi del container Docker?

Il modo migliore per impedire l'escalation dei privilegi del contenitore Docker è non utilizzare affatto i contenitori con privilegi.

Tuttavia, se si esegue un'applicazione che richiede l'esecuzione con l'utente root, esiste un modo per ridurre al minimo le possibilità di attività dannose. Questo viene fatto da rimappatura dello spazio dei nomi utente , associando nuovamente l'utente per quel contenitore specifico a un utente con meno privilegi sull'host Docker. In sostanza, il contenitore vede l'utente come root, mentre l'host no.

La rimappatura include l'assegnazione di un intervallo di UID che funzionano all'interno del contenitore (spazio dei nomi) come normali UID da 0 a 65536 ma non hanno privilegi sull'host. Due file gestiscono la configurazione dell'utente, uno per l'intervallo di ID utente (/etc/subid ) e l'altro per l'intervallo di ID gruppo (/etc/subgid ).

Per impostazione predefinita, la finestra mobile utilizza la dockremap utente e gruppo per effettuare la rimappatura.


Ubuntu
  1. 5 motivi per cui dovresti sviluppare una strategia di container Linux

  2. Portainer:una GUI facile da usare per eseguire e ottenere contenitori Docker

  3. Dovresti eseguire un database in Docker?

  4. Introduzione ai contenitori Docker

  5. 10 comandi mortali che non dovresti mai eseguire su Linux

Come installare Docker su Debian 9

Traefik per i contenitori Docker su Ubuntu

Come installare Podman su Rocky Linux 8 / AlmaLinux per eseguire Containers

Come eseguire i contenitori Docker

Come rimuovere i contenitori Docker

Come fermare i container Docker