Kako namestiti in uporabljati varnostni skener slike Anchore Container?

The Sidrni motor je odprtokodno orodje za skeniranje in analizo slik posod zaradi varnostnih ranljivosti in težav s politiko. Na voljo je kot Dockerjeva slika posode, ki se lahko izvaja znotraj orkestracijske platforme ali kot samostojna namestitev.


To je uporabno varnostno orodje, ki omogoča razvijalcem in ekipam QA preizkušanje, prepoznavanje in odpravljanje ranljivosti na slikah, ki jih uporabljajo za ustvarjanje aplikacij.

V tem članku bomo pogledali, kako namestiti in uporabljati skener ranljivosti slik Anchore. Na splošno obstaja več načinov izvajanja. Vendar se bom osredotočil na naslednja dva,

  • Uporabljati SidriščeCLI možnost ukazne vrstice
  • GUI temelji Skener slik Jenkins Anchore Container vključiti.

Pokazali vam bomo, kako namestiti, konfigurirati in zagnati motor, konfigurirati in uporabiti orodje ukazne vrstice AnchoreCLI ter vtičnik Jenkins. Za vsakega od obeh načinov se boste naučili, kako dodati slike za optično branje, izvajanje skeniranja in ogled poročil.

Na koncu članka boste izvedeli naslednje tri stvari.

  • Namestitev in konfiguracija Sidrni motor
  • Namestitev, konfiguracija in uporaba SidriščeCLI
  • Konfiguriranje in uporaba Vtičnik za skeniranje slik sidrišča za sidrišče v Jenkins

Predpogoji

Spodaj so zahteve za to vadnico;

  • Lokalni ali virtualni stroj z Ubuntu 18.04 in naslednjim;
  • Docker
  • Docker-compose
  • Jenkins Nameščen in zagnan
  • uporabnik sudo

1. korak: – Nastavite delovne imenike in naložite konfiguracijske datoteke.

Ustvarite delovni imenik za datoteke Anchore. Znotraj tega imenika boste ustvarili dva podimenika, enega za konfiguracijo in enega za bazo podatkov.

Ustvarite domači imenik za datoteke Anchore

mkdir sidrišče

Pojdite v nov imenik in ustvarite podimenik konfiguracije in baze podatkov.

sidrišče CD-ja

mkdir config

mkdir db

Prenesite konfiguracijske datoteke

Ko bodo imeniki pripravljeni, bomo iz projekta Github prenesli dve konfiguracijski datoteki (docker-compose.yaml in config.yaml).

Za prenos docker-compose.yaml

Pojdite v domači imenik sidrišča in uporabite ukaz

curl https://raw.githubusercontent.com/anchore/anchore-engine/master/scripts/docker-compose/docker-compose.yaml > docker-compose.yaml

Nato naložite config.yaml v imenik ~ / anchore / config

curl https://raw.githubusercontent.com/anchore/anchore-engine/master/scripts/docker-compose/config.yaml -o ~ / anchore / config / config.yaml

Datoteka config.yaml je konfiguracijska datoteka z osnovnimi nastavitvami, ki jih mora zagnati storitev sidrnega motorja. Ima več parametrov, med njimi vključuje privzeto, raven dnevnika, pristanišče za poslušanje, uporabniško ime, geslo in druge, ki jih lahko prilagodite tako, da ustrezajo posebnim zahtevam.

Dobra varnostna praksa je, da spremenite geslo in to lahko storite z urejanjem datoteke config.yaml. Vendar bomo v tej vadnici uporabili privzete nastavitve.

Če želite nadaljevati s privzetimi poverilnicami (uporabniško ime – skrbnik in geslo – foobar), nadaljujte 2. korak.

Spreminjanje poverilnic za sidrni motor (neobvezno)

Iz imenika sidrišča uporabite ukaz

nano ~ / anchore / config / config.yaml

Poiščite uporabniško ime (admin) in geslo (foobar) in spremenite želene vrednosti.

Pritisnite CTRL + X, torej Y shraniti in zapustiti.

