Uurime (puuduvat) tüüpiliste Docker ja Kubernetes seadistuste turvalisust

Uurime (puuduvat) tüüpiliste Docker ja Kubernetes seadistuste turvalisust
Olen töötanud IT-valdkonnas üle 20 aasta, kuid kuidagi ei olnud aega konteinerite juurde jõuda. Teoorias mõistsin, kuidas need toimivad ja millised nad on. Kuid kuna ma ei olnud kunagi nendega praktikas kokku puutunud, polnud ma kindel, kuidas kõik nende sees tegelikult toimib.

Lisaks ei olnud mul aimugi, kuidas neil on küberturvalisus. Teooria kõlab ilusasti, kuid vana laul "mida rohkem turvalisust, seda madalam mugavus" kummitas mind. Nii et arvasin, et kuna konteineritega on kõik nii lihtne, on sealne turvalisus väga kehv. Selgub, et mul oli õigus.

Kiireks alguseks registreerusin kursustele Black Hat 2020 nimega "Künnakult kuningaks: Docker Swarmi ja Kubernetes'e keskkondade testimine ja kaitsmine».

Kursus, mille viisid läbi Sheila A. Berta ja Sol Ozzan, algas kohe Docker konteinerite toimimisest ning sellest, kuidas need paigaldatakse Kubernetesesse. See oli täielikult praktiline õppetund — tudengitel tuli enne tundide algust oma arvutitele installeerida Docker ja microk8s — suurepärane viis näha, kuidas tööriistad omavahel suhtlevad, tuvastada nõrkusi ja, mis kõige tähtsam, proovida neid kinni panna.

Kahjuks, kuigi kursused lubasid kahe päeva jooksul saada 'printsiks', tundsin, et kõik alles algab ja mul on veel palju õppida.

Uurime (puuduvat) tüüpiliste Docker ja Kubernetes seadistuste turvalisust

Enne kui sukeldume minu sügavamatesse tähelepanekutesse, on oluline selgitada, mis on konteiner. Arengumaailmas peetakse normaalseks olukorda, kus teie isiklikul arvutil kirjutatud kood töötab ideaalselt, kuid kui proovite seda serveris käivitada, siis see lihtsalt ei tööta. Konteinerid üritavad seda probleemi ületada, pakkudes iseseisvaid masinateid, mida saate hõlpsasti ühest serverist teise viia, teades, et nad töötavad alati. Nagu nimigi ütleb, sisaldavad need koodi, raamatukogusid ja muud vajalikku tarkvara. Kubernetes on konteinerite orkestreerimise platvorm.Põhimõtteliselt saab selle abil sujuvalt hallata sadu või isegi tuhandeid erinevaid konteineriteid.

Allpool on toodud mõned minu järeldused punase ja sinise meeskonna vaatepunktist.

Punane meeskond

Enamus konteinerite sisu töötab root'i all:see tähendab, et kui konteinerit kompromiteerida, saate täieliku juurdepääsu konteinerile. See teeb järgnevad sammud oluliselt lihtsamaks.

docker.sock'i mountimine konteineris on ohtlik.: kui olete saanud root-õigused konteineris ja seadnud Docker'i konteineri sees, kus on Docker'i sokkel (/var/run/docker.sock), on teil potentsiaalne võimalus uurida kogu klastrit, sealhulgas juurdepääs igale teisele konteinerile. Sellist juurdepääsu ei saa takistada ei võrgu isolatsiooniga ega muude meetoditega.

Keskkonnamuutujad sisaldavad sageli salajasi andmeid.: enamikel juhtudel saadavad inimesed paroolid konteinerisse, kasutades tavalisi keskkonnamuutujaid. Nii et kui teil on juurdepääs kontole, saate neid keskkonnamuutujaid pealt näha, et seejärel oma õiguseid laiendada.

Docker API võib anda palju teavet.: Docker API, vaike seadistustega, töötab ilma autoriseerimiseta ja võib anda palju teavet. Shodan'i kasutades on lihtne leida avatud porte, seejärel saada üksikasjalikku teavet klastrist — ja minna selle täieliku hõivamise juurde. TrendMicro on sellest kirjutanud huvitava artikli..

Sinine meeskond.

Ärge käitage konteinerite sisu root-õigustega.: kuigi root-iga töötamine on lihtsam, ei tohiks te seda teha. Selle asemel käitage rakendusi, millel on taastatud õigused, kas kuvades uid või kasutades CLI juures parameetrit —user või määrates USER-i Dockerfile'is.

Ärge lubage programmide installimist konteinerites: peaaegu iga rünnak algab millegi installimisest. Alates nmap'ist kuni ifconfig'ini ja isegi Dockerini (konteineris) on millegi installimine konteinerisse olnud tavaline. Seetõttu tuleks alati blokeerida kõik mittekasutatavad pordid. See aitab ka vältida käskude edastamist teie masinasse sisenemise korral. Lisaks programmide installimise peatamisele tuleks veenduda, et konteineris oleks minimaalne arv rakendusi, mis on vajalik ülesande täitmiseks.

Kaitske docker.sock: seda tuleb kaitsta, kuna selle kaudu toimub side konteineri ja klastrite vahel. Kuna ma ei soovi selle artikli raames üksikasjadesse minna, lugege Docker'i märkust, mis võib juhtuda, ja kuidas seda kõike blokeerida.

Kasutage Docker'i salajasi muutujate asemel: Salajased muutujad on umbes alates 2017. aastast. Kuigi see ei ole ohutu, on see siiski parem kui keskkonnamuutujate kasutamine saladuste edastamiseks konteinerites.

Kui artikkel on äratanud teie huvi konteinerite vastu, on Docker'i või microk8s'i (väike versioon Kubernetesest) installimine piisavalt lihtne. Siit on saadaval Docker'i installimise juhised Linuxile ja MacOS-ile, ning siit — microk8s'i installimise juhised Windowsile, Linuxile ja MacOS-ile.

Pärast installimist saate minna sellele Docker'i kiire alguse juhendile , mis on sarnane variant pakutakse ja microk8s'i jaoks.

Kui soovite või peate läbima põhjaliku kursuse Docker'ist, kus praktikute lektorid käsitlevad kõiki selle tööriistu: alates põhialustest kuni võrgu parameetrite, erinevate operatsioonisüsteemide ja programmeerimiskeelte nüanssideni, proovigeDocker'i videokursus. Tutvute tehnoloogiaga ja mõistate, kus ja kuidas on kõige parem Docker'it kasutada. Samuti saate parimaid tavasid — parem on õppida ohutult ja praktikutelt, rääkides kogemustest, kui õppida iseseisvalt eksimuste pealt.

Allikas: habr.com

Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster