Siguria për konteinerët Docker

Shën. përkth.: Tema e sigurisë së Docker-it, ndoshta, është një nga temat e përhershme në botën e TI-së sot. Prandaj, pa shpjegime të tepërta, paraqesim përkthimin e një tjetër koleksioni të rekomandimeve përkatëse. Nëse keni qenë të interesuar për këtë çështje, shumica e tyre do të ju duken të njohura. Ndërsa koleksioni është plotësuar me një listë të utiliteteve të dobishme dhe disa burime për studim të mëtejshëm të çështjes.

Siguria për konteinerët Docker

Sugjeroj një udhëzues për sigurimin e Docker-it. Rekomandimet priten, pasi ky është më shumë një mbledhje fragmentesh nga burime të ndryshme dhe jo të gjitha ato janë verifikuar në mënyrë të hollësishme. Rekomandimet janë të ndara në tri kategori:

  1. Masat e nevojshme brenda sistemit operativ të hostit kur punoni me Docker-in;
  2. Mënyrat që lidhen me skedarin e konfigurimit të ndërtimit dhe krijimin e konteinerëve;
  3. Mjetet për siguri që mund të integrohen me funksionalitetet specifike të Docker Enterprise.


Për udhëzuesin, janë përdorur burime të ndryshme, shumë prej të cilave janë të renditura më poshtë. Nuk mund ta quajmë si plotësues, megjithatë, mbulon të gjitha bazat. Informacione shtesë mund të gjenden në përshkrimin e testeve CIS (linku është i dhënë në fund të këtij udhëzuesi), si dhe në dokumentacionin e Docker-it.

Docker Security Benchmark

Docker Bench for Security verifikon automatikisht Docker-in tuaj për përputhshmërinë me praktikat më të zakonshme më të mira. Skripti shërben si një test i mirë heuristik për sigurinë, megjithatë nuk duhet konsideruar si një mjet për analizë të gjithanshme.

OS i hostit

Evident është se një konteiner Docker nuk mund të jetë i sigurt, nëse vetë sistemi i hostit nuk është i sigurt. Prandaj është e nevojshme të ndiqni praktikat më të mira në fushën e sigurisë së sistemeve operative. Për më tepër, do të ishte e arsyeshme të kryeni një analizë të dobësive, përveç rekomandimeve të mëposhtme.

Rregullat e auditit

Krijoni dhe përdorni rregulla auditimi për skedarët që lidhen me Docker-in, duke përdorur auditctl. Për shembull, mund të shtoni -w /usr/bin/dockerd -k docker në /etc/audit.rules dhe riaktivizoni shërbimin e auditit.

ReĆŸimi FIPS

Aktivizimi i modit FIPS bĂ«n qĂ« mjetet kriptografike tĂ« kalojnĂ« nĂ« algoritme tĂ« pĂ«rfshira nĂ« FIPS (standarde amerikane Federal Information Processing Standards — shĂ«n. pĂ«rkth.), duke pĂ«rputhje me normat dhe kĂ«rkesat federale dhe ato tĂ« industrisĂ«. NĂ«se OS e hostit mbĂ«shtet modalitetin FIPS, mund ta aktivizoni duke ekzekutuar komandat e mĂ«poshtme:

sed -i 's/GRUB_CMDLINE_LINUX="/GRUB_CMDLINE_LINUX="fips=1 /g' /etc/default/grub
grub2-mkconfig -o /boot/grub2/grub.cfg && reboot

Gjithashtu, është e nevojshme të aktivizoni FIPS në Docker Engine:

mkdir -p /etc/systemd/system/docker.service.d 2>&1; echo -e "[Service]
 Environment="DOCKER_FIPS=1"" > /etc/systemd/system/docker.service.d/fips-module.conf; systemctl daemon-reload; systemctl restart docker

Për më shumë informacion, shihni dokumentacionin Docker dhe Red Hat.

Docker Secrets

Të dhënat konfidenciale duhen ruajtur si sekrete. Mund ta aktivizoni shërbimin përkatës me komandën 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

Për detaje, shihni dokumentacionin.

Skeda e konfigurimit të Docker-it

Saset e mëposhtme mund të shtohen në skedën e konfigurimit /etc/docker/daemon.json:

  • "icc":false — ndalon ndarjen e tĂ« dhĂ«nave midis konteinerĂ«ve pĂ«r tĂ« shmangur rrjedhjen e padĂ«shiruar tĂ« informacionit.
  • log-level: "info" — kap tĂ« gjitha logjet pĂ«rveç atyre pĂ«r debug.
  • {
      "log-driver": "syslog",
      "log-opts": {
        "syslog-address": "udp://1.2.3.4:1111"
      }
    }

    — aktivizon regjistrimin e largĂ«t tĂ« logjeve, duke i dĂ«rguar ato nĂ« adresĂ«n e specifikuar. Funksionon vetĂ«m nĂ«se Ă«shtĂ« aktivizuar demon-i syslog. Pranohet edhe TCP dhe UDP. Po ashtu, Ă«shtĂ« e mundur lidhja pĂ«r secilin konteiner tĂ« veçantĂ«. PĂ«r kĂ«tĂ«, duhet tĂ« vendoset njĂ« flamur tĂ« veçantĂ« gjatĂ« aktivizimit tĂ« Docker-it (--log-opt syslog-address=ADDRESS).

  • "userns-remap": "Your_User" — parandalon rritjen e privilegjeve (privilege escalation), duke izoluara hapĂ«sirĂ«n e emrave pĂ«r njĂ« pĂ«rdorues tĂ« caktuar.

Siguria e nivelit të transportit

Aftësia për t'u lidhur me demonin e Docker-it (nëse është e nevojshme qasje e largët) duhet të jetë vetëm për përdoruesit me qasje në kredencialet e TLS-client.

Plugins për autorizim

Vendosni se cilëve përdorues u lejohet të ekzekutojnë cilat komanda dhe krijoni një plugin përkatës për autorizimin për Docker-in. Më pas, aktivizoni demonin e Docker-it dhe shtoni plugin-in:

dockerd --authorization-plugin=PLUGIN_ID

Për të mësuar më shumë rreth krijimit të plugins për autorizim, shihni në dokumentacionin.

Parametrat e demonit

Demoni i Docker-it funsionon me një grup parametrash të parazgjedhur.

  • --live-restore — ky parametr ndihmon nĂ« reduktimin e kohĂ«s sĂ« ndĂ«rprerjes pĂ«r konteinerĂ«t gjatĂ« ndalimit ose rinisjes sĂ« sistemit. BĂ«het mĂ« e lehtĂ« pĂ«r t'i patch-uar ose pĂ«rditĂ«suar me intervista minimale;
  • --userland-proxy=false — kur janĂ« tĂ« disponueshme ose pĂ«rdoren hairpin NAT, proxy nĂ« hapĂ«sirĂ«n e pĂ«rdoruesit bĂ«het njĂ« shĂ«rbim i tepĂ«rt, i cili vetĂ«m rrit numrin e mundshĂ«m tĂ« vektorĂ«ve tĂ« sulmit;
  • --no-new-privileges — parandalon marrjen e privilegjeve shtesĂ« nga kontejnerĂ«t pĂ«rmes suid ose sguid;
  • --seccomp-profile /path/to/profile — nĂ«se keni njĂ« profil seccomp tĂ« vetin, mund ta aplikoni me kĂ«tĂ« flag. MĂ«soni mĂ« shumĂ« pĂ«r Seccomp dhe Dockerin mundeni kĂ«tu.

Konfigurimi i kontejnerëve dhe skedarëve të ndërtimit

Krijimi i përdoruesit

Sigurohuni që për kontejnerin të jetë krijuar një përdorues dhe ta nisni atë nën këtë përdorues (MOS e nisni kontejnerin si root).

Aksesi i largët

Ndalo aksesin e largët në demon. Nëse është e nevojshme, mbrojeni atë me certifikata.

Izoloni hapësirën e emrave të përdoruesit

ËshtĂ« veçanĂ«risht e rĂ«ndĂ«sishme tĂ« sigurohet qĂ« hapĂ«sira e emrave tĂ« pĂ«rdoruesit nĂ« Docker tĂ« jetĂ« e izoluar, pasi sipas parazgjedhjes ajo pĂ«rdoret bashkĂ« me hapĂ«sirĂ«n e emrave tĂ« hostit. NĂ« disa raste, kjo mund tĂ« shfrytĂ«zohet pĂ«r tĂ« rritur privilegjet ose madje pĂ«r tĂ« dalĂ« jashtĂ« kontejnerit. HapĂ«sira e pĂ«rdoruesit mund tĂ« izolohet duke edituar skedarin e konfigurimit (siç pĂ«rshkruhet mĂ« lart nĂ« seksionin "Skedari i konfigurimit tĂ« Docker"). NjĂ« pĂ«rmendje e kĂ«tij problemi aty Ă«shtĂ« bĂ«rĂ« pĂ«r shkak tĂ« rĂ«ndĂ«sisĂ« sĂ« tij.

Kontrolli i shëndetit

Kontrolli i shëndetit (healthcheck) është një mjet i fuqishëm, që lejon të kontrollohet integriteti i kontejnerit. Ai konfigurtohet në Dockerfile me udhëzimin HEALTHCHECK. Kontrollimi i shëndetit lejon të sigurohuni që kontejneri po funksionon siç duhet. Në shembullin më poshtë, kontrolli i shëndetit përfundon me 0, nëse serveri është në funksionim, dhe 1, nëse ai "ka rënë":

HEALTHCHECK CMD curl --fail http://localhost || exit 1

SELinux

Nëse SELinux mbështetet nga sistemi operativ i hostit, krijoni ose importoni politikën SELinux dhe nisni Docker-in në modalitetin demon me SELinux të aktivizuar:

docker daemon --selinux-enable

Në këtë rast, kontejnerët Docker mund të nisen me parametra sigurie, për shembull:

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

Ndërfaqet rrjetike

Sipas parazgjedhjes, Docker dëgjon të gjitha ndërfaqet rrjetë. Duke pasur parasysh se në shumicën e rasteve trafiku pritet vetëm në një prej tyre, një qasje e tillë rrit padrejtësisht rrezikun e sulmit. Pra, kur të nisni kontejnerin, mund të lidheni portet e tij me ndërfaqe specifike në host:

docker run --detach --publish 10.2.3.4:49153:80 nginx

Versionet e ruajtur të imazheve

Kur shkarkoni imazhe, sigurohuni qĂ« keßi lokal tĂ« pĂ«rputhet me pĂ«rmbajtjen e depoit. NĂ« tĂ« kundĂ«rt, mund tĂ« merrni njĂ« version tĂ« vjetruar tĂ« imazhit ose njĂ« imazh qĂ« pĂ«rmban vulnerabilitete.

Ura rrjetë

Modeli i rrjetit default, docker0, është i prekshëm ndaj sulmeve të tipit ARP-spoofing dhe MAC-flooding. Për të zgjidhur këtë problem, krijoni një urë rrjeti sipas specifikimeve tuaja, siç është përshkruar këtu.

Paralajmërim për soketin e Dockerit

Mos prokuroni kurrë soketin e Dockerit brenda enëve. Ndryshe, enën do të ketë mundësinë të ekzekutojë komanda Dockeri dhe, si pasojë, të komunikojë me sistemin operativ të hostit dhe ta kontrollojë atë. Mos e bëni këtë.

Konfigurimi i Docker Enterprise

Docker Trust

Docker Trust lejon gjenerimin e çelĂ«save, me ndihmĂ«n e tĂ« cilĂ«ve mund tĂ« verifikoni integritetin kriptografik tĂ« imazheve. ÇelĂ«sat e Docker Trust mund tĂ« pĂ«rdoren pĂ«r tĂ« nĂ«nshkruar imazhe Docker me çelĂ«sa privatĂ«, tĂ« cilĂ«t verifikohen me çelĂ«sa publikĂ« nĂ« Notary Server. Informacione tĂ« mĂ«tejshme - kĂ«tu. Aktivizimi i Docker Trust nĂ« Enterprise Engine Ă«shtĂ« pĂ«rshkruar nĂ« detaje nĂ« kĂ«tĂ« seksion tĂ« dokumentacionit.

Skaneo vulnerabilitetet

Në Docker Enterprise ka një skaner të integruar të vulnerabiliteteve, që mundëson ngarkimin e bazës CVE për skanimin offline të vulnerabiliteteve në imazhe. Skanimi i rregullt i imazheve ndihmon në rritjen e sigurisë së tyre: përdoruesi merr menjëherë paralajmërime për vulnerabilitetet e gjetura. Më shumë rreth mënyrës se si mund të bëhet kjo, shihni këtu.

Shën. përkth.: Ekzistojnë gjithashtu skanerë të vulnerabiliteteve Open Source në imazhet Docker, shembujt e të cilëve janë paraqitur në fund të materialit.

Integrimi i LDAP dhe UCP

Universal Control Plane mund të integrohet me LDAP. Rezultati do të jetë një sistem i thjeshtëzuar autentikimi që lejon shmangien e dublimeve të panevojshme. Më shumë rreth kësaj mund të lexoni në artikullin Integrate with an LDAP directory.

Materiale të tjera

Informacione të tjera për praktikat më të mira në fushën e sigurisë së Docker mund të gjeni në docs.docker.com. Gjithashtu rekomandojmë shkarkimin e testeve të Center for Internet Security për Docker.

Bonus nga përkthyesi

Si një shtesë logjike për këtë artikull, po publikojmë një listë me 10 mjete Open Source të njohura për sigurinë në Docker. Ajo është marrë nga një artikull tjetër (nga Bill Doerrfeld nga Doerrfeld.io).

NB: Më shumë rreth shumë prej projekteve të përmendura këtu, lexoni gjithashtu në artikullin «33+ mjete për sigurinë e Kubernetes».

  1. Docker Bench for Security — skripta e pĂ«rmendur nĂ« fillim tĂ« artikullit qĂ« kontrollon kontejnerĂ«t Docker pĂ«r t'u pĂ«rputhur me praktikat e zakonshme tĂ« sigurisĂ«.

    Siguria për konteinerët Docker

  2. Clair — ndoshta utilita mĂ« e njohur pĂ«r analizĂ«n statike tĂ« dobĂ«sive nĂ« kontejner. PĂ«rdor pĂ«r kĂ«tĂ« shumĂ« baza dobĂ«sish CVE (duke pĂ«rfshirĂ« ndjekĂ«sit e shpĂ«rndarjeve kryesore tĂ« Linux, si Red Hat, Debian, Ubuntu). Ofron API pĂ«r zhvilluesit dhe njĂ« mundĂ«si tĂ« thjeshtĂ« pĂ«r tĂ« zgjeruar funksionalitetin (nĂ«pĂ«rmjet shtimit tĂ« “drejtorĂ«ve”). PĂ«rdoret nĂ« regjistrin publik tĂ« njohur tĂ« imazheve tĂ« kontejnerĂ«ve (analog i Docker Hub) — Quay.io.
  3. Cilium — njĂ« zgjidhje pĂ«r sigurimin e sigurisĂ« rrjetĂ«rore nĂ« nivelin e kernelit, e bazuar nĂ« teknologjinĂ« e filtrimit tĂ« paketave rrjetĂ«rore BPF.
  4. Anchore — njĂ« utilitĂ« pĂ«r analizimin e pĂ«rmbajtjes sĂ« imazheve pĂ«r dobĂ«si tĂ« sigurisĂ« sipas bazĂ«s CVE. PĂ«r mĂ« tepĂ«r, ajo lejon aplikimin e politikave tĂ« pĂ«rdoruesve (tĂ« bazuara nĂ« tĂ« dhĂ«na tĂ« ndryshme, duke pĂ«rfshirĂ« lista tĂ« bardha/tĂ« zeza, pĂ«rmbajtjen e skedarĂ«ve etj.) pĂ«r tĂ« vlerĂ«suar sigurinĂ« e kontejnerĂ«ve.
  5. OpenSCAP Workbench — njĂ« ekosistem e tĂ«rĂ« pĂ«r krijimin dhe mbĂ«shtetje tĂ« politikave tĂ« sigurisĂ« nĂ« platforma tĂ« ndryshme. PĂ«r tĂ« kontrolluar kontejnerĂ«t ofron utilitĂ«n oscap-docker.
  6. Dagda — njĂ« utilitĂ« pĂ«r skanimin e kontejnerĂ«ve Docker pĂ«r dobĂ«si, trojanĂ«, viruse dhe malware. NĂ« bazat CVE pĂ«rfshihen kontrollet pĂ«r varĂ«si nga OWASP, baza Red Hat Oval, repositori i eksploiteve Exploit Database.
  7. Notary — njĂ« kornizĂ« pĂ«r nĂ«nshkrimin e imazheve Docker, e krijuar fillimisht nĂ« Docker Inc (dhe mĂ« pas e transferuar nĂ« zhvillim nĂ« CNCF). PĂ«rdorimi i saj lejon delegimin e rolle dhe shpĂ«rndarjen e pĂ«rgjegjĂ«sive pĂ«r kontejnerĂ«t, si dhe verifikimin e integritetit kriptografik tĂ« imazheve.
  8. Grafaes — API pĂ«r metadatat, qĂ« synon menaxhimin e politikave tĂ« brendshme tĂ« sigurisĂ«. Si njĂ« shembull, ajo lejon pĂ«rmirĂ«simin e funksionimit tĂ« skanerĂ«ve tĂ« sigurisĂ« sĂ« kontejnerĂ«ve. Shopify pĂ«rdor kĂ«tĂ« API pĂ«r menaxhimin e metadatat mbi 500 mijĂ« imazhe tĂ« saj.
  9. Sysdig Falco — njĂ« utilitĂ« pĂ«r Kubernetes, qĂ« ndjek sjelljen e sistemit: aktivitetin nĂ« kontejnerĂ«, nĂ« hoste, nĂ« rrjet. Lejon konfigurimin e kontrollimeve tĂ« vazhdueshme nĂ« infrastrukturĂ«, zbulimin e anomali dhe dĂ«rgimin e alarmeve pĂ«r çdo thirrje sistemore tĂ« Linux.
  10. Banyanops Collector — njĂ« tjetĂ«r mjet pĂ«r analizĂ«n statike tĂ« imazheve tĂ« kontejnerĂ«ve Docker. Lejon "tĂ« shikosh" brenda skedarĂ«ve tĂ« imazhit, duke mbledhur tĂ« dhĂ«nat e nevojshme, duke aplikuar politikat e duhura etj.

