Shën. përk.: Tema e sigurisë Docker, ndoshta, është njëra nga temat e përjetshme në botën moderne IT. Prandaj, pa shpjegime të tepërta prezantojmë përkthimin e një koleksioni përkatës rekomandimesh. Nëse keni qenë të interesuar për këtë çështje, shumica e tyre do t'ju jenë të njohura. Ndërsa koleksioni e kemi plotësuar me një listë të mjeteve të dobishme dhe disa burime për studime të mëtejshme mbi këtë çështje.

Shtroj për vëmendjen një udhëzues për sigurimin e Docker. Feedback-u është i mirëpritur, pasi kjo është më së shumti një grumbull i fragmenteve nga burime të ndryshme, dhe jo të gjitha ato kanë kaluar një kontroll të hollësishëm. Rekomandimet janë të ndara në tri kategori:
- Masat e nevojshme brenda sistemit operativ të hostit kur punoni me Docker;
- Udhëzime që ndodhen në skedarin e konfiguracionit të ndërtimit dhe krijimin e konteinerëve;
- Mjetet për siguri që mund të integrohen me funksionet specifike të Docker Enterprise.
Burimi për udhëzimin është një sërë burimesh, shumë nga të cilat janë të listuara më poshtë. Nuk mund të quhet përfundimtar, megjithatë mb-cover të gjitha bazat. Informacione të tjera mund të gjenden në përshkrimin e testeve CIS (lidhja është dhënë në fund të këtij udhëzimi), si dhe në dokumentacionin për Docker-in.
Docker Security Benchmark
automatikisht konteston Docker-in tuaj për t'u siguruar se përputhet me praktikat më të zakonshme. Skripti shërben si një test heuristik i sigurisë, megjithatë nuk duhet të merret si një vegël për analizën e plotë.
Sistemi operativ i hostit
Evident është se një kontejner 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 për sigurimin e sistemeve operative. Për më tepër, do të ishte e arsyeshme të bëhet një analizë e dobësive përveç rekomandimeve të mëposhtme.
Rregullat e auditimit
Krijoni dhe përdorni rregulla auditimi për skedarët që lidhin me Docker-in, duke përdorur auditctl. Për shembull, mund të shtoni -w /usr/bin/dockerd -k docker për /etc/audit.rules dhe rini shërbimin e auditit.
Rezhimi FIPS
Aktivizimi i modes FIPS bĂ«n qĂ« mjetet kriptografike tĂ« kalojnĂ« nĂ« algoritmet e pĂ«rfshira nĂ« FIPS (amerikane â shĂ«nim i pĂ«rkthyesit.), duke pĂ«rmbushur, kĂ«shtu, normat dhe kĂ«rkesat federale dhe tĂ« sektorit. NĂ«se sistemi operativ i hostit mbĂ«shtet modin FIPS, mund tĂ« aktivizohet 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 && rebootPo ashtu, është e nevojshme të aktivizohet FIPS në Docker Engine:
mkdir -p /etc/systemd/system/docker.service.d 2>&1; echo -e "[Shërbimi]n Ambient="DOCKER_FIPS=1"" > /etc/systemd/system/docker.service.d/fips-module.conf; systemctl daemon-reload; systemctl restart dockerPër informacione të tjera, shihni dokumentacionin dhe .
Sekretet e Docker
Të dhënat konfidenciale duhet të ruhen si sekrete. Shërbimin përkatës mund ta aktivizoni 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 nginxPër detajet, shihni në .
Skedari i konfigurimit të Docker-it
Për konfigurim mund të shtoni cilësimet e mëposhtme në skedarin e konfigurimit /etc/docker/daemon.json:
-
"icc":falseâ ç aktivizon shkĂ«mbimin e tĂ« dhĂ«nave midis kontejnerĂ«ve, pĂ«r tĂ« shmangur rrjedhjen e padĂ«shiruar tĂ« informacionit. -
log-level: "info"â kap tĂ« gjitha log-et pĂ«rveç atyre tĂ« ndihmĂ«s. { "log-driver": "syslog", "log-opts": { "syslog-address": "udp://1.2.3.4:1111" } }â lidh remote logging, duke i dĂ«rguar ato nĂ« adresĂ«n e specifikuar. Funksionon vetĂ«m nĂ«se Ă«shtĂ« nisur demon syslog. Mbeshtet opsionet TCP dhe UDP. PĂ«rdorimi i njĂ« lidhjeje pĂ«r çdo kontejner specifik Ă«shtĂ« gjithashtu e mundur. PĂ«r kĂ«tĂ«, pĂ«rfshihet njĂ« flamur i veçantĂ« gjatĂ« nisjes sĂ« Dockerâit (
--log-opt syslog-address=ADRESA).-
"userns-remap": "PĂ«rdoruesi_Juaj"â parandalon rritjen e privilegjeve (privilege escalation) duke izoluari hapĂ«sirĂ«n e emrave pĂ«r njĂ« pĂ«rdorues tĂ« caktuar.
Siguria e nivelit të transportit
PĂ«rparĂ«sia pĂ«r t'u lidhur me demonin e Dockerâit (nĂ«se Ă«shtĂ« e nevojshme qasja nĂ« distancĂ«) duhet tĂ« jetĂ« vetĂ«m pĂ«r pĂ«rdoruesit me qasje nĂ« kredencialet e TLS-klientit.
Plugins të autorizimit
Vendosni pĂ«r cilĂ«t pĂ«rdorues cila komanda duhet tĂ« jetĂ« e lejuar dhe krijoni pluginin pĂ«rkatĂ«s tĂ« autorizimit pĂ«r Dockerâit. Pastaj, nisni demonin e Dockerâit dhe sillni pluginin:
dockerd --authorization-plugin=PLUGIN_IDPër të mësuar më shumë rreth krijimit të plugins të autorizimit, shih në .
Parametrat e demonit
Demoni i Dockerâit funksionon me njĂ« set parametrash tĂ« parazgjedhur.
-
--live-restoreâ ky kyç Ă«shtĂ« ndihmon pĂ«r tĂ« reduktuar kohĂ«n e ndĂ«rprerjeve tĂ« kontejnerĂ«ve gjatĂ« fikjes ose riciklimit tĂ« sistemit. BĂ«n mĂ« tĂ« lehtĂ« patchimin ose pĂ«rditĂ«simin e tyre me pak ndĂ«rprerje; -
--userland-proxy=falseâ kur janĂ« tĂ« disponueshme ose pĂ«rdoren NAT tĂ« tipit hairpin, proxy nĂ« hapĂ«sirĂ«n e pĂ«rdoruesit bĂ«het njĂ« shĂ«rbim i tepĂ«rt, i cili vetĂ«m rrit numrin e mundĂ«sive pĂ«r sulm; -
--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Ă« zakonshĂ«m, mund ta aplikoni atĂ« me kĂ«tĂ« flamur. MĂ«soni mĂ« shumĂ« rreth Seccomp dhe Docker .
Konfigurimi i kontejnerëve dhe skedarëve të ndërtimit
Krijimi i përdoruesit
Sigurohuni që një përdorues të jetë krijuar për kontejnerin dhe ta ekzekutoni atë nën këtë përdorues (MOS e filloni kontejnerin si root).
Qasja e largët
Ndaloni qasjen e largët në demon. Nëse gjithsesi është e nevojshme, mbrojeni atë me certifikata.
Izoloni hapësirën e emrave të përdoruesve
ĂshtĂ« veçanĂ«risht e rĂ«ndĂ«sishme tĂ« sigurohet qĂ« hapĂ«sira e emrave tĂ« pĂ«rdoruesit nĂ« Docker tĂ« izolohet, pasi pĂ«r default ajo ndahet 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Ă« pĂ«rtej kontejnerit. HapĂ«sira e emrave tĂ« pĂ«rdoruesit mund tĂ« izolohet duke redaktuar skedarin e konfigurimit (siç pĂ«rshkruhet mĂ« sipĂ«r nĂ« seksionin "Skedari i konfigurimit tĂ« Dockerâit"). PĂ«rdorimi i kĂ«saj çështjeje kĂ«tu Ă«shtĂ« i justifikuar nga rĂ«ndĂ«sia e saj.
Kontrolli i shëndetit
Kontrolli i shëndetit (healthcheck) është një mjet i fuqishëm që lejon kontrollin e integritetit të kontejnerit. Ai konfigurtohet në Dockerfile me ndihmën e udhëzimit HEALTHCHECK. Kontrolli i shëndetit lejon të sigurohet që kontejneri funksionon siç duhet. Në shembullin e mëposhtëm, kontrolli përfundon me 0 nëse serveri është aktiv dhe 1 nëse ai "ka rënë":
HEALTHCHECK CMD curl --fail http://localhost || exit 1SELinux
Nëse SELinux mbështetet nga sistemi operativ i hostit, krijoni ose importoni një politikë SELinux dhe jepni komandën Docker në modalitetin demon me SELinux të aktivizuar:
docker daemon --selinux-enableNë këtë rast, konteineret Docker mund të ekzekutohen me parametra sigurie, për shembull:
docker run --interactive --tty --security-opt label=level:TopSecret centos /bin/bashInterface të rrjeteve
Në fillim, Docker dëgjon të gjitha interface të rrjeteve. Duke qenë se në shumicën e rasteve trafik pritet vetëm në një prej tyre, një qasje e tillë rrit pa arsye rrezikun e sulmeve. Prandaj, kur ekzekutoni një konteiner, mund të lidhni portat e tij me interface specifike në host:
docker run --detach --publish 10.2.3.4:49153:80 nginxVersionet e memorizuara të imazheve
Kur shkarkoni imazhe, sigurohuni që memoria lokale përputhet me përmbajtjen e depozitës. Ndryshe, mund të merrni një version të vjetëruar të imazhit ose një imazh që përmban dobësi.
Ura rrjetit
Modeli i rrjetit në mënyrë default, docker0, është i pambrojtur ndaj sulmeve si ARP-spoofing dhe MAC-flooding. Për të zgjidhur këtë problem, krijoni një urë rrjeti sipas specifikimeve tuaja, siç është përshkruar .
Kujdes për socketin e Docker-it
Kurrikoni asnjëherë një socket Docker brenda kontejnerit. Në të kundërt, kontejneri do të ketë mundësi të ekzekutojë komandat e Docker dhe, si pasojë, të lidhet me sistemin operativ të hostit dhe ta kontrollojë atë. Mos e bëni këtë.
Konfigurimi i Docker Enterprise
Docker Trust
Docker Trust lejon tĂ« gjeneroni çelĂ«sa, me anĂ« tĂ« tĂ« cilĂ«ve mund tĂ« verifikoni integritetin kriptografik tĂ« imazheve. ĂelĂ«sat e Docker Trust mund tĂ« pĂ«rdoren pĂ«r tĂ« nĂ«nshkruar imazhet Docker me çelĂ«sa privatĂ«, tĂ« cilat verifikohen nga çelĂ«sat publikĂ« nĂ« Notary Server. Informacione tĂ« tjera â . Aktivizimi i Docker Trust nĂ« Enterprise Engine pĂ«rshkruhet nĂ« detaje nĂ« .
Skane të dobësive
Docker Enterprise ka një skanues të integruar të dobësive, që ofron mundësinë për të ngarkuar një bazë CVE për skanimin offline të dobësive në imazhe. Skanimi i rregullt i imazheve ndihmon në sigurimin e tyre: përdoruesi merr menjëherë paralajmërime mbi dobësitë e gjetura. Më shumë rreth mënyrës se si mund ta bëni këtë, shihni. .
Shën. përk.: Ekzistojnë edhe skanues të dobësive Open Source në imazhet Docker, shembuj të të cilëve janë përmendur në fund të materialit.
Integrimi i LDAP dhe UCP
Plane Kontrol Universale mund të integrohet me LDAP. Rezultati do të jetë një sistem autentikimi më i thjeshtuar, që lejon shmangien e kopjimeve të panevojshme. Më shumë informacion mund të gjeni në artikullin .
Materiale të tjera
Informacione shtesë mbi praktikat më të mira për sigurinë e Docker-it mund të gjeni në . Gjithashtu, rekomandojmë të shkarkoni .
Bonusi i përkthyesit
Si një plotësim logjik për këtë artikull, po publikojmë një listë me 10 mjete të njohura Open Source për sigurimin në Docker. Ajo u mor nga (nga Bill Doerrfeld nga Doerrfeld.io).
NB: Më shumë rreth shumë prej projekteve të përmendura këtu lexoni gjithashtu në artikullin».
- â skenari i pĂ«rmendur nĂ« fillim tĂ« artikullit, qĂ« kontrollon konteinerĂ«t Docker pĂ«r pĂ«rputhshmĂ«rinĂ« me praktikat e zakonshme tĂ« sigurisĂ«.

