MĂ€rkus tĂ”lke kohta.: Dockeri turvateema on kindlasti ĂŒks igaveseid teemasid tĂ€napĂ€eva IT-maailmas. SeetĂ”ttu tutvustame ilma liigsete selgitusteta tĂ”lget jĂ€rjekordsetest soovitustest. Kui olete selle kĂŒsimusega juba tutvunud, on paljud neist teile tuttavad. Lisaks oleme kogu selle kogumi tĂ€iendanud kasulike tööriistade nimekirjaga ja mitmete allikatega edasiseks uurimiseks.

Pakume tÀhelepanekutena juhendit Docker'i turvamiseks. Tagasiside on teretulnud, kuna see on pigem fragmentide kogum erinevatelt allikatelt ning mitte kÔik neist ei ole lÀbinud pÔhjalikku kontrolli. Soovitused on jagatud kolme kategooriasse:
- Vajalikud meetmed host-operatsioonisĂŒsteemis Docker'i kasutamise ajal;
- Juhised, mis on seotud konfiguratsiooni faili ja konteinerite loomisega;
- Turvatööriistad, mis vÔivad integreeruda Docker Enterprise'i spetsiifiliste funktsioonidega.
Juhendi aluseks on erinevad allikad, millest paljusid on siin loetletud. Seda ei saa nimetada ammendavaks, kuid see katab kÔik pÔhialused. Lisainfot vÔib leida CIS-testide kirjeldusest (link on antud kÀesoleva juhendi lÔpus) ning ka Docker'i dokumentatsioonist.
Dockeri turvabenchmark
kontrollib automaatselt teie Dockerit, et see vastaks kĂ”ige levinumatele parimatele praktikatele. Skript on hea heuristiline turvatest, kuid seda ei tohiks pidada tervikliku analĂŒĂŒsi tööriistaks.
Host-OE
On ilmne, et Dockeri konteiner ei saa olla turvaline, kui host-sĂŒsteem ise ei ole kaitstud. SeetĂ”ttu on oluline jĂ€rgida operatsioonisĂŒsteemide turvapraktikaid. Samuti oleks mĂ”istlik teostada haavatavuste analĂŒĂŒs koos jĂ€rgmiste soovitustega.
Auditireeglid
Looge ja kasutage Dockeriga seotud failide auditireegleid, kasutades auditctl. NÀiteks saab lisada -w /usr/bin/dockerd -k docker aadressile /etc/audit.rules ja taaskÀivitada auditi teenuse.
FIPS-reĆŸiim
FIPS-reĆŸiimi aktiveerimine sunnib krĂŒptograafilisi tööriistu vahetama algoritme, mis on lisatud FIPSisse (Ameerika â toimetaja mĂ€rkus), jĂ€rgides seega föderaalseid ja valdkondlikke norme ja nĂ”udeid. Kui hosti operatsioonisĂŒsteem toetab FIPS-reĆŸiimi, saab seda aktiveerida jĂ€rgmiste kĂ€skudega:
sed -i 's\/GRUB_CMDLINE_LINUX="\/GRUB_CMDLINE_LINUX="fips=1 \/g' \/etc\/default\/grub\ngrub2-mkconfig -o \/boot\/grub2\/grub.cfg && rebootSamuti tuleb FIPS aktiveerida 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 dockerLisainformatsiooni saab dokumentatsioonist ja .
Docker Secrets
Konfidentsiaalsed andmed tuleb hoida saladustena. Vastava teenuse kÀivitamiseks saab kasutada kÀsku docker service create:
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Ăksikasjade kohta vaata .
Docker konfiguratsioonifail
JÀrgmised sÀtted saab lisada konfiguratsioonifaili /etc/docker/daemon.json:
-
"icc":falseâ keelab andmete vahetuse konteinerite vahel, et vĂ€ltida tarbetut teabe lekkimist. -
log-level: "info"â registreerib kĂ”ik logid, vĂ€lja arvatud silumise logid. { "log-driver": "syslog", "log-opts": { "syslog-address": "udp:\/\/1.2.3.4:1111" } }â aktiveerib kauglugemise, edastades need mÀÀratud aadressile. Töötab ainult siis, kui syslog demoon on kĂ€ivitatud. VastuvĂ”tmiseks on aktsepteeritavad TCP ja UDP. Samuti on vĂ”imalik konfiguratsioon iga konkreetse konteineri jaoks. Selleks tuleb Dockerit kĂ€ivitades seada spetsiaalne lipp (
--log-opt syslog-address=ADDRESS).-
"userns-remap": "Your_User"â takistab privileegide tĂ”stmist (privilege escalation), isoleerides nimede ruumi konkreetse kasutaja jaoks.
Transportkihtide turvalisus
Demonile Docker'ile ĂŒhendumise vĂ”imalus (kui eemalt juurdepÀÀs on vajalik) peaks olema ainult kasutajatel, kes omavad TLS-kliendi mandaate.
Autoriseerimispluginad
MÔtle, millistel kasutajatel on lubatud milliseid kÀske tÀita, ja loo vastav autoriseerimisplugin Docker'ile. SeejÀrel kÀivita Docker demon ja lisa plugin:
dockerd --authorization-plugin=PLUGIN_IDAutoriseerimispluginatest rohkem teada saamiseks vaata .
Demoniparameetrid
Docker demon töötab vaikimisi parameetrite komplektiga.
-
--live-restoreâ see parameeter aitab vĂ€hendada konteinerite seismise aega sĂŒsteemi vĂ€ljalĂŒlitamisel vĂ”i taaskĂ€ivitamisel. Lihtsustab nende kĂ€rpimist vĂ”i vĂ€rskendamist minimaalse seismisega; -
--userland-proxy=falseâ kui hairpin NATâid on saadaval vĂ”i kasutatakse, muutub kasutajaruumi proksiteenus ĂŒleliigseks, suurendades vĂ”imalike rĂŒnnakuvektorite arvu; -
--no-new-privilegesâ takistab konteinerite lisaprivilegiume saamist suid vĂ”i sguid kaudu; -
--seccomp-profile /path/to/profileâ kui teil on oma seccomp profiil, saab seda rakendada selle lipuga. Lisateavet Seccompi ja Dockeri kohta leiate .
Konteineride konfiguratsioon ja koostamisfailid
Kasutaja loomine
Veenduge, et konteineri jaoks on loodud kasutaja ja kĂ€ivitage see selle all (ĂRGE kĂ€ivitage konteinerit rootina).
KaugjuurdepÀÀs
Keelake kaugjuurdepÀÀs deemonile. Kui see on siiski vajalik, kaitske seda sertifikaatidega.
Isolate the user namespace
On eriti oluline veenduda, et Dockeris oleks kasutaja ruum isoleeritud, kuna vaikimisi kasutatakse seda koos hosti ruumiga. Teatud juhtudel saab seda kasutada privileegide tÔstmiseks vÔi isegi konteinerist vÀljapoole pÀÀsemiseks. Kasutaja ruumi isoleerimiseks saab selle konfigureerida konfiguratsioonifaili muutmise teel (nagu eespool kirjeldatud Docker konfiguratsioonifaili osas). Selle probleemi tÀiendav mainimine on seotud selle tÀhtsusega.
Healthcheckâid
Healthcheck (töökontroll) â vĂ”imas tööriist, mis vĂ”imaldab kontrollida konteineri terviklikkust. Seda seadistatakse Dockerfileâis instruktsiooni abil HEALTHCHECK. Healthcheckâid vĂ”imaldavad veenduda, et konteiner töötab korralikult. Allpool on toodud nĂ€ide, kus töökontroll lĂ”peb 0, kui server töötab, ja 1, kui see âkukubâ:
HEALTHCHECK CMD curl --fail http://localhost || exit 1SELinux
Kui SELinux on hosti operatsioonisĂŒsteemis toetatud, looge vĂ”i impordige SELinuxi poliitika ja kĂ€ivitage Docker deemonireĆŸiimis SELinux sisse lĂŒlitatud:
docker daemon --selinux-enableSellisel juhul saab Docker-konteinereid kÀivitada turvaelementidega, nÀiteks:
docker run --interactive --tty --security-opt label=level:TopSecret centos /bin/bashNetwork interfaces
Vaikimisi kuulab Docker kĂ”iki vĂ”rgu liideseid. Kuna enamikul juhtudel oodatakse liiklust ainult ĂŒhel neist, suurendab selline lĂ€henemine ebamugavalt rĂŒnnaku riski. SeetĂ”ttu saab konteinerit kĂ€ivitades siduda selle pordid hosti konkreetsete liideste kĂŒlge:
docker run --detach --publish 10.2.3.4:49153:80 nginxVahemÀlu versioonid piltidest
Piltide allalaadimisel veenduge, et kohalik vahemÀlu vastab hoidla sisule. Vastasel juhul vÔib teil olla vananenud pilt vÔi pilt, mis sisaldab haavatavusi.
VÔrgusild
Vaikimisi vĂ”rgu mudel, docker0, on vastuvĂ”tlik ARP-spoofing ja MAC-flooding rĂŒnnakutele. Selle probleemi lahendamiseks looge vĂ”rgu sild vastavalt oma spetsifikatsioonidele, nagu on kirjeldatud .
Docker socketi hoiatus
Ărge kunagi jagage Docker socketit konteinerisse. Vastasel juhul omab konteiner vĂ”imalust kĂ€ivitada Docker kĂ€sku ja seega suhelda hosti operatsioonisĂŒsteemiga ning seda kontrollida. Ărge tehke seda.
Docker Enterprise'i konfigureerimine
Docker Trust
Docker Trust vĂ”imaldab genereerida vĂ”tmeid, millega saab kontrollida piltide krĂŒptograafilist terviklikkust. Docker Trusti vĂ”tmeid saab kasutada Docker piltide allkirjastamiseks privaatsed vĂ”tmed, mida kontrollitakse avalikest vĂ”tmetest Notary Serveris. Lisainfot leiate . Docker Trust'i aktiveerimise protsess Enterprise Engine'is on ĂŒksikasjalikult kirjeldatud .
Haavatavuste skaneerimine
Docker Enterprise'is on sisseehitatud haavatavuste skanner, mis vÔimaldab laadida alla CVE andmebaasi offline-haavatavuste skaneerimiseks piltides. Regulaarne piltide skaneerimine aitab neid turvalisemaks muuta: kasutaja saab kohe teadlikkuse leitud haavatavustest. Lisainfot selle kohta, kuidas seda teha, leiate .
MÀrkus tÔlke kohta.: On ka Open Source haavatavuste skandereid Docker piltides, mille nÀiteid leiate materjali lÔpust.
LDAP ja UCP integreerimine
Universal Control Plane'i saab integreerida LDAP-iga. Tulemuseks on lihtsustatud autentimissĂŒsteem, mis aitab vĂ€ltida liigset dubleerimist. Lisainfot selle kohta leiate artiklist .
Muud materjalid
Rohkem informatsiooni Docker'i turvalisuse parimate praktikate kohta leiate lehelt . Samuti soovitame laadida alla .
TÔlkijalt boonus
Selle artikli loogilise tÀienduseks avaldame nimekirja 10 populaarsetest Open Source utiliitidest Docker'i turvalisuse tagamiseks. See oli laenatud (autor Bill Doerrfeld Doerrfeld.io-st).
NB: Lisage rohkem teavet paljude siin mainitud projektide kohta artiklis «».
- â varem artikli alguses mainitud skript, mis kontrollib Docker konteinerite vastavust laialt levinud turbepraktikatele.

