Sigurnost za Docker spremnike

Bilješka. prev.: Tema Docker sigurnosti možda je jedna od vječnih u modernom IT svijetu. Stoga, bez daljnjeg objašnjenja, predstavljamo prijevod sljedećeg izbora relevantnih preporuka. Ako ste već bili zainteresirani za ovo pitanje, mnogi od njih će vam biti poznati. Samu zbirku dopunili smo popisom korisnih alata i nekoliko izvora za daljnje proučavanje problematike.

Sigurnost za Docker spremnike

Predstavljam vam vodič za osiguravanje sigurnosti Dockera. Povratne informacije su dobrodošle jer je ovo više zbirka izvadaka iz raznih izvora, a nisu svi temeljito pregledani. Preporuke su podijeljene u tri kategorije:

  1. Neophodne mjere unutar operacijskog sustava hosta pri radu s Dockerom;
  2. Upute vezane uz konfiguracijsku datoteku izgradnje i stvaranje spremnika;
  3. Sigurnosni alati koji se mogu integrirati sa specifičnim značajkama Docker Enterprisea.


Vodič se temelji na nizu izvora, od kojih su mnogi navedeni u nastavku. Nije sveobuhvatan, ali pokriva sve osnove. Dodatne informacije mogu se pronaći u opisu CIS testova (povezan na kraju ovog vodiča), kao iu dokumentaciji Dockera.

Docker sigurnosni benchmark

Docker Bench za sigurnost automatski provjerava vaš Docker prema najčešćim najboljim praksama. Skripta je dobar heuristički sigurnosni test, ali ne treba je smatrati sveobuhvatnim alatom za analizu.

Host OS

Očito, Docker spremnik ne može biti siguran osim ako sam host sustav nije siguran. Stoga je potrebno slijediti najbolju praksu u sigurnosti operacijskog sustava. Osim toga, bilo bi mudro provesti analizu ranjivosti uz sljedeće preporuke.

Pravila revizije

Stvorite i koristite pravila revizije za korištenje datoteka povezanih s Dockerom auditctl. Na primjer, možete dodati -w /usr/bin/dockerd -k docker к /etc/audit.rules i ponovno pokrenite uslugu revizije.

FIPS način rada

Omogućavanje FIPS načina prisiljava kriptografske alate da se prebace na algoritme navedene na FIPS-u (Američki Federalni standardi za obradu informacija - cca. prev.), čime je usklađen sa saveznim i industrijskim propisima i zahtjevima. Ako glavni OS podržava FIPS način rada, možete ga omogućiti pokretanjem sljedećih naredbi:

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

Također morate omogućiti FIPS u Docker Engineu:

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

Za više informacija pogledajte dokumentaciju Lučki radnik и Red Hat.

Dokerske tajne

Povjerljivi podaci moraju se čuvati kao tajna. Odgovarajuću uslugu možete pokrenuti pomoću naredbe 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

Za detalje pogledajte dokumentacija.

Docker konfiguracijska datoteka

Sljedeće postavke mogu se dodati konfiguracijskoj datoteci /etc/docker/daemon.json:

  • "icc":false — onemogućuje razmjenu podataka između spremnika kako bi se izbjeglo nepotrebno curenje informacija.
  • log-level: "info" — bilježi sve zapisnike osim onih za otklanjanje pogrešaka.
  • {
      "log-driver": "syslog",
      "log-opts": {
        "syslog-address": "udp://1.2.3.4:1111"
      }
    }

    — omogućuje daljinsko evidentiranje i prosljeđuje ih na navedenu adresu. Radi samo ako je syslog daemon pokrenut. TCP i UDP su prihvaćeni kao opcije. Također je moguće spojiti za svaki pojedini kontejner. U tu svrhu postavlja se posebna zastavica kada se Docker pokrene (--log-opt syslog-address=ADDRESS).

  • "userns-remap": "Your_User" — sprječava eskalaciju privilegija izoliranjem prostora imena za određenog korisnika.

Sigurnost transportnog sloja

Samo korisnici s pristupom vjerodajnicama TLS klijenta trebali bi se moći povezati s Docker demonom (ako je potreban udaljeni pristup).

Dodaci za autorizaciju

Odlučite koji korisnici smiju izvršavati koje naredbe i izradite odgovarajući dodatak za autorizaciju za Docker. Zatim pokrenite Docker demon i dodajte mu dodatak:

dockerd --authorization-plugin=PLUGIN_ID

Da biste saznali više o stvaranju dodataka za autorizaciju, pogledajte dokumentacija.

Daemon opcije