Një tjetër përmbledhje e mirë e rekomandimeve praktike për atë se si ta bëni Docker më të sigurt, mund të gjeni në këto artikuj kompaninë Aqua Security. Shumë nga këshillat e saj përputhen me ato që u përmendën më sipër, por ka edhe të tjera. Për shembull, autorët sugjerojnë të organizoni monitorimin e aktivitetit në kontejnerët dhe theksojnë çfarë duhet të kushtoni vëmendje gjatë përdorimit të Docker Swarm.

Për ata që duan të thellohen më shumë në këtë temë, vitin e kaluar doli libri "Docker Security: Quick Reference»", fragmente të cilit janë lehtësisht të qasshme këtu.

SĂ« fundmi, pĂ«r njĂ« njohje praktike me disa aspekte tĂ« sigurisĂ« nĂ« Docker: profillet Seccomp dhe pĂ«rdorimin e capabilities tĂ« bĂ«rthamĂ«s Linux nĂ« kontejnerĂ« — mund tĂ« bĂ«ni laboratorĂ«t pĂ«rkatĂ«s nĂ« burimin Play with Docker * — shihni seksionin "Security."* PĂ«r kĂ«tĂ« burim vetĂ« ne

Siguria për konteinerët Docker

dy vjet më parë, dhe në nëntor 2018 ndodhi një histori shumë interesante (nga perspektiva e sigurisë) me të. Nëse për pushtim të shkurtër, specialistët nga CyberArk Software Ltd. arritën ta hakin: të merrnin mundësinë për të përfunduar komanda përtej kontejnerëve, dmth. në sistemin host. Një ilustim i shkëlqyer i problematikës së sigurisë në Docker, apo jo? Për të gjitha detajet e ndodhisë lexoni treguam Docker dhe Kubernetes në mjedise kërkuese për siguri këtu.

P.S. nga përkthyesi

Lexoni gjithashtu në blogun tonë:

Burimi: habr.com

Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster