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
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.
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
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
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
Használja a Docker-titkokat a környezeti változók helyett: Vannak titkok
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).
Telepítés után mehet is
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 ki
Forrás: will.com