Z nameščenimi delovnimi imeniki in konfiguracijskimi datotekami je sistem pripravljen za namestitev sidrnega motorja.

2. korak: – Namestite in zaženite sidrni motor

Dockerjevo kompozicijo boste uporabili za namestitev in zagon sidrnega motorja in baze podatkov.

Iz domačega imenika sidrišča zaženite.

docker-sestavljati up -d

To bo samodejno potegnilo sliko Anchore in nato ustvarilo motor in bazo podatkov Anchore doma in ~ / anchore / database / directory. Po zaključku bo ukaz zagnal motor Anchore.

Po uspešni namestitvi in ​​zagonu motorja za zasidranje lahko zdaj skenirate slike s pomočjo ukazne vrstice za zasidranje SidriščeCLI. Vendar morate najprej namestiti pripomoček ukazne vrstice AnchoreCLI, kot je prikazano spodaj.

Namestitev, konfiguracija AnchoreCLI

V tem koraku se boste naučili, kako namestiti in konfigurirati SidriščeCLI orodje ukazne vrstice.

3. korak: – Namestite anchoreCLI

V tej vadnici bomo najprej namestili pripomoček python-pip, ki bo nato uporabil za namestitev SidriščeCLI od vira.

Če želite namestiti Python pip. Za domači imenik Anchore in zaženite

sudo apt-get update
sudo apt-get install python-pip
sudo pip install – nadgradite setuptools

Namestite SidriščeCLI z uporabo python-pip-a

pip namestite anchorecli

S tem ukazom boste prenesli in namestili datoteke za AnchoreCLI. Po namestitvi moramo svojo datoteko .profile vpisati v ukaz

vir ~ / .profile

Če želite preveriti, ali je namestitev uspešna in različico Anchoreclija, uporabite ukaz

sidrišče-cli –verzija

Če želite preveriti stanje sistema sidrišča-CLI, uporabite ukaz

anchore-cli –url http: // localhost: 8228 / v1 –u admin –p sistemski status foobar

Upoštevajte, da morate vnesti URL, uporabniško ime in geslo motorja za zasidranje.

Določite parametre sidrnega motorja

AnchoreCLI bo privzeto poskusil dostopati do motorja za zasidranje brez preverjanja pristnosti. Vendar to ne bo delovalo, zato morate za vsak ukaz priskrbeti poverilnice za sidrišče.

To vključuje posredovanje uporabniškega imena, gesla in parametrov URL z vsakim ukazom Anchore CLI. Namesto da bi jih vsakič zagotovili, je alternativa, da jih v naslednji obliki definiramo kot okoljske spremenljivke.

Če želite prenesti URL, zaženite

ANCHORE_CLI_URL = http: // localhost: 8228 / v1

S tem je določen URL Anchore Engine skupaj s vrati 8228, ki jih uporablja.

Nastavite uporabniško ime in geslo s privzetimi vrednostmi; v nasprotnem primeru jih zamenjajte z novimi vrednostmi, ki jih nastavite Korak 1.

ANCHORE_CLI_USER = administrator

ANCHORE_CLI_PASS = foobar

Zgoraj določa parametre samo za trenutno lupino. Za nastavitev trenutne lupine in drugih procesov, ki se začnejo iz nje, uporabljamo ukaz za izvoz

izvoz ANCHORE_CLI_URL

izvoz ANCHORE_CLI_USER

izvoz ANCHORE_CLI_PASS

Z določenimi parametri je nastavitev AchoreCLI končana in pripravljeni ste za skeniranje slik.

4. korak: – Dodajanje in analiza slik

Zdaj, ko imamo Anchore Engine in konfiguriran CLI, se boste naučili dodajati in analizirati slike za varnostne težave. V tej vadnici bomo analizirali dve sliki. -openjdk: 8-jre-alpine z ranljivostmi in debian: najnovejši brez .

Analiza slik

Za nadaljevanje moramo slike najprej dodati motorju. Za dodajanje slik

slika sidrišča-cli dodaj openjdk: 8-jre-alpine

Dodaj stabilno sliko debian: najnovejše

slika sidrišča-cli dodaj docker.io/library/debian:latest

Dodajte več slik

slika sidrišča-cli dodaj openjdk: 10-jdk

slika sidrišča-cli dodaj openjdk: 11-jdk

Po dodajanju slike v sidrni motor se analiza začne takoj. Če je več naloženih slik, se postavijo v čakalno vrsto in analizirajo ena na drugo. Lahko preverite napredek in si ogledate seznam naloženih slik skupaj z njihovim statusom analize.

Če si želite ogledati seznam, zaženite ukaz

seznam slik anchore-cli

Izhod

[zaščitena e-pošta]: ~ / anchore $ anchore-cli seznam slik
Stanje analize prenosa slike s celotno oznako
docker.io/openjdk:10-jdk sha256: 923d074ef1f4f0dceef68d9bad8be19c918d9ca8180a26b037e00576f24c2cb4analyzed
docker.io/openjdk:11-jdk sha256: 9923c0853475007397ed5c91438c12262476d99372d4cd4d7d44d05e9af5c077analyzed
docker.io/openjdk:8-jre-alpine sha256: b2ad93b079b1495488cc01375de799c402d45086015a120c105ea00e1be0fd52analyzed

Odvisno od števila slik, velikosti in časa, ki jih preteče po dodajanju, boste analizirali popolne, analizirali za tiste, ki so v teku, in ne analizirali za čakalne slike..

5. korak: – Pridobite in preglejte rezultate analiz

Ko je analiza končana, lahko preverite rezultate in si ogledate rezultate za pregled ranljivosti, preverjanje pravil in druge težave, ki jih je motor opredelil.

Če želite preveriti rezultate skeniranja ranljivosti na openjdku: 8-jre-alpine ranljiva slika

Teči

anchore-cli image vuln openjdk: 8-jre-alpine all

Izhod

[zaščitena e-pošta]: ~ / anchore $ anchore-cli image vuln openjdk: 8-jre-alpine all
Ranljivost IDPackage Resity Fix CVE Refs Ranbubility URL
CVE-2018-1000654 libtasn1-4.13-r0 Visoka 4.14-r0 http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-1000654
CVE-2019-12900 libbz2-1.0.6-r6 Visok 1.0.6-r7 http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-12900
CVE-2019-14697 musl-1.1.20-r4 Visok 1.1.20-r5 http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-14697
CVE-2019-14697 musl-utils-1.1.20-r4 Visok 1.1.20-r5 http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-14697
CVE-2019-8457 sqlite-libs-3.26.0-r3 Visoka 3.28.0-r0 http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-8457
CVE-2018-14498 libjpeg-turbo-1.5.3-r4 Medium 1.5.3-r5 http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-14498

Poročilo prikazuje identifikator CVE, ranljiv paket, resnost in ali je mogoče popraviti ali ne. Za našo podobo openjdk: 8-jre-alpine analiza kaže, da ima pet velikih ranljivosti in precej srednjih in zanemarljivih ranljivosti. (nekatere niso prikazane zgoraj).

Če si želite ogledati rezultate ranljivosti za stabilno sliko debian: najnovejše

Zaženite ukaz

anchore-cli image vuln docker.io/library/debian:latest all

Izhod

[zaščitena e-pošta]: ~ / anchore $ anchore-cli image vuln debian: najnovejše vse
Ranljivost IDPackage Resity Fix CVE RefsVulnerability URL
CVE-2005-2541 tar-1,30 + dfsg-6 Zanemarljivo Brez https://security-tracker.debian.org/tracker/CVE-2005-2541
CVE-2019-1010022libc-bin-2,28-10 Zanemarljivo Brez https://security-tracker.debian.org/tracker/CVE-2019-1010022
CVE-2019-1010022libc6-2.28-10 Zanemarljivo Brez https://security-tracker.debian.org/tracker/CVE-2019-1010022
CVE-2019-1010023libc-bin-2,28-10 Zanemarljivo Brez https://security-tracker.debian.org/tracker/CVE-2019-1010023
CVE-2019-1010023libc6-2.28-10 Zanemarljivo Brez https://security-tracker.debian.org/tracker/CVE-2019-1010023
CVE-2019-1010024libc-bin-2,28-10 Zanemarljivo Brez https://security-tracker.debian.org/tracker/CVE-2019-1010024

