Shqyrtojmë sigurinë (që mungon) të instalimeve tipike të Docker dhe Kubernetes

Shqyrtojmë sigurinë (që mungon) të instalimeve tipike të Docker dhe Kubernetes
Unë punoj në IT për më shumë se 20 vjet, por ndonjëherë nuk pata rastin të merrem me kontejnerët. Në teori, e kuptoja se si funksionojnë dhe çfarë janë. Por, pasi nuk kisha pasur ndonjëherë përvojë praktike me ta, nuk isha i sigurt se si funksionojnë gjërat nën kapak.

Përveç kësaj, nuk dija asgjë për sigurinë e tyre. Por, prapë, teoria tingëllon bukur dhe kënga e vjetër "me rritjen e sigurisë bie komoditeti" më ishte ngulitur në mendje. Kështu që mendova se nëse është kaq e lehtë të punosh me kontejnerët, atëherë siguria atje është shumë e dobët. Siç rezultoi, kisha të drejtë.

Për një fillim të shpejtë, u regjistrova në kursin Black Hat 2020 me titull "Nga ligësia në përparësi: depërtimi dhe mbrojtja e mjediseve Docker Swarm dhe Kubernetes».

Kursi, i udhëhequr nga Sheila A. Berta dhe Sol Ozzan, filloi menjëherë me përshkrimin e asaj si funksionojnë kontejnerët Docker, si dhe rrugën që ata ndjekin gjatë shpërndarjes në Kubernetes. Ishte një aktivitet krejtësisht praktik - studentët duhej të instalonin paraprakisht Docker dhe microk8s në makinat e tyre para orëve - një mënyrë e shkëlqyer për të parë ndërveprimin e mjeteve me njëri-tjetrin, për të gjetur dobësitë dhe, më e rëndësishmja, për të provuar t'i bllokoni ato.

Fatkeqësisht, edhe pse kurset premtuan se do të isha "princi" pas dy ditësh, unë ndihesha se gjithçka sapo kishte filluar dhe gjithmonë kisha shumë për të mësuar.

Shqyrtojmë sigurinë (që mungon) të instalimeve tipike të Docker dhe Kubernetes

Para se të kaloj në vëzhgimet e mia të larta, është e rëndësishme të shpjegohet se çfarë është një kontejner. Në botën e zhvillimit, është normale që kodi, i shkruar në makinën tuaj personale, të funksionojë perfekt, por kur përpiqeni ta ekzekutoni atë diku në një server - thjesht nuk funksionon. Kontejnerët përpiqen të tejkalojnë këtë problem duke ofruar makina autonome, të cilat mund t'i transferoni lehtësisht nga një server në tjetër, duke e ditur se ato gjithmonë do të funksionojnë. Siç tregohet nga emri, ato përmbajnë kodin, bibliotekat dhe software të tjera të nevojshme për funksionim. Kubernetes, nga ana tjetër, është një platformë orkestrimi për kontejnerët. Në përgjithësi, me ndihmën e tij, mund të menaxhoni pa probleme qindra ose mijëra kontejnerë të ndryshëm.

Më poshtë janë disa nga përfundimet e mia nga perspektiva e ekipit të kuq dhe të blu.

Ekipi i kuq

Shumica e përmbajtjes së kontejnerëve ekzekutohet si root: kjo do të thotë se nëse komprometoni kontejnerin, do të keni akses të plotë në të. Kjo i bën hapat e mëpasshëm shumë më të lehtë.

Mtimi i docker.sock brenda kontejnerit është i rrezikshëm: nëse keni marrë root brenda kontejnerit, dhe gjithashtu keni instaluar Docker brenda kontejnerit që ka soket Docker (\/var\/run\/docker.sock), keni një mundësi të mundshme për të hetuar tërë grumbullin, duke përfshirë aksesin në çdo kontejner tjetër. Ky akses nuk mund të parandalohet as nga izolimi rrjetor, as nga mënyra të tjera.

Variablat e mjedisit shpesh përmbajnë të dhëna sekrete: në shumicën e rasteve, njerëzit dërgojnë fjalëkalime në kontejner duke përdorur variabla mjedisi të zakonshëm. Pra, nëse keni akses në llogarinë, mund të shihni këto variabla mjedisi me qëllim për të zgjeruar më pas fuqitë tuaja.

Docker API mund të japë shumë informacion: Docker API, në konfigurimin e tij të paracaktuar, punon pa autorizim dhe mund të japë shumë informacion. Duke përdorur Shodan, mund të gjeni lehtësisht një listë portesh të hapura, më pas të merrni informacion të detajuar për grumbullin - dhe të kaloni në kapjen e tij të plotë. TrendMicro shkroi për këtë një artikull shumë interesant.

Ekipi blu

Mos e drejtoni përmbajtjen e kontejnerëve nën root: ndonëse është më e lehtë të drejtohet nën root, nuk duhet ta bëni këtë. Në vend të kësaj, drejtoni aplikacionet me të drejta të ulura duke treguar uid ose duke përdorur parametrin --user kur punoni me CLI, ose duke caktuar USER në Dockerfile.

Mos lejoni instalimin e programeve në kontejnerë: pothuajse çdo sulm fillon me instalimin e diçkaje. Duke filluar nga nmap dhe duke përfshirë ifconfig dhe vetë Docker (brenda kontejnerit), instalimi i diçkaje në kontejner ishte një praktikë e zakonshme. Për këtë arsye, gjithmonë duhet të bllokoni të gjitha portet e papërdorura. Kjo ndihmon gjithashtu për të parandaluar dërgimin e komandave të menaxhimit kur makina juaj infektohet. Përveç parandaluar instalimin e programeve, është e nevojshme të siguroheni që brenda kontejnerit të jetë instaluar numri minimal i aplikacioneve të nevojshme për të kryer detyrën.

Mbroni docker.sock: duhet të mbroni, pasi përmes këtij soketi përpunohen lidhjet midis kontejnerit dhe grumbullit. Meqenëse nuk dua të hyj në detaje në këtë artikull, lexoni shënimin nga Docker, çfarë mund të ndodhë, si dhe si të bllokoni gjithçka.

Përdorni sekretet e Docker përveç variablave të mjedisit: Sekretet ekzistojnë që nga viti 2017. Megjithëse kjo nuk është e sigurt, është më mirë se variablat e mjedisit për të kaluar të dhënat sekrete në kontejner.

Nëse artikulli ju ka interesuar për kontejnerët — mund të instaloni lehtësisht Docker ose microk8s (versioni i vogël i Kubernetes). Këtu ka udhëzime për instalimin e Docker për Linux dhe MacOS, dhe këtu — udhëzime për instalimin e microk8s për Windows, Linux dhe MacOS.

Pas instalimit, mund të kaloni këtë udhëzues për fillimin e shpejtë nga Docker, një version i ngjashëm ofrohet edhe për microk8s.

Nëse keni dëshirë ose nevojë për të ndjekur një kurs të plotë mbi Docker, ku folësit praktikë shqyrtojnë të gjithë mjetet e tij: nga abstraksionet kryesore deri te parametrat e rrjetit, hollësitë e punës me sisteme të ndryshme operative dhe gjuhë programuese, provoni "visa1". Do të njiheni me teknologjinë dhe do të kuptoni se ku dhe si është më mirë të përdorni Docker. Njëkohësisht do të merrni raste best practice — më mirë të mësoni në siguri dhe me mbështetje nga praktikantët përmes historive mbi pengesat sesa vetë duke u përballur me to.

Burimi: habr.com

Blini hosting të besueshëm për faqe interneti me mbrojtje nga DDoS, serverë VPS VDS 🔥 Blini hosting të besueshëm për faqe interneti me mbrojtje nga DDoS, serverë VPS VDS | ProHoster