Jegyzet. ford.: A Docker biztonság témája talán az egyik örök téma a modern IT világban. Ezért további magyarázat nélkül bemutatjuk a vonatkozó ajánlások következő válogatásának fordítását. Ha már felkeltette az érdeklődését ez a kérdés, sok közülük ismerős lesz. Magát a gyűjteményt kiegészítettük a hasznos segédprogramok listájával és számos forrással a kérdés további tanulmányozásához.

Figyelmébe ajánlom a Docker biztonságának biztosításáról szóló útmutatót. Szívesen fogadjuk a visszajelzéseket, mivel ez inkább a különböző forrásokból származó szemelvények gyűjteménye, és nem mindegyiket vizsgálták meg alaposan. Az ajánlások három kategóriába sorolhatók:
- A Dockerrel végzett munka során szükséges intézkedések a gazdagép operációs rendszeren belül;
- Az összeállítási konfigurációs fájlhoz és a tárolók létrehozásához kapcsolódó utasítások;
- Biztonsági eszközök, amelyek integrálhatók a Docker Enterprise speciális szolgáltatásaival.
Az útmutató számos forráson alapul, amelyek közül sokat az alábbiakban sorolunk fel. Nem átfogó, de minden alapot lefed. További információk találhatók a CIS-tesztek leírásában (a jelen útmutató végén található hivatkozás), valamint a Docker dokumentációjában.
Docker biztonsági referenciaérték
automatikusan ellenőrzi a Dockert a leggyakoribb bevált módszerek szerint. A szkript jó heurisztikus biztonsági teszt, de nem tekinthető átfogó elemzési eszköznek.
Gazda operációs rendszer
Nyilvánvaló, hogy a Docker-tároló csak akkor lehet biztonságos, ha maga a gazdagép rendszer biztonságos. Ezért az operációs rendszer biztonságának bevált gyakorlatait követni kell. Ezen túlmenően bölcs dolog lenne a sebezhetőség elemzése is elvégezni a következő ajánlások mellett.
Ellenőrzési szabályok
Hozzon létre és használjon naplózási szabályokat a Dockerrel kapcsolatos fájlokhoz a használatával auditctl. Például hozzáadhat -w /usr/bin/dockerd -k docker к /etc/audit.rules és indítsa újra az audit szolgáltatást.
FIPS mód
A FIPS mód engedélyezése arra kényszeríti a kriptográfiai eszközöket, hogy a FIPS-listán szereplő algoritmusokra váltsanak (Amerikai - kb. fordítás.), így megfelel a szövetségi és iparági előírásoknak és követelményeknek. Ha a gazdagép operációs rendszer támogatja a FIPS módot, a következő parancsok futtatásával engedélyezheti:
sed -i 's/GRUB_CMDLINE_LINUX="/GRUB_CMDLINE_LINUX="fips=1 /g' /etc/default/grub
grub2-mkconfig -o /boot/grub2/grub.cfg && rebootEzenkívül engedélyeznie kell a FIPS-t a Docker Engine-ben:
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ókért lásd a dokumentációt и .
Docker titkai
A bizalmas adatokat titokként kell kezelni. A megfelelő szolgáltatást a docker service create paranccsal indíthatja el:
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 nginxA részletekért lásd .
Docker konfigurációs fájl
A következő beállításokat lehet hozzáadni a konfigurációs fájlhoz /etc/docker/daemon.json:
-
"icc":false— letiltja a konténerek közötti adatcserét a szükségtelen információszivárgás elkerülése érdekében. -
log-level: "info"— rögzíti az összes naplót, kivéve a hibakeresőket. { "log-driver": "syslog", "log-opts": { "syslog-address": "udp://1.2.3.4:1111" } }— lehetővé teszi a távoli naplózást és továbbítja azokat a megadott címre. Csak akkor működik, ha a syslog démon fut. A TCP és az UDP opcióként elfogadott. Minden egyes konténerhez csatlakoztatható is. Erre a célra a Docker indításakor egy speciális jelző kerül beállításra (
--log-opt syslog-address=ADDRESS).-
"userns-remap": "Your_User"— megakadályozza a jogosultságok eszkalációját azáltal, hogy elkülöníti a névteret egy adott felhasználó számára.
Szállítási réteg biztonsága
Csak a TLS-kliens hitelesítő adataihoz hozzáféréssel rendelkező felhasználók csatlakozhatnak a Docker-démonhoz (ha távoli hozzáférés szükséges).
Engedélyezési bővítmények
Döntse el, hogy mely felhasználók milyen parancsokat hajthatnak végre, és hozzon létre egy megfelelő engedélyezési bővítményt a Docker számára. Ezután indítsa el a Docker démont, és adja hozzá a bővítményt:
dockerd --authorization-plugin=PLUGIN_IDHa többet szeretne megtudni az engedélyezési beépülő modulok létrehozásáról, lásd: .
Démon opciók
A Docker démon alapértelmezett paraméterkészlettel fut.
-
--live-restore— ez a paraméter segít csökkenteni a konténer leállási idejét, amikor a rendszert leállítják vagy újraindítják. Minimális állásidővel könnyebbé válik a javításuk vagy frissítésük; -
--userland-proxy=false— ha a hajtűs NAT-ok elérhetők vagy használatban vannak, a felhasználói térben lévő proxy redundáns szolgáltatássá válik, ami csak növeli a lehetséges támadási vektorok számát; -
--no-new-privileges— megakadályozza, hogy a konténerek további jogosultságokat szerezzenek suid vagy sguid használatával; -
--seccomp-profile /path/to/profile- ha van saját seccomp profilod, akkor ezzel a jelzővel tudod alkalmazni. További információ a Seccompról és a Dockerről .
Tároló és build fájl konfigurációja
Felhasználó létrehozása
Győződjön meg arról, hogy létrejött egy felhasználó a tárolóhoz, és futtassa azt a felhasználó alatt (NE futtassa a tárolót rootként).
Távoli hozzáférés
Tiltsa le a démon távoli elérését. Ha mégis szüksége van rá, védje le tanúsítvánnyal.
Különítse el a felhasználói névteret
Különösen fontos annak biztosítása, hogy a felhasználói névtér a Dockerben elszigetelt legyen, mivel alapértelmezés szerint meg van osztva a gazdagép névterével. Bizonyos esetekben ez felhasználható a jogosultságok kiterjesztésére vagy akár a tárolón kívülre való kilépésre. A felhasználói névteret a konfigurációs fájl szerkesztésével izolálhatja (a fentebb a Docker konfigurációs fájl szakaszában leírtak szerint). Ennek a kérdésnek a további említése a fontosságának köszönhető.
Állapotfelmérés
A Healthcheck egy hatékony eszköz, amely lehetővé teszi a tároló sértetlenségének ellenőrzését. A Dockerfile-ban az utasítások segítségével konfigurálható HEALTHCHECK. Az egészségügyi ellenőrzések segítségével megbizonyosodhat arról, hogy a tartály megfelelően működik. Az alábbi példában az állapotellenőrzés 0-t ad vissza, ha a kiszolgáló fut, és 1-et, ha nem működik:
HEALTHCHECK CMD curl --fail http://localhost || exit 1SELinux
Ha SELinux a gazda operációs rendszer által támogatott, hozzon létre vagy importáljon SE szabályzatotLinux és futtassa a Dockert démon módban, SE engedélyezésselLinux:
docker daemon --selinux-enableEbben az esetben a Docker-tárolók biztonsági beállításokkal indíthatók el, 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észt figyel. Mivel a legtöbb esetben csak az egyiken várható forgalom, ez a megközelítés szükségtelenül növeli a támadás kockázatát. Ezért egy tároló indításakor a portjait a gazdagép meghatározott interfészeihez kötheti:
docker run --detach --publish 10.2.3.4:49153:80 nginxA képek gyorsítótárazott változatai
A képek letöltésekor győződjön meg arról, hogy a helyi gyorsítótár megegyezik a tár tartalmával. Ellenkező esetben előfordulhat, hogy a kép elavult verzióját vagy sebezhetőséget tartalmazó képfájlt kap.
Hálózati híd
Alapértelmezett hálózati modell docker0, ki van téve az olyan támadásoknak, mint az ARP-hamisítás és a MAC-elárasztás. A probléma megoldásához hozzon létre egy hálózati hidat a specifikációinak megfelelően a leírtak szerint .
Figyelmeztetés a dokkoló aljzatra
Soha ne továbbítsa a Docker-aljzatot tartályba. Ellenkező esetben a tároló képes lesz Docker-parancsok végrehajtására, így kommunikálni és vezérelni a gazdagép operációs rendszert. Ne csináld.
A Docker Enterprise konfigurálása
Docker Trust
A Docker Trust lehetővé teszi olyan kulcsok létrehozását, amelyek segítségével ellenőrizhető a képek kriptográfiai integritása. A Docker Trust-kulcsok használhatók Docker-képek aláírására privát kulccsal, amelyeket a közjegyzői szerveren lévő nyilvános kulcsok igazolnak. További információ - . A Docker Trust engedélyezése az Enterprise Engine-ben részletesen megtalálható .
Sebezhetőségi vizsgálat
A Docker Enterprise beépített sebezhetőség-ellenőrzővel rendelkezik, amely lehetővé teszi egy CVE-adatbázis letöltését a képek sebezhetőségeinek offline vizsgálatához. A képek rendszeres szkennelése elősegíti azok biztonságosabbá tételét: a felhasználó azonnal figyelmeztetést kap a talált sebezhetőségekről. További információért lásd, hogyan lehet ezt megtenni .
Jegyzet. ford.: A Docker-képek sebezhetőségére nyílt forráskódú szkennerek is találhatók, amelyekre az anyag végén találunk példákat.
LDAP és UCP integráció
Univerzális vezérlősík integrálható LDAP-val. Az eredmény egy egyszerűsített hitelesítési rendszer lesz, amely elkerüli a szükségtelen párhuzamosságot. Erről bővebben a cikkben olvashat .
Más anyagok
További információ a Docker biztonsági bevált módszereiről a következő címen található: . Javasoljuk a letöltést is .
Fordítói bónusz
A cikk logikus kiegészítéseként egy listát teszünk közzé 10 népszerű nyílt forráskódú segédprogram a Docker Security számára. -tól kölcsönözték (Bill Doerrfeld, Doerrfeld.io).
NB: Tudjon meg többet az itt említett projektek közül a " cikkben".
- a cikk legelején már említett szkript, amely ellenőrzi a Docker-tárolókat, hogy megfelelnek-e az általános biztonsági gyakorlatoknak.

- — valószínűleg a legnépszerűbb segédprogram a konténerekben található sebezhetőségek statikus elemzésére. Számos CVE sebezhetőségi adatbázist használ (beleértve a vezető sérülékenységek nyomkövetőit is). Linux- olyan disztribúciók, mint a Red Hat, Debian, Ubuntu). API-t kínál a fejlesztők számára, és egyszerű funkcionalitásbővítést („illesztőprogramok” hozzáadásával). A népszerű nyilvános konténerkép-nyilvántartásban (hasonlóan a Docker Hub-hoz) — Quay.io-ban használják.
- a BPF hálózati csomagszűrő technológián alapuló megoldás a rendszermag szintű hálózatbiztonság biztosítására.
- — a képek tartalmának elemzésére szolgáló segédprogram a CVE-n alapuló biztonsági rések megléte szempontjából. Ezenkívül lehetővé teszi egyéni házirendek alkalmazását (különböző adatokon, beleértve a fehér/fekete listákat, a fájltartalmat stb.) a tárolók biztonságának felmérésére.
- — egy egész ökoszisztéma a biztonsági politikák létrehozásához és fenntartásához különböző platformokon. Egy segédprogramot kínál a konténerek ellenőrzésére
oscap-docker. - - segédprogram a Docker-tárolók biztonsági rések, trójaiak, vírusok és rosszindulatú programok keresésére. A CVE adatbázisok tartalmazzák az OWASP, a Red Hat Oval adatbázis és az Exploit Database kihasználási tárház függőségi ellenőrzéseit.
- egy keretrendszer a Docker-képek aláírására, amelyet eredetileg a Docker Inc.-nél hoztak létre (majd fejlesztésre átkerült a CNCF-hez). Használata lehetővé teszi a szerepek átruházását és a felelősségek elosztását a tárolók között, valamint a képek kriptográfiai integritásának ellenőrzését.
- — A metaadatok API-ja, amelyet a belső biztonsági szabályzatok kezelésére terveztek. Például lehetővé teszi a konténerbiztonsági szkennerek teljesítményének javítását. A Shopify ezt az API-t használja az 500 XNUMX kép metaadatainak kezelésére.
- — egy Kubernetes segédprogram, amely figyeli a rendszer viselkedését: a konténerekben, a hosztokon és a hálózaton végzett tevékenységeket. Lehetővé teszi a folyamatos infrastruktúra-ellenőrzések, az anomáliadetektálás és a rendszerhívásokra vonatkozó riasztások konfigurálását. Linux.
- - egy másik eszköz a Docker konténerképek statikus elemzéséhez. Lehetővé teszi a képfájlokba „betekintést”, a szükséges adatok összegyűjtését, a szükséges házirendek alkalmazását stb.
Egy másik jó gyakorlati ajánlásgyűjtemény A Docker biztonságosabbá tételéről itt olvashat Aqua Security cég. Sok tippje átfedésben van a fent említettekkel, de vannak mások is. A szerzők például javasolják a konténerekben végzett tevékenység megfigyelésének megszervezését, és jelzik, hogy mire kell figyelni a Docker Swarm használatakor.
Azok számára, akik szeretnének részletesebben elmerülni ebben a témában, tavaly jelent meg. könyv "», melynek töredékei szabadon hozzáférhetők .
Végül pedig a Docker biztonság néhány aspektusának gyakorlati bevezetése: Seccomp profilok és a képességek használata Linux-magok konténerekben - átmehetsz a megfelelőn laboratóriumi munka * - lásd a „Biztonság” részt.

* Magáról az erőforrásról mi két éve, 2018 novemberében pedig egy nagyon érdekes (biztonsági szempontból) történet történt vele. Röviden: a CyberArk Software Ltd. szakemberei. sikerült feltörni: elérni a konténereken kívüli parancsok végrehajtásának képességét, pl. a fogadó rendszeren. Tökéletes illusztrációja a Docker biztonsági problémájának, nem? Olvassa el a történtek minden részletét .
PS a fordítótól
Olvassa el blogunkon is:
- «";
- «";
- «";
- «";
- «";
- «".
Forrás: will.com