Kot je razvidno iz poročila, ima slika debian: najnovejše zanemarljive ranljivosti in ni popravkov.

Če želite videti rezultate ocene politike za nestabilno sliko openjdk: 8-jre-alpine

teči

anchore-cli ocena check openjdk: 8-jre-alpine

Rezultat – rezultati kažejo neuspeh

[zaščitena e-pošta]: ~ / anchore $ anchore-cli oceni check openk: 8-jre-alpine
Podatkovni pregled: sha256: b2ad93b079b1495488cc01375de799c402d45086015a120c105ea00e1be0fd52
Celotna oznaka: docker.io/openjdk:8-jre-alpine
Stanje: neuspešno
Zadnji Eval: 2019-09-20T12: 03: 32Z
ID politike: 2c53a13c-1765-11e8-82ef-23527761d060

Slika openjdk: 8-jre-alpine krši določen ID politike (ID politike: 2c53a13c-1765-11e8-82ef-23527761d060) in zato vrne status Fail.

Zdaj, ko smo videli, kako se Anchore Engine odziva, ko odkrije kršitev pravilnika, je čas, da preverimo, kako se obnaša z našim stabilnim imidžem debian: najnovejše.

Preverjanje politike za debian: zadnja stabilna slika

anchore-cli ocena check docker.io/library/debian:latest –razprodaja

[zaščitena e-pošta]: ~ / anchore $ anchore-cli oceni preverite docker.io/library/debian:latest –detail
Podatkovna podoba: sha256: d3351d5bb795302c8207de4db9e0b6eb23bcbfd9cae5a90b89ca01f49d0f792d
Celotna oznaka: docker.io/library/debian:latest
ID slike: c2c03a296d2329a4f3ab72a7bf38b78a8a80108204d326b0139d6af700e152d1
Status: prehod
Zadnji Eval: 2019-09-20T12: 00: 06Z
ID politike: 2c53a13c-1765-11e8-82ef-23527761d060
Končno dejanje: opozoriti
Končni ukrep Razlog: evalvacija politike
Status sprožilca vrat
dockerfileinstructionDockerfile direktive »HEALTHCHECK« ni mogoče najti, ujemanje s pogojem »not_exists« preverjanje

Rezultati kažejo stanje prehoda in Končno dejanje opozorila zaradi neusklajenosti informacij z direktivo Dockerfile. To ne uspe, vendar bo morda zahtevalo preverjanje in reševanje težave.

Konfiguriranje in uporaba vtičnika za skeniranje slik sidrišča Anchore v Jenkinsu

6. korak: – Dodajte in konfigurirajte vtičnik za skeniranje slik Anchore Container v Jenkins

V tem koraku bomo integrirali sidrni motor s strežnikom Jenkins. Jenkins je odprtokodni strežnik, ki temelji na javi, za avtomatizacijo številnih ponavljajočih se nalog v razvojnem ciklu programske opreme.

The Vtičnik za zasidranje je na voljo v Jenkins, vendar ni privzeto nameščen.

Prijavite se v Jenkins s spletnim brskalnikom

http: // your_server_ip_or_domain: 8080

Vnesite uporabniško ime in geslo.

Pojdi do Jenkinsov meni

Poiščite in izberite Upravljajte Jenkins

Pojdi do Upravljajte vtičnike

Na Zavihek na voljo, pomaknite se navzdol do Orodja za izdelavo in izberite Optični bralnik posode za sidro

Kliknite na Namestite brez ponovnega zagona možnost.

