Tanulmányozzuk a Docker és Kubernetes tipikus telepítéseinek (hiányzó) biztonságát.

Tanulmányozzuk a Docker és Kubernetes tipikus telepítéseinek (hiányzó) biztonságát.
Több mint 20 éve dolgozom az IT területén, de valahogy a konténerekhez még nem jutottam el. Elméletben értettem, hogyan működnek, de mivel soha nem találkoztam velük gyakorlatban, nem voltam biztos benne, hogyan is működnek pontosan a gépezetek a kapott információk alapján.

Emellett fogalmam sem volt arról, hogyan állnak a biztonsággal. De ismét, az elmélet szépen hangzik, és az a régi dal, hogy "a biztonság növekedésével csökken a használhatóság", mindig ott motoszkált a fejemben. Így gondoltam, ha ennyire könnyű a konténerekkel dolgozni, akkor a biztonságuk túl alacsony szintű. Mint kiderült, igazam volt.

Gyors kezdetképpen beiratkoztam egy Black Hat 2020-as tanfolyamra, amelynek címe "A sárból a hercegségbe: behatolás és védelem a Docker Swarm és Kubernetes környezetében.».

A kurzust Sheila A. Berta és Sol Ozzan vezette, és azonnal a Docker konténerek működésének leírásával kezdődött, valamint azzal, hogy milyen utat járnak be a Kubernetes telepítésekor. Ez teljesen gyakorlati foglalkozás volt - a diákoknak előzőleg telepíteniük kellett a Docker-t és a microk8s-t a gépeikre - remek mód arra, hogy lássák az eszközök közötti interakciót, megtalálják a gyenge pontokat, és ami a legfontosabb, megpróbálják azokat blokkolni.

Sajnos, bár a kurzusok azt ígérték, hogy két nap alatt "herceggé" válok, éreztem, hogy minden csak most kezdődik, és még sokat kell tanulnom.

Tanulmányozzuk a Docker és Kubernetes tipikus telepítéseinek (hiányzó) biztonságát.

Mielőtt belemerülnék a magas szintű megfigyeléseimbe, fontos megmagyarázni, mi is az a konténer. A fejlesztés világában normális helyzetnek számít, hogy a saját gépén írt kód tökéletesen működik, de amikor megpróbálja futtatni valahol egy szerveren – egyszerűen nem működik. A konténerek azt a problémát próbálják leküzdeni, hogy autonóm gépeket kínálnak, amelyeket könnyen át lehet vinni egyik szerverről a másikra, biztos tudva, hogy mindig működni fognak. Ahogy a neve is mutatja, tartalmazza a működéshez szükséges kódot, könyvtárakat és egyéb szoftvereket. A Kubernetes ezzel szemben egy konténer-orkestráló platform.Alapvetően ezzel a segítségével zökkenőmentesen kezelhetünk száz vagy akár ezer különböző konténert.

Alább néhány következtetésem a vörös és kék csapat szemszögéből.

Vörös csapat

A konténerek többsége root módon fut.: ez azt jelenti, hogy ha megkompromittálja a konténert, akkor teljes hozzáférést kap a konténerhez. Ez jelentősen megkönnyíti a további lépéseket.

A docker.sock konténeren belüli bekötése veszélyes: ha root hozzáférést szerzett a konténeren belül, és Docker-t is telepített a Docker socket-tel rendelkező konténerben (/var/run/docker.sock), akkor potenciálisan lehetősége van az egész klaszter feltérképezésére, beleértve bármely másik konténerhez való hozzáférést is. Az ilyen hozzáférést se hálózati elszigetelés, se más módon nem lehet megakadályozni.

A környezeti változók gyakran titkos adatokat tartalmaznak: a legtöbb esetben az emberek jelszavakat küldenek a konténerbe hagyományos környezeti változókon keresztül. Tehát, ha hozzáférése van a fiókhoz, akkor megnézheti ezeket a környezeti változókat, hogy később kibővítse a jogosultságait.

A Docker API rengeteg információt adhat ki: alapértelmezett beállítások mellett a Docker API engedélyezés nélkül működik, és rengeteg információt adhat ki. A Shodan segítségével könnyen találhat egy listát a nyitott portokról, majd részletes információt szerezhet a klaszterről — és teljes körű átveheti azt. A TrendMicro erről írt egy érdekes cikket.

Kék csapat

Ne futtassa a konténerek tartalmát root-ként: bár root-ként könnyebb futtatni, ezt nem szabad tenni. Ehelyett futtassa az alkalmazásokat csökkentett jogosultságokkal, beállítva az uid-t vagy a --user paraméter használatával a CLI-ben, vagy USER megadása a Dockerfile-ban.

Ne engedje a programok telepítését a konténereken belül: szinte minden támadás valaminek a telepítésével kezdődik. Kezdve az nmap-től és az ifconfig-tól, mind a Dockerig (a konténeren belül), valaminek a telepítése a konténerben szokásos dolog volt. Ugyanazon okból mindig blokkolni kell az összes nem használt portot. Ez szintén segít megakadályozni a vezérlő parancsok átadását gépe megfertőződésekor. A programok telepítése mellett érdemes biztosítani, hogy a konténerben csak a feladat végrehajtásához szükséges minimális számú alkalmazás legyen telepítve.

Védekezzen a docker.sock ellen: védeni kell, mivel ezen a socketen keresztül történik a kommunikáció a konténer és a klaszter között. Mivel nem szeretnék a részletekbe belemenni ebben a cikkben, olvassa el a Docker jegyzetét, hogy mi történhet, és hogyan lehet ezeket mind blokkolni.

Használja a Docker titkokat a környezeti változók helyett: Vannak titkok kb. 2017 óta. Bár ez nem biztonságos, mégis jobb, mint a környezeti változók a titkos adatok konténerbe való átadásához.

Ha az írás felkeltette az érdeklődését a konténerek iránt – elég könnyen telepíthető a Docker vagy a microk8s (a Kubernetes kisebb változata). Itt Itt találhatóak a Docker telepítési útmutatói Linuxra és MacOS-ra, valamint itt — a microk8s telepítési útmutatói Windowsra, Linuxra és MacOS-ra.

A telepítés után megismerheti ezt a gyorsindítási útmutatót a Docker-től, hasonló opció ajánlott és a microk8s-hez.

Ha van kedve vagy szüksége van egy átfogó Docker tanfolyam elvégzésére, ahol gyakorló szakemberek elemzik az összes eszközét: az alapvető absztrakcióktól a hálózati beállításokig, a különböző operációs rendszerek és programozási nyelvek finomságaiig, próbálja ki a "Videokurzus a Docker-ről". Megismerkedhet a technológiával, és megértheti, hol és hogyan érdemes a Dockert használni. Emellett megkapja a legjobb gyakorlatokat — jobb biztonságban és gyakorlóktól kapott támogatással tanulni a tapasztalatokkal, mint saját tapasztalatokon keresztül.

Forrás: habr.com

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster