Verkkosivustohaku

Docker: Korjaa kuvien haavoittuvuudet Trivyn ja Copan avulla


Docker-konttikuvat sisältävät usein tietoturva-aukkoja, jotka periytyvät niiden perustana olevista käyttöjärjestelmäpaketeista. Kuvia ei tarvitse rakentaa uudelleen alusta alkaen, vaan voit käyttää Trivyä haavoittuvuuksien skannaamiseen ja Copa:ta niiden korjaamiseen suoraan. Tämä opas näyttää, kuinka tunnistaa ja korjata konttien haavoittuvuuksia Ubuntu-, Debian-, RHEL-, CentOS- ja Fedora-järjestelmissä näiden kahden tehokkaan avoimen lähdekoodin työkalun avulla.

Tässä oppaassa opit:

  • Kuinka asentaa Trivy-haavoittuvuusskanneri Ubuntulle/Debianille
  • Kuinka asentaa Copa-säiliön korjaustyökalu
  • Kuinka skannata Docker-kuvia käyttöjärjestelmän haavoittuvuuksien varalta
  • Kuinka korjata kontin haavoittuvuudet automaattisesti
  • Kuinka varmistaa, että korjatut kuvat ovat haavoittumattomia

Artikkelin yhteenveto: Skannaa Docker-kuvat haavoittuvuuksien varalta Trivyn avulla ja korjaa ne automaattisesti Copan avulla.

AskellusKomento/Toiminto
1. Skannaa kuva
sudo trivy image --vuln-type os --ignore-unfixed IMAGE_NAME
2. Vie JSON-raportti
trivy image --vuln-type os --ignore-unfixed -f json -o report.json IMAGE_NAME
3. Käynnistä BuildKit
sudo docker run --detach --rm --privileged -p 127.0.0.1:8888:8888/tcp --name buildkitd --entrypoint buildkitd moby/buildkit:v0.11.4 --addr tcp://0.0.0.0:8888
4. Korjauskuva
sudo copa patch -i IMAGE_NAME -r report.json -t patched -a tcp://0.0.0.0:8888

Vaihe 1: Asenna Trivy-haavoittuvuusskanneri

Trivy on Aqua Securityn kehittämä avoimen lähdekoodin haavoittuvuusskanneri. Se havaitsee haavoittuvuuksia käyttöjärjestelmän paketeissa, sovellusten riippuvuuksissa ja konttikuvissa.

Ubuntu/Debian

  1. Asenna riippuvuudet: Asenna ensin wget- ja gnupg-paketit, jotka tarvitaan repositorion lisäämiseen:

    $ sudo apt-get install wget gnupg -y
  2. Lisää Trivy GPG -avain: Lataa ja lisää Trivyn arkiston allekirjoitusavain:

    $ wget -qO - https://aquasecurity.github.io/trivy-repo/deb/public.key | gpg --dearmor | sudo tee /usr/share/keyrings/trivy.gpg > /dev/null
  3. Lisää Trivy-repositorio: Lisää virallinen Trivy-repositorio lähdeluetteloosi:

    $ echo "deb [signed-by=/usr/share/keyrings/trivy.gpg] https://aquasecurity.github.io/trivy-repo/deb generic main" | sudo tee -a /etc/apt/sources.list.d/trivy.list
  4. Asenna Trivy: Päivitä pakettien luettelo ja asenna Trivy:

    $ sudo apt-get update
    $ sudo apt-get install trivy -y

RHEL/CentOS/Fedora

  1. Lisää Trivy-tietovarasto: Luo Trivy-tietovarastotiedosto:

    # sudo tee /etc/yum.repos.d/trivy.repo << 'EOF'
    [trivy]
    name=Trivy repository
    baseurl=https://aquasecurity.github.io/trivy-repo/rpm/releases/$basearch/
    gpgcheck=1
    enabled=1
    gpgkey=https://aquasecurity.github.io/trivy-repo/rpm/public.key
    EOF
  2. Asenna Trivy: Käytä dnf- tai yum-komentoa asennukseen:

    # sudo dnf install trivy -y

Varmista asennus tarkistamalla versio:

$ trivy --version

Vaihe 2: Asenna Copa-patchausohjelma

Copa (Copacetic) on CNCF:n sandbox-projekti, joka korjaa konttikuvia suoraan ilman täydellistä uudelleenrakennusta. Se käyttää skannereiden kuten Trivyn haavoittuvuusselosteita turvallisuuspäivitysten soveltamiseen. Copa jaetaan yhtenä binääritiedostona, joka toimii kaikissa Linux-jakelussa.

  1. Lataa Copa-binaari: Hanki valmiiksi käännetty binaari viralliselta Copa GitHub -julkaisusivulta:

    $ wget https://github.com/project-copacetic/copacetic/releases/download/v0.9.0/copa_0.9.0_linux_amd64.tar.gz
  2. Pura arkisto: Pura ladattu tar-tiedosto:

    $ tar -xzf copa_0.9.0_linux_amd64.tar.gz
  3. Asenna Copa: Siirrä suoritettava tiedosto järjestelmän polkuun:

    $ sudo mv copa /usr/local/bin/
  4. Tarkista asennus: Varmista, että Copa on asennettu oikein:

    $ copa --version

Vaihe 3: Skannaa säiliökuva haavoittuvuuksien varalta

