Megjegyzés fordítás.: A Docker biztonsága valószínűleg az IT világának egyik örök témája. Tehát, felesleges magyarázatok nélkül bemutatjuk a témához kapcsolódó ajánlások legújabb fordítását. Ha már érdeklődtél e kérdés iránt, sokuk ismerős lehet számodra. Az összegzést kiegészítettük néhány hasznos eszközzel és további forrással a téma mélyebb megismeréséhez.

Ajánlom figyelmetekbe a Docker biztonságának biztosítására vonatkozó útmutatót. Visszajelzéseiteket szívesen fogadom, mivel ez inkább különböző forrásokból összeállított részletek gyűjteménye, és nem minden egyes részlet került alapos ellenőrzés alá. Az ajánlásokat három kategóriába soroltuk:
- Szükséges intézkedések a hoszt operációs rendszerében a Dockerrel való munkavégzés során;
- Ut instrukciók, amelyek a konfigurációs fájlra és a konténerek létrehozására vonatkoznak;
- Biztonsági eszközök, amelyek integrálhatóak a Docker Enterprise specifikus funkcióival.
Az útmutató alapját különböző források képezték, sok közülük lent található. Nem nevezhető kimerítőnek, de lefedi az alapokat. További információk találhatóak a CIS tesztek leírásában (hivatkozás a dokumentum végén), valamint a Docker dokumentációjában.
Docker Biztonsági Irányelvek
automatikusan ellenőrzi a Dockeredet a leggyakoribb legjobb gyakorlatoknak való megfelelés érdekében. A szkript megfelelő heurisztikus biztonsági tesztként funkcionál, de nem szabad átfogó elemző eszköznek tekinteni.
A hoszt operációs rendszer
Nyilvánvaló, hogy a Docker-konténer nem lehet biztonságos, ha maga a hosztrendszer nincs védve. Ezért fontos követni a legjobb gyakorlatokat az operációs rendszerek biztonságának terén. Ezen kívül érdemes lenne sebezhetőségi elemzést végezni a következő ajánlások mellett.
Audit szabályok
Hozz létre és használj audit szabályokat a Dockerrel kapcsolatos fájlokhoz a következő segítségével: auditctl. Például, hozzáadhatod -w /usr/bin/dockerd -k docker refs /etc/audit.rules és indítsd újra az audit szolgáltatást.
FIPS üzemmód
A FIPS üzemmód aktiválása a kriptográfiai eszközöket arra kényszeríti, hogy átálljanak a FIPS-be bevont algoritmusokra. (amerikai — a fordító megjegyzése), megfelelve ezzel a szövetségi és ágazati normáknak és követelményeknek. Ha a gazda operációs rendszere támogatja a FIPS módot, azt a következő parancsok végrehajtásával lehet engedélyezni:
sed -i 's\/GRUB_CMDLINE_LINUX="\/GRUB_CMDLINE_LINUX="fips=1 \/g' \/etc\/default\/grub\ngrub2-mkconfig -o \/boot\/grub2\/grub.cfg && rebootA Docker Engineben is engedélyezni kell a FIPS-t:
mkdir -p \/etc\/systemd\/system\/docker.service.d 2>&1; echo -e "[Service]n Environment="DOCKER_FIPS=1"" > \/etc\/systemd\/system\/docker.service.d\/fips-module.conf; systemctl daemon-reload; systemctl restart dockerTovábbi információért lásd a dokumentációt és .
Docker Secrets
A bizalmas adatokat titkokként kell tárolni. A megfelelő szolgáltatás elindítható a docker service create parancs használatával:
docker service create --label com.docker.ucp.access.label=\/prod --name nginx --publish 443 --secret source=orcabank_prod_mobile.ca.pem.v1,target=ca.pem nginxRészletekért lásd .
A Docker konfigurációs fájlja
A következő beállításokat hozzá lehet adni a konfigurációs fájlhoz /etc/docker/daemon.json:
-
"icc":false— letiltja az adatok cseréjét a konténerek között, hogy elkerülje a szükségtelen adatkiáramlást. -
log-level: "info"— összegyűjti az összes logot, kivéve a hibakeresési logokat. { "log-driver": "syslog", "log-opts": { "syslog-address": "udp:\/\/1.2.3.4:1111" } }— csatlakoztatja a távoli naplózást, és a megadott címre küldi őket. Csak akkor működik, ha a syslog démon fut. Az opciók TCP és UDP is lehetnek. Minden egyes konténerhez külön csatlakozás is lehetséges. Ehhez külön jelzőt kell beállítani a Docker indításakor (
--log-opt syslog-address=ADDRESS).-
"userns-remap": "Your_User"— megakadályozza a privilégiumok emelkedését (privilege escalation), elkülönítve a névteret egy adott felhasználó számára.
A transport szintű biztonság
A Docker démonhoz való csatlakozás lehetősége (ha távoli hozzáférés szükséges) csak azok számára legyen elérhető, akik hozzáférnek a TLS-kliens hitelesítő adataihoz.
Engedélyezési pluginek
Határozza meg, hogy mely felhasználóknak milyen parancsokat engedélyez, és hozzon létre megfelelő engedélyezési plugint a Docker számára. Ezután indítsa el a Docker típust, és adja hozzá a plugint:
dockerd --authorization-plugin=PLUGIN_IDA hitelesítési pluginek létrehozásáról többet tudhat meg .
A démon paraméterei
A Docker démon alapértelmezett paraméterekkel működik.
-
--live-restore— ez a paraméter segít csökkenteni a konténerek leállási idejét a rendszer lekapcsolásakor vagy újraindításakor. Könnyebbé válik a javításuk vagy frissítésük minimális leállás mellett; -
--userland-proxy=false— amikor elérhetőek vagy használatban vannak a hairpin NAT-ok, a felhasználói térben lévő proxy feleslegessé válik, ami csak növeli a lehetséges támadási felületek számát; -
--no-new-privileges— megakadályozza, hogy a konténerek további jogosultságokat szerezzenek suid vagy sguid segítségével; -
--seccomp-profile /path/to/profile— ha saját seccomp profillal rendelkezik, ezt a flag segítségével alkalmazhatja. További információt a Seccomp és a Docker témájában .
Konténerek és build fájlok konfigurációja
Felhasználó létrehozása
Győződjön meg arról, hogy a konténerhez létrejött egy felhasználó, és ezt a felhasználót használja (NE indítsa el a konténert root-ként).
Távhozzáférés
Tiltsa le a távhozzáférést a démonhoz. Ha ez mégis szükséges, védje meg tanúsítványokkal.
Isolate a felhasználói névtér
Különösen fontos biztosítani, hogy a Docker felhasználói névtere izolálva legyen, mivel alapértelmezés szerint közösen használják a gazda névterével. Néhány esetben ezt kihasználhatják privilégiumok megszerzésére, sőt akár a konténerből való kilépésre is. A felhasználói névtér izolálásához a konfigurációs fájl szerkesztésén keresztül lehet eljárni (ahogy azt fentebb a 'Docker konfigurációs fájl' szakaszban leírtuk). Ennek a problémának a további említése itt a fontossága miatt történik.
Healthcheck-ek
A healthcheck (működési ellenőrzés) egy erőteljes eszköz, amely lehetővé teszi a konténer integritásának ellenőrzését. A Dockerfile-ban az alábbi utasítással állítható be HEALTHCHECK. A healthcheck-ek biztosítják, hogy a konténer megfelelően működjön. Az alábbi példában a működési ellenőrzés 0-val zárul, ha a szerver működik, és 1-gyel, ha "összeomlott":
HEALTHCHECK CMD curl --fail http://localhost || exit 1SELinux
Ha a SELinux támogatott a gazda operációs rendszeren, hozzon létre vagy importáljon egy SELinux politikát, és indítsa el a Dockert valamivel, hogy a SELinux bekapcsolva legyen:
docker daemon --selinux-enableEkkor a Docker konténerek biztonsági beállításokkal indíthatók, például:
docker run --interactive --tty --security-opt label=level:TopSecret centos /bin/bashHálózati interfészek
Alapértelmezés szerint a Docker az összes hálózati interfészen hallgat. Mivel a legtöbb esetben a forgalom csak az egyikre várható, ez a megközelítés indokolatlanul növeli a támadási kockázatot. Ezért konténer indítása során a portokat egy adott interfészhez lehet kötni a gazdán:
docker run --detach --publish 10.2.3.4:49153:80 nginxAz előre mentett képmásverziók
Képmás letöltésekor győződjön meg róla, hogy a helyi gyorsítótár összhangban van a tároló tartalmával. Ellenkező esetben elavult képmást vagy olyan képmást kaphat, amely biztonsági sérülékenységeket tartalmaz.
Hálózati híd
Alapértelmezett hálózati modell, docker0, amely sebezhető az ARP-spoofing és MAC-flooding támadásokkal szemben. E probléma megoldásához hozzon létre egy hálózati hidat a specifikációi szerint, ahogyan azt .
A Docker socket figyelmeztetése
Soha ne engedje át a Docker socketet a konténerbe. Ellenkező esetben a konténer képes lesz Docker parancsokat végrehajtani, így kapcsolatba léphet a gazda operációs rendszerével és irányíthatja azt. Ne tegye ezt.
Docker Enterprise konfigurálása
Docker Trust
A Docker Trust lehetővé teszi kulcsok generálását, amelyek segítségével ellenőrizheti a képmások kriptográfiai integritását. A Docker Trust kulcsokat a Docker képmások aláírására használják privát kulcsokkal, amelyeket nyilvános kulcsokkal ellenőriznek a Notary Serveren. További információk — . A Docker Trust Enterprise Engine-be való bekapcsolásáról részletes információt találhat a .
Sebezhetőségek vizsgálata
A Docker Enterprise beépített sebezhetőség-ellenőrzővel rendelkezik, amely lehetővé teszi a CVE adatbázis offline sebezhetőségek vizsgálatára történő feltöltését a képmásokban. A képmások rendszeres vizsgálata segít biztonságosabbá tenni azokat: a felhasználó azonnal figyelmeztetéseket kap a talált sebezhetőségekről. További információ az alábbiakban található. .
Megjegyzés fordítás.: Léteznek Open Source sebezhetőség-ellenőrzők Docker képmásokhoz, példák láthatók az anyag végén.
LDAP és UCP integrációja
A Universal Control Plane integrálható LDAP-dal. Az eredmény egy egyszerűsített hitelesítési rendszer lesz, amely elkerüli a felesleges duplázódást. További információk erről a cikkben találhatóak. .
Egyéb anyagok
További információkat a Docker biztonságával kapcsolatos legjobb gyakorlatokról találhat a . Javasoljuk, hogy töltse le a .
Fordító ajándéka
Logikus kiegészítéseként ennek a cikknek közzétesszük a 10 népszerű Open Source eszköz listáját a Docker biztonságának javításához. Ez a (Bill Doerrfeld a Doerrfeld.io-tól szerzője).
NB: További információkat a fent említett projektekről olvashat a „».
- — az a szkriptnyújtás, amely a cikk elején már említésre került, ellenőrzi a Docker konténereket a biztonsági gyakorlatoknak való megfelelés szempontjából.

