Dockeri konteinerite turvalisus

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.

Dockeri konteinerite turvalisus

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:

  1. Vajalikud meetmed host-operatsioonisĂŒsteemis Docker'i kasutamise ajal;
  2. Juhised, mis on seotud konfiguratsiooni faili ja konteinerite loomisega;
  3. 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

Dockeri turvaauditi skript 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 föderaalsed informatsiooni töötlemise standardid — 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 && reboot

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

Lisainformatsiooni saab dokumentatsioonist Docker ja Red Hat.

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

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_ID

Autoriseerimispluginatest rohkem teada saamiseks vaata dokumentatsioon.

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

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 1

SELinux

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-enable

Sellisel juhul saab Docker-konteinereid kÀivitada turvaelementidega, nÀiteks:

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

Network 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 nginx

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

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 siin. Docker Trust'i 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 offline-haavatavuste skaneerimiseks piltides. Regulaarne piltide skaneerimine aitab neid turvalisemaks muuta: kasutaja saab kohe teadlikkuse leitud haavatavustest. Lisainfot selle kohta, kuidas seda teha, leiate siin.

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

Muud materjalid

Rohkem informatsiooni Docker'i turvalisuse parimate praktikate kohta leiate lehelt docs.docker.com. Samuti soovitame laadida alla Center for Internet Security testid Docker'i jaoks.

TÔlkijalt boonus

Selle artikli loogilise tÀienduseks avaldame nimekirja 10 populaarsetest Open Source utiliitidest Docker'i turvalisuse tagamiseks. See oli laenatud teisest artiklist (autor Bill Doerrfeld Doerrfeld.io-st).

NB: Lisage rohkem teavet paljude siin mainitud projektide kohta artiklis «33+ Kubernetesi turvalisuse tööriista».

  1. Dockeri turvaauditi skript — varem artikli alguses mainitud skript, mis kontrollib Docker konteinerite vastavust laialt levinud turbepraktikatele.

    Dockeri konteinerite turvalisus

  2. Clair — 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.
  3. Cilium — suhtlusvĂ”rgustiku turvalisuse lahendus tasemel kernel, mis pĂ”hineb BPF-pakettide filtreerimise tehnoloogial.
  4. Anchore — 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.
  5. OpenSCAP Workbench — terviklik ökosĂŒsteem turvapoliitikate loomise ja toetamise jaoks erinevates platvormides. Kontenerite kontrollimiseks pakub tööriista oscap-docker.
  6. Dagda — 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.
  7. Notary — 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.
  8. Grafaes — 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.
  9. Sysdig Falco — 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.
  10. Banyanops Collector — 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 selles artiklis 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 "Docker Security: Quick Reference»", mille osad on vabalt kergesti kĂ€tte saadavad siin.

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

Dockeri konteinerite turvalisus

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

P.S. tÔlkijalt

Lugege ka meie blogist:

Allikas: habr.com

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster