MĂ€rk. tĂ”lge.: Dockeri turvateema on ilmselt ĂŒks ajatu teema tĂ€napĂ€eva IT-maailmas. SeetĂ”ttu tutvustame teile tĂ”lget uutest soovitustest, mis sellele teemadele vastavad. Kui olete juba selle kĂŒsimuse ĂŒle mĂ”elnud, on paljud neist teile tuttavad. Oleme komplekteerinud ka kasulike tööriistade nimekirja ja mĂ”ned allikad edasiseks uurimiseks.

Pakun tÀhelepanu all olevat juhendit Dockeri turvalisuse tagamiseks. Tagasiside on teretulnud, kuna see on pigem erinevates ressurssidest koondatud kokkuvÔte, ja mitte kÔik need pole pÔhjalikult kontrollitud. Soovitused on jagatud kolme kategooriasse:
- TĂ€htsad meetmed host-operatsioonisĂŒsteemis Dockeriga töötamisel;
- Juhised, mis puudutavad koostamisfaili konfiguratsiooni ja konteinerite loomist;
- Turvatooted, mis saavad integreeruda Docker Enterprise'i spetsiifiliste funktsioonidega.
Juhised pÔhinevad erinevatel ressurssidel, millest paljusid on allpool loetletud. Seda ei saa nimetada ammendavaks, kuid see katab kÔik pÔhiaspektid. Lisainfot leiate CIS testide kirjelduse alt (link on toodud selle juhendi lÔpus) ja Docker'i dokumentatsioonist.
Docker Security Benchmark
kontrollib automaatselt teie Dockerit, et see vastaks kĂ”ige levinumatele parimatele praktikatele. Skript on hea heuristiline turvatest, kuid seda ei tasu pidada pĂ”hjaliku analĂŒĂŒsi tööriistaks.
Host OS
On ilmne, et Docker-konteiner ei saa olla kaitstud, kui host-sĂŒsteem ei ole kaitstud. SeetĂ”ttu on oluline jĂ€rgida operatsioonisysteemide turvamise parimaid tavasid. Samuti oleks mĂ”istlik teostada haavatavuste analĂŒĂŒs koos jĂ€rgmiste soovitustega.
Auditreeglid
Looge ja kasutage Dockeriga seotud failide auditreegleid, kasutades auditctl. NÀiteks vÔite lisada -w /usr/bin/dockerd -k docker kellele /etc/audit.rules ja taaskÀivitada auditeerimisteenuse.
FIPS reĆŸiim
FIPS-reĆŸiimi sisselĂŒlmine sunnib krĂŒptograafilisi tööriistu ĂŒle minema FIPS-iga loetletud algoritmidele (Ameerika â kt. tĂ”lge), seelĂ€bi vastates föderaalsetele ja tööstuslikutele normidele ja nĂ”uetele. Kui host-OS toetab FIPS-reĆŸiimi, saab seda aktiveerida jĂ€rgmiste kĂ€skude tĂ€itmisega:
sed -i 's/GRUB_CMDLINE_LINUX="/GRUB_CMDLINE_LINUX="fips=1 /g' /etc/default/grub
grub2-mkconfig -o /boot/grub2/grub.cfg && rebootFIPS tuleb aktiveerida ka Docker Engineâis:
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 dockerTĂ€iendavateks teadeteks vaadake dokumentatsiooni ja .
Docker Secrets
Salajased andmed peavad olema salvestatud kui saladused. Vastava teenuse saab kÀivitada jÀrgmise kÀsuga:
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 nginxĂksikasju leiate .
Docker konfiguratsioonifailist
JĂ€rgmised seadistused saab lisada konfiguratsioonifaili /etc/docker/daemon.json:
-
"icc":falseâ keelab konteineritevahelise suhtlemise, et vĂ€ltida mittevajaliku teabe lekkeid. -
log-level: "info"â salvestab kĂ”ik logid vĂ€lja arvatud silumisteated. { "log-driver": "syslog", "log-opts": { "syslog-address": "udp://1.2.3.4:1111" } }â ĂŒhendab eemaloleva logide haldamise, edastades need mÀÀratud aadressile. Töötab ainult juhul, kui syslog daemon on kĂ€ivitatud. Valikuteks on TCP ja UDP. Samuti on vĂ”imalik ĂŒhendamine iga konkreetse konteineri jaoks. Selleks seadistatakse erilipp Dockerâi kĂ€ivitamisel (
--log-opt syslog-address=ADDRESS).-
"userns-remap": "Your_User"â takistab privileegide tĂ”stmist, isoleerides nimeruumi konkreetse kasutaja all.
Transporttase turvalisus
Docker daemon'i kaugtöötlemise vÔimalus peaks olema saadaval ainult TLS-klientide autentimistunnustega kasutajatele.
Autentimise pluginaid
MÀÀrake, millistel kasutajatel on lubatud milliseid kÀske tÀita, ja looge vastav Docker'i autentimise plugin. SeejÀrel kÀivitage Docker daemon ja lisage see plugin:
dockerd --authorization-plugin=PLUGIN_IDRohkem teavet autentimispluginode loomisest leiate .
Daemon'i parameetrid
Docker daemon töötab vaikimisi parameetrite kogumiga.
-
--live-restoreâ see parameeter aitab vĂ€hendada konteinerite seiskamis- vĂ”i taaskĂ€ivitamisaja seisakut. Nii on neid lihtsam plaastritega uuendada, minimeerides seisakuid; -
--userland-proxy=falseâ kui on saadaval vĂ”i kasutatakse hairpin NATs, muutub kasutajaruumi proksi liigne teenus, mis ainult suurendab vĂ”imalike rĂŒnnakute vektoreid; -
--no-new-privilegesâ takistab konteineritel tĂ€iendavate privileegide saamist suid vĂ”i sguid abil; -
--seccomp-profile /path/to/profileâ kui teil on enda seccomp profiil, saab seda rakendada selle lipuga. Lisainfot Seccompi ja Dockeri kohta leiate .
Konteinerite ja ehitusfailide konfiguratsioon
Kasutaja loomine
Veenduge, et konteinerile on loodud kasutaja ja kĂ€ivitage see selle kasutaja all (ĂRGE kĂ€ivitage konteinerit rootina).
Kaugjuhtimine
Keelake juurdepÀÀs deemonile kaugelt. Kui see on siiski vajalik, kaitske seda sertifikaatidega.
Isolateeri kasutajanimi
Eriti oluline on tagada, et Dockeris kasutatavad kasutajanimed oleksid isoleeritud, kuna vaikimisi kasutatakse neid koos hosti nimesĂŒsteemiga. MĂ”ningatel juhtudel vĂ”ib sellest kasu saada Ă”iguste tĂ”stmiseks vĂ”i isegi konteinerist vĂ€lja murdmiseks. Kasutajanimede isoleerimiseks saab muuta konfiguratsioonifaili (nagu on kirjeldatud ĂŒlal peatĂŒkis âDocker konfiguratsioonifailâ). Selle probleemi tĂ€iendav kĂ€sitlemine siin tuleneb selle olulisusest.
Healthcheckâid
Healthcheck (töötamise kontroll) on tugev tööriist, mis vĂ”imaldab kontrollida konteineri terviklikkust. See seadistatakse Dockerfileâis juhisega HEALTHCHECKHealthcheckâid aitavad veenduda, et konteiner töötab Ă”igesti. Allolevas nĂ€ites lĂ”petab töötamise kontroll 0, kui server töötab, ja 1, kui see on âkukkunudâ:
HEALTHCHECK CMD curl --fail http://localhost || exit 1SELinux
Kui SELinuxit toetatakse hostoperatsioonisĂŒsteemis, looge vĂ”i importige SELinuxi poliitika ja kĂ€itage Docker demonereĆŸiimis, kus SELinux on lubatud:
docker daemon --selinux-enableSellel juhul saab Docker-konteinereid kÀivitada turvaparameetritega, nÀiteks:
docker run --interactive --tty --security-opt label=level:TopSecret centos /bin/bashVÔrguliidesed
Vaikimisi kuulab Docker kĂ”iki vĂ”rguinterfese. Kuna enamasti oodatakse liiklust ainult ĂŒhel neist, suurendab selline lĂ€henemine ebatĂ”husalt rĂŒndevĂ”imalusi. SeetĂ”ttu saab konteineri kĂ€ivitamisel selle porte konkreetsetele liidestikele hostis siduda:
docker run --detach --publish 10.2.3.4:49153:80 nginxVahemÀlus olevad pildiversioonid
Pilte alla laadides veenduge, et kohalik vahemÀlu vastaks hoidla sisule. Vastasel juhul vÔite saada vananenud pildi vÔi pildi, mis sisaldab haavatavusi.
VÔrgusild
Vaikimisi vĂ”rgu mudel, docker0, on haavatav ARP-spoofingu ja MAC-floodingu rĂŒnnakute suhtes. Selle probleemi lahendamiseks looge vĂ”rgu sild vastavalt oma spetsifikatsioonidele, nagu on kirjeldatud .
Docker'i soketi hoiatus
Ărge kunagi edasta Docker'i soketit konteinerisse. Vastasel juhul saab konteiner edastada Docker'i kĂ€ske ja seega seostuda hosti opsĂŒsteemi ja seda kontrollida. Ărge tehke seda.
Docker Enterprise'i konfigureerimine
Docker Trust
Docker Trust vĂ”imaldab genereerida vĂ”tmeid, millega saab kontrollida piltide krĂŒptoautentsust. Docker Trusti vĂ”tmeid saab kasutada Docker'i piltide allkirjastamiseks eraĂ”iguslike vĂ”tmetega, mida kontrollitakse avalike vĂ”tmete abil Notary Serveris. Lisainfot leiate â Docker Trusti aktiveerimise protsess Enterprise Engine'is on ĂŒksikasjalikult kirjeldatud .
Haavatavuste skaneerimine
Docker Enterprise'is on sisseehitatud haavatavuste skanner, mis vĂ”imaldab laadida alla CVE andmebaasi, et skaneerida pilte offline-reĆŸiimis. Regulaarne piltide skaneerimine aitab neid turvalisemaks muuta: kasutaja saab koheselt teateid avastatud haavatavuste kohta. Lisainfot selle kohta, kuidas seda teha, vt. .
MÀrk. tÔlge.: On ka avatud lÀhtekoodiga haavatavuste skaanereid Docker'i piltides, mille nÀidised leiate materjali lÔpust.
LDAP ja UCP integreerimine
Universal Control Plane'i saab integreerida LDAP-iga. Selle tulemuseks on lihtsustatud autentimissĂŒsteem, mis vĂ€ldib tarbetut dubleerimist. Lisainfot selle kohta vĂ”ite lugeda artiklis .
Muud materjalid
Lisa teavet Docker'i turvapraktikate kohta leiate . Soovitame ka alla laadida .
TÔlkija boonus
Loogilise jÀtkuna sellele artiklile avaldame nimekirja 10 populaarseimast Open Source-tööriistast, mis tagavad Docker'i turvalisuse. See on laenatud (autoriks Bill Doerrfeld Doerrfeld.io-st).
NB: Rohkem teavet paljude siin mainitud projektide kohta leiate ka artiklist â».
- â juba mainitud artikli alguses olev skript, mis kontrollib Docker'i konteinerite vastavust levinud turvapraktikatele.