Docker demon radi sa zadanim skupom parametara.

  • --live-restore — ovaj parametar pomaže smanjiti vrijeme prekida rada spremnika kada se sustav isključi ili ponovno pokrene. Lakše ih je zakrpati ili ažurirati s minimalnim zastojem;
  • --userland-proxy=false — kada su ukočeni NAT-ovi dostupni ili korišteni, proxy u korisničkom prostoru postaje redundantna usluga, što samo povećava broj mogućih vektora napada;
  • --no-new-privileges — sprječava spremnike da dobiju dodatne privilegije korištenjem suid ili sguid;
  • --seccomp-profile /path/to/profile - ako imate svoj vlastiti seccomp profil, možete ga primijeniti pomoću ove oznake. Možete saznati više o Seccompu i Dockeru здесь.

Konfiguracija spremnika i datoteke za izgradnju

Stvaranje korisnika

Provjerite je li stvoren korisnik za spremnik i pokrenite ga pod tim korisnikom (NEMOJTE pokretati spremnik kao root).

Daljinski pristup

Onemogućite daljinski pristup demonu. Ako vam još treba, zaštitite ga certifikatima.

Izolirajte prostor imena korisnika

Osobito je važno osigurati da je korisnički prostor imena u Dockeru izoliran, jer se prema zadanim postavkama dijeli s prostorom imena glavnog računala. U nekim slučajevima to se može koristiti za povećanje privilegija ili čak za bijeg izvan spremnika. Možete izolirati korisnički imenski prostor uređivanjem konfiguracijske datoteke (kao što je gore opisano u odjeljku Docker konfiguracijske datoteke). Dodatno spominjanje ovog pitanja ovdje je zbog njegove važnosti.

Provjera zdravlja

Healthcheck je moćan alat koji vam omogućuje provjeru integriteta spremnika. Konfigurira se u Dockerfileu prema uputama HEALTHCHECK. Provjere stanja omogućuju vam da provjerite radi li spremnik ispravno. U donjem primjeru provjera zdravlja vraća 0 ako poslužitelj radi i 1 ako ne radi:

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

SELinux

Ako SELinux podržano od strane glavnog operativnog sustava, kreiranje ili uvoz SE pravilaLinux i pokrenite Docker u daemon načinu rada s omogućenim SE-omLinux:

docker daemon --selinux-enable

U ovom slučaju, Docker spremnici mogu se pokrenuti sa sigurnosnim postavkama, na primjer:

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

Mrežna sučelja

Prema zadanim postavkama, Docker sluša sva mrežna sučelja. Budući da se u većini slučajeva očekuje promet samo na jednom od njih, ovakav pristup nepotrebno povećava rizik od napada. Stoga, kada pokrećete spremnik, možete vezati njegove portove na određena sučelja na hostu:

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

Predmemorirane verzije slika

Prilikom preuzimanja slika provjerite odgovara li lokalna predmemorija sadržaju spremišta. U protivnom biste mogli dobiti zastarjelu verziju slike ili sliku koja sadrži ranjivosti.

Mrežni most

Zadani model mreže docker0, ranjiv je na napade kao što su ARP-spoofing i MAC-flooding. Kako biste riješili ovaj problem, izradite mrežni most prema svojim specifikacijama kao što je opisano здесь.

Upozorenje za Docker utičnicu

Nikada ne prosljeđujte Docker utičnicu unutar spremnika. U suprotnom, spremnik će moći izvršavati Docker naredbe i stoga komunicirati i kontrolirati glavni operativni sustav. Ne radi to.

Konfiguriranje Docker Enterprisea

Docker Trust

Docker Trust vam omogućuje generiranje ključeva koji se mogu koristiti za provjeru kriptografskog integriteta slika. Docker Trust ključevi mogu se koristiti za potpisivanje Docker slika s privatnim ključevima, koji se provjeravaju javnim ključevima na Notary Serveru. Dodatne informacije - здесь. Omogućavanje Docker Trusta u Enterprise Engineu detaljno je opisano u ovaj odjeljak dokumentacije.

Skeniranje ranjivosti

Docker Enterprise ima ugrađeni skener ranjivosti koji vam omogućuje preuzimanje CVE baze podataka za izvanmrežno skeniranje ranjivosti u slikama. Redovito skeniranje slika pomaže u njihovoj većoj sigurnosti: korisnik odmah prima upozorenja o pronađenim ranjivostima. Za više informacija o tome kako se to može učiniti, pogledajte здесь.

Bilješka. prev.: Tu su i Open Source skeneri za ranjivosti u Docker slikama, čiji se primjeri mogu naći na kraju materijala.

LDAP i UCP integracija

Univerzalna kontrolna ravnina može se integrirati s LDAP-om. Rezultat će biti pojednostavljeni sustav provjere autentičnosti koji izbjegava nepotrebno dupliciranje. Više o tome možete pročitati u članku Integrirajte s LDAP imenikom.

Ostali materijali

Više informacija o najboljim sigurnosnim praksama Dockera možete pronaći na docs.docker.com. Također preporučujemo preuzimanje Centar za testove internetske sigurnosti za Docker.

Prevoditeljski bonus

