Undersykje de (ûntbrekkende) feiligens fan typyske Docker- en Kubernetes-ynstallaasjes

Undersykje de (ûntbrekkende) feiligens fan typyske Docker- en Kubernetes-ynstallaasjes
Ik haw mear as 20 jier yn IT wurke, mar op ien of oare manier kaam ik noait by konteners. Yn teory begriep ik hoe't se strukturearre wiene en hoe't se wurken. Mar om't ik se yn 'e praktyk noait tsjinkommen wie, wie ik net wis hoe't krekt de gears ûnder har motorkap draaiden en draaiden.

Boppedat, ik hie gjin idee hoe't harren feiligens wie. Mar wer, de teory klinkt moai, en it âlde ferske "as feiligens ferheget, brûkberens nimt ôf" fêst yn myn holle. Dus ik tocht dat om't alles sa maklik te dwaan is mei konteners, dan is de feiligens dêr ûnder de maat. As it docht bliken, ik hie gelyk.

Om in flugge start te krijen, haw ik my oanmeld foar kursussen Swarte hoed 2020 mei de titel "Fan lappen oant rykdom: penetraasje en beskerming fan Docker Swarm en Kubernetes omjouwings".

De kursus, leard troch Sheila A. Berta en Sol Ozzan, begon fuortendaliks mei in beskriuwing fan hoe't Docker-konteners wurkje en de reis dy't se nimme as se ynset wurde nei Kubernetes. Dit wie in folslein praktyske klasse - studinten moasten Docker en microk8's ynstallearje op har masines foar de klasse - in geweldige manier om te sjen hoe't de ark mei elkoar omgeane, swakke punten fine en, it wichtichste, besykje se te blokkearjen.

Spitigernôch, hoewol de kursussen tasein om nei twa dagen in "prins" te wurden, fielde ik dat alles krekt begon, en ik hie noch in protte te learen.

Undersykje de (ûntbrekkende) feiligens fan typyske Docker- en Kubernetes-ynstallaasjes

Foardat ik yn myn hege observaasjes dûke, is it wichtich om út te lizzen wat in kontener is. Yn 'e ûntwikkelingswrâld wurdt it as normaal beskôge dat de koade skreaun op jo persoanlike masine perfekt wurket, mar as jo besykje it earne op in server út te fieren, wurket it gewoan net. Containers besykje dit probleem te oerwinnen troch selsstannige masines te leverjen dy't jo maklik fan de iene server nei de oare kinne ferpleatse, wittende dat se altyd sille wurkje. Lykas de namme al fermoeden docht, befetsje se de koade, biblioteken en oare software dy't nedich binne om it wurk dien te krijen. Kubernetes, oan 'e oare kant, is orkestraasjeplatfoarm foar konteners. Yn prinsipe kin it brûkt wurde om hûnderten of tûzenen ferskillende konteners naadloos te behearjen.

Hjirûnder binne wat fan myn befinings út it perspektyf fan it reade en blauwe team.

Red Team

De measte kontenerynhâld rint as root: Dit betsjut dat as de kontener kompromittearre is, jo folsleine tagong hawwe ta de kontener. Dit makket de folgjende stappen folle makliker.

Mounting docker.sock binnen in kontener is gefaarlik: As jo ​​​​root hawwe yn in kontener en ek Docker ynstalleare yn in kontener dy't in Docker-socket hat (/var/run/docker.sock), hawwe jo it potensjeel om it heule kluster te ferkennen, ynklusyf tagong ta elke oare kontener. Sokke tagong kin net foarkommen wurde troch netwurkisolaasje of oare middels.

Omjouwingsfariabelen befetsje faak geheime gegevens: Yn 'e measte gefallen stjoere minsken wachtwurden nei de kontener mei normale omjouwingsfariabelen. Dus as jo tagong hawwe ta it akkount, kinne jo dizze omjouwingsfariabelen bispiede om letter jo foegen út te wreidzjen.

Docker API kin in protte ynformaasje jaan: De Docker API, as standert ynsteld, rint sûnder autorisaasje en kin in ton oan ynformaasje produsearje. Mei Shodan kinne jo maklik in list mei iepen havens fine, dan detaillearre ynformaasje krije oer it kluster - en trochgean nei de folsleine opname. TrendMicro skreau hjiroer meast nijsgjirrige artikel.

Blauwe Team

Net útfiere kontener ynhâld as root: Ek al is it makliker om te rinnen as root, jo moatte it net dwaan. Ynstee, rinne applikaasjes mei reset tagongsrjochten troch it werjaan fan de uid, itsij mei help fan de --user opsje by it útfieren fan de CLI, of troch it opjaan fan USER yn de Dockerfile.

Lit gjin software ynstalleare yn konteners: Hast elke oanfal begjint mei it planten fan wat. Fan nmap oant ifconfig oant Docker sels (binnen in kontener), alles ynstallearje yn in kontener is gewoanlik west. Om deselde reden moatte jo altyd alle net brûkte havens blokkearje. Dit helpt ek foar te kommen dat kontrôlekommando's wurde oerdroegen as jo masine ynfekteare is. Neist it foarkommen fan 'e ynstallaasje fan programma's, is it wurdich om derfoar te soargjen dat it minimale oantal applikaasjes nedich om de taak te foltôgjen yn' e kontener sels binne ynstalleare.

Beskermje docker.sock: It moat wurde beskerme omdat kommunikaasje tusken de kontener en it kluster wurdt ferwurke troch dizze socket. Om't ik net yn detail yn dit artikel wol gean, lês dan notysje fan Docker, wat kin barre, en ek hoe't jo it allegear blokkearje.

Brûk Docker-geheimen ynstee fan omjouwingsfariabelen: Der binne geheimen sûnt likernôch 2017. Hoewol dit net feilich is, is it noch altyd better as omjouwingsfariabelen foar it trochjaan fan geheime gegevens nei de kontener.

As it artikel jo ynteresse yn konteners hat opwekke, kinne jo Docker of microk8s maklik ynstallearje (in lytse ferzje fan Kubernetes). it is Der binne ynstruksjes foar it ynstallearjen fan Docker foar Linux en MacOS, en hjir - ynstallaasje-ynstruksjes foar microk8s Windows, Linux en MacOS.

Nei ynstallaasje kinne jo gean dit is in flugge start gids fan Docker, ferlykbere opsje oanbean en foar microk8s.

As jo ​​​​in wiidweidige kursus oer Docker wolle of moatte nimme, wêryn praktyske sprekkers al har ark ûndersykje: fan basisabstraksjes oant netwurkparameters, nuânses fan wurkjen mei ferskate bestjoeringssystemen en programmeartalen, besykje dan "Docker fideokursus" Jo sille fertroud wurde mei de technology en begripe wêr en hoe't jo Docker it bêste kinne brûke. En tagelyk krije best practice gefallen - it is better om te learen yn feilichheid en mei de stipe fan beoefeners út ferhalen oer rakes dan persoanlik út 'e harken sels mei spiked handgrepen.

Boarne: www.habr.com

Keapje betroubere hosting foar siden mei DDoS-beskerming, VPS VDS-tsjinners 🔥 Keapje betroubere websidehosting mei DDoS-beskerming, VPS VDS-tsjinners | ProHoster