
V IT pracuji více než 20 let, ale nějak jsem se k containerům nedostal. V teorii jsem rozuměl, jak fungují a jak jsou nastaveny. Ale protože jsem s nimi nikdy nepracoval v praxi — nebyl jsem si jistý, jak přesně to pod kapotou funguje.
Kromě toho jsem neměl tušení, jak to mají se zabezpečením. Ale opět, teorie zní hezky a stará písnička „s rostoucím zabezpečením klesá uživatelský komfort“ mi zůstala v hlavě. Takže jsem si pomyslel, že když je práce s kontejnery tak snadná, úroveň bezpečnosti bude nízká. Jak jsem zjistil, měl jsem pravdu.
Pro rychlý start jsem se přihlásil na kurzy 2020 s názvem „».
Kurz, který vedli Sheila A. Berta a Sol Ozzan, okamžitě začal popisem toho, jak fungují kontejnery Docker a jaký proces podstupují při nasazení v Kubernetes. Byla to plně praktická lekce — studenti měli před lekcemi nainstalovat Docker a microk8s na své počítače — skvělý způsob, jak vidět interakci nástrojů mezi sebou, nalézt slabá místa a co je nejdůležitější, vyzkoušet je zabezpečit.
Bohužel, ačkoliv kurzy slibovaly, že budou „knížetem“ za dva dny, cítil jsem, že vše teprve začíná a že se ještě mám hodně co učit.

Než se ponořím do svých vysokých úvah, je důležité vysvětlit, co to container vlastně je. V oblasti vývoje je normální, že kód napsaný na vašem osobním počítači funguje dokonale, ale když se pokusíte spustit ho na serveru — prostě nefunguje. Kontejnery se snaží překonat tento problém tím, že poskytují autonomní stroje, které můžete snadno přenášet z jednoho serveru na druhý, přičemž víte, že vždy budou fungovat. Jak naznačuje název, obsahují kód, knihovny a další software nezbytný pro jejich provoz. Kubernetes je na druhou stranu . Principálně s jeho pomocí lze bezproblémově spravovat stovky nebo tisíce různých kontejnerů.
Níže jsou uvedeny některé mé postřehy z pohledu červeného a modrého týmu.
Červený tým
Většina obsahu kontejnerů se spouští pod root: to znamená, že pokud dojde k narušení kontejneru, získáte plný přístup k němu. To následné kroky výrazně usnadňuje.
Připojování docker.sock uvnitř kontejneru je nebezpečné: pokud získáte root uvnitř kontejneru a také jste nainstalovali Docker uvnitř kontejneru, který má socket Docker ( /var/run/docker.sock), máte potenciální možnost prozkoumat celý klastr, včetně přístupu k jakémukoli jinému kontejneru. Takový přístup nelze žádným způsobem zabránit ani síťovou izolací.
Proměnné prostředí často obsahují tajné údaje: ve většině případů lidé zasílají hesla do kontejneru pomocí běžných proměnných prostředí. Takže pokud máte přístup k účtu, můžete tyto proměnné prostředí nahlédnout a později rozšířit své oprávnění.
Docker API může poskytnout spoustu informací: Docker API, když je nastaveno na výchozí, funguje bez autorizace a může poskytnout spoustu informací. Pomocí Shodanu můžete snadno najít seznam otevřených portů, poté získat podrobné informace o klastru — a přejít k úplnému převzetí. TrendMicro o tom napsali .
Modrý tým
Nespouštějte obsah kontejnerů pod rootem: i když je jednodušší spouštět pod rootem, neměli byste to dělat. Místo toho spusťte aplikace s omezenými právy pomocí uid nebo pomocí parametru —user při práci s CLI, nebo určením USER v Dockerfile.
Nedovolte instalaci programů v kontejnerech: téměř každý útok začíná instalací něčeho. Od nmapu po ifconfig a samotný Docker (uvnitř kontejneru) byla instalace něčeho v kontejneru běžnou praxí. Z tohoto důvodu by měly být vždy blokovány všechny nepoužívané porty. To také pomáhá zabránit přenosu řídicích příkazů při infikování vaší mašiny. Kromě zabránění instalaci programů je dobré se ujistit, že v samotném kontejneru je nainstalováno minimální množství aplikací potřebných k provedení úkolu.
Chraňte docker.sock: musí být chráněn, protože skrze tento socket probíhá komunikace mezi kontejnerem a klastrem. Protože se nechci v této kapitole zabývat detaily, přečtěte si , co se může stát, a jak to všechno zablokovat.
Používejte tajemství Docker místo proměnných prostředí: Tajemství existují . Ačkoliv to není bezpečné, je to lepší než proměnné prostředí pro přenos citlivých dat do kontejneru.
Pokud vás článek zaujal a máte zájem o kontejnery, Docker nebo microk8s (malá verze Kubernetes) si můžete nainstalovat relativně snadno. existují pokyny k instalaci Dockeru pro Linux a MacOS, a — pokyny k instalaci microk8s pro Windows, Linux a MacOS.
Po instalaci můžete projít od Dockeru, podobná varianta a pro microk8s.
Pokud máte chuť nebo potřebu projít komplexním kurzem o Dockeru, kde odborníci z praxe rozebírají všechny jeho nástroje: od základních abstrakcí po parametrické sítě, nuance práce s různými operačními systémy a programovacími jazyky, zkuste "". Seznámíte se s technologií a pochopíte, kde a jak nejlépe používat Docker. A zároveň získáte best practice případy — nejlepší je učit se bezpečně a s podporou praktiků na příbězích o pádech, než osobně zažívat pády se špičatými rukama.
Zdroj: habr.com