Kao logičan dodatak ovom članku, objavljujemo popis 10 popularnih uslužnih programa otvorenog koda za Docker sigurnost. Posuđeno je od još jedan članak (autor Bill Doerrfeld iz Doerrfeld.io).

NB: Pročitajte više o mnogim ovdje spomenutim projektima u članku “33+ sigurnosnih alata Kubernetes".

  1. Docker Bench za sigurnost je skripta već spomenuta na samom početku članka koja provjerava usklađenost Docker spremnika s uobičajenim sigurnosnim praksama.

    Sigurnost za Docker spremnike

  2. Clair — je vjerojatno najpopularniji uslužni program za statičku analizu ranjivosti u kontejneru. Koristi brojne CVE baze podataka o ranjivostima (uključujući tragače vodećih Linux-distribucije poput Red Hata, Debian, Ubuntu). Nudi API za programere i jednostavno proširenje funkcionalnosti (dodavanjem "drajvera"). Koristi se u popularnom registru slika javnih kontejnera (slično Docker Hubu) — Quay.io.
  3. Trepetljika je rješenje za osiguranje mrežne sigurnosti na razini kernela, temeljeno na BPF tehnologiji mrežnog filtriranja paketa.
  4. Sidro — uslužni program za analizu sadržaja slika na prisutnost sigurnosnih propusta na temelju CVE-a. Osim toga, omogućuje vam primjenu prilagođenih pravila (na temelju različitih podataka uključujući bijele/crne liste, sadržaj datoteka itd.) za procjenu sigurnosti spremnika.
  5. OpenSCAP Workbench — cijeli ekosustav za stvaranje i održavanje sigurnosnih politika na različitim platformama. Nudi uslužni program za provjeru spremnika oscap-docker.
  6. dagda — uslužni program za skeniranje Docker spremnika za ranjivosti, trojance, viruse i malware. CVE baze podataka uključuju provjere ovisnosti iz OWASP-a, baze podataka Red Hat Oval i spremišta eksploatacije baze podataka Exploit.
  7. Bilježnik je okvir za potpisivanje Docker slika, izvorno kreiran u Docker Inc (a zatim prebačen na razvoj u CNCF). Njegova upotreba omogućuje delegiranje uloga i raspodjelu odgovornosti među spremnicima, kao i provjeru kriptografskog integriteta slika.
  8. Grafaes — API za metapodatke, dizajniran za upravljanje internim sigurnosnim politikama. Na primjer, omogućuje vam poboljšanje performansi sigurnosnih skenera spremnika. Shopify koristi ovaj API za upravljanje metapodacima na svojih 500 slika.
  9. Sysdig Falco — Kubernetes uslužni program koji prati ponašanje sustava: aktivnost u kontejnerima, na hostovima i na mreži. Omogućuje vam konfiguriranje kontinuiranih provjera infrastrukture, otkrivanje anomalija i upozorenja za sve sistemske pozive. Linux.
  10. Banyanops kolekcionar - još jedan alat za statičku analizu slika Docker spremnika. Omogućuje vam da "pregledate" slikovne datoteke, prikupljate potrebne podatke, primjenjujete potrebna pravila itd.

Još jedna dobra zbirka praktičnih preporuka o tome kako Docker učiniti sigurnijim možete pronaći u ovaj članak Tvrtka Aqua Security. Mnogi njezini savjeti preklapaju se s onima koji su već spomenuti, ali postoje i drugi. Na primjer, autori predlažu organiziranje praćenja aktivnosti u spremnicima i ukazuju na što treba obratiti pozornost kada koristite Docker Swarm.

Za one koji žele detaljnije zaroniti u ovu temu, objavljena je prošle godine. knjiga "Docker Security: Kratka referenca», čiji su fragmenti slobodno dostupni здесь.

Konačno, za praktičan uvod u neke aspekte Docker sigurnosti: Seccomp profili i korištenje mogućnosti Linux-jezgre u kontejnerima - možete proći kroz odgovarajuće laboratorijski rad na resurs Igrajte se s Dockerom* - pogledajte odjeljak "Sigurnost".

Sigurnost za Docker spremnike

* O samom ovom resursu mi rekao prije dvije godine, odnosno u studenom 2018. dogodila mu se vrlo zanimljiva (sigurnosno gledano) priča. Ukratko, stručnjaci tvrtke CyberArk Software Ltd. uspio hakirati: postići mogućnost izvršavanja naredbi izvan spremnika, tj. na glavnom sustavu. Savršena ilustracija sigurnosnog problema u Dockeru, zar ne? Pročitajte sve detalje o tome što se dogodilo здесь.

PS od prevoditelja

Pročitajte i na našem blogu:

Izvor: www.habr.com

Kupite pouzdan hosting za stranice s DDoS zaštitom, VPS VDS poslužiteljima 🔥 Kupite pouzdan web hosting sa DDoS zaštitom, VPS VDS servere | ProHoster