Skúmanie (chýbajúceho) zabezpečenia typických inštalácií Docker a Kubernetes

Skúmanie (chýbajúceho) zabezpečenia typických inštalácií Docker a Kubernetes
V IT sa pohybujem už viac ako 20 rokov, no ku kontajnerom som sa akosi nikdy nedostal. Teoreticky som pochopil, ako boli štruktúrované a ako fungovali. Ale keďže som sa s nimi v praxi nikdy nestretol, nebol som si istý, ako presne sa ozubené kolesá pod ich kapotou otáčajú a otáčajú.

Okrem toho som nemal ani potuchy, aké je ich zabezpečenie. Ale opäť, teória znie pekne a v hlave mi utkvela stará pesnička „ako sa bezpečnosť zvyšuje, použiteľnosť klesá“. Tak som si myslel, že keď sa s kontajnermi všetko robí tak jednoducho, bezpečnosť je tam pod úrovňou. Ako sa ukázalo, mal som pravdu.

Pre rýchly začiatok som sa prihlásil na kurzy Čierny klobúk 2020 s názvom "Od handier k bohatstvu: prienik a ochrana prostredí Docker Swarm a Kubernetes".

Kurz, ktorý vyučovali Sheila A. Berta a Sol Ozzan, okamžite začal popisom toho, ako kontajnery Docker fungujú, a cestu, ktorú absolvujú pri nasadení do Kubernetes. Bola to úplne praktická hodina – študenti si pred hodinou museli na svoje stroje nainštalovať Docker a microk8 – skvelý spôsob, ako vidieť, ako nástroje navzájom spolupracujú, nájsť slabé miesta a čo je najdôležitejšie, pokúsiť sa ich zablokovať.

Žiaľ, hoci kurzy sľubovali, že sa po dvoch dňoch stanem „princom“, cítil som, že všetko len začína a mám sa ešte veľa čo učiť.

Skúmanie (chýbajúceho) zabezpečenia typických inštalácií Docker a Kubernetes

Predtým, ako sa ponorím do mojich vznešených pozorovaní, je dôležité vysvetliť, čo je kontajner. Vo svete vývoja sa považuje za normálne, že kód napísaný na vašom osobnom počítači funguje perfektne, ale keď sa ho pokúsite spustiť niekde na serveri, jednoducho to nefunguje. Kontajnery sa snažia prekonať tento problém poskytovaním samostatných počítačov, ktoré môžete jednoducho presúvať z jedného servera na druhý s vedomím, že budú vždy fungovať. Ako už názov napovedá, obsahujú kód, knižnice a ďalší softvér potrebný na vykonanie úlohy. Kubernetes, na druhej strane, je orchestračná platforma pre kontajnery. V zásade ho možno použiť na bezproblémovú správu stoviek alebo tisícok rôznych kontajnerov.

Nižšie sú uvedené niektoré z mojich zistení z pohľadu červeného a modrého tímu.

Červený tím

Väčšina obsahu kontajnera beží ako root: To znamená, že ak je kontajner napadnutý, budete mať ku kontajneru plný prístup. Tým sú ďalšie kroky oveľa jednoduchšie.

Montáž docker.sock do kontajnera je nebezpečná: Ak máte root v kontajneri a tiež ste nainštalovali Docker v kontajneri, ktorý má soket Docker (/var/run/docker.sock), máte potenciál preskúmať celý klaster vrátane prístupu k akémukoľvek inému kontajneru. Takémuto prístupu nemožno zabrániť izoláciou siete alebo inými prostriedkami.

Premenné prostredia často obsahujú tajné údaje: Vo väčšine prípadov ľudia posielajú heslá do kontajnera pomocou bežných premenných prostredia. Takže ak máte prístup k účtu, môžete špehovať tieto premenné prostredia, aby ste neskôr rozšírili svoje právomoci.

Docker API môže poskytnúť veľa informácií: Keď je rozhranie Docker API predvolene nakonfigurované, beží bez autorizácie a môže produkovať množstvo informácií. Pomocou Shodan môžete ľahko nájsť zoznam otvorených portov, potom získať podrobné informácie o klastri - a pokračovať v jeho úplnom zachytení. Napísal o tom TrendMicro najzaujímavejší článok.

Modrý tím

Nespúšťajte obsah kontajnera ako root: Aj keď je jednoduchšie spustiť ako root, nemali by ste to robiť. Namiesto toho spúšťajte aplikácie s oprávneniami na obnovenie zobrazením uid, buď pomocou voľby --user pri spustení z CLI, alebo zadaním USER v súbore Dockerfile.

Nepovoľte inštaláciu softvéru do kontajnerov: Takmer každý útok začína zasadením niečoho. Od nmap cez ifconfig až po samotný Docker (vo vnútri kontajnera), inštalácia čohokoľvek v kontajneri bola samozrejmosťou. Z rovnakého dôvodu by ste mali vždy zablokovať všetky nepoužívané porty. To tiež pomáha zabrániť prenosu riadiacich príkazov, keď je váš počítač infikovaný. Okrem zabránenia inštalácii programov sa oplatí uistiť sa, že v samotnom kontajneri je nainštalovaný minimálny počet aplikácií potrebných na dokončenie úlohy.

Chráňte docker.sock: Musí byť chránený, pretože komunikácia medzi kontajnerom a klastrom sa spracováva cez tento soket. Keďže sa v tomto článku nechcem rozpisovať, čítajte poznámka od Dockera, čo sa môže stať, a tiež ako to všetko zablokovať.

Namiesto premenných prostredia použite tajné kľúče Docker: Existujú tajomstvá približne od roku 2017. Aj keď to nie je bezpečné, stále je to lepšie ako premenné prostredia na odovzdávanie tajných údajov do kontajnera.

Ak vo vás článok vzbudil záujem o kontajnery, môžete si jednoducho nainštalovať Docker alebo microk8s (malú verziu Kubernetes). Tu tam sú pokyny na inštaláciu Docker pre Linux a MacOS, a tu — pokyny na inštaláciu microk8 pre Windows, Linux a MacOS.

Po inštalácii môžete ísť toto je rýchly sprievodca od Docker, podobná možnosť ponúkol a pre microk8.

Ak chcete alebo potrebujete absolvovať komplexný kurz o Dockeri, v ktorom praktickí rečníci preskúmajú všetky jeho nástroje: od základných abstrakcií po sieťové parametre, nuansy práce s rôznymi operačnými systémami a programovacími jazykmi, skúste „Docker video kurz" Oboznámite sa s technológiou a pochopíte, kde a ako najlepšie používať Docker. A zároveň si zaobstarajte príklady osvedčených postupov – je lepšie učiť sa bezpečne a s podporou odborníkov z príbehov o hrabličkách, ako osobne zo samotných hrablí s ryhovanými rukoväťami.

Zdroj: hab.com

Pridať komentár