Po uspešni namestitvi Vtičnik za skeniranje slik sidrišča za sidrišče, naslednji korak je konfiguriranje poverilnic.

Pojdi na Jenkins in izberite Upravljajte Jenkins zavihek.

Odprto Konfigurirajte sistem.

Poiščite Konfiguracija sidrišča.

Izberite Način motorja

Vnesite Sidrni motor podrobnosti (URL motorja, uporabniško ime in geslo in vrata 8228 – privzeta vrata za motor).

URL – http: // your_server_IP: 8228 / v1

Vnesite uporabniško ime = admin
Vnesite geslo = foobar ali novo geslo, če ste ga spremenili v 3. korak (nad)

Kliknite Shrani

Konfigurirajte vtičnik za zasidranje

8. korak: – Dodajanje in skeniranje slik

Kliknite Nov izdelek na nadzorni plošči Jenkins v zgornjem levem meniju

Odprlo se bo zaslon z več možnostmi.
V polje Vnesite ime predmeta vnesite želeno ime preizkusnega projekta.

V tem projektu bomo uporabili gradnjo Pipeline.
Izberite Cevovod in kliknite V redu.

Zdaj ste pripravljeni za skeniranje slik. V našem primeru bomo uporabili slike, ki so že v registru dockerjev, do katerega je dostopen Sidrni motor.

Če želite to narediti, boste dodali skript cevovoda, ki bo določil sliko za skeniranje.

9. korak: – Dodaj skript cevovoda

Pomaknite se navzdol do razdelka Cevovod in dodajte skript, da določite sliko, ki jo želite skenirati. Začeli bomo z openjdkom: 8-jre-alpine, ki vsebuje nekatere ranljivosti.

vozlišče {
def imageLine = ‘openjdk: 8-jre-alpine’`
writeFile datoteka: ‘anchore_images’, besedilo: imageLine`
ime sidrišča: “anchore_images”
}

Kliknite Shrani

Korak 10: – Zaženite gradnjo in preglejte poročila o skeniranju

Z jedilnika Jenkins

Kliknite Zgradi zdaj

S tem se bo začel postopek izdelave, ki traja nekaj minut, odvisno od velikosti slike. Po zaključku se v zgodovini gradnje prikaže številka in barvni gumb. To bo imelo rdečo barvo za Fail ali modro za Pass. S klikom na gumb se prikaže več rezultatov.

11. korak: – Pregled rezultatov

Kliknite na Zgradi # za ogled več podrobnosti
Odpre se a Izhod konzole okno, ki označuje neuspeh – Poročilo o sidrišču (FAIL)

Podrobna poročila kažejo, ali je bila analiza napaka ali prehod, in navajajo več poročil, ki prikazujejo ranljivosti, opozorila in druga, ki temeljijo na konfiguraciji. Vtičnik je privzeto nastavljen tako, da ne uspe sestaviti (Nehaj) kadar koli obstajajo ranljivosti. Spodaj so posnetki zaslona za poročila o politiki in varnosti.

Povzetek ocene politike zasidranja

Spodaj je posnetek zaslona rezultatov varnosti za ranljivo sliko.

Seznam skupnih ranljivosti in izpostavljenosti (CVE)

Če zdaj skeniramo stabilno sliko, debian: najnovejši, brez ranljivosti, dobimo spodnje rezultate.

Povzetek ocene politike zasidranja (prehod)

Običajni seznam skupnih ranljivosti in izpostavljenosti (CVE) 

Zaključek

Optični bralnik vsebnikov Anchore Container je zmogljivo orodje za analizo slik, ki prepoznava širok razpon ranljivosti in težav s politiko v Dockerjevih slikah. Ima veliko možnosti prilagajanja in ga je mogoče konfigurirati glede odzivanja na odkrivanje težav med analizo. Eden od teh je prekinitev sestavljanja, ko motor naleti na veliko ranljivost.

Če želite graditi svojo kariero v DevSecOps, potem preverite to Seveda Udemy.

Oznake:

  • Odprtokodno

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map