Sigurnost za Docker kontejnere

Bilješka. transl.: Tema Docker sigurnosti je možda jedna od vječnih u savremenom IT svijetu. Stoga, bez dodatnog objašnjenja, predstavljamo prijevod sljedećeg izbora relevantnih preporuka. Ako ste već bili zainteresovani za ovo pitanje, mnogi od njih će vam biti poznati. Samu zbirku smo dopunili listom korisnih alata i nekoliko resursa za dalje proučavanje problema.

Sigurnost za Docker kontejnere

Predstavljam vam vodič za osiguranje Docker sigurnosti. Povratne informacije su dobrodošle, jer je ovo više zbirka izvoda iz različitih izvora, a nisu svi detaljno pregledani. Preporuke su podijeljene u tri kategorije:

  1. Neophodne mjere unutar operativnog sistema hosta pri radu sa Dockerom;
  2. Instrukcije vezane za konfiguracijsku datoteku izgradnje i kreiranje kontejnera;
  3. Sigurnosni alati koji se mogu integrirati sa specifičnim funkcijama Docker Enterprisea.


Vodič se zasniva na različitim izvorima, od kojih su mnogi navedeni u nastavku. Nije sveobuhvatan, ali pokriva sve osnove. Dodatne informacije se mogu naći u opisu CIS testova (povezan na kraju ovog vodiča), kao iu dokumentaciji Docker-a.

Docker Security Benchmark

Docker Bench za sigurnost automatski provjerava vaš Docker u odnosu na najčešće najbolje prakse. Skripta je dobar heuristički test sigurnosti, ali je ne treba smatrati sveobuhvatnim alatom za analizu.

Host OS

Očigledno, Docker kontejner ne može biti siguran osim ako sam host sistem nije siguran. Stoga je neophodno slijediti najbolju praksu u sigurnosti operativnog sistema. Osim toga, bilo bi mudro provesti analizu ranjivosti uz sljedeće preporuke.

Pravila revizije

Kreirajte i koristite pravila revizije za datoteke povezane s Dockerom auditctl. Na primjer, možete dodati -w /usr/bin/dockerd -k docker к /etc/audit.rules i ponovo pokrenite uslugu revizije.

FIPS mod

Omogućavanje FIPS načina prisiljava kriptografske alate da se prebace na algoritme s liste FIPS (Američko Federalni standardi za obradu informacija - cca. prevod), čime je u skladu sa saveznim i industrijskim propisima i zahtjevima. Ako host 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 Engine-u:

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 doker и crvena kapa.

Docker Secrets

Povjerljivi podaci moraju se čuvati kao tajna. Odgovarajuću uslugu možete pokrenuti pomoću naredbe kreiranja docker usluge:

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

Docker konfiguracijski fajl

Sljedeće postavke se mogu dodati u konfiguracijski fajl /etc/docker/daemon.json:

  • "icc":false — onemogućava razmjenu podataka između kontejnera kako bi se izbjeglo nepotrebno curenje informacija.
  • log-level: "info" — hvata sve zapise osim onih za otklanjanje grešaka.
  • {
      "log-driver": "syslog",
      "log-opts": {
        "syslog-address": "udp://1.2.3.4:1111"
      }
    }

    — omogućava 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 povezivanje za svaki određeni kontejner. U tu svrhu se postavlja posebna zastavica kada se Docker pokrene (--log-opt syslog-address=ADDRESS).

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

Sigurnost transportnog sloja

Samo korisnici s pristupom TLS klijentskim vjerodajnicama trebali bi biti u mogućnosti da se povežu na Docker demon (ako je potreban daljinski pristup).

Dodaci za autorizaciju

Odlučite kojim korisnicima je dozvoljeno da izvršavaju koje naredbe i kreirajte 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 kreiranju dodataka za autorizaciju, pogledajte dokumentaciju.

Daemon opcije