- â ndoshta, Ă«shtĂ« utilita mĂ« e njohur pĂ«r analizĂ«n statike tĂ« ndjeshmĂ«rive nĂ« konteiner. PĂ«rdor pĂ«r kĂ«tĂ« shumĂ« baza ndjeshmĂ«rish CVE (pĂ«rfshirĂ« ndjekĂ«sit e distribucioneve kryesore tĂ« Linux, si Red Hat, Debian, Ubuntu). Ofron API pĂ«r zhvilluesit dhe njĂ« mundĂ«si tĂ« thjeshtĂ« pĂ«r zgjerimin e funksionaliteteve (nĂ«pĂ«rmjet shtimit tĂ« "drejtorĂ«ve"). Ajo pĂ«rdoret nĂ« regjistrin publik tĂ« njohur tĂ« imazheve tĂ« konteinerĂ«ve (analog i Docker Hub) â Quay.io.
- â njĂ« zgjidhje pĂ«r sigurimin e rrjetit nĂ« nivelin e bĂ«rthamĂ«s, e bazuar nĂ« teknologjinĂ« e filtrimit tĂ« paketeve tĂ« rrjetit BPF.
- â njĂ« utilitĂ« pĂ«r analizimin e pĂ«rmbajtjes sĂ« imazheve pĂ«r ndjeshmĂ«ri tĂ« sigurisĂ« sipas bazĂ«s CVE. PĂ«rveç kĂ«saj, ajo lejon aplikimin e politikave tĂ« personalizuara (tĂ« bazuara nĂ« tĂ« dhĂ«na tĂ« ndryshme, duke pĂ«rfshirĂ« lista tĂ« bardha/bardha, pĂ«rmbajtjen e skedarĂ«ve etj.) pĂ«r vlerĂ«simin e sigurisĂ« sĂ« konteinerĂ«ve.
- â njĂ« ekosistem i tĂ«rĂ« pĂ«r krijimin dhe mbĂ«shtetje tĂ« politikave tĂ« sigurisĂ« nĂ« platforma tĂ« ndryshme. PĂ«r verifikimin e konteinerĂ«ve ofron utilitĂ«n
oscap-docker. - â njĂ« utilitet pĂ«r skanimin e kontejnerĂ«ve Docker pĂ«r dobĂ«si, trojana, virusĂ« dhe malware. Kontrollohet nĂ« bazat CVE pĂ«r varĂ«sitĂ« nga OWASP, pĂ«r bazĂ«n Red Hat Oval dhe pĂ«r depozitĂ«n e eksploitĂ«ve Exploit Database.
- â njĂ« kornizĂ« pĂ«r nĂ«nshkrimin e imazheve Docker, fillimisht e krijuar nga Docker Inc (dhe mĂ« pas e kaluar pĂ«r zhvillim nĂ« CNCF). PĂ«rdorimi i saj lejon delegimin e roleve dhe shpĂ«rndarjen e pĂ«rgjegjĂ«sive pĂ«r kontejnerĂ«t, si dhe verifikimin e integritetit kriptografik tĂ« imazheve.
- â njĂ« API pĂ«r metadatĂ«n, e cila ka pĂ«r qĂ«llim menaxhimin e politikave tĂ« brendshme tĂ« sigurisĂ«. PĂ«r shembull, ajo lejon pĂ«rmirĂ«simin e funksionimit tĂ« skanuesve tĂ« sigurisĂ« pĂ«r kontejnerĂ«t. Shopify e pĂ«rdor kĂ«tĂ« API pĂ«r tĂ« menaxhuar metadatĂ«n e 500 mijĂ« imazheve tĂ« saj.
- â njĂ« utilitet pĂ«r Kubernetes, qĂ« monitoron sjelljen e sistemit: aktivitetin nĂ« kontejnerĂ«, nĂ« host dhe nĂ« rrjet. Lejon konfigurimin e verifikimeve tĂ« vazhdueshme nĂ« infrastrukturĂ«, zbulimin e anomali dhe dĂ«rgimin e alerteve pĂ«r çdo thirrje sistemore nĂ« Linux.
- â njĂ« tjetĂ«r mjet pĂ«r analizĂ«n statike tĂ« imazheve tĂ« konteinerĂ«ve Docker. Lejon "tĂ« shikoni" nĂ« skedaret e imazhit, duke mbledhur tĂ« dhĂ«nat e nevojshme, duke aplikuar politikat e nevojshme, etj.
Një tjetër koleksion i mirë i rekomandimeve praktike për mënyrën se si ta bëni Docker më të sigurt, mund të gjeni në kompaninë Aqua Security. Shumë nga këshillat e saj përputhen me ato që përmendëm më lart, por ka edhe të tjera. Për shembull, autorët sugjerojnë të organizoni monitorimin e aktiviteteve në konteinerë dhe theksojnë çfarë duhet të ketë parasysh kur përdorni Docker Swarm.
Për ata që duan të thellohen më shumë në këtë temë, vitin e kaluar doli libri "»", fragmente të cilit janë të qasshme falas. .
MĂ« nĂ« fund, pĂ«r njĂ« njohje praktike me disa aspekte tĂ« sigurisĂ« Docker: profilet Seccomp dhe pĂ«rdorimi i capabilities sĂ« kernel-it Linux nĂ« konteinerĂ« â mund tĂ« pĂ«rfundoni laboratorĂ«t pĂ«rkatĂ«s nĂ« * â shih seksionin "Security".

* Për vetë këtë burim ne dy vjet më parë, dhe në nëntor 2018 ndodhi një histori shumë interesante (në aspektin e sigurisë) me të. Nëse e përmbledhim, specialistët nga CyberArk Software Ltd. arritën ta hackonin: të fitonin mundësinë për të ekzekutuar komanda jashtë kontejnerëve, dmth. në sistemin pritës. Një ilustiracion perfekt i problematikës së sigurisë në Docker, apo jo? Lexoni të gjitha detajet e ndodhur .
P.S. nga përkthyesi
Lexoni gjithashtu në blogun tonë:
- «»;
- «»;
- «»;
- «»;
- «»;
- «».
Burimi: habr.com

