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

Jak skenovat obrázky kontejnerů Docker kvůli zranitelnosti pomocí Trivy

Dnes se naučíte, jak skenovat obrázky kontejnerů Docker.

Úvod

Trivy (tri vyslovováno jako tri gger, vy vyslovuje se jako envy ) je jednoduchý a komplexní skener zranitelných míst v obrazech kontejnerů, souborových systémech a úložištích Git a také pro problémy s konfigurací. Trivy detekuje zranitelnost balíčků OS (Alpine, RHEL, CentOS atd.) a balíčků specifických pro jazyk (Bundler, Composer, npm, yarn atd.).

Kromě toho Trivy skenuje soubory Infrastructure as Code (IaC), jako jsou Terraform, Dockerfile a Kubernetes, aby zjistil potenciální problémy s konfigurací, které vystavují vaše nasazení riziku útoku. Trivy se snadno používá. Stačí nainstalovat binární soubor a jste připraveni skenovat.

Funkce

  • Komplexní detekce zranitelnosti
    • Balíčky OS (Alpine Linux, Red Hat Universal Base Image, Red Hat Enterprise Linux, CentOS, AlmaLinux, Rocky Linux, CBL-Mariner, Oracle Linux, Debian, Ubuntu, Amazon Linux, openSUSE Leap, SUSE Enterprise Linux, Photon OS a Distroless)
    • Balíčky specifické pro daný jazyk (Bundler, Composer, Pipenv, Poetry, npm, yarn, Cargo, NuGet, Maven a Go)
  • Detekce nesprávné konfigurace (skenování IaC)
    • Je k dispozici široká škála integrovaných zásad ihned po vybalení
      • Kubernetes, Docker, Terraform a další již brzy
    • Podpora vlastních zásad
  • Vysoká přesnost
  • Podpora více cílů
    • obraz kontejneru, místní souborový systém a vzdálené úložiště git

Instalace

Na CenTOS

  • Nainstalujte Trivy na CentOS z jeho úložiště, takže přidejte úložiště trivy a poté jej nainstalujte následovně:
echo -e "\n[trivy]\nname=Trivy repository\nbaseurl=https://aquasecurity.github.io/trivy-repo/rpm/releases/\$releasever/\$basearch/\ngpgcheck=0\nenabled=1" | sudo tee -a /etc/yum.repos.d/kubernetes.repo

sudo yum -y install trivy
  • Nebo nainstalujte trivy ze zdroje RPM, budete si muset stáhnout nejnovější vydání Trivy a poté spustit:
wget https://github.com/aquasecurity/trivy/releases/download/v0.23.0/trivy_0.23.0_Linux-64bit.rpm
sudo yum localinstall ./trivy_0.23.0_Linux-64bit.rpm

Na Ubuntu

  • Z úložiště
sudo apt-get install wget apt-transport-https gnupg lsb-release
wget -qO - https://aquasecurity.github.io/trivy-repo/deb/public.key | sudo apt-key add -
echo deb https://aquasecurity.github.io/trivy-repo/deb $(lsb_release -sc) main | sudo tee /etc/apt/sources.list.d/trivy.list
sudo apt-get update
sudo apt-get install trivy
  • Ze zdroje Debianu budete muset získat nejnovější vydání Trivy, jako jsme to udělali v CentOS, a poté spustit následující příkazy:
wget https://github.com/aquasecurity/trivy/releases/download/v0.23.0/trivy_0.23.0_Linux-64bit.deb
sudo apt install ./trivy_0.23.0_Linux-64bit.deb

Na Arch Linux|Manjaro

pikaur -Sy trivy-bin
OR
yay  -Sy trivy-bin

Používejte Trivy

Skenování systému souborů a úložiště git

  • Trivy může skenovat souborový systém (jako je hostitelský počítač, obraz virtuálního počítače nebo souborový systém obrazu rozbaleného kontejneru).
trivy fs /home/glassfish/
  • Skenování repozitáře Git pomocí trivy
trivy repo https://github.com/aquasecurity/trivy

Skenování obrázku kontejneru

  • Uveďte své obrázky
docker images
  • Naskenujte to pomocí trivy
trivy image httpd

Použít Trivy v Dockerfile

Můžete zahrnout trivy ve vašem Dockerfile a při vytváření obrazu bude vše skenovat.

Například:

  • Vytvořte Dockerfile, který obsahuje trivy
vim Dockerfile 
  • Přidejte následující:
FROM alpine:3.7

RUN apk add curl \
    && curl -sfL https://raw.githubusercontent.com/aquasecurity/trivy/master/contrib/install.sh | sh -s -- -b /usr/local/bin \
    && trivy filesystem --exit-code 1 --no-progress /
  • Vytvořte obrázek.
