Tüüpiliste Dockeri ja Kubernetese installide (puuduva) turvalisuse uurimine

Tüüpiliste Dockeri ja Kubernetese installide (puuduva) turvalisuse uurimine
Olen IT-alal töötanud üle 20 aasta, aga millegipärast pole ma konteineriteni jõudnud. Teoreetiliselt sain aru, kuidas need olid üles ehitatud ja kuidas nad töötasid. Aga kuna ma polnud nendega kunagi praktikas kokku puutunud, ei olnud ma kindel, kuidas täpselt nende kapoti all olevad käigud pöörlevad ja pöörlevad.

Pealegi polnud mul õrna aimugi, kuidas nende turvalisus on. Aga jällegi kõlab teooria kenasti ja pähe jäi vana laul “turvalisuse kasvades kasutatavus väheneb”. Seega mõtlesin, et kuna konteineritega on kõike nii lihtne teha, siis seal on ohutus allapoole. Nagu selgus, oli mul õigus.

Kiireks alustamiseks registreerusin kursustele Black Hat 2020 pealkirjaga "Kaltsudest rikkusteni: Docker Swarmi ja Kubernetese keskkondadesse tungimine ja kaitse'.

Kursus, mida õpetasid Sheila A. Berta ja Sol Ozzan, algas kohe Dockeri konteinerite töö ja teekonna kirjeldusega, kui need Kubernetesesse kasutusele võetakse. See oli täiesti praktiline tund – õpilased pidid enne tundi oma masinatele installima Dockeri ja microk8-d – suurepärane võimalus näha, kuidas tööriistad omavahel suhtlevad, leida nõrku kohti ja mis kõige tähtsam – proovida neid blokeerida.

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

Tüüpiliste Dockeri ja Kubernetese installide (puuduva) turvalisuse uurimine

Enne oma kõrgetesse tähelepanekutesse sukeldumist on oluline selgitada, mis on konteiner. Arendusmaailmas peetakse normaalseks, et teie isiklikus masinas kirjutatud kood töötab ideaalselt, kuid kui proovite seda kuskil serveris käivitada, siis see lihtsalt ei tööta. Konteinerid püüavad sellest probleemist üle saada, pakkudes iseseisvaid masinaid, mida saate hõlpsalt ühest serverist teise teisaldada, teades, et need töötavad alati. Nagu nimigi ütleb, sisaldavad need koodi, teeke ja muud töö tegemiseks vajalikku tarkvara. Kubernetes seevastu on konteinerite orkestreerimisplatvorm. Põhimõtteliselt saab seda kasutada sadade või tuhandete erinevate konteinerite sujuvaks haldamiseks.

Allpool on mõned minu leiud punase ja sinise meeskonna vaatenurgast.

Punane meeskond

Suurem osa konteineri sisust töötab administraatorina: See tähendab, et kui konteiner on ohustatud, on teil konteinerile täielik juurdepääs. See muudab järgmised sammud palju lihtsamaks.

Docker.soki paigaldamine konteinerisse on ohtlik: kui teil on konteineri sees juur ja installitud Docker ka konteinerisse, millel on Dockeri pesa (/var/run/docker.sock), on teil võimalus uurida kogu klastrit, sealhulgas juurdepääsu mis tahes muule konteinerile. Sellist juurdepääsu ei saa takistada võrgu isoleerimise või muude vahenditega.

Keskkonnamuutujad sisaldavad sageli salajasi andmeid: Enamasti saadavad inimesed konteinerisse paroolid tavaliste keskkonnamuutujate abil. Nii et kui teil on kontole juurdepääs, saate neid keskkonnamuutujaid luurata, et hiljem oma volitusi laiendada.

Docker API võib anda palju teavet: Dockeri API, kui see on vaikimisi konfigureeritud, töötab ilma loata ja suudab toota palju teavet. Shodani abil saate hõlpsalt leida avatud portide loendi, seejärel hankida üksikasjalikku teavet klastri kohta ja jätkata selle täielikku hõivamist. TrendMicro kirjutas sellest kõige huvitavam artikkel.

Sinine meeskond

Ärge käivitage konteineri sisu root kasutajana: Kuigi rootina on lihtsam käivitada, ei tohiks te seda teha. Selle asemel käivitage lähtestamislubadega rakendusi, kuvades kasutajatunnuse, kasutades CLI-st käivitamisel suvandit --user või määrates Dockerfile'is USER.

Ärge lubage tarkvara installida konteineritesse: Peaaegu iga rünnak algab millegi istutamisest. Alates nmapist kuni ifconfigini kuni Dockeri endani (konteineri sees) on konteinerisse kõige installimine olnud tavaline. Samal põhjusel peaksite alati blokeerima kõik kasutamata pordid. See aitab vältida ka juhtkäskude edastamist, kui teie arvuti on nakatunud. Lisaks programmide installimise takistamisele tasub jälgida, et ülesande täitmiseks vajalik minimaalne arv rakendusi oleks installitud konteinerisse endasse.

Kaitske dokki.sokk: see peab olema kaitstud, kuna side konteineri ja klastri vahel toimub selle pesa kaudu. Kuna ma ei taha selles artiklis üksikasjalikult rääkida, lugege teade Dockerilt, mis võib juhtuda ja kuidas seda kõike blokeerida.

Kasutage keskkonnamuutujate asemel Dockeri saladusi: Seal on saladusi alates umbes 2017. aastast. Kuigi see pole turvaline, on see siiski parem kui keskkonnamuutujad salajaste andmete konteinerisse edastamiseks.

Kui artikkel on äratanud teie huvi konteinerite vastu, saate hõlpsalt installida Dockeri või microk8s (Kubernetese väike versioon). see on seal on juhised Dockeri installimiseks Linuxile ja MacOS-ile ning siin — juhised microk8-de installimiseks Windowsi, Linuxi ja MacOS-i jaoks.

Pärast installimist võite minna see on kiire alustamise juhend Dockerilt, sarnane võimalus pakutud ja microk8 jaoks.

Kui soovite või teil on vaja läbida põhjalik Dockeri kursus, kus praktilised esinejad uurivad kõiki selle tööriistu: alates põhilistest abstraktsioonidest kuni võrguparameetriteni, erinevate operatsioonisüsteemide ja programmeerimiskeeltega töötamise nüanssideni, proovige "Dockeri videokursus" Saate tehnoloogiaga tuttavaks ja mõistate, kus ja kuidas Dockerit kõige paremini kasutada. Ja samal ajal hankige parimate tavade juhtumeid – parem on õppida ohutult ja praktikute toel rehade lugudest, kui isiklikult naastrehadega rehadest.

Allikas: www.habr.com

Lisa kommentaar