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

10 best practice per la sicurezza Docker

Introduzione

I container Docker e Kubernetes sono la forza trainante di un moderno ciclo di vita di sviluppo software. Sebbene Docker sia un'opzione più sicura rispetto al lavoro diretto sulla macchina host, possono sorgere molti potenziali problemi di sicurezza quando si lavora con i container.

Questo articolo include dieci best practice per la sicurezza dei container che possono aiutarti a prevenire attacchi e violazioni della sicurezza.

1. Aggiorna regolarmente Docker e Host

Assicurati che il tuo host e Docker siano aggiornati. Utilizza l'ultima versione del sistema operativo e il software di containerizzazione per prevenire le vulnerabilità della sicurezza. Ogni aggiornamento include patch di sicurezza critiche, essenziali per la protezione dell'host e dei dati.

Mantenere Docker aggiornato non si limita alla piattaforma stessa. I contenitori in esecuzione non si aggiornano automaticamente. Dovresti anche aggiornare i contenitori e le immagini su cui si basano.

2. Configura le quote di risorse

Per evitare contenitori compromessi che consumano eccessivamente le risorse, imposta i limiti di utilizzo della CPU e della memoria Docker.

Senza configurare le quote delle risorse, dai al contenitore l'accesso alle risorse RAM e CPU complete dell'host. Poiché questa è l'impostazione predefinita, si consiglia di limitare la quantità di risorse che un container può utilizzare, in modo da non interrompere altri servizi.

Questo non solo impedisce a un container di utilizzare tutte le risorse, ma aiuta anche a mantenere efficiente un ambiente Docker. Le quote di risorse garantiscono che i container funzionino alla velocità prevista e migliorano la sicurezza.

3. Utilizza utenti non root

Docker consente di eseguire un contenitore in modalità privilegiata. Sebbene possa essere un modo più rapido per aggirare alcuni protocolli di sicurezza, dovresti sempre astenerti dall'utilizzare questa pratica.

Il pericolo di eseguire un container privilegiato è che apre la porta a potenziali attività dannose. Un utente Docker privilegiato ha gli stessi privilegi del root. Ciò significa che ha accesso alle funzionalità del kernel e ad altri dispositivi sull'host. Un utente malintenzionato può entrare nel tuo sistema host attraverso il container e mettere in pericolo tutto ciò che contiene.

Attenersi esclusivamente agli utenti non root è semplice, poiché sono le impostazioni predefinite di Docker. Per modificare la configurazione predefinita, dovresti aggiungere il --privileged segnala alla docker run comando. Tuttavia, questo è un rischio significativo per la sicurezza e non dovrebbe essere utilizzato.

4. Capacità limite

I container hanno un insieme limitato di funzionalità Linux. Ad esempio, possono consentire a un utente di eseguire un container con un'efficienza simile a quella di root ma senza privilegi di root completi.

Le capacità limitate di Docker sono le impostazioni di sicurezza predefinite e sono le stesse per ogni container. Pertanto, si consiglia di modificare le funzionalità per includere solo ciò che è necessario. L'amministratore li gestisce utilizzando il --cap-add e --cap-drop opzioni.

Il modo più sicuro per configurare le funzionalità del contenitore è rimuovere tutto (usando il --cap-drop=ALL opzione) e quindi aggiungere quelli richiesti.

Per un elenco di tutte le funzionalità e abbreviazioni, fare riferimento alla sezione delle funzionalità della pagina di manuale di Linux.

5. Proibire nuovi privilegi

Come mostrato nell'esempio sopra, Docker consente di modificare le capacità e i privilegi dei contenitori dopo che sono stati avviati. Per prevenire gli attacchi di escalation dei privilegi, è una buona idea definire i privilegi del contenitore.

Per impedire ai processi contenitore di acquisire nuovi privilegi, utilizza il --security-opt flag con il valore no-new-privileges:true . Aggiunta del flag alla docker run il comando sovrascrive tutte le regole impostate utilizzando il --cap-add e --cap-drop opzioni..