Ennen korjaamista sinun täytyy tunnistaa haavoittuvuudet konttikuvassasi. Seuraavat vaiheet käyttävät esimerkkinä linuxconfig/instantprivacy – korvaa se omalla kuvasi nimellä.

  1. Lataa konttikuva: Lataa kuva, jonka haluat skannata:

    $ sudo docker pull linuxconfig/instantprivacy
  2. Tarkista haavoittuvuudet: Suorita Trivy tarkistaaksesi käyttöjärjestelmätason haavoittuvuudet. --ignore-unfixed-lipuke sulkee pois haavoittuvuudet, joihin ei ole saatavilla korjausta:

    $ sudo trivy image --vuln-type os --ignore-unfixed linuxconfig/instantprivacy
  3. Vie JSON-raportti: Copa vaatii skannaustulokset JSON-muodossa:

    $ trivy image --vuln-type os --ignore-unfixed -f json -o instantprivacy.json linuxconfig/instantprivacy

Vaihe 4: Päivitä säiliökuva Copan avulla

Copa käyttää BuildKitiä konttikuvien korjausten soveltamiseen.

  1. Käynnistä BuildKit-säilö: Käynnistä BuildKit privilegoituna säilönä:

    $ sudo docker run --detach --rm --privileged \
      -p 127.0.0.1:8888:8888/tcp \
      --name buildkitd \
      --entrypoint buildkitd \
      moby/buildkit:v0.11.4 \
      --addr tcp://0.0.0.0:8888
  2. Varmista, että BuildKit on käynnissä: Vahvista, että kontti käynnistyi onnistuneesti:

    $ sudo docker ps

  3. Korjaa konttikuvake: Käytä Copa-sovellusta tietoturvakorjausten tekemiseen. -t-lipuke määrittää korjatun kuvan tunnisteen:

    $ sudo copa patch \
      -i docker.io/linuxconfig/instantprivacy \
      -r instantprivacy.json \
      -t patched \
      -a tcp://0.0.0.0:8888

    Copa lataa tietoturvapäivitykset ja luo uuden kuvatason, johon päivitykset on sovellettu. Päivitetty kuva merkitään nimellä linuxconfig/instantprivacy:patched.

Vaihe 5: Vahvista korjattu kuva

  1. Skannaa korjattu kuva: Varmista, että kaikki haavoittuvuudet on korjattu:

    $ sudo trivy image --vuln-type os --ignore-unfixed linuxconfig/instantprivacy:patched
  2. Testaa korjattu kuva: Varmista, että korjattu kuva toimii oikein:

    $ sudo docker run --name=instantprivacy -d -p 8118:8118 linuxconfig/instantprivacy:patched
    $ export http_proxy="http://localhost:8118"
    $ curl api.ipify.org
    45.84.107.174
  3. Siivous: Pysäytä BuildKit-säilö, kun työ on valmis:

    $ sudo docker stop buildkitd

Johtopäätös

Olet onnistuneesti skannannut Docker-konttikuvan turvallisuuspuutteiden varalta Trivyn avulla ja korjannut ne automaattisesti Copan avulla. Tämä lähestymistapa on nopeampi kuin kuvien uudelleenrakentaminen alusta alkaen ja lisää vain yhden korjauskerroksen, säilyttäen alkuperäisen kuvan rakenteen. Tuotantoympäristöissä integroi nämä työkalut CI/CD-putkeesi, jotta voit skannata ja korjata konttikuvat automaattisesti ennen käyttöönottoa. Lisätietoja saat virallisesta Trivyn dokumentaatiosta ja Copa-projektin verkkosivuilta.

Usein Kysytyt Kysymykset

  1. Minkä tyyppisiä haavoittuvuuksia Copa voi korjata? Copa korjaa vain käyttöjärjestelmätason pakettien haavoittuvuuksia (kuten Debian-, Ubuntu-, Alpine- tai RHEL-paketteja). Se ei pysty korjaamaan sovellustason riippuvuuksia, kuten npm-paketteja, Python pip -moduuleja tai Go-moduuleja. Näissä tapauksissa sinun tulee uudelleenrakentaa sovellus päivitettyjen riippuvuuksien kanssa.
  2. Miksi tarvitsen BuildKitin Copa:n ajamiseen? Copa käyttää BuildKitin ero- ja yhdistämistoimintoja luodakseen uuden kuvaruudun, joka sisältää vain korjatut tiedostot. BuildKit toimii etuoikeutetussa kontissa, joka hoitaa matalan tason kuvan käsittelyt. Ilman BuildKitiä Copa ei voi soveltaa korjauksia kontti-tiedostojärjestelmään.
  3. Voinko päivittää kuvia yksityisistä rekistereistä? Kyllä, Copa tukee yksityisiä rekistereitä. Sinun on kirjauduttava sisään docker login ennen patch-komennon suorittamista. Copa käyttää Docker-tunnuksiasi peruskuvan hakemiseen ja päivitetyn tuloksen työntämiseen tarvittaessa.
  4. Mitä tapahtuu, jos Copa ei voi korjata kaikkia haavoittuvuuksia? Joihinkin haavoittuvuuksiin ei ehkä ole vielä saatavilla korjausta. Trivyn --ignore-unfixed-lipuke poistaa nämä raportista. Copa korjaa kaiken, mihin löytyy saatavilla oleva korjaus. Suorita Trivy uudelleen ilman --ignore-unfixed-lippua nähdäksesi kaikki haavoittuvuudet, mukaan lukien ne, joihin odotetaan korjausta.
  5. Kuinka päivitän Copan uusimpaan versioon? Lataa uusin versio Copan GitHubin release-sivulta ja korvaa binääritiedosto kansiossa /usr/local/bin/. Tarkista nykyinen versio komennolla copa --version.