Nota. transl.: El tema de la seguretat de Docker és potser un dels eterns del món informàtic modern. Per tant, sense més explicacions, presentem una traducció de la següent selecció de recomanacions rellevants. Si ja us ha interessat aquest tema, molts d'ells us seran coneguts. Hem complementat la pròpia col·lecció amb una llista d'utilitats útils i diversos recursos per a un estudi posterior del problema.

Us informem d'una guia per garantir la seguretat de Docker. Els comentaris són benvinguts, ja que es tracta més d'una col·lecció d'extractes de diversos recursos, i no tots han estat revisats a fons. Les recomanacions es divideixen en tres categories:
- Mesures necessàries dins del sistema operatiu amfitrió quan es treballa amb Docker;
- Instruccions relacionades amb el fitxer de configuració de construcció i la creació de contenidors;
- Eines de seguretat que es poden integrar amb funcions específiques de Docker Enterprise.
La guia es basa en una varietat de recursos, molts dels quals s'enumeren a continuació. No és exhaustiu, però cobreix totes les bases. Es pot trobar informació addicional a la descripció de les proves CIS (enllaçada al final d'aquesta guia), així com a la documentació de Docker.
Docker Benchmark de seguretat
verifica automàticament el vostre Docker amb les millors pràctiques més habituals. L'script és una bona prova de seguretat heurística, però no s'ha de considerar com una eina d'anàlisi completa.
OS amfitrió
Òbviament, un contenidor Docker no pot ser segur tret que el propi sistema amfitrió sigui segur. Per tant, cal seguir les millors pràctiques en seguretat del sistema operatiu. A més, seria convenient dur a terme una anàlisi de vulnerabilitat a més de les recomanacions següents.
Normes d'auditoria
Creeu i utilitzeu regles d'auditoria per a fitxers relacionats amb Docker auditctl. Per exemple, podeu afegir -w /usr/bin/dockerd -k docker к /etc/audit.rules i reinicieu el servei d'auditoria.
Mode FIPS
L'activació del mode FIPS obliga les eines criptogràfiques a canviar als algorismes de la llista FIPS (americà -aprox. trad.), complint així amb les regulacions i els requisits federals i de la indústria. Si el sistema operatiu amfitrió admet el mode FIPS, podeu activar-lo executant les ordres següents:
sed -i 's/GRUB_CMDLINE_LINUX="/GRUB_CMDLINE_LINUX="fips=1 /g' /etc/default/grub
grub2-mkconfig -o /boot/grub2/grub.cfg && rebootTambé heu d'habilitar FIPS a Docker Engine:
mkdir -p /etc/systemd/system/docker.service.d 2>&1; echo -e "[Service]n Environment="DOCKER_FIPS=1"" > /etc/systemd/system/docker.service.d/fips-module.conf; systemctl daemon-reload; systemctl restart dockerPer a més informació, consulteu la documentació и .
Docker Secrets
Les dades confidencials s'han de mantenir com a secrets. Podeu iniciar el servei corresponent mitjançant l'ordre de creació del servei docker:
docker service create --label com.docker.ucp.access.label=/prod --name nginx --publish 443 --secret source=orcabank_prod_mobile.ca.pem.v1,target=ca.pem nginxPer a més detalls, vegeu .
Fitxer de configuració de Docker
Els paràmetres següents es poden afegir al fitxer de configuració /etc/docker/daemon.json:
-
"icc":false— desactiva l'intercanvi de dades entre contenidors per evitar fuites d'informació innecessàries. -
log-level: "info"— captura tots els registres excepte els de depuració. { "log-driver": "syslog", "log-opts": { "syslog-address": "udp://1.2.3.4:1111" } }— activa el registre remot i els reenvia a l'adreça especificada. Només funciona si el dimoni syslog s'està executant. TCP i UDP s'accepten com a opcions. També és possible connectar-se per a cada contenidor específic. Amb aquest propòsit, s'estableix un senyalador especial quan s'inicia Docker (
--log-opt syslog-address=ADDRESS).-
"userns-remap": "Your_User"— evita l'escalada de privilegis aïllant l'espai de noms per a un usuari específic.
Seguretat de la capa de transport
Només els usuaris amb accés a les credencials del client TLS haurien de poder connectar-se al dimoni Docker (si es requereix accés remot).
Connectors d'autorització
Decidiu quins usuaris poden executar quines ordres i creeu un connector d'autorització adequat per a Docker. A continuació, inicieu el dimoni Docker i afegiu-hi el connector:
dockerd --authorization-plugin=PLUGIN_IDPer obtenir més informació sobre la creació de connectors d'autorització, consulteu .
Opcions de dimoni
El dimoni Docker s'executa amb un conjunt de paràmetres predeterminat.
-
--live-restore— aquest paràmetre ajuda a reduir el temps d'inactivitat del contenidor quan el sistema s'apaga o es reinicia. És més fàcil aplicar-los o actualitzar-los amb un temps d'inactivitat mínim; -
--userland-proxy=false— quan hi ha NAT disponibles o s'utilitzen, el proxy a l'espai d'usuari es converteix en un servei redundant, que només augmenta el nombre de possibles vectors d'atac; -
--no-new-privileges— evita que els contenidors obtinguin privilegis addicionals mitjançant suid o sguid; -
--seccomp-profile /path/to/profile- si teniu el vostre propi perfil seccomp, podeu aplicar-lo mitjançant aquesta bandera. Podeu obtenir més informació sobre Seccop i Docker .
Configuració de contenidors i fitxers de compilació
Creació d'usuaris
Assegureu-vos que s'ha creat un usuari per al contenidor i executeu-lo sota aquest usuari (NO executeu el contenidor com a root).
Accés remot
Desactiveu l'accés remot al dimoni. Si encara el necessiteu, protegiu-lo amb certificats.
Aïlla l'espai de noms d'usuari
És especialment important assegurar-se que l'espai de noms d'usuari a Docker estigui aïllat, ja que per defecte es comparteix amb l'espai de noms de l'amfitrió. En alguns casos, es pot utilitzar per augmentar els privilegis o fins i tot escapar fora del contenidor. Podeu aïllar l'espai de noms d'usuari editant el fitxer de configuració (tal com es descriu anteriorment a la secció Fitxer de configuració de Docker). La menció addicional d'aquest tema aquí es deu a la seva importància.
Revisió de salut
Healthcheck és una eina potent que permet comprovar la integritat d'un contenidor. Es configura al Dockerfile seguint les instruccions HEALTHCHECK. Els controls de salut permeten assegurar-se que el contenidor funciona correctament. A l'exemple següent, la comprovació de salut retorna 0 si el servidor s'està executant i 1 si està inactiu:
HEALTHCHECK CMD curl --fail http://localhost || exit 1SELinux
Si SELinux compatible amb el sistema operatiu amfitrió, creeu o importeu la política SELinux i executar Docker en mode daemon amb SE habilitatLinux:
docker daemon --selinux-enableEn aquest cas, els contenidors Docker es poden llançar amb paràmetres de seguretat, per exemple:
docker run --interactive --tty --security-opt label=level:TopSecret centos /bin/bashInterfícies de xarxa
De manera predeterminada, Docker escolta totes les interfícies de xarxa. Com que en la majoria dels casos només s'espera trànsit en un d'ells, aquest enfocament augmenta innecessàriament el risc d'atac. Per tant, quan inicieu un contenidor, podeu vincular els seus ports a interfícies específiques de l'amfitrió:
docker run --detach --publish 10.2.3.4:49153:80 nginxVersions en memòria cau d'imatges
Quan baixeu imatges, assegureu-vos que la memòria cau local coincideixi amb el contingut del dipòsit. En cas contrari, podeu acabar amb una versió obsoleta de la imatge o una imatge que contingui vulnerabilitats.
Pont de xarxa
Model de xarxa per defecte docker0, és vulnerable a atacs com ara la suplantació d'ARP i la inundació de MAC. Per resoldre aquest problema, creeu un pont de xarxa segons les vostres especificacions tal com es descriu .
Avís de socket Docker
No reenvieu mai un endoll Docker dins d'un contenidor. En cas contrari, el contenidor podrà executar ordres Docker i, per tant, comunicar-se i controlar el sistema operatiu amfitrió. No facis això.
Configuració de Docker Enterprise
Docker Trust
Docker Trust us permet generar claus que es poden utilitzar per verificar la integritat criptogràfica de les imatges. Les claus de Docker Trust es poden utilitzar per signar imatges de Docker amb claus privades, que es verifiquen mitjançant claus públiques al servidor de notaries. Informació adicional - . L'habilitació de Docker Trust a Enterprise Engine es detalla a .
Escaneig de vulnerabilitats
Docker Enterprise té un escàner de vulnerabilitats integrat que us permet descarregar una base de dades CVE per a l'exploració fora de línia de vulnerabilitats a les imatges. L'escaneig periòdic de les imatges ajuda a fer-les més segures: l'usuari rep immediatament avisos sobre les vulnerabilitats trobades. Per obtenir més informació sobre com es pot fer això, vegeu .
Nota. transl.: També hi ha escàners de codi obert per detectar vulnerabilitats a les imatges de Docker, exemples dels quals es poden trobar al final del material.
Integració LDAP i UCP
El pla de control universal es pot integrar amb LDAP. El resultat serà un sistema d'autenticació simplificat que evita duplicacions innecessàries. Podeu llegir més sobre això a l'article .
Altres materials
Podeu trobar més informació sobre les pràctiques recomanades de seguretat de Docker a . També recomanem la descàrrega .
Bonus de traductor
Com a complement lògic a aquest article, publiquem una llista de 10 utilitats populars de codi obert per a Docker Security. Va ser manllevat de (per Bill Doerrfeld de Doerrfeld.io).
NB: Llegeix més sobre molts dels projectes esmentats aquí a l'article "».
- és un script ja esmentat al principi de l'article que verifica que els contenidors Docker compleixen les pràctiques de seguretat habituals.