- — valószínűleg a legnépszerűbb eszköz a konténerbeli sebezhetőségek statikus elemzésére. Számos CVE sebezhetőségi adatbázist használ (beleértve a vezető Linux disztribúciók, mint a Red Hat, Debian, Ubuntu nyomkövetőit). Fejlesztők számára API-t kínál, és egyszerűen lehetőséget ad a funkciók kiterjesztésére (új 'meghajtók' hozzáadásával). Használják a népszerű nyilvános képkatalógusban (a Docker Hub megfelelőjében) — Quay.io.
- — hálózati biztonsági megoldás a kernel szintjén, ami a BPF hálózati csomag szűrési technológián alapul.
- — egy eszköz, amely a konténerek biztonsági sebezhetőségeinek elemzésére szolgál a CVE adatbázis alapján. Továbbá lehetőséget biztosít egyéni politikák alkalmazására (különböző adatok alapján, például fehér/fekete listák, fájlok tartalma stb.) a konténerek biztonságának értékelésére.
- — egy teljes ökoszisztéma a biztonsági politikák létrehozására és fenntartására különböző platformokon. Konténerek ellenőrzésére biztosítja az
oscap-docker. - — egy eszköz a Docker konténerek sebezhetőségeinek, trójai programoknak, vírusoknak és malware-nek a vizsgálatára. A CVE adatbázis tartalmazza az OWASP függőségeit ellenőrző vizsgálatokat, a Red Hat Oval adatbázist és az Exploit Database kihasználási adatainak gyűjteményét.
- — egy keretrendszer a Docker képek aláírására, amelyet eredetileg a Docker Inc. hozott létre (majd átadták a CNCF fejlődésének). Használata lehetővé teszi a szerepek delegálását és a felelősségek elosztását a konténerek között, valamint a képek kriptográfiai integritásának ellenőrzését.
- — egy API a metaadatokhoz, amely a belső biztonsági politikák kezelésére tervezték. Példa: lehetővé teszi a konténerbiztonsági ellenőrzők működésének javítását. A Shopify ezt az API-t használja az 500 ezer képük metaadatainak kezelésére.
- — egy Kubernetes eszköz, amely a rendszer viselkedését figyeli: aktivitást a konténerekben, hosztokon és a hálózaton. Lehetővé teszi a folyamatos ellenőrzések beállítását az infrastruktúrában, anomáliák felfedezését és riasztások küldését bármilyen Linux rendszerhívásra.
- — egy új eszköz a Docker-konténerképek statikus elemzésére. Lehetővé teszi, hogy "belássunk" a képfájlokba, összegyűjtve a szükséges adatokat, alkalmazva a megfelelő politikákat stb.
Egy újabb hasznos gyűjtemény praktikus ajánlásokról arról, hogyan lehet biztonságosabbá tenni a Dockert, található a Aqua Security cégnél. Sok tanácsuk átfedésben van a fent említettekkel, de vannak mások is. Például a szerzők javasolják a konténerek aktivitásának monitorozását, és megmutatják, mire érdemes figyelni a Docker Swarm használata során.
Aki mélyebbre szeretne merülni a témában, tavaly megjelent egy könyv, "»", amelynek egyes részei szabadon elérhetőek .
Végül, aki gyakorlati tapasztalatokat szeretne szerezni a Docker egyes biztonsági aspektusaival kapcsolatban: a Seccomp profilokkal és a Linux kernel capabilities használatával a konténerekben, elvégezheti a megfelelő laboratóriumi gyakorlatokat a * — lásd a "Security" szekciót.

* Magáról a forrásról két éve beszéltünk, és 2018 novemberében egy nagyon érdekes (biztonsági szempontból) esemény történt vele. Röviden, a CyberArk Software Ltd. szakértőinek sikerült feltörniük: lehetőséget nyerve arra, hogy parancsokat hajtsanak végre a konténerekből kilépve, azaz a gazdaszerveren. Remek illusztrációja a Docker biztonsági problémáinak, nem igaz? A történések részleteiről olvashat itt Két évvel ezelőtt, 2018 novemberében pedig egy nagyon érdekes (a biztonság szempontjából) történet történt vele. Röviden, a CyberArk Software Ltd. szakértőinek sikerült feltörniük: lehetőséget kaptak parancsok végrehajtására a konténereken kívül, tehát a gazda rendszeren. Csodálatos illusztrációja a Docker biztonsági problémájának, nem igaz? A történésekről minden részletet olvashat .
Fejlesztési eszközök, amelyek Kubernetesben futnak
Olvasson további információkat a blogunkban:
- «»;
- «»;
- «»;
- «»;
- «»;
- «».
Forrás: habr.com