- â vĂ”ib-olla kĂ”ige populaarsem utiliit konteinerite haavatavuste staatiliseks analĂŒĂŒsiks. Kasutab selleks arvukalt haavatavuste andmebaase CVE (sealhulgas juhtivate Linuxi distributsioonide, nagu Red Hat, Debian, Ubuntu, jĂ€lgimisliiste). Pakub arendajatele API ja lihtsat vĂ”imalust funktsioonide laiendamiseks (lisades «draivereid»). Kasutatakse populaarsetes avalikes konteinerite piltide registrites (sarnane Docker Hubiga) â Quay.io.
- â suhtlusvĂ”rgustiku turvalisuse lahendus tasemel kernel, mis pĂ”hineb BPF-pakettide filtreerimise tehnoloogial.
- â utiliit, mis analĂŒĂŒsib piltide sisu turvateabe alusel CVE andmebaasis. Lisaks vĂ”imaldab see rakendada kasutajapĂ”hiseid poliitikaid (erinevate andmete alusel, sealhulgas valged/mustad loendid, failide sisu jne) konteinerite turvalisuse hindamiseks.
- â terviklik ökosĂŒsteem turvapoliitikate loomise ja toetamise jaoks erinevates platvormides. Kontenerite kontrollimiseks pakub tööriista
oscap-docker. - â utiliit Docker konteinerite skannimiseks haavatavuste, troojalaste, viirusetĂ”rje ja pahavara leidmiseks. CVE andmebaasi kuuluvaid kontrolle toetavad OWASP sĂ”ltuvused, Red Hati Oval andmebaas ja Exploit Database'i eksploitide repositoorium.
- â Docker piltide allkirjastamise raamistik, mis loodi algselt Docker Inc poolt (ja hiljem edasi anti CNCF-le arendamiseks). Selle kasutamine vĂ”imaldab delegeerida rolle ja jagada vastutusi konteinerite kaupa ning kinnitada piltide krĂŒptograafilist terviklikkust.
- â metaandmete API, mis on loodud sisemiste turvapoliitikate haldamiseks. NĂ€iteks vĂ”imaldab see parandada konteineri turvakontrollide toimivust. Shopify kasutab seda API-d oma 500 tuhande pildi metaandmete haldamiseks.
- â Kubernetesi utiliit, mis jĂ€lgib sĂŒsteemi kĂ€itumist: konteinerites, hostides, vĂ”rgus. VĂ”imaldab seadistada pidevat kontrolli infrastruktuuris, tuvastada anomaaliaid ja saata hĂ€ireid mis tahes Linuxi sĂŒsteemikĂ”nede korral.
- â veel ĂŒks tööriist Docker-konteinerite piltide staatiliseks analĂŒĂŒsiks. VĂ”imaldab "vaadata" piltide faile, koguda vajalikke andmeid, rakendada vajalikke poliitikaid jne.
Veel ĂŒks hea valik praktilisi soovitusi kuidas Dockerit turvalisemaks teha, on leitav Aqua Security ettevĂ”ttest. Paljusid nende nĂ”uandeid ĂŒletavad eelnevalt mainitud soovitused, kuid on ka teisi. NĂ€iteks soovitavad autorid korraldada konteinerite tegevuse jĂ€lgimist ja mĂ€rgivad, millele pöörata tĂ€helepanu Docker Swarmi kasutamisel.
Neile, kes soovivad veelgi sĂŒgavamale teemasse sĂŒveneda, ilmus mullu raamat "»", mille osad on vabalt kergesti kĂ€tte saadavad .
LĂ”puks, praktilise tutvuse saamiseks mĂ”nede Docker'i turvalisuse aspektidega: Seccomp'i profiilide ja Linuxi tuuma capabilities'i kasutamine konteinerites â on vĂ”imalik lĂ€bida vastavad laboratoorsed tööd * â vt jaotist "Security".

* Selle ressursi kohta kirjutasime kaks aastat tagasi, ja novembris 2018. juhtus sellega vĂ€ga huvitav (turvalisuse seisukohalt) lugu. LĂŒhidalt öeldes suutis CyberArk Software Ltd. sellele jĂ€rele jĂ”uda: saavutada kĂ€skude tĂ€itmise vĂ”imalus konteineritest vĂ€ljaspool, s.t. host-sĂŒsteemis. SuurepĂ€rane illustreerimine Docker'i turbeprobleemist, eks? KĂ”ik ĂŒksikasjad juhtunust loe .
P.S. tÔlkijalt
Lugege ka meie blogist:
- «»;
- «»;
- «»;
- «»;
- «»;
- «».
Allikas: habr.com

