GNU/Linux >> Linux Esercitazione >  >> Panels >> Docker

Come automatizzare gli audit di sicurezza Docker con Docker Bench per la sicurezza

Docker è conveniente, ma può anche essere un rischio per la sicurezza. È importante proteggere Docker Engine da possibili minacce, soprattutto se esegui un host Docker in produzione.

Docker Bench for Security è uno script automatizzato che può aiutarti a trovare problemi con la tua configurazione. Lo script Bench esegue la scansione del tuo host per trovare punti deboli nella configurazione del tuo Docker Engine. Viene fornito da Docker stesso come strumento di controllo della sicurezza open source.

Esecuzione dello script

Il modo più semplice per utilizzare Docker Bench è scaricare lo script ed eseguirlo direttamente. Puoi ispezionarlo su GitHub se sei preoccupato per il suo contenuto.
Usa Git per clonare il repository di Bench. Esegui lo script usando la tua shell. Docker Bench dovrebbe essere eseguito con sudo , poiché include controlli che richiedono l'accesso come root.

git clone https://github.com/docker/docker-bench-security.git
cd docker-bench-security
sudo sh docker-bench-security.sh

Vedrai i risultati dell'audit visualizzati nel tuo terminale. La scansione richiederà diversi secondi. Potrebbe volerci un minuto o più se hai molti container in esecuzione.

Comprendere il rapporto

Il rapporto è codificato a colori, in modo da poter identificare rapidamente i problemi. Blu INFO le righe registrano l'ingresso in diverse sezioni di scansione. Un PASS verde la riga mostra che il tuo sistema ha soddisfatto il controllo. WARN rosso le linee sono indicative di una potenziale vulnerabilità.

Docker Bench esegue in totale oltre 200 controlli individuali. L'elenco completo è disponibile nel repository GitHub del progetto. Ecco come vengono classificati i test.

Configurazione host

Questo gruppo di test si concentra sui punti deboli del controllo di sicurezza del tuo host. Vengono effettuati controlli per il corretto controllo delle directory Docker, l'uso di una partizione dedicata per i container e l'installazione di una versione Docker aggiornata.

Configurazione del demone

I test orientati al demone verificano che il socket della Docker non sia esposto su una connessione non protetta. Traffico di rete tra container sul bridge predefinito la rete dovrebbe essere limitata e i registri non sicuri rimossi.

Questa sezione cerca anche concessioni di privilegi non appropriate ai contenitori. I container non dovrebbero essere in grado di acquisire nuovi privilegi. Ciò potrebbe consentire a un utente malintenzionato di superare il container.

La sezione successiva, File di configurazione del demone Docker, ha un focus simile. Garantisce che la directory di installazione di Docker e il socket Unix dispongano di autorizzazioni e proprietà appropriate. Il filesystem di Docker dovrebbe essere di proprietà di root:root con autorizzazioni restrittive di 644 .

Immagini contenitore

RELATO Come valutare la sicurezza del motore Docker

Docker Bench esegue un controllo di base dei Dockerfile per le tue immagini conosciute. Cercherà utenti di container dedicati, la presenza di HEALTHCHECK istruzioni e l'uso di Content Trust per verificare l'integrità dei dati.

Questa sezione di test emetterà anche avvisi che ti ricorderanno i passaggi di base per la protezione dell'immagine. Usa immagini di base affidabili, applica nuove patch di sicurezza ed evita l'installazione di pacchetti non necessari. Queste misure aiutano a eliminare le vulnerabilità all'interno contenitori.

Runtime del contenitore

I test di Container Runtime ispezionano i container in esecuzione. Questa sezione contiene oltre 30 test, che vanno dalla disponibilità di SELinux e AppArmor all'uso di montaggi di filesystem e opzioni di rete appropriati.

Rilascerai punti se utilizzi container privilegiati o monti il ​​socket Docker in un container. I container non devono essere in grado di ottenere privilegi aggiuntivi o interferire con il sistema host.

Bench cerca anche server SSH in esecuzione all'interno contenitori. Questo è sconsigliabile, in quanto dovrebbe essere evitato l'accesso diretto al container. È preferibile utilizzare docker exec dall'host per interagire con i contenitori.

Ulteriori test esaminano l'uso della CPU e dei limiti di memoria. Un contenitore illimitato potrebbe consumare risorse eccessive e alla fine causare una condizione di memoria insufficiente sull'host. I controlli di rete segnalano le porte inutilizzate e le richieste di mappare le porte privilegiate nei container.

Sciame Docker

Docker Bench include una sezione aggiuntiva per gli utenti Docker Swarm. Si concentra sulla segnalazione di segreti e certificati non protetti che non vengono ruotati correttamente. Richiede inoltre una corretta configurazione di rete, incluso l'uso di reti overlay crittografate.

La sezione Swarm genererà un avviso se la modalità Swarm è abilitata ma non effettivamente utilizzata. Se non prevedi di utilizzare Swarm, disattivalo eseguendo docker swarm leave --force .

Affrontare problemi comuni

La maggior parte degli host Docker presenterà diversi avvisi se non hai adottato misure attive per rafforzarli. Ecco alcune misure che puoi adottare per affrontare alcuni dei rapporti più comuni di Docker Bench.

Abilitazione del controllo per i file Docker

Docker consiglia l'uso del controllo a livello di sistema sulle directory Docker chiave. Il controllo registra tutte le operazioni che interessano i file e le directory monitorati. Ciò ti consente di tenere traccia delle modifiche potenzialmente distruttive.

Assicurati di avere auditd installato. Modifica /etc/audit/audit.rules e aggiungi le seguenti righe in fondo al file:

-w /etc/default/docker -p wa
-w /etc/docker -p wa
-w /etc/docker/daemon.json -p wa
-w /lib/systemd/system/docker.service -p wa
-w /lib/systemd/system/docker.socket -p wa
-w /usr/bin/docker -p wa
-w /usr/bin/docker-containerd -p wa
-w /usr/bin/docker-runc -p wa
-w /var/lib/docker -p wa

Il -p wa istruzione significa che auditd registrerà le scritture e le modifiche agli attributi che influiscono sui file. Se l'output di Docker Bench suggerisce di utilizzare il controllo per directory aggiuntive, aggiungile anche all'elenco. Le directory di Docker potrebbero cambiare nel tempo.

Dovrai riavviare auditd per applicare le modifiche:

sudo systemctl restart auditd

Rafforzare il demone

Docker Bench di solito trova problemi con la configurazione del tuo demone. Aggiunta di quanto segue a /etc/docker/daemon.json metterà a tacere diversi avvisi di demone.

{
    "icc": false,
    "live-restore": true,
    "no-new-privileges": true,
    "userland-proxy": false,
    "userns-remap": "default"
}
  • icc:  Ciò impedisce ai contenitori di comunicare tra loro sul bridge predefinito Rete. I container si raggiungeranno tra loro solo se sono esplicitamente collegati tra loro utilizzando un --link .
  • ripristino in tempo reale: L'impostazione di questa opzione consente ai contenitori di continuare a funzionare anche se il demone si arresta. Ciò è consigliabile negli ambienti di produzione in cui si desidera ridurre al minimo i tempi di fermo.
  • nessun nuovo privilegio: Ciò impedisce ai contenitori di elevare i propri privilegi utilizzando comandi come setuid e setgid .
  • userland-proxy:  Disabilitare questo significa che iptables viene utilizzato per instradare il traffico della porta host nei container. Senza di essa, viene utilizzato il processo proxy userland di Docker, che aumenta la superficie di attacco del tuo demone.
  • rimappa utenti:  Ciò abilita l'uso degli spazi dei nomi utente, quindi root in un container esegue il mapping a un utente host meno privilegiato. Ciò riduce il rischio che un contenitore compromesso possa eseguire root comandi sul tuo host. Usando default indicherà a Docker di configurare un account utente dedicato a questo scopo.

RELAZIONATO: Come utilizzare Cron con i tuoi contenitori Docker

Personalizzazione dell'output del rapporto

Docker Bench supporta diversi flag che puoi utilizzare per regolarne l'output:

  • -b:  Disabilita i colori. Utile se stai eseguendo lo script in un ambiente CI che non supporta l'output ANSI completo.
  • -p:  Non includere le misure di riparazione suggerite. Utile quando vuoi concentrarti sugli avvisi e ridurre il rumore nell'output.
  • -l report.txt:  Scrivi l'output in report.txt al posto del terminale.
  • -c verifica_5.1, verifica_5.2:  Eseguire solo i controlli 5.1 e 5.2. L'elenco dei test è disponibile su GitHub.
  • -e verifica_5.1, verifica_5.2:  Escludi i controlli 5.1 e 5.2.

Puoi combinare i flag insieme per produrre il rapporto di cui hai bisogno. Se un'intera sezione di controlli non si applica a te, considera la creazione di un alias di shell in modo da poter eseguire rapidamente Docker Bench con una sequenza di flag applicati.

Conclusione

RELATO Come utilizzare Docker Scan per trovare le vulnerabilità nelle tue immagini

L'utilizzo dello script Docker Bench for Security ti aiuta a trovare e risolvere i punti deboli nella sicurezza del tuo host Docker. Affrontare eventuali avvisi che emette contribuirà a rafforzare il tuo host e migliorare la tua posizione di sicurezza.

Ricorda che Docker Bench non è un test esaustivo. Ci sono altri aspetti del mantenimento della sicurezza Docker che non dovrebbero essere trascurati.

Un container compromesso potrebbe fornire agli aggressori un punto d'appoggio nei tuoi sistemi, anche se hai una forte sicurezza a livello di host. Puoi ridurre questo rischio utilizzando Docker Bench, insieme a scanner di vulnerabilità dei container attivi come Trivy e Clair. Questi ti aiuteranno a identificare i problemi dentro i tuoi contenitori, come le dipendenze obsolete che potrebbero essere sfruttate.

Sebbene l'obiettivo sia sempre un buon punteggio, dovresti anche notare che Docker Bench è rivolto ai carichi di lavoro di produzione. Non tutti i controlli sono rilevanti per l'installazione Docker locale di uno sviluppatore. Esegui lo script, leggi gli avvisi e valuta quali si applicano al tuo ambiente.


Docker
  1. Come installare Jenkins con Docker

  2. Come distribuire microservizi con Docker

  3. Come usare Docker Compose

  4. Come collegare i contenitori Docker

  5. Come distribuire app con Rancher

Come scansionare le immagini del contenitore Docker per le vulnerabilità con Trivy

Come eliminare le risorse Docker inutilizzate

Come modificare il codice nei contenitori Docker con il codice di Visual Studio

Come eseguire i contenitori Docker

Come rimuovere i contenitori Docker

Come fermare i container Docker