- — és probablement la utilitat més popular per a l'anàlisi estàtica de vulnerabilitats en un contenidor. Utilitza nombroses bases de dades de vulnerabilitats CVE (inclosos els rastrejadors dels principals Linux-distribucions com ara Red Hat, Debian, Ubuntu). Ofereix una API per a desenvolupadors i una fàcil extensió de funcionalitats (afegint "controladors"). S'utilitza en el popular registre d'imatges de contenidors públics (similar a Docker Hub): Quay.io.
- és una solució per garantir la seguretat de la xarxa a nivell del nucli, basada en la tecnologia de filtratge de paquets de xarxa BPF.
- — una utilitat per analitzar el contingut de les imatges per detectar la presència de vulnerabilitats de seguretat basades en CVE. A més, permet aplicar polítiques personalitzades (basades en diverses dades, com ara llistes blanques/negres, continguts de fitxers, etc.) per avaluar la seguretat dels contenidors.
- — tot un ecosistema per crear i mantenir polítiques de seguretat en diferents plataformes. Ofereix una utilitat per revisar contenidors
oscap-docker. - — una utilitat per escanejar contenidors Docker per detectar vulnerabilitats, troians, virus i programari maliciós. Les bases de dades CVE inclouen comprovacions de dependència d'OWASP, la base de dades Red Hat Oval i el dipòsit d'explotacions de la base de dades d'explotació.
- és un marc per signar imatges de Docker, creat originalment a Docker Inc (i després transferit per al desenvolupament a CNCF). El seu ús permet delegar rols i repartir responsabilitats entre contenidors, així com verificar la integritat criptogràfica de les imatges.
- — API per a metadades, dissenyada per gestionar polítiques de seguretat interna. Com a exemple, us permet millorar el rendiment dels escàners de seguretat de contenidors. Shopify utilitza aquesta API per gestionar les metadades de les seves 500 imatges.
- — una utilitat de Kubernetes que supervisa el comportament del sistema: activitat en contenidors, en hosts i a la xarxa. Permet configurar comprovacions contínues d'infraestructura, detecció d'anomalies i alertes per a qualsevol crida al sistema. Linux.
- - una altra eina per a l'anàlisi estàtica d'imatges de contenidors Docker. Permet "buscar" els fitxers d'imatge, recollir les dades necessàries, aplicar les polítiques necessàries, etc.
Una altra bona col·lecció de recomanacions pràctiques Podeu trobar informació sobre com fer que Docker sigui més segur Empresa Aqua Security. Molts dels seus consells es superposen amb els ja esmentats anteriorment, però n'hi ha d'altres. Per exemple, els autors suggereixen organitzar el seguiment de l'activitat als contenidors i indiquen a què cal prestar atenció quan s'utilitza Docker Swarm.
Per a aquells que vulguin aprofundir en aquest tema, es va publicar l'any passat. llibre"», fragments dels quals estan disponibles gratuïtament .
Finalment, per a una introducció pràctica a alguns aspectes de la seguretat de Docker: perfils Seccomp i l'ús de capacitats Linux-nuclis en contenidors: podeu consultar els corresponents treball de laboratori * - vegeu la secció "Seguretat".

* Sobre aquest recurs en si mateix Fa dos anys, i el novembre del 2018, li va passar una història molt interessant (des del punt de vista de la seguretat). En resum, els especialistes de CyberArk Software Ltd. va aconseguir piratejar-lo: per aconseguir la capacitat d'executar ordres fora dels contenidors, és a dir. al sistema host. Una il·lustració perfecta del problema de seguretat a Docker, no? Llegeix tots els detalls del que va passar .
PS del traductor
Llegeix també al nostre blog:
- «»;
- «»;
- «»;
- «»;
- «»;
- «».
Font: www.habr.com

