Tyrinėjame (trūkstamą) tipiškų „Docker“ ir „Kubernetes“ įrenginių saugumą

Tyrinėjame (trūkstamą) tipiškų „Docker“ ir „Kubernetes“ įrenginių saugumą
Dirbu IT srityje daugiau nei 20 metų, bet kažkaip niekada nepriėjau prie konteinerių. Teoriškai aš supratau, kaip jie buvo sudaryti ir kaip jie veikia. Bet kadangi niekada nebuvau su jais susidūręs praktiškai, nežinojau, kaip tiksliai sukasi ir sukasi pavaros po jų gaubtu.

Be to, aš neįsivaizdavau, koks yra jų saugumas. Bet vėlgi, teorija skamba gražiai, o galvoje įstrigo sena daina „padidėjus saugumui, mažėjant naudojimui“. Taigi pagalvojau, kad kadangi su konteineriais viską taip paprasta padaryti, tai saugumas ten yra žemesnis už standartą. Kaip paaiškėjo, aš buvau teisus.

Norėdamas greitai pradėti, užsiregistravau į kursus Black Hat 2020 m. pavadinimu „Nuo skudurų iki turtų: Docker Swarm ir Kubernetes aplinkos įsiskverbimas ir apsauga".

Kursas, kurį dėstė Sheila A. Berta ir Sol Ozzan, iškart prasidėjo aprašymu, kaip veikia „Docker“ konteineriai ir kokia kelionė, kurią jie nukeliauja dislokuoti Kubernetes. Tai buvo visiškai praktinė pamoka – prieš pamoką mokiniai savo mašinose turėjo įdiegti Docker ir microk8s – tai puikus būdas pamatyti, kaip įrankiai sąveikauja tarpusavyje, rasti silpnąsias vietas ir, svarbiausia, pabandyti jas blokuoti.

Deja, nors kursai žadėjo po dviejų dienų tapti „princu“, jaučiau, kad viskas tik prasideda, o man dar reikia daug ko išmokti.

Tyrinėjame (trūkstamą) tipiškų „Docker“ ir „Kubernetes“ įrenginių saugumą

Prieš pasineriant į savo aukštus pastebėjimus, svarbu paaiškinti, kas yra konteineris. Kūrimo pasaulyje laikoma normalu, kad jūsų asmeniniame kompiuteryje parašytas kodas puikiai veikia, tačiau kai bandote jį paleisti kur nors esančiame serveryje, jis tiesiog neveikia. Konteineriai bando įveikti šią problemą teikdami autonominius įrenginius, kuriuos galite lengvai perkelti iš vieno serverio į kitą, žinodami, kad jie visada veiks. Kaip rodo pavadinimas, juose yra kodas, bibliotekos ir kita programinė įranga, reikalinga darbui atlikti. Kita vertus, Kubernetes yra orkestravimo platforma konteineriams. Iš esmės juo galima sklandžiai valdyti šimtus ar tūkstančius skirtingų konteinerių.

Žemiau yra keletas mano išvadų iš raudonos ir mėlynos komandos perspektyvos.

Raudonoji komanda

Dauguma konteinerio turinio veikia kaip root: Tai reiškia, kad jei konteineris bus pažeistas, turėsite visišką prieigą prie konteinerio. Tai labai palengvina tolesnius veiksmus.

Montuoti dokerį.kojinę konteinerio viduje pavojinga: Jei turite šaknį konteineryje ir taip pat įdiegėte „Docker“ konteineryje, kuriame yra „Docker“ lizdas (/var/run/docker.sock), galite ištirti visą klasterį, įskaitant prieigą prie bet kurio kito konteinerio. Tokios prieigos negalima užkirsti kelio izoliuojant tinklą ar kitomis priemonėmis.

Aplinkos kintamieji dažnai turi slaptų duomenų: Daugeliu atvejų žmonės siunčia slaptažodžius į konteinerį naudodami įprastus aplinkos kintamuosius. Taigi, jei turite prieigą prie paskyros, galite šnipinėti šiuos aplinkos kintamuosius, kad vėliau išplėstumėte savo galias.

Docker API gali suteikti daug informacijos: Docker API, sukonfigūruota pagal numatytuosius nustatymus, veikia be leidimo ir gali pateikti daugybę informacijos. Naudodami „Shodan“ galite lengvai rasti atidarytų prievadų sąrašą, tada gauti išsamios informacijos apie klasterį ir pereiti prie viso jo fiksavimo. TrendMicro rašė apie tai įdomiausias straipsnis.

Mėlynoji komanda

Nepaleiskite konteinerio turinio kaip root: Nors lengviau paleisti kaip root, neturėtumėte to daryti. Vietoj to, paleiskite programas su iš naujo nustatytais leidimais, rodydami uid, naudodami parinktį --user, kai paleisite iš CLI, arba nurodydami USER Dockerfile.

Neleiskite programinės įrangos įdiegti konteineriuose: Beveik kiekvienas išpuolis prasideda nuo kažko pasodinimo. Nuo „nmap“ iki „ifconfig“ iki paties „Docker“ (konteinerio viduje), bet ką įdiegti konteineryje buvo įprasta. Dėl tos pačios priežasties visada turėtumėte blokuoti visus nenaudojamus prievadus. Tai taip pat padeda išvengti valdymo komandų perdavimo, kai jūsų kompiuteris yra užkrėstas. Be to, kad būtų išvengta programų diegimo, verta pasirūpinti, kad pačiame konteineryje būtų įdiegtas minimalus užduočiai atlikti reikalingų programų skaičius.

Apsaugokite dokerį.kojinė: Jis turi būti apsaugotas, nes ryšys tarp konteinerio ir grupės apdorojamas per šį lizdą. Kadangi šiame straipsnyje nenoriu gilintis į detales, skaitykite pastaba iš Docker, kas gali nutikti ir kaip visa tai užblokuoti.

Vietoj aplinkos kintamųjų naudokite Docker paslaptis: Yra paslapčių maždaug nuo 2017 m. Nors tai nėra saugu, ji vis tiek yra geriau nei aplinkos kintamieji perduodant slaptus duomenis į konteinerį.

Jei straipsnis sukėlė jūsų susidomėjimą konteineriais, galite lengvai įdiegti „Docker“ arba „microk8s“ (mažą „Kubernetes“ versiją). Čia Yra instrukcijos, kaip įdiegti „Docker“ Linux ir „MacOS“, ir čia - „microk8s“ diegimo instrukcijos Windows, Linux ir „MacOS“.

Įdiegę galite eiti tai greitos pradžios vadovas iš Docker, panaši parinktis pasiūlytas ir microk8s.

Jei norite arba jums reikia išklausyti išsamų „Docker“ kursą, kuriame praktiški pranešėjai išnagrinėja visus jo įrankius: nuo pagrindinių abstrakcijų iki tinklo parametrų, darbo su įvairiomis operacinėmis sistemomis ir programavimo kalbomis niuansų, tada išbandykite „Docker vaizdo kursas“ Susipažinsite su technologija ir suprasite, kur ir kaip geriausia naudoti „Docker“. Ir tuo pat metu gaukite geriausios praktikos pavyzdžių – geriau saugiai ir padedant specialistams iš pasakojimų apie grėblius, nei asmeniškai iš pačių grėblių su dygliuotomis rankenomis.

Šaltinis: www.habr.com

Pirkite patikimą prieglobą svetainėms su DDoS apsauga, VPS VDS serveriais 🔥 Įsigykite patikimą svetainių talpinimą su DDoS apsauga, VPS VDS serveriais | ProHoster