- â tĂ”enĂ€oliselt kĂ”ige populaarsem tööriist konteineri haavatavuste staatiliseks analĂŒĂŒsimiseks. See kasutab selleks mitmeid haavatavuste andmebaase CVE (sealhulgas juhtivate Linuxi jaotuste jĂ€lgijad, nagu Red Hat, Debian, Ubuntu). Pakub API-d arendajatele ja lihtsat funktsioonide laiendamise vĂ”imalust (lĂ€bi âdraiveriteâ lisamise). Kasutatakse populaarses avalikus konteineripiltide registris (sarnane Docker Hub'ile) â Quay.io.
- â tuum lahendus, mis tagab tuumtaseme vĂ”rgu turvalisuse, pĂ”hinedes BPF vĂ”rgufiltreerimise tehnoloogial.
- â tööriist piltide sisu analĂŒĂŒsiks turvaauke CVE andmebaasi pĂ”hjal. Samuti vĂ”imaldab see rakendada kohandatud poliitilisi (erinevate andmete, sealhulgas valgete/mustade nimekirjade, failide sisu jne alusel) konteinerite turvalisuse hindamiseks.
- â terve ökosĂŒsteem turvapoliitikate loomiseks ja haldamiseks erinevates platvormides. Konteinerite kontrollimiseks pakub utiliiti
oscap-docker. - â tööriist Docker konteinerite skaneerimiseks haavatavuste, troojalaste, viiruste ja kahjulike programmide suhtes. CVE andmebaase sisaldab kontrollimise sĂ”ltuvusi OWASP, Red Hat Oval andmebaasi ja Exploit Database'i eksploitide reposi.
- â raamistik Docker-piltide allkirjastamiseks, algselt loodud Docker Inc. poolt (ja seejĂ€rel edastatud CNCF arendamiseks). Selle kasutamine vĂ”imaldab rollide delegeerimist ja vastutuse jagamist konteinerite vahel ning kontrollida piltide krĂŒptograafilist terviklikkust.
- â Metaandmete API, mis on mĂ”eldud sisemiste turvapoliitikate haldamiseks. NĂ€iteks aitab see parandada konteinerite turvaskannerite tööd. Shopify kasutab seda API-d oma 500 000 pildi metadaatide haldamiseks.
- â utiliit Kubernetes'e jaoks, mis jĂ€lgib sĂŒsteemi kĂ€itumist: tegevust konteinerites, hostides ja vĂ”rgus. See vĂ”imaldab seadistada pidevaid kontrolle infrastruktuuris, avastada anomaaliaid ja saata hĂ€ireid mis tahes Linuxi sĂŒsteemikutsed.
- â veel ĂŒks tööriist Docker-konteinerite piltide staatiliseks analĂŒĂŒsiks. See vĂ”imaldab âvaadataâ piltide faile, koguda vajalikke andmeid, rakendada vajalikku poliitikat jne.
Veel ĂŒks hea kogumik praktilisi soovitusi kui teha Docker turvalisemaks, vĂ”ib leida Aqua Security'lt. Paljud nende nĂ”uanded kattuvad juba eelnevalt mainituga, kuid on ka teisi. NĂ€iteks soovitavad autorid korraldada konteinerite tegevuse jĂ€lgimist ja juhivad tĂ€helepanu sellele, millele pöörata tĂ€helepanu Docker Swarmi kasutamisel.
Neile, kes soovivad veelgi sĂŒgavamale teemasse sĂŒveneda, ilmus eelmisel aastal raamat «», mille lĂ”igud on vabalt kĂ€ttesaadavad .
Viimaks, praktiliseks tutvumiseks mĂ”ningate Docker'i turvasa aspektidega: Seccomp'i profiilide ja Linuxi kerneli vĂ”imekuse kasutamine konteinerites â saab lĂ€bida vastavaid laboratoorseid töid * â vt jaotist «Security».

* Selle ressursi kohta kirjutasime me kaks aastat tagasi, ja novembris 2018 juhtus temaga vĂ€ga huvitav (turvalisuse seisukohalt) lugu. LĂŒhidalt öeldes, CyberArk Software Ltd. spetsialistid suutsid selle hĂ€kkida: nad said Ă”iguse kĂ€ivitada kĂ€ske konteineritest vĂ€ljaspool, st host-sĂŒsteemis. SuurepĂ€rane illustratsioon Docker'i turvalisuse probleemist, kas pole? KĂ”ikide juhtumiga seotud detailide kohta loe .
P.S. tÔlkija mÀrkused
Lugege ka meie blogist:
- «»;
- «»;
- «»;
- «»;
- «»;
- «».
Allikas: habr.com

