Turvalisus Docker konteinerite jaoks

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.

Turvalisus Docker konteinerite jaoks

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:

  1. TĂ€htsad meetmed host-operatsioonisĂŒsteemis Dockeriga töötamisel;
  2. Juhised, mis puudutavad koostamisfaili konfiguratsiooni ja konteinerite loomist;
  3. 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

Docker Bench for Security 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 Föderaalsed teabe töötlemise standardid — 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 && reboot

FIPS 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 docker

TĂ€iendavateks teadeteks vaadake dokumentatsiooni Docker ja Red Hat.

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 dokumentatsioonis.

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_ID

Rohkem teavet autentimispluginode loomisest leiate dokumentatsioonis.

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 siit.

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 1

SELinux

Kui SELinuxit toetatakse hostoperatsioonisĂŒsteemis, looge vĂ”i importige SELinuxi poliitika ja kĂ€itage Docker demonereĆŸiimis, kus SELinux on lubatud:

docker daemon --selinux-enable

Sellel juhul saab Docker-konteinereid kÀivitada turvaparameetritega, nÀiteks:

docker run --interactive --tty --security-opt label=level:TopSecret centos /bin/bash

VÔ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 nginx

VahemÀ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 siit.

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 — siitDocker Trusti aktiveerimise protsess Enterprise Engine'is on ĂŒksikasjalikult kirjeldatud selles dokumentatsiooni osas.

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. siit.

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 Integrate with an LDAP directory.

Muud materjalid

Lisa teavet Docker'i turvapraktikate kohta leiate docs.docker.com. Soovitame ka alla laadida Center for Internet Security testid Dockerile.

TÔlkija boonus

Loogilise jÀtkuna sellele artiklile avaldame nimekirja 10 populaarseimast Open Source-tööriistast, mis tagavad Docker'i turvalisuse. See on laenatud teisest artiklist (autoriks Bill Doerrfeld Doerrfeld.io-st).

NB: Rohkem teavet paljude siin mainitud projektide kohta leiate ka artiklist „33+ Kubernetes'i turbe tööriista».

  1. Docker Bench for Security — juba mainitud artikli alguses olev skript, mis kontrollib Docker'i konteinerite vastavust levinud turvapraktikatele.

    Turvalisus Docker konteinerite jaoks

  2. Clair — 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.
  3. Cilium — tuum lahendus, mis tagab tuumtaseme vĂ”rgu turvalisuse, pĂ”hinedes BPF vĂ”rgufiltreerimise tehnoloogial.
  4. Anchore — 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.
  5. OpenSCAP Workbench — terve ökosĂŒsteem turvapoliitikate loomiseks ja haldamiseks erinevates platvormides. Konteinerite kontrollimiseks pakub utiliiti oscap-docker.
  6. Dagda — 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.
  7. Notary — 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.
  8. Grafaes — 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.
  9. Sysdig Falco — 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.
  10. Banyanops Collector — 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 selles artiklis 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 «Docker Security: Quick Reference», mille lĂ”igud on vabalt kĂ€ttesaadavad siit.

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 Play with Docker* — vt jaotist «Security».

Turvalisus Docker konteinerite jaoks

* Selle ressursi kohta kirjutasime me olen rÀÀkinud 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 siit.

P.S. tÔlkija mÀrkused

Lugege ka meie blogist:

Allikas: habr.com

Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster