GNU/Linux >> Znalost Linux >  >> Panels >> Docker

Jak automatizovat audity zabezpečení Docker pomocí Docker Bench for Security

Docker je pohodlný, ale může to být také bezpečnostní riziko. Je důležité chránit Docker Engine před možnými hrozbami, zvláště pokud provozujete hostitele Dockeru v produkci.

Docker Bench for Security je automatický skript, který vám může pomoci najít problémy s konfigurací. Bench skript prohledá vašeho hostitele, aby našel slabá místa v nastavení vašeho Docker Engine. Poskytuje jej samotný Docker jako open source nástroj pro audit zabezpečení.

Spuštění skriptu

Nejjednodušší způsob použití Docker Bench je stáhnout si skript a přímo jej spustit. Pokud vás jeho obsah znepokojuje, můžete si jej prohlédnout na GitHubu.
Klonujte úložiště Bench pomocí Gitu. Spusťte skript pomocí vašeho shellu. Docker Bench by měl být spuštěn pomocí sudo , protože zahrnuje kontroly, které vyžadují přístup root.

git clone https://github.com/docker/docker-bench-security.git
cd docker-bench-security
sudo sh docker-bench-security.sh

Výsledky auditu uvidíte ve svém terminálu. Skenování bude trvat několik sekund. Pokud máte hodně spuštěných kontejnerů, může to trvat minutu nebo déle.

Porozumění přehledu

Zpráva je barevně odlišena, takže můžete rychle identifikovat problémy. Modré INFO záznam řádků do různých skenovacích sekcí. Zelený PASS řádek ukazuje, že váš systém splnil kontrolu. Červené WARN čáry naznačují potenciální zranitelnost.

Docker Bench spouští celkem přes 200 jednotlivých kontrol. Úplný seznam je k dispozici v úložišti projektu GitHub. Zde je návod, jak jsou testy kategorizovány.

Konfigurace hostitele

Tato skupina testů se zaměřuje na slabá místa v auditu zabezpečení vašeho hostitele. Provádí se kontroly správného auditování adresářů Docker, použití vyhrazeného oddílu pro kontejnery a instalace aktualizované verze Dockeru.

Konfigurace démona

Testy orientované na démona zkontrolují, zda není soket Dockeru vystaven přes nezabezpečené připojení. Síťový provoz mezi kontejnery na výchozím bridge síť by měla být omezena a nezabezpečené registry odstraněny.

Tato část také hledá nevhodná udělení oprávnění kontejnerům. Kontejnery by neměly mít možnost získávat nová oprávnění. To by mohlo umožnit útočníkovi přerůst kontejner.

Další část, konfigurační soubory démona Docker, má podobné zaměření. Zajišťuje, že instalační adresář Docker a soket Unix mají příslušná oprávnění a vlastnictví. Souborový systém Dockeru by měl vlastnit root:root s omezujícími oprávněními 644 .

Obrázky kontejnerů

SOUVISEJÍCÍ Jak hodnotit zabezpečení Docker Engine

Docker Bench provádí základní kontrolu souborů Docker pro vaše známé obrázky. Bude hledat vyhrazené uživatele kontejnerů, přítomnost HEALTHCHECK pokyny a použití Content Trust k ověření integrity dat.

Tato testovací část také vydá varování, která vám připomenou základní kroky zpevnění obrazu. Používejte důvěryhodné základní bitové kopie, aplikujte nové bezpečnostní záplaty a vyhněte se instalaci zbytečných balíčků. Tato opatření pomáhají eliminovat zranitelnosti uvnitř kontejnery.

Doba běhu kontejneru

Testy Container Runtime kontrolují vaše běžící kontejnery. Tato část obsahuje více než 30 testů, od dostupnosti SELinuxu a AppArmor až po použití vhodných připojení souborového systému a síťových možností.

Pokud použijete privilegované kontejnery nebo připojíte zásuvku Docker do kontejneru, body shodíte. Kontejnery nesmí mít možnost získat další oprávnění nebo zasahovat do hostitelského systému.

Bench také hledá SSH servery běžící uvnitř kontejnery. To se nedoporučuje, protože je třeba se vyhnout přímému přístupu ke kontejneru. Je lepší použít docker exec od hostitele k interakci s kontejnery.

Další testy sledují využití limitů CPU a paměti. Neomezený kontejner by mohl spotřebovat nadměrné zdroje a nakonec způsobit nedostatek paměti na hostiteli. Síťové kontroly označují nepoužívané porty a také požadavky na mapování privilegovaných portů do kontejnerů.

Docker Swarm

Docker Bench obsahuje další sekci pro uživatele Docker Swarm. Zaměřuje se na označování nezabezpečených tajemství a certifikátů, které se nestřídají správně. Vyžaduje také správnou konfiguraci sítě, včetně použití šifrovaných překryvných sítí.

Sekce Swarm vyvolá varování, pokud je režim Swarm povolen, ale ve skutečnosti není používán. Pokud Swarm neplánujete používat, vypněte jej spuštěním docker swarm leave --force .

Řešení běžných problémů

Většina hostitelů Dockeru zobrazí několik varování, pokud jste neprovedli aktivní kroky k jejich posílení. Zde jsou některá opatření, která můžete provést, abyste se vypořádali s některými z nejběžnějších sestav Docker Bench.

Povolení auditování souborů Docker

Docker doporučuje použití auditování na úrovni systému u klíčových adresářů Dockeru. Auditování zaznamenává všechny operace, které ovlivňují monitorované soubory a adresáře. To vám umožní sledovat potenciálně destruktivní změny.

Ujistěte se, že máte auditd nainstalováno. Upravte /etc/audit/audit.rules a na konec souboru přidejte následující řádky:

-w /etc/default/docker -p wa
-w /etc/docker -p wa
-w /etc/docker/daemon.json -p wa
-w /lib/systemd/system/docker.service -p wa
-w /lib/systemd/system/docker.socket -p wa
-w /usr/bin/docker -p wa
-w /usr/bin/docker-containerd -p wa
-w /usr/bin/docker-runc -p wa
-w /var/lib/docker -p wa

-p wa instrukce znamená, že auditd bude protokolovat zápisy a změny atributů, které ovlivňují soubory. Pokud váš výstup Docker Bench navrhuje, abyste použili auditování pro další adresáře, přidejte je také do seznamu. Adresáře Dockeru se mohou časem měnit.

Budete muset restartovat auditd aplikujte změny:

sudo systemctl restart auditd

Posílení démona

Docker Bench obvykle najde problémy s konfigurací vašeho démona. Přidání následujícího do /etc/docker/daemon.json ztiší několik varování démonů.

{
    "icc": false,
    "live-restore": true,
    "no-new-privileges": true,
    "userland-proxy": false,
    "userns-remap": "default"
}
  • icc:  To zabraňuje kontejnerům ve vzájemné komunikaci přes výchozí bridge síť. Kontejnery se k sobě dostanou pouze v případě, že jsou spolu explicitně propojeny pomocí --link .
  • obnovení v reálném čase: Toto nastavení umožňuje kontejnerům běžet, i když se démon zastaví. To je vhodné v produkčních prostředích, kde chcete minimalizovat prostoje.
  • žádná-nová-privilegia: To zabraňuje kontejnerům ve zvyšování jejich oprávnění pomocí příkazů jako setuid a setgid .
  • userland-proxy:  Pokud toto zakážete, znamená to, že iptables se používá ke směrování provozu hostitelského portu do kontejnerů. Bez něj se používá Docker's userland proxy proces, který zvyšuje útočnou plochu vašeho démona.
  • users-remap:  To umožňuje použití uživatelských jmenných prostorů, tedy root v kontejneru mapuje na méně privilegovaného hostitele. To snižuje riziko, že kompromitovaný kontejner bude moci spustit root příkazy na vašem hostiteli. Použití default dá Dockeru pokyn, aby si pro tento účel zřídil vyhrazený uživatelský účet.

SOUVISEJÍCÍ: Jak používat Cron s kontejnery Docker

Přizpůsobení výstupu přehledu

Docker Bench podporuje několik příznaků, které můžete použít k úpravě jeho výstupu:

  • -b:  Zakázat barvy. Užitečné, pokud skript spouštíte v prostředí CI, které nepodporuje plný výstup ANSI.
  • -p:  Neuvádějte navrhovaná nápravná opatření. Užitečné, když se chcete zaměřit na varování a snížit šum ve výstupu.
  • -l report.txt:  Zapište výstup do report.txt místo terminálu.
  • -c check_5.1,check_5.2:  Spusťte pouze kontroly 5.1 a 5.2. Seznam testů je k dispozici na GitHubu.
  • -e check_5.1,check_5.2:  Vyloučit kontroly 5.1 a 5.2.

Příznaky můžete zkombinovat a vytvořit sestavu, kterou potřebujete. Pokud se vás celá část kontrol netýká, zvažte vytvoření aliasu shellu, abyste mohli rychle spustit Docker Bench s aplikovanou sekvencí příznaků.

Závěr

SOUVISEJÍCÍ Jak používat Docker Scan k nalezení slabých míst ve vašich obrázcích

Použití skriptu Docker Bench for Security vám pomůže najít a vyřešit slabá místa v zabezpečení vašeho hostitele Docker. Řešení případných varování, která vysílá, pomůže vašemu hostiteli posílit a zlepšit vaši bezpečnost.

Pamatujte, že Docker Bench není vyčerpávající test. Existují další aspekty zachování zabezpečení Dockeru, které by také neměly být přehlíženy.

Kompromitovaný kontejner by mohl poskytnout útočníkům oporu ve vašich systémech, i když máte silné zabezpečení na úrovni hostitele. Toto riziko můžete snížit pomocí Docker Bench spolu s aktivními skenery zranitelnosti kontejnerů, jako jsou Trivy a Clair. Ty vám pomohou identifikovat problémy v rámci vaše kontejnery, jako jsou zastaralé závislosti, které by mohly být zneužity.

I když je vždy cílem dobré skóre, měli byste si také uvědomit, že Docker Bench je zaměřen na produkční zátěž. Ne všechny kontroly jsou relevantní pro vývojářovu místní instalaci Dockeru. Spusťte skript, přečtěte si varování a zjistěte, která z nich platí pro vaše prostředí.


Docker
  1. Co je Docker? Naučte se používat kontejnery – vysvětleno s příklady

  2. Jak nasadit mikroslužby s Dockerem

  3. Jak používat Docker Compose

  1. Jak nainstalovat Jenkins pomocí Docker

  2. Jak připojit kontejnery Docker

  3. Jak nasadit aplikace s Rancherem

  1. Jak hodnotit zabezpečení Docker Engine

  2. Jak předávat proměnné prostředí do kontejnerů Docker

  3. 3 strategie pro automatizované produkční nasazení s Dockerem