Inoltre, puoi rimuovere o disabilitare il setuid e setgid binari nelle immagini. In questo modo si assicura che la funzione non venga utilizzata per l'attraversamento/iniezione del percorso, il sovraccarico del buffer e gli attacchi di escalation dei privilegi.

6. Usa immagini affidabili

Quando estrai un'immagine dai registri online, assicurati che provenga da una fonte sicura e affidabile. L'opzione più sicura è attenersi all'hub Docker ufficiale. Evita registri pubblici di terze parti privi di criteri di controllo.

Se si utilizzano librerie online, rivedere sempre il contenuto all'interno dell'immagine. Inoltre, utilizza gli strumenti di scansione delle immagini per cercare le vulnerabilità prima di scaricare qualsiasi cosa sul sistema host.

È meglio controllare Docker Hub e vedere se riesci a trovare l'immagine desiderata lì. È la più grande libreria e community mondiale di Docker con oltre 100.000 immagini di container.

7. Mantieni immagini e contenitori leggeri

Riduci al minimo la superficie di attacco dei container Docker utilizzando un'immagine di base minima e riducendo il numero di componenti del container. Mantenere le dimensioni dell'immagine ridotte aiuta a prevenire violazioni della sicurezza e velocizza le prestazioni del container.

Per suggerimenti su come ridurre le dimensioni dell'immagine, fare riferimento a Come mantenere piccole le immagini Docker.

8. Registri protetti

Un registro Docker è un sistema di distribuzione dei contenuti utilizzato per archiviare e fornire immagini per i tuoi contenitori. Puoi utilizzare il registro online ufficiale di Docker o configurare un registro privato sul tuo host.

Per una soluzione di archiviazione delle immagini di livello aziendale, dovresti utilizzare il Docker Trusted Registry (DTR) . Puoi installare il registro dietro il firewall per prevenire potenziali violazioni.

9. Non esporre il Docker Daemon Socket

Docker comunica con un socket di dominio UNIX chiamato /var/run/docker.sock . Questo è il punto di ingresso principale per l'API Docker. Chiunque abbia accesso al socket del demone Docker ha anche un accesso root illimitato.

Consentire a un utente di scrivere su /var/run/docker.sock o esporre la presa a un container è un grande rischio per la sicurezza del resto del sistema. In questo modo si ottengono essenzialmente i privilegi di root.

Il montaggio della presa Docker all'interno di un container non ne limita l'accesso privilegiato all'interno. Consente al contenitore il pieno controllo dell'host e di tutti gli altri contenitori. Pertanto, non è una pratica consigliata.

10. Monitora le API e l'attività di rete

Le API e le reti svolgono un ruolo cruciale nella sicurezza Docker. I container Docker comunicano tramite API e reti. Pertanto, per evitare intrusioni, l'architettura deve essere configurata in modo sicuro.

Gli amministratori della sicurezza hanno recentemente scoperto un nuovo tipo di attacco che sfrutta le API Docker configurate in modo errato. Gli hacker sfruttano le API e la sicurezza della rete mal configurate, le utilizzano per distribuire un'immagine ed eseguono un contenitore dannoso sul sistema host.

Oltre a configurare le reti e le API in modo sicuro, devi anche monitorare le attività per rilevare potenziali anomalie.


Docker
  1. Best practice per la sicurezza di OpenSSH

  2. Alcuni comandi DOCKER

  3. Monitoraggio dei container Docker:vantaggi, best practice e strumenti indispensabili

  4. Come assegnare un IP statico a un contenitore Docker

  5. Best practice per la sicurezza dei server Linux

10 best practice per la sicurezza del database

Apprendimento Docker:come creare un contenitore Docker

Come eseguire PHPMyAdmin in un contenitore Docker

Come eseguire Grafana in un contenitore Docker

Come configurare un container Docker Apache

Configurazione del server Ubuntu – Procedure consigliate per la sicurezza