Ekzamenante la (Mankantan) Sekurecon de Tipaj Docker kaj Kubernetes Instalaĵoj

Ekzamenante la (Mankantan) Sekurecon de Tipaj Docker kaj Kubernetes Instalaĵoj
Mi laboras en IT dum pli ol 20 jaroj, sed iel mi neniam venis al ujoj. En teorio, mi komprenis kiel ili estis strukturitaj kaj kiel ili funkciis. Sed ĉar mi neniam renkontis ilin en la praktiko, mi ne estis certa, kiel precize la dentaĵoj sub ilia kapuĉo turniĝas kaj turniĝas.

Krome, mi tute ne sciis, kiel estas ilia sekureco. Sed denove, la teorio sonas bele, kaj la malnova kanto "kiam sekureco pliiĝas, uzebleco malpliiĝas" fiksiĝis en mia kapo. Do mi pensis, ke ĉar ĉio estas tiel facile farebla kun ujoj, tiam la sekureco tie estas sub la paro. Kiel ĝi rezultas, mi pravis.

Por rapide komenci, mi aliĝis al kursoj Nigra Ĉapelo 2020 titolita "De ĉifonoj ĝis riĉaĵoj: penetrado kaj protekto de Docker Swarm kaj Kubernetes-medioj".

La kurso, instruita de Sheila A. Berta kaj Sol Ozzan, tuj komenciĝis per priskribo pri kiel funkcias Docker-ujoj kaj la vojaĝo, kiun ili faras kiam ili estas deplojitaj al Kubernetes. Ĉi tio estis tute praktika klaso - studentoj devis instali Docker kaj microk8s sur siaj maŝinoj antaŭ la klaso - bonega maniero vidi kiel la iloj interagas inter si, trovi malfortajn punktojn kaj, plej grave, provi bloki ilin.

Bedaŭrinde, kvankam la kursoj promesis iĝi "princo" post du tagoj, mi sentis, ke ĉio ĵus komenciĝas, kaj mi ankoraŭ havas multon por lerni.

Ekzamenante la (Mankantan) Sekurecon de Tipaj Docker kaj Kubernetes Instalaĵoj

Antaŭ ol plonĝi en miajn altajn observojn, gravas klarigi kio estas ujo. En la evolua mondo, estas konsiderata normale, ke la kodo skribita sur via persona maŝino perfekte funkcias, sed kiam vi provas ruli ĝin sur servilo ie, ĝi simple ne funkcias. Ujoj provas venki ĉi tiun problemon disponigante memstarajn maŝinojn, kiujn vi povas facile movi de unu servilo al alia, sciante, ke ili ĉiam funkcios. Kiel la nomo sugestas, ili enhavas la kodon, bibliotekojn kaj aliajn programojn necesajn por plenumi la laboron. Kubernetes, aliflanke, estas orkestra platformo por ujoj. Principe, ĝi povas esti uzata por perfekte administri centojn aŭ milojn da malsamaj ujoj.

Malsupre estas kelkaj el miaj trovoj el la perspektivo de la ruĝa kaj blua teamo.

Ruĝa Teamo

Plej multe de la enhavo de ujo funkcias kiel radiko: Ĉi tio signifas, ke se la ujo estas endanĝerigita, vi havos plenan aliron al la ujo. Ĉi tio faciligas la sekvajn paŝojn.

Munti docker.sock ene de ujo estas danĝera: Se vi havas radikon ene de ujo kaj ankaŭ instalis Docker en ujo, kiu havas Docker-ingon (/var/run/docker.sock), vi havas la eblecon esplori la tutan areton, inkluzive de aliro al iu ajn alia ujo. Tia aliro ne povas esti malhelpita per retizolado aŭ aliaj rimedoj.

Mediaj variabloj ofte enhavas sekretajn datumojn: Plejofte, homoj sendas pasvortojn al la ujo uzante normalajn mediovariablojn. Do se vi havas aliron al la konto, vi povas spioni ĉi tiujn mediajn variablojn por poste pligrandigi viajn potencojn.

Docker API povas doni multajn informojn: La Docker API, kiam agordita defaŭlte, funkcias sen rajtigo kaj povas produkti amason da informoj. Uzante Shodan, vi povas facile trovi liston de malfermitaj havenoj, tiam akiri detalajn informojn pri la areto - kaj daŭrigi ĝian plenan kapton. TrendMicro skribis pri tio plej interesa artikolo.

Blua Teamo

Ne rulu enhavon de ujo kiel radiko: Kvankam estas pli facile ruli kiel radiko, vi ne faru ĝin. Anstataŭe, rulu aplikaĵojn kun rekomencigitaj permesoj montrante la uid, aŭ uzante la --user-opcion kiam vi kuras de la CLI, aŭ specifante USER en la Dockerfile.

Ne permesu ke programaro estu instalita en ujoj: Preskaŭ ĉiu atako komenciĝas per plantado de io. De nmap ĝis ifconfig ĝis Docker mem (ene de ujo), instali ion ajn en ujo estis ordinara. Pro la sama kialo, vi ĉiam devus bloki ĉiujn neuzatajn havenojn. Ĉi tio ankaŭ helpas malhelpi kontrolkomandojn esti transdonitaj kiam via maŝino estas infektita. Krom malhelpi la instaladon de programoj, indas certigi, ke la minimuma nombro da aplikaĵoj necesaj por plenumi la taskon estas instalitaj en la ujo mem.

Protektu docker.sock: Ĝi devas esti protektita ĉar komunikado inter la ujo kaj la areto estas procesita per ĉi tiu ingo. Ĉar mi ne volas detaligi ĉi tiun artikolon, legu noto de Docker, kio povas okazi, kaj ankaŭ kiel bloki ĉion.

Uzu Docker-sekretojn anstataŭ mediajn variablojn: Estas sekretoj ekde proksimume 2017. Kvankam ĉi tio ne estas sekura, ĝi ankoraŭ estas pli bona ol mediaj variabloj por transdoni sekretajn datumojn al la ujo.

Se la artikolo vekis vian intereson pri ujoj, vi povas facile instali Docker aŭ microk8s (malgranda versio de Kubernetes). estas estas instrukcioj por instali Docker por Linukso kaj MacOS, kaj tie — instrukcioj por instali microk8s por Vindozo, Linukso kaj MacOS.

Post instalado vi povas iri ĉi tio estas rapida komenca gvidilo de Docker, simila opcio proponis kaj por mikrok8s.

Se vi volas aŭ bezonas fari ampleksan kurson pri Docker, en kiu praktikaj parolantoj ekzamenas ĉiujn ĝiajn ilojn: de bazaj abstraktaĵoj ĝis retaj parametroj, nuancoj de laboro kun diversaj operaciumoj kaj programlingvoj, tiam provu "Videokurso de Docker" Vi konatiĝos kun la teknologio kaj komprenos kie kaj kiel plej bone uzi Docker. Kaj samtempe, ricevu plej bonajn praktikojn - estas pli bone lerni sekure kaj kun la subteno de praktikistoj de rakontoj pri rastiloj ol persone de la rastiloj mem kun pikitaj teniloj.

fonto: www.habr.com

Aldoni komenton