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

Jak zkontrolovat obsah obrázku Docker bez spuštění kontejneru

Obrazy Dockeru mohou sdružovat libovolné binární soubory a knihovny do jednoho blobu dat. Kontrola toho, co je skutečně uvnitř obrázku, vám pomůže posoudit jeho vhodnost a identifikovat případná bezpečnostní rizika.

Nejjednodušší způsob, jak prozkoumat obsah obrázku, zahrnuje spuštění kontejneru, získání shellové relace a poté použití běžných příkazů terminálu, jako je ls a cd pro zobrazení jeho adresářové struktury zevnitř. To však není ideální v prostředích kritických z hlediska zabezpečení – vytvoření kontejneru s neznámým obrázkem vás může vystavit škodlivému vstupnímu skriptu.

Zde jsou techniky, které můžete použít ke kontrole souborů obrázku bez spuštění kontejneru.

Vytvoření kontejneru bez spuštění

docker create je méně známý protějšek docker run . Vytvoří nový kontejner nad daným obrázkem, aniž by jej spustil. Můžete jej spustit později pomocí docker start příkaz.

Vytvoření nového kontejneru není nebezpečné, protože zůstane inertní, dokud nebude spuštěn. Můžete to zhruba přirovnat k definování konfiguračních nastavení pro virtuální počítač, který nepoužíváte. I když je nastaveno na spouštění z pokaženého operačního systému ISO, nezpůsobíte žádné škody svému prostředí.

docker create --name suspect-container suspect-image:latest

Výše uvedený příkaz vytvoří nový kontejner s názvem suspect-container který bude založen na suspect-image:latest obrázek.

Export souborového systému kontejneru

Nyní máte platný, ale zastavený kontejner, můžete exportovat jeho souborový systém pomocí docker export příkaz. Protože kontejner nebyl nikdy spuštěn, můžete si být jisti, že export přesně reprezentuje souborový systém definovaný vrstvami vašeho obrázku.

docker export suspect-container > suspect-container.tar

Ve vašem pracovním adresáři skončíte s archivem tar, který obsahuje vše, co je uvnitř vašeho obrazu. Otevřete nebo rozbalte tento archiv pomocí svého oblíbeného softwaru, abyste mohli procházet adresáře obrázku a vypisovat a prohlížet soubory.

Pokud archiv nepotřebujete uložit nebo otevřít a místo toho chcete získat seznam souborů v terminálu, upravte tar příkaz:

docker export suspect-container | tar t > suspect-container-files.txt

tar t vypíše obsah archivu vstupů. Skončíte se seznamem všeho na obrázku uvnitř suspect-container-files.txt .

Použití „uložení obrázku dockeru“

Variantou této techniky je použití docker image save . Tento příkaz přímo uloží data obrázku do archivu tar.

docker image save suspect-image:latest > suspect-image.tar

Tato metoda vytváří archiv, který je zaměřen na obrázek, nikoli na kontejnery z něj vytvořené. Tar bude obsahovat manifest.json soubor popisující vrstvy obrázku a sadu adresářů obsahujících obsah všech jednotlivých vrstev.

To je užitečné, když hodnotíte roli každé vrstvy při vytváření obrázku. Vytvoření a export zastaveného kontejneru je však dostupnější způsob, jak procházet konečný souborový systém obrazu.

Výpis vrstev s „historií obrázků dockeru“

Dalším způsobem, jak zkontrolovat obsah obrázku, je zobrazit jeho seznam vrstev pomocí docker image history příkaz.

docker image history suspect-image:latest

Tím se odhalí instrukce Dockerfile, které skládaly vrstvy obrázku. Neumožní vám vidět jednotlivé soubory a adresáře v souborovém systému obrazu, ale může být efektivnější při zvýraznění podezřelého chování.

Každý řádek ve výstupu příkazu představuje novou vrstvu v obrázku. Sloupec „CREATED BY“ zobrazuje instrukci Dockerfile, která vytvořila vrstvu.

Prohledání seznamu vrstev vám pomůže rychle identifikovat podezřelé akce, které by mohly naznačovat, že používáte škodlivý obrázek. Hledejte neznámé binární soubory v RUN instrukce, neočekávané změny proměnných prostředí a podezřelé CMD a ENTRYPOINT prohlášení.

Poslední dvě vrstvy jsou pravděpodobně nejdůležitější k posouzení při kontrole historie obrázku. Řeknou vám přesně, co se spustí, když docker run nebo docker start nádoba. Pokud některá instrukce vypadá podezřele nebo neznáme, zvažte použití výše uvedených technik k úplné kontrole odkazovaných binárních souborů nebo skriptů.

Přístup k souborovému systému obrázku poskytuje velmi podrobný pohled na jeho obsah, kde může škodlivý obsah snadno zůstat bez povšimnutí, a to i po ruční kontrole. Seznam vrstev vystavený docker image history nemůže vám pomoci najít skryté položky souborového systému, ale je účinnější při odhalování očividně škodlivých operací, jako je tajné stahování spywaru nebo přepisování proměnných prostředí.

Nástroje třetích stran

K dispozici jsou také open-source nástroje třetích stran, které vám pomohou uvést obsah obrázků. Ty obvykle nabízejí možnosti filtrování, takže můžete rychle vyjmenovat nainstalované balíčky operačního systému, závislosti programovacích jazyků a běžné soubory.

Kontrola obrazu je zabudována do modulu skenování kontejnerů Anchore. Můžete jej použít spuštěním anchore-cli image content my-image:latest po instalaci Anchore. Toto poskytuje úplný seznam obsahu souborového systému cílového obrazu.

Další možností je Dive, nástroj speciálně vytvořený pro vizualizaci obsahu obrázků. Používá přístup založený na vrstvách a zdůrazňuje změny souborového systému provedené s každou novou vrstvou. Souborový systém můžete procházet pomocí stromového interaktivního terminálového zobrazení.

Závěr

Obrázky dockeru jsou obvykle v místě spotřeby neprůhledné. Populární registry neposkytují seznam souborů ve svých rozhraních API nebo uživatelských rozhraních. Tato funkce není integrována ani do rozhraní CLI Dockeru. Ačkoli mnoho vývojářů používá obrázky tak, jak jsou, neauditovaný obrázek může být ve vysoce rizikových prostředích netolerovatelný.

Podezřelý obrázek můžete zkontrolovat jeho exportem do archivu a procházením jeho obsahu. To udržuje obraz inertní, zabraňuje spouštění škodlivého obsahu a zároveň poskytuje úplný pohled na souborový systém, který by vytvořil v kontejneru.

Svou pozici zabezpečení můžete dále posílit kombinací ručního průzkumu obsahu s automatickým skenováním obrázků. Ty urychlují proces odhalování známých zranitelností, ale nemusí být účinné při hledání nových škodlivých souborů uložených na skrytých místech. Použití více technik vám umožní rozšířit pokrytí a zachytit nejširší možnou sadu podezřelých souborů.


Docker
  1. Jak spustit MySQL v kontejneru Docker

  2. Jak SSH do kontejneru Docker

  3. Jak nainstalovat Vim do kontejneru Docker

  1. Jak používat příkaz Docker Inspect

  2. Jak upravit obrázky Docker

  3. Jak vytvořit vlastní obrázek z kontejneru Docker

  1. Jak přiřadit statickou IP ke kontejneru Docker

  2. Jak se odpojit od dockerového kontejneru bez zastavení

  3. Jak vypsat Docker kontejnery