Biztonság Docker-konténerekhez

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.

Biztonság Docker-konténerekhez

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:

  1. Szükséges intézkedések a hoszt operációs rendszerében a Dockerrel való munkavégzés során;
  2. Ut instrukciók, amelyek a konfigurációs fájlra és a konténerek létrehozására vonatkoznak;
  3. 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

Docker Biztonsági Ellenőrző 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 Szövetségi Információs Feldolgozási Szabványok — 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 && reboot

A 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 docker

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

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 nginx

Részletekért lásd dokumentáció.

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_ID

A hitelesítési pluginek létrehozásáról többet tudhat meg dokumentáció.

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

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 1

SELinux

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

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

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

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

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 — itt. A Docker Trust Enterprise Engine-be való bekapcsolásáról részletes információt találhat a dokumentáció ezen részében.

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

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. Integrálja egy LDAP könyvtárral.

Egyéb anyagok

További információkat a Docker biztonságával kapcsolatos legjobb gyakorlatokról találhat a docs.docker.com. Javasoljuk, hogy töltse le a Docker Security Center for Internet Security tesztjeit.

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 másik cikkből származik (Bill Doerrfeld a Doerrfeld.io-tól szerzője).

NB: További információkat a fent említett projektekről olvashat a „33+ Kubernetes biztonsági eszköz».

  1. Docker Biztonsági Ellenőrző — 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.

    Biztonság Docker-konténerekhez

  2. Clair — 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.
  3. Cilium — 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.
  4. Anchore — 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.
  5. OpenSCAP Workbench — 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.
  6. Dagda — 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.
  7. Notary — 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.
  8. Grafaes — 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.
  9. Sysdig Falco — 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.
  10. Banyanops Collector — 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 cikkben 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, "Docker Security: Quick Reference»", amelynek egyes részei szabadon elérhetőek itt.

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 Play with Docker* — lásd a "Security" szekciót.

Biztonság Docker-konténerekhez

* 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 beszéltünk 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 itt.

Fejlesztési eszközök, amelyek Kubernetesben futnak

Olvasson további információkat a blogunkban:

Forrás: habr.com

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster