GNU/Linux >> Belajar Linux >  >> Panels >> Docker

Cara memindai Gambar Wadah Docker untuk Kerentanan dengan Trivy

Hari ini Anda akan belajar cara memindai image Docker Container.

Pengantar

Sepele (tri diucapkan seperti tri ger, vy diucapkan seperti envy ) adalah pemindai sederhana dan komprehensif untuk kerentanan dalam gambar kontainer, sistem file, dan repositori Git, serta untuk masalah konfigurasi. Trivy mendeteksi kerentanan paket OS (Alpine, RHEL, CentOS, dll.) dan paket khusus bahasa (Bundler, Composer, npm, yarn, dll.).

Selain itu, Trivy memindai file Infrastruktur sebagai Kode (IaC) seperti Terraform, Dockerfile, dan Kubernetes, untuk mendeteksi potensi masalah konfigurasi yang membuat penerapan Anda berisiko diserang. Trivy mudah digunakan. Cukup instal biner dan Anda siap memindai.

Fitur

  • Deteksi kerentanan yang komprehensif
    • Paket 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 dan Tanpa Distro)
    • Paket khusus bahasa (Bundler, Komposer, Pipenv, Puisi, npm, benang, Kargo, NuGet, Maven, dan Go)
  • Deteksi kesalahan konfigurasi (pemindaian IaC)
    • Berbagai macam kebijakan bawaan disediakan out of the box
      • Kubernetes, Docker, Terraform, dan lainnya segera hadir
    • Mendukung kebijakan khusus
  • Akurasi tinggi
  • Mendukung banyak target
    • gambar kontainer, sistem file lokal, dan repositori git jarak jauh

Pemasangan

Di CentOS

  • Instal Trivy di CentOS dari repo-nya, jadi tambahkan repo trivy lalu instal sebagai berikut:
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
  • Atau instal trivy dari sumber RPM-nya, Anda harus mendapatkan rilis Trivy terbaru lalu jalankan :
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

Di Ubuntu

  • Dari repositori
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
  • Dari sumber Debian, Anda juga perlu mendapatkan rilis Trivy terbaru seperti yang kami lakukan di CentOS lalu jalankan perintah di bawah ini:
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

Di Arch Linux|Manjaro

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

Gunakan Trivy

Memindai Filesystem dan git repo

  • Sepele dapat memindai sistem file (seperti mesin host, image mesin virtual, atau sistem file image container yang belum dibongkar).
trivy fs /home/glassfish/
  • Untuk memindai repo Git dengan trivy
trivy repo https://github.com/aquasecurity/trivy

Memindai gambar Container

  • Mencantumkan gambar Anda
docker images
  • Pindai dengan hal-hal sepele
trivy image httpd

Terapkan Trivy di Dockerfile

Anda dapat memasukkan sepele di Dockerfile . Anda dan itu akan memindai semuanya saat membangun gambar.

Misalnya:

  • Buat Dockerfile yang berisi trivy
vim Dockerfile 
  • Tambahkan berikut ini:
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 /
  • Bangun gambarnya.
[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 ~]#

Seperti yang ditunjukkan di atas, trivy memindai kerentanan untuk gambar yang disertakan dalam Dockerfile saat membangun.

  • Anda juga dapat memfilter kerentanan berdasarkan tingkat keparahan dengan:
trivy image --severity HIGH,CRITICAL httpd:latest

Seperti yang ditunjukkan di atas, kami memfilter hasilnya hanya untuk tingkat keparahan kritis dan tinggi.

  • Pindai wadah dari dalam wadah
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 /

Kesimpulan

Itu dia

Dalam panduan ini, Kami mengilustrasikan cara memindai Gambar Wadah Docker untuk mengetahui Kerentanan dengan Trivy selain sistem file dan git repo.

terima kasih


Docker
  1. Cara Menginstal WordPress dengan Docker di Ubuntu

  2. Cara Menginstal Jenkins dengan Docker

  3. Bagaimana cara menggunakan gambar buruh pelabuhan lokal dengan Minikube?

  1. Cara Menyebarkan Wadah nginx dengan Docker di Linode

  2. Cara Berbagi Gambar Docker Dengan Orang Lain

  3. Cara Membuat Wadah Docker MySQL untuk Pengujian

  1. Cara Menjalankan Jenkins Container sebagai Layanan Systemd dengan Docker

  2. Belajar Docker:Cara Membuat Wadah Docker

  3. Cara Mengubah Zona Waktu Untuk Wadah Docker