V IT-ju delam že več kot 20 let, a do zabojnikov nekako nikoli nisem prišel. V teoriji sem razumel, kako so strukturirani in kako delujejo. A ker jih v praksi še nisem srečal, nisem bil prepričan, kako natančno se vrtijo in obračajo zobniki pod njihovim pokrovom.
Poleg tega nisem imel pojma, kakšna je njihova varnost. Ampak spet, teorija zveni lepo in stara pesem "ko se varnost povečuje, se uporabnost zmanjšuje" mi je ostala v glavi. Zato sem mislil, da ker je vse tako enostavno narediti s kontejnerji, potem je varnost tam pod nivojem. Kot se je izkazalo, sem imel prav.
Za hiter začetek sem se prijavil na tečaje
Tečaj, ki sta ga vodila Sheila A. Berta in Sol Ozzan, se je takoj začel z opisom delovanja Dockerjevih vsebnikov in poti, ki jo opravijo, ko so nameščeni v Kubernetes. To je bil popolnoma praktičen tečaj – študentje so morali pred predavanjem na svoje računalnike namestiti Docker in microk8s – odličen način, da vidijo, kako orodja medsebojno delujejo, najdejo šibke točke in, kar je najpomembneje, poskušajo jih blokirati.
Na žalost, čeprav so tečaji obljubljali, da bom po dveh dneh postal "princ", sem čutil, da se vse šele začenja in se moram še veliko naučiti.
Preden se potopim v svoja vzvišena opažanja, je pomembno razložiti, kaj je vsebnik. V razvojnem svetu velja, da je normalno, da koda, napisana na vašem osebnem računalniku, deluje brezhibno, ko pa jo poskušate zagnati nekje na strežniku, preprosto ne deluje. Vsebniki poskušajo premagati to težavo z zagotavljanjem samostojnih strojev, ki jih lahko enostavno premaknete iz enega strežnika v drugega, saj veste, da bodo vedno delovali. Kot že ime pove, vsebujejo kodo, knjižnice in drugo programsko opremo, potrebno za opravljanje dela. Kubernetes pa je
Spodaj je nekaj mojih ugotovitev z vidika rdeče-modre ekipe.
Rdeča ekipa
Večina vsebine vsebnika se izvaja kot root: To pomeni, da boste imeli poln dostop do vsebnika, če je vsebnik ogrožen. Tako so naslednji koraki veliko lažji.
Montaža docker.sock znotraj vsebnika je nevarna: Če imate root znotraj vsebnika in ste tudi namestili Docker znotraj vsebnika, ki ima vtičnico Docker (/var/run/docker.sock), imate potencial za raziskovanje celotne gruče, vključno z dostopom do katerega koli drugega vsebnika. Takšnega dostopa ni mogoče preprečiti z izolacijo omrežja ali drugimi sredstvi.
Spremenljivke okolja pogosto vsebujejo tajne podatke: V večini primerov ljudje pošiljajo gesla vsebniku z običajnimi spremenljivkami okolja. Torej, če imate dostop do računa, lahko vohunite za temi spremenljivkami okolja, da pozneje razširite svoja pooblastila.
Docker API lahko ponudi veliko informacij: Docker API, ko je privzeto konfiguriran, deluje brez avtorizacije in lahko proizvede ogromno informacij. Z uporabo Shodana lahko preprosto najdete seznam odprtih vrat, nato dobite podrobne informacije o gruči - in nadaljujete z njenim popolnim zajemanjem. O tem je pisal TrendMicro
Modra ekipa
Ne izvajajte vsebine vsebnika kot root: Čeprav je lažje zagnati kot root, tega ne bi smeli početi. Namesto tega zaženite aplikacije z dovoljenji za ponastavitev tako, da prikažete uid, bodisi z uporabo možnosti --user, ko se izvaja iz CLI, ali tako, da podate USER v datoteki Docker.
Ne dovolite namestitve programske opreme v vsebnike: Skoraj vsak napad se začne s podtikanjem nečesa. Od nmapa do ifconfiga do samega Dockerja (znotraj vsebnika) je bilo nameščanje česar koli v vsebnik običajno. Iz istega razloga morate vedno blokirati vsa neuporabljena vrata. To tudi pomaga preprečiti prenos nadzornih ukazov, ko je vaš stroj okužen. Poleg preprečevanja namestitve programov je vredno poskrbeti, da je v samem vsebniku nameščeno najmanjše število aplikacij, potrebnih za dokončanje naloge.
Zaščitite docker.sock: Mora biti zaščiten, ker komunikacija med vsebnikom in gručo poteka prek te vtičnice. Ker se v tem članku ne želim spuščati v podrobnosti, preberite
Namesto spremenljivk okolja uporabite skrivnosti Docker: Obstajajo skrivnosti
Če je članek vzbudil vaše zanimanje za vsebnike, lahko preprosto namestite Docker ali microk8s (majhno različico Kubernetesa).
Po namestitvi lahko greš
Če želite ali morate opraviti obsežen tečaj o Dockerju, v katerem praktični govorci preučijo vsa njegova orodja: od osnovnih abstrakcij do omrežnih parametrov, odtenkov pri delu z različnimi operacijskimi sistemi in programskimi jeziki, potem poskusite “
Vir: www.habr.com