Docker daemon radi sa zadanim skupom parametara.

  • --live-restore — ovaj parametar pomaže u smanjenju vremena zastoja kontejnera kada se sistem isključi ili ponovo pokrene. Postaje lakše zakrpati ili ažurirati ih uz minimalno vrijeme zastoja;
  • --userland-proxy=false — kada su ukosni NAT-ovi dostupni ili korišćeni, proxy u korisničkom prostoru postaje redundantna usluga, što samo povećava broj mogućih vektora napada;
  • --no-new-privileges — sprečava kontejnere da steknu dodatne privilegije koristeći suid ili sguid;
  • --seccomp-profile /path/to/profile - ako imate vlastiti seccomp profil, možete ga primijeniti pomoću ove zastavice. Možete saznati više o Seccompu i Dockeru ovdje.

Konfiguracija kontejnera i datoteke za izgradnju

Kreiranje korisnika

Uvjerite se da je korisnik kreiran za kontejner i pokrenite ga pod tim korisnikom (NEmojte pokrenuti kontejner kao root).

Daljinski pristup

Onemogućite daljinski pristup demonu. Ako vam je i dalje potreban, zaštitite ga certifikatima.

Izolirajte korisnički prostor imena

Posebno je važno osigurati da je korisnički prostor imena u Docker-u izoliran, budući da se po defaultu dijeli s prostorom imena hosta. U nekim slučajevima, ovo se može koristiti za eskalaciju privilegija ili čak bijeg izvan kontejnera. Možete izolirati korisnički prostor imena uređujući konfiguracijsku datoteku (kao što je gore opisano u odjeljku Docker Configuration File). Dodatno spominjanje ovog pitanja ovdje je zbog njegove važnosti.

Provjera zdravlja

Healthcheck je moćan alat koji vam omogućava da provjerite integritet kontejnera. Konfiguriše se u Dockerfileu koristeći uputstva HEALTHCHECK. Zdravstveni pregledi vam omogućavaju da se uverite da kontejner radi ispravno. U donjem primjeru, provjera zdravlja vraća 0 ako server radi i 1 ako ne radi:

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

SELinux

Ako SELinux podržano od strane glavnog operativnog sistema, kreirajte ili uvezite SE politikuLinux i pokrenite Docker u daemon modu sa omogućenim SE-omLinux:

docker daemon --selinux-enable

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

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

Mrežni interfejsi

Docker podrazumevano sluša sva mrežna sučelja. Budući da se u većini slučajeva saobraćaj očekuje samo na jednom od njih, ovaj pristup nepotrebno povećava rizik od napada. Stoga, kada pokrećete kontejner, možete povezati njegove portove sa određenim interfejsima na hostu:

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

Keširane verzije slika

Prilikom preuzimanja slika, uvjerite se da lokalna keš memorija odgovara sadržaju spremišta. U suprotnom, možete završiti sa zastarjelom verzijom slike ili slikom koja sadrži ranjivosti.

Mrežni most

Zadani mrežni model docker0, je ranjiv na napade kao što su ARP-spoofing i MAC-flooding. Da biste riješili ovaj problem, kreirajte mrežni most prema vašim specifikacijama kako je opisano ovdje.

Docker socket upozorenje

Nikada nemojte prosljeđivati ​​Docker socket unutar kontejnera. U suprotnom, kontejner će moći da izvršava Docker komande i stoga komunicira sa operativnim sistemom domaćina i kontroliše ga. Nemoj to raditi.

Konfiguriranje Docker Enterprisea

Docker Trust

Docker Trust vam omogućava generiranje ključeva koji se mogu koristiti za provjeru kriptografskog integriteta slika. Docker Trust ključevi se mogu koristiti za potpisivanje Docker slika privatnim ključevima, koji se verificiraju javnim ključevima na Notary Serveru. Dodatne informacije - ovdje. Omogućavanje Docker Trust-a u Enterprise Engine-u je detaljno opisano u ovaj dio dokumentacije.

Skeniranje ranjivosti

Docker Enterprise ima ugrađeni skener ranjivosti koji vam omogućava preuzimanje CVE baze podataka za offline skeniranje ranjivosti na slikama. Redovno skeniranje slika pomaže da budu sigurnije: korisnik odmah prima upozorenja o pronađenim ranjivostima. Za više informacija o tome kako se to može učiniti, pogledajte ovdje.

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

LDAP i UCP integracija