[root@unixcop ~]# docker build -t scanned-image .
Sending build context to Docker daemon  244.6MB
Step 1/2 : FROM alpine:3.7
3.7: Pulling from library/alpine
5d20c808ce19: Pull complete 
Digest: sha256:8421d9a84432575381bfabd248f1eb56f3aa21d9d7cd2511583c68c9b7511d10
Status: Downloaded newer image for alpine:3.7
 ---> 6d1ef012b567
Step 2/2 : RUN apk add curl     && curl -sfL https://raw.githubusercontent.com/aquasecurity/trivy/master/contrib/install.sh | sh -s -- -b /usr/local/bin     && trivy filesystem --exit-code 1 --no-progress /
 ---> Running in 7f2b8771050d
fetch http://dl-cdn.alpinelinux.org/alpine/v3.7/main/x86_64/APKINDEX.tar.gz
fetch http://dl-cdn.alpinelinux.org/alpine/v3.7/community/x86_64/APKINDEX.tar.gz
(1/4) Installing ca-certificates (20190108-r0)
(2/4) Installing libssh2 (1.9.0-r1)
(3/4) Installing libcurl (7.61.1-r3)
(4/4) Installing curl (7.61.1-r3)
Executing busybox-1.27.2-r11.trigger
Executing ca-certificates-20190108-r0.trigger
OK: 6 MiB in 17 packages
aquasecurity/trivy info checking GitHub for latest tag
aquasecurity/trivy info found version: 0.23.0 for v0.23.0/Linux/64bit
aquasecurity/trivy info installed /usr/local/bin/trivy
2022-02-12T11:47:49.846Z	INFO	Need to update DB
2022-02-12T11:47:49.846Z	INFO	Downloading DB...
2022-02-12T11:48:24.761Z	INFO	Detected OS: alpine
2022-02-12T11:48:24.761Z	INFO	Detecting Alpine vulnerabilities...
2022-02-12T11:48:24.789Z	INFO	Number of language-specific files: 0
2022-02-12T11:48:24.789Z	WARN	This OS version is no longer supported by the distribution: alpine 3.7.3
2022-02-12T11:48:24.789Z	WARN	The vulnerability detection may be insufficient because security updates are not provided

7f2b8771050d (alpine 3.7.3)
===========================
Total: 2 (UNKNOWN: 0, LOW: 0, MEDIUM: 0, HIGH: 0, CRITICAL: 2)

+------------+------------------+----------+-------------------+---------------+---------------------------------------+
|  LIBRARY   | VULNERABILITY ID | SEVERITY | INSTALLED VERSION | FIXED VERSION |                 TITLE                 |
+------------+------------------+----------+-------------------+---------------+---------------------------------------+
| musl       | CVE-2019-14697   | CRITICAL | 1.1.18-r3         | 1.1.18-r4     | musl libc through 1.1.23 has          |
|            |                  |          |                   |               | an x87 floating-point stack           |
|            |                  |          |                   |               | adjustment imbalance, related...      |
|            |                  |          |                   |               | -->avd.aquasec.com/nvd/cve-2019-14697 |
+------------+                  +          +                   +               +                                       +
| musl-utils |                  |          |                   |               |                                       |
|            |                  |          |                   |               |                                       |
|            |                  |          |                   |               |                                       |
|            |                  |          |                   |               |                                       |
+------------+------------------+----------+-------------------+---------------+---------------------------------------+
The command '/bin/sh -c apk add curl     && curl -sfL https://raw.githubusercontent.com/aquasecurity/trivy/master/contrib/install.sh | sh -s -- -b /usr/local/bin     && trivy filesystem --exit-code 1 --no-progress /' returned a non-zero code: 1
[root@unixcop ~]#

Jak je ukázáno výše, trivy při sestavování skenoval zranitelnosti obrazu obsaženého v Dockerfile.

  • Zranitelnosti můžete také filtrovat podle závažnosti pomocí:
trivy image --severity HIGH,CRITICAL httpd:latest

Jak je uvedeno výše, výsledek jsme filtrovali pouze pro kritické a vysoké závažnosti.

  • Naskenujte kontejner zevnitř kontejneru
docker run --rm -it nginx \
   && curl -sfL https://raw.githubusercontent.com/aquasecurity/trivy/master/contrib/install.sh | sh -s -- -b /usr/local/bin \
   && trivy fs /

Závěr

To je ono

V této příručce jsme si ukázali, jak kromě souborových systémů a git repozitářů skenovat obrázky kontejnerů Docker na zranitelnosti pomocí Trivy.

díky


Docker
  1. Jak nainstalovat WordPress s Dockerem na Ubuntu

  2. Jak sdílet obrázky Docker s ostatními

  3. Jak vytvořit MySQL Docker Container pro testování

  1. Jak nainstalovat Jenkins pomocí Docker

  2. Jak nasadit kontejner nginx s Dockerem na Linode

  3. Jak používat místní docker obrázky s Minikube?

  1. Jak spustit Jenkins Container jako službu Systemd pomocí Dockeru

  2. Learning Docker:Jak vytvořit kontejner Docker

  3. Jak změnit časové pásmo pro kontejner Docker