GNU/Linux >> Linux Esercitazione >  >> Panels >> Docker

Come scansionare le immagini del contenitore Docker per le vulnerabilità con Trivy

Oggi imparerai come scansionare le immagini di Docker Container.

Introduzione

Fantastico (tri pronunciato come tri gger, vy pronunciato come invidia vy ) è uno scanner semplice e completo per le vulnerabilità nelle immagini del contenitore, nei file system e nei repository Git, nonché per i problemi di configurazione. Trivy rileva le vulnerabilità dei pacchetti del sistema operativo (Alpine, RHEL, CentOS, ecc.) e dei pacchetti specifici della lingua (Bundler, Composer, npm, yarn, ecc.).

Inoltre, Trivy esegue la scansione dei file Infrastructure as Code (IaC) come Terraform, Dockerfile e Kubernetes, per rilevare potenziali problemi di configurazione che espongono le tue distribuzioni al rischio di attacchi. Trivy è facile da usare. Basta installare il binario e sei pronto per la scansione.

Caratteristiche

  • Rilevamento completo delle vulnerabilità
    • Pacchetti 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 e Distroless)
    • Pacchetti specifici per lingua (Bundler, Composer, Pipenv, Poetry, npm, yarn, Cargo, NuGet, Maven e Go)
  • Rilevamento di errori di configurazione (scansione IaC)
    • Viene fornita un'ampia varietà di norme integrate pronte all'uso
      • Kubernetes, Docker, Terraform e altri in arrivo
    • Supporta le politiche personalizzate
  • Alta precisione
  • Supporta più bersagli
    • immagine del contenitore, filesystem locale e repository git remoto

Installazione

Su CentTOS

  • Installa Trivy su CentOS dal suo repository, quindi aggiungi il repository di trivy quindi installalo come segue:
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
  • Oppure installa trivy dalla sua fonte RPM, dovrai ottenere l'ultima versione di Trivy, quindi eseguire:
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

Su Ubuntu

  • Dal repository
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
  • Dal sorgente Debian, dovrai ottenere anche l'ultima versione di Trivy come abbiamo fatto in CentOS, quindi eseguire i comandi seguenti:
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

Su Arch Linux|Manjaro

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

Usa Trivy

Scansione di un filesystem e repository git

  • Quotidiano può eseguire la scansione di un filesystem (come una macchina host, un'immagine di una macchina virtuale o un filesystem di un'immagine contenitore decompresso).
trivy fs /home/glassfish/
  • Per scansionare un repository Git con trivy
trivy repo https://github.com/aquasecurity/trivy

Scansione dell'immagine di un container

  • Elenca le tue immagini
docker images
  • Scansionalo con curiosità
trivy image httpd

Applica Trivy in Dockerfile

Puoi includere trivy nel tuo Dockerfile ed eseguirà la scansione di tutto mentre costruisce l'immagine.

Ad esempio:

  • Crea un Dockerfile che contenga trivy
vim Dockerfile 
  • Aggiungi quanto segue:
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 /
  • Costruisci l'immagine.
[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 ~]#

Come mostrato sopra, trivy ha scansionato le vulnerabilità per l'immagine inclusa nel Dockerfile durante la creazione.

  • Puoi anche filtrare le vulnerabilità per gravità con:
trivy image --severity HIGH,CRITICAL httpd:latest

Come mostrato sopra, abbiamo filtrato il risultato solo per gravità critica e alta.

  • Scansiona il contenitore dall'interno del contenitore
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 /

Conclusione

Questo è tutto

In questa guida, abbiamo illustrato come scansionare le immagini del contenitore Docker alla ricerca di vulnerabilità con Trivy oltre ai file system e ai repository git.

grazie


Docker
  1. Come installare WordPress con Docker su Ubuntu

  2. Come distribuire un container nginx con Docker su Linode

  3. Come creare un contenitore Docker MySQL per i test

  4. Come modificare il fuso orario per un container Docker

  5. Come utilizzare le immagini docker locali con Minikube?

Come utilizzare Docker Scan per trovare le vulnerabilità nelle tue immagini

Come modificare il codice nei contenitori Docker con il codice di Visual Studio

Come spingere e tirare le immagini Docker con il registro dei contenitori di DigitalOcean

Come creare un'immagine di Windows Docker con il tag di build Docker

Come copiare file con Docker cp nel tuo Docker Container

Come utilizzare Docker Commit per modificare le immagini del contenitore