Univerzalni kontrolni plan se može integrirati sa LDAP-om. Rezultat će biti pojednostavljen sistem provjere autentičnosti koji izbjegava nepotrebno dupliciranje. Više o tome možete pročitati u članku Integrirajte s LDAP direktorijem.

Ostali materijali

Više informacija o najboljim praksama sigurnosti Docker-a možete pronaći na docs.docker.com. Takođe preporučujemo preuzimanje Centar za testiranje Internet sigurnosti za Docker.

Prevoditeljski bonus

Kao logičan dodatak ovom članku, objavljujemo listu 10 popularnih programa otvorenog koda za Docker Security. Posuđen je od još jedan članak (od Billa Doerrfelda iz Doerrfeld.io).

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

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

    Sigurnost za Docker kontejnere

  2. Clair — je vjerovatno najpopularniji alat za statičku analizu ranjivosti u kontejneru. Koristi brojne CVE baze podataka o ranjivostima (uključujući tragače vodećih Linux-distribucije kao što je Red Hat, 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. cilium je rješenje za osiguranje mrežne sigurnosti na nivou kernela, bazirano na BPF tehnologiji filtriranja mrežnih paketa.
  4. Sidro — uslužni program za analizu sadržaja slika na prisustvo sigurnosnih propusta zasnovanih na CVE-u. Pored toga, omogućava vam da primenite prilagođena pravila (na osnovu različitih podataka uključujući bele/crne liste, sadržaj fajla, itd.) da biste procenili bezbednost kontejnera.
  5. OpenSCAP Workbench — cijeli ekosistem za kreiranje i održavanje sigurnosnih politika na različitim platformama. Nudi uslužni program za provjeru kontejnera oscap-docker.
  6. dagda — uslužni program za skeniranje Docker kontejnera na ranjivosti, trojance, viruse i zlonamjerni softver. CVE baze podataka uključuju provjere ovisnosti iz OWASP-a, Red Hat Oval baze podataka i Exploit Database exploit repozitorija.
  7. Notar je okvir za potpisivanje Docker slika, prvobitno kreiran u Docker Inc (a zatim prebačen za razvoj u CNCF). Njegova upotreba vam omogućava delegiranje uloga i distribuciju odgovornosti među kontejnerima, kao i provjeru kriptografskog integriteta slika.
  8. Grafaes — API za metapodatke, dizajniran za upravljanje internim sigurnosnim politikama. Kao primjer, omogućava vam da poboljšate performanse sigurnosnih skenera kontejnera. Shopify koristi ovaj API za upravljanje metapodacima na svojih 500 slika.
  9. Sysdig Falco — Kubernetes uslužni program koji prati ponašanje sistema: aktivnost u kontejnerima, na hostovima i na mreži. Omogućava vam konfigurisanje kontinuiranih provjera infrastrukture, otkrivanje anomalija i upozorenja za sve sistemske pozive. Linux.
  10. Banyanops Collector - još jedan alat za statičku analizu slika Docker kontejnera. Omogućava vam da “progledate” u slikovne datoteke, prikupljate potrebne podatke, primjenjujete potrebna pravila itd.

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

Za one koji žele detaljnije da se pozabave ovom temom, objavljena je prošle godine. knjiga "Docker Security: Brzi vodič», čiji su fragmenti slobodno dostupni ovdje.

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 Igraj s Dockerom* - pogledajte odeljak „Sigurnost“.

Sigurnost za Docker kontejnere

* O samom ovom resursu mi rekao je prije dvije godine, au novembru 2018. dogodila mu se vrlo zanimljiva (sa sigurnosnog stanovišta) priča. Ukratko, stručnjaci iz CyberArk Software Ltd. uspio ga hakovati: postići mogućnost izvršavanja komandi izvan kontejnera, tj. na host sistemu. Savršena ilustracija sigurnosnog problema u Dockeru, zar ne? Pročitajte sve detalje o tome šta se dogodilo ovdje.

PS od prevodioca

Pročitajte i na našem blogu:

izvor: www.habr.com

Kupite pouzdan hosting za sajtove sa DDoS zaštitom, VPS VDS servere 🔥 Kupite pouzdan web hosting sa DDoS zaštitom, VPS VDS servere | ProHoster