Docker konténerek biztonsága

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.

Docker konténerek biztonsága

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:

  1. A Dockerrel végzett munka során szükséges intézkedések a gazdagép operációs rendszeren belül;
  2. Az összeállítási konfigurációs fájlhoz és a tárolók létrehozásához kapcsolódó utasítások;
  3. 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

Docker pad a biztonságért 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 Szövetségi információfeldolgozási szabványok - 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 && reboot

Ezenkí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 docker

További információkért lásd a dokumentációt Dokkmunkás и Red Hat.

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 nginx

A részletekért lásd dokumentáció.

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_ID

Ha többet szeretne megtudni az engedélyezési beépülő modulok létrehozásáról, lásd: dokumentáció.

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 itt.

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 1

SELinux

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-enable

Ebben 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/bash

Há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 nginx

A 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 itt.

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ó - itt. A Docker Trust engedélyezése az Enterprise Engine-ben részletesen megtalálható a dokumentáció ezen részét.

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 itt.

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 Integráljon egy LDAP-címtárral.

Más anyagok

További információ a Docker biztonsági bevált módszereiről a következő címen található: docs.docker.com. Javasoljuk a letöltést is Center for Internet Security tesztek a Dockerhez.

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 egy másik cikk (Bill Doerrfeld, Doerrfeld.io).

NB: Tudjon meg többet az itt említett projektek közül a " cikkben33+ Kubernetes biztonsági eszköz".

  1. Docker pad a biztonságért 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.

    Docker konténerek biztonsága

  2. Clair — 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.
  3. cilium a BPF hálózati csomagszűrő technológián alapuló megoldás a rendszermag szintű hálózatbiztonság biztosítására.
  4. Horgony — 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.
  5. OpenSCAP Workbench — 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.
  6. dagda - 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.
  7. Jegyző 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.
  8. Grafaes — 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.
  9. Sysdig Falco — 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.
  10. Banyanops gyűjtő - 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 ezt a cikket 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 "Docker Security: Gyors referencia», melynek töredékei szabadon hozzáférhetők itt.

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 erőforrás Játssz a Dockerrel* - lásd a „Biztonság” részt.

Docker konténerek biztonsága

* Magáról az erőforrásról mi mondta 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 itt.

PS a fordítótól

Olvassa el blogunkon is:

Forrás: will.com

Vásároljon megbízható tárhelyet DDoS védelemmel, VPS VDS szerverekkel rendelkező webhelyekhez 🔥 Vásároljon megbízható weboldal tárhelyet DDoS védelemmel, VPS VDS szerverekkel | ProHoster