A tipikus Docker és Kubernetes telepítések (hiányzó) biztonságának feltárása

A tipikus Docker és Kubernetes telepítések (hiányzó) biztonságának feltárása
Több mint 20 éve dolgozom informatikában, de valahogy sosem jutottam el a konténerekhez. Elméletileg megértettem, hogyan épültek fel és hogyan működnek. De mivel még soha nem találkoztam velük a gyakorlatban, nem voltam biztos abban, hogy a motorháztető alatti fogaskerekek pontosan hogyan forognak és forognak.

Ráadásul fogalmam sem volt, milyen a biztonságuk. De ismét jól hangzik az elmélet, és a régi dal „a biztonság nő, a használhatóság csökken” megragadt a fejemben. Így arra gondoltam, hogy mivel a konténerekkel mindent olyan egyszerű megcsinálni, akkor ott a biztonság a paritás alatt van. Mint kiderült, igazam volt.

A gyors kezdés érdekében jelentkeztem tanfolyamokra Fekete sapka 2020 címmel "A rongyoktól a gazdagságig: a Docker Swarm és a Kubernetes környezetek behatolása és védelme".

A kurzus, amelyet Sheila A. Berta és Sol Ozzan tartott, azonnal a Docker-konténerek működésének leírásával és a Kubernetesben történő telepítésükkel megtett úttal kezdődött. Ez egy teljesen gyakorlati óra volt – a diákoknak az óra előtt fel kellett telepíteniük a Dockert és a microk8-at a gépeikre – ez nagyszerű módja annak, hogy lássák, hogyan hatnak egymásra az eszközök, megtalálják a gyenge pontokat, és ami a legfontosabb, megpróbálják blokkolni őket.

Sajnos bár a tanfolyamok azt ígérték, hogy két nap után „herceg” leszek, úgy éreztem, hogy minden csak most kezdődik, és még sokat kell tanulnom.

A tipikus Docker és Kubernetes telepítések (hiányzó) biztonságának feltárása

Mielőtt belemerülnék magasztos megfigyeléseimbe, fontos elmagyarázni, mi is az a konténer. A fejlesztői világban normálisnak számít, hogy a személyes gépedre írt kód tökéletesen működik, de ha valahol megpróbálod futtatni egy szerveren, egyszerűen nem működik. A konténerek úgy próbálják megoldani ezt a problémát, hogy önálló gépeket biztosítanak, amelyeket könnyedén áthelyezhet egyik szerverről a másikra, tudva, hogy mindig működni fognak. Ahogy a neve is sugallja, tartalmazzák a kódot, a könyvtárakat és a munka elvégzéséhez szükséges egyéb szoftvereket. Kubernetes viszont igen hangszerelési platform konténerekhez. Elvileg több száz vagy több ezer különböző konténer zökkenőmentes kezelésére használható.

Az alábbiakban néhány megállapításomat mutatom be a piros-kék csapat szemszögéből.

Vörös Csapat

A legtöbb tárolótartalom rootként fut: Ez azt jelenti, hogy ha a tárolót feltörték, akkor teljes hozzáférése lesz a tárolóhoz. Ez sokkal könnyebbé teszi a következő lépéseket.

A dokkoló.zokni konténerbe szerelése veszélyes: Ha egy tárolón belül van root felhasználója, és egy Docker-foglalattal (/var/run/docker.sock) rendelkező tárolóba is telepítette a Dockert, lehetősége van a teljes fürt felfedezésére, beleértve a hozzáférést bármely más tárolóhoz. Az ilyen hozzáférést nem lehet megakadályozni a hálózat elkülönítésével vagy más módon.

A környezeti változók gyakran titkos adatokat tartalmaznak: A legtöbb esetben az emberek normál környezeti változók használatával küldenek jelszavakat a tárolóba. Tehát ha hozzáfér a fiókhoz, kémkedhet ezek után a környezeti változók után, hogy később bővítse hatáskörét.

A Docker API sok információt tud adni: A Docker API, ha alapértelmezés szerint be van állítva, engedély nélkül fut, és rengeteg információt képes előállítani. A Shodan használatával könnyen megtalálhatja a nyitott portok listáját, majd részletes információkat kaphat a fürtről - és folytathatja a teljes rögzítését. A TrendMicro írt erről legérdekesebb cikk.

Kék csapat

Ne futtassa a tároló tartalmát rootként: Annak ellenére, hogy egyszerűbb rootként futtatni, nem szabad ezt csinálni. Ehelyett futtassa az alkalmazásokat alaphelyzetbe állítási engedéllyel az uid megjelenítésével, vagy a --user kapcsolóval, amikor a parancssori felületről fut, vagy a Dockerfile-ban adja meg a USER értéket.

Ne engedje, hogy szoftvereket tárolókba telepítsenek: Szinte minden támadás azzal kezdődik, hogy elültet valamit. Az nmap-től az ifconfig-ig egészen magáig a Dockerig (konténeren belül) mindennapos volt bármit telepíteni egy tárolóba. Ugyanebből az okból kifolyólag mindig blokkoljon minden nem használt portot. Ez segít megelőzni a vezérlőparancsok továbbítását, amikor a gép fertőzött. A programok telepítésének megakadályozása mellett érdemes ügyelni arra, hogy magába a tárolóba legyen telepítve a feladat elvégzéséhez szükséges minimális számú alkalmazás.

Védje dokkoló.zokni: Védeni kell, mert a tároló és a fürt közötti kommunikáció ezen az aljzaton keresztül történik. Mivel ebben a cikkben nem akarok részletezni, olvassa el megjegyzés Dockertől, mi történhet, és azt is, hogyan lehet mindezt blokkolni.

Használja a Docker-titkokat a környezeti változók helyett: Vannak titkok körülbelül 2017 óta. Bár ez nem biztonságos, mégis jobb, mint a környezeti változók titkos adatok tárolóba való továbbítására.

Ha a cikk felkeltette az érdeklődését a konténerek iránt, egyszerűen telepítheti a Dockert vagy a microk8s-t (a Kubernetes kis verziója). Itt utasítások találhatók a Docker for Linux és MacOS telepítéséhez, és itt — utasítások a microk8s telepítéséhez Windows, Linux és MacOS rendszerre.

Telepítés után mehet is ez egy gyors kezdési útmutató a Dockertől, hasonló lehetőség felajánlott és microk8-hoz.

Ha szeretne vagy szeretne részt venni egy átfogó Docker tanfolyamon, amelyen gyakorlati előadók megvizsgálják az összes eszközt: az alapvető absztrakcióktól a hálózati paraméterekig, a különféle operációs rendszerekkel és programozási nyelvekkel való munka árnyalataiig, akkor próbálja kiDocker videó tanfolyam" Megismerheti a technológiát, és megértheti, hol és hogyan használja a legjobban a Dockert. Ugyanakkor szerezze be a legjobb gyakorlati példákat – jobb biztonságban és a szakemberek támogatásával tanulni a gereblyékről szóló történetekből, mint személyesen a tüskés nyelű gereblyékből.

Forrás: will.com

Hozzászólás