Как да инсталирате и използвате скенер за защита на изображението на контейнер Anchore Container?

Най- Двигател за закрепване е инструмент с отворен код за сканиране и анализ на изображения на контейнери за уязвимости в сигурността и проблеми с политиката. Предлага се като изображение на контейнер на Docker, което може да работи в рамките на платформа за оркестрация или като самостоятелна инсталация.


Това е полезен инструмент за сигурност, който позволява на разработчиците и QA екипите да тестват, идентифицират и адресират уязвимостите в изображенията, които използват за създаване на приложения.

В тази статия ще разгледаме как да инсталираме и използваме скенера за уязвимост на изображението Anchore. Като цяло има няколко метода за изпълнение. Ще се съсредоточа обаче върху следните две,

  • Използвайки AnchoreCLI опция на командния ред
  • Основана на GUI Скенер за изображение на контейнер на Jenkins Anchore плъгин.

Ще ви покажем как да инсталирате, конфигурирате и стартирате двигателя, да конфигурирате и използвате инструмента за команден ред AnchoreCLI, както и приставката Jenkins. За всеки от двата метода ще научите как да добавяте изображения за сканиране, да извършвате сканирането и да преглеждате отчети.

В края на статията ще научите следните три неща.

  • Инсталиране и конфигуриране на Двигател за закрепване
  • Инсталиране, конфигуриране и използване AnchoreCLI
  • Конфигуриране и използване Приставка за скенер за изображение на контейнер за закрепване в Дженкинс

Contents

Предварителни

По-долу са изискванията за този урок;

  • Локална или виртуална машина с Ubuntu 18.04 и следното;
  • докер
  • Docker-ново съобщение
  • Дженкинс Инсталиран и работещ
  • потребител на судо

Стъпка 1: – Настройте работните директории и изтеглете конфигурационните файлове.

Създайте работеща директория за вашите файлове с анкор. В тази директория ще създадете два поддиректории, един за конфигурацията и един за базата данни.

Създайте домашна директория за файловете Anchore

mkdir котва

Отидете в новата директория и създайте поддиректории за конфигурация и база данни.

cd котва

mkdir config

mkdir db

Изтеглете конфигурационните файлове

След като директории са готови, ще изтеглим два конфигурационни файла (docker-compose.yaml и config.yaml) от проекта Github.

За да изтеглите docker-compose.yaml

Отидете в домашната директория на котвата и използвайте командата

къдря https://raw.githubusercontent.com/anchore/anchore-engine/master/scripts/docker-compose/docker-compose.yaml > докер-compose.yaml

След това изтеглете config.yaml в директорията ~ / anchore / config

къдря https://raw.githubusercontent.com/anchore/anchore-engine/master/scripts/docker-compose/config.yaml -o ~ / anchore / config / config.yaml

Файлът config.yaml е конфигурационен файл с основните настройки, които услугата на двигателя за закрепване изисква да стартира. Той има няколко параметъра, включително включва по подразбиране, ниво на регистрация, порт за слушане, потребителско име, парола и други, които можете да коригирате, за да отговаряте на конкретни изисквания.

Добра практика за защита е да промените паролата и можете да направите това, като редактирате файла config.yaml. В този урок обаче ще използваме настройките по подразбиране.

За да продължите с идентификационните данни по подразбиране, (потребителско име – администратор и парола – foobar), продължете към стъпка 2.

Промяна на идентификационните данни на двигателя за закрепване (незадължително)

Използвайте командата от директорията за закрепване

nano ~ / anchore / config / config.yaml

Намерете потребителското име (администратор) и парола (foobar) и променете предпочитаните от вас стойности.

Натиснете CTRL + х, тогава Y за да запазите и излезете.

С наличните работни директории и конфигурационни файлове, системата е готова за инсталиране на двигателя Anchore.

Стъпка 2: – Инсталирайте и стартирайте двигателя за закрепване

Ще използвате Docker compose за инсталиране и стартиране на Anchore Engine и база данни.

От началната директория на котвата стартирайте.

docker-compose up -d

Това автоматично ще изтегли изображението Anchore и след това ще създаде двигателя и базата данни на Anchore съответно в дома и ~ / anchore / database / директориите. След завършване командата ще стартира двигателя Anchore.

След като успешно инсталирате и стартирате двигателя за закрепване, вече можете да сканирате изображенията, като използвате командния ред за закрепване AnchoreCLI. Въпреки това, първо трябва да инсталирате помощната програма за команден ред AnchoreCLI, както е показано по-долу.

Инсталиране, конфигуриране на AnchoreCLI

В тази стъпка ще научите как да инсталирате и конфигурирате AnchoreCLI инструмент за команден ред.

Стъпка 3: – Инсталирайте AnchoreCLI

В този урок първо ще инсталираме помощната програма python-pip, която след това ще използва за инсталиране на AnchoreCLI от източника.

За да инсталирате Python pip. За началната директория на Anchore и стартирайте

sudo apt-get update
sudo apt-get install python-pip
sudo pip install – надстройка на настройките

Инсталирайте AnchoreCLI използвайки python-pip

pip инсталирате anchorecli

Тази команда ще изтегли и инсталира файловете за AnchoreCLI. След инсталирането, сега трябва да изпратим нашия .profile файл с помощта на командата

източник ~ / .profile

За да проверите дали инсталацията е успешна и версия на Anchorecli, използвайте командата

anchore-cli –версия

За да проверите състоянието на системата anchore-CLI, използвайте командата

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

Моля, обърнете внимание, че трябва да предавате URL адреса на двигателя на Anchore, потребителско име и парола.

Определете параметрите на двигателя за закрепване

По подразбиране AnchoreCLI ще се опита да получи достъп до двигателя Anchore без удостоверяване. Това обаче няма да работи и трябва да предоставите идентификационните данни на Anchore Engine с всяка команда.

Това включва предаване на параметрите на потребителското име, паролата и URL адреса с всяка команда на Anchore CLI. Вместо да ги предоставяте всеки път, алтернативата е да ги дефинирате като променливи на околната среда в следния формат.

За да предадете URL адреса, стартирайте

ANCHORE_CLI_URL = HTTP: // Localhost: 8228 / v1

Това определя URL адреса на Anchore Engine заедно с порта 8228, който той използва.

Задайте потребителско име и парола, като използвате стойностите по подразбиране; в противен случай ги заменете с новите стойности, които сте задали Етап 1.

ANCHORE_CLI_USER = администратор

ANCHORE_CLI_PASS = Foobar

Горното задава параметрите само за текущата обвивка. За да зададем текущата обвивка и други процеси, които започват от нея, използваме командата експортиране

експортиране ANCHORE_CLI_URL

експортира ANCHORE_CLI_USER

експортиране ANCHORE_CLI_PASS

С дефинираните параметри настройката на AchoreCLI е завършена и вие сте готови да сканирате изображения.

Стъпка 4: – Добавяне и анализ на изображения

Сега, когато работи Anchor Engine и CLI е конфигуриран, ще научите как да добавяте и анализирате изображенията за проблеми със сигурността. В този урок ще анализираме две изображения. -openjdk: 8-jre-alpine с уязвимости и debian: последен без .

Анализиране на изображения

За да продължим, първо трябва да добавим изображенията към двигателя. За да добавите изображенията

anchore-cli изображение добавете openjdk: 8-jre-alpine

Добавете стабилно изображение debian: най-ново

anchore-cli изображение добавете docker.io/library/debian:latest

Добавете още изображения

anchore-cli изображение добавете openjdk: 10-jdk

anchore-cli изображение добавете openjdk: 11-jdk

След добавяне на изображение към двигателя за закрепване, анализът започва веднага. Ако има няколко заредени изображения, те се поставят на опашка и се анализират едно по едно. Можете да проверите напредъка и да видите списъка с заредените изображения, заедно със състоянието им на анализ.

За да видите списъка, изпълнете командата

списък с изображения на анкоринг-кли

продукция

[Имейл защитен]: ~ / anchore $ списък с изображения на anchore-cli
Състояние на анализ на пълен таг на изображението
docker.io/openjdk:10-jdk sha256: 923d074ef1f4f0dceef68d9bad8be19c918d9ca8180a26b037e00576f24c2cb4analyzed
docker.io/openjdk:11-jdk sha256: 9923c0853475007397ed5c91438c12262476d99372d4cd4d7d44d05e9af5c077analyzed
docker.io/openjdk:8-jre-alpine sha256: b2ad93b079b1495488cc01375de799c402d45086015a120c105ea00e1be0fd52analyzed

В зависимост от броя на изображенията, размера и времето, изминало след добавянето им, ще се анализират за тези завършени, анализиращи се за тези, които са в процес и не анализирани за изображенията на опашката..

Стъпка 5: – Извличане и преглед на резултатите от анализа

След като анализът приключи, можете да проверите резултатите и да видите резултатите за сканиране на уязвимостта, проверки на политики и други проблеми, които двигателят е идентифицирал.

За да проверите резултатите за сканиране на уязвимостта на openjdk: 8-jre-alpine уязвимо изображение

тичам

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

продукция

[Имейл защитен]: ~ / anchore $ anchore-cli image vuln openjdk: 8-jre-alpine all
Уязвимост IDPackage Severity Fix CVE Refs URL адрес на уязвимостта
CVE-2018-1000654 libtasn1-4.13-r0 Висока 4.14-r0 http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-1000654
CVE-2019-12900 libbz2-1.0.6-r6 Висока 1.0.6-r7 http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-12900
CVE-2019-14697 musl-1.1.20-r4 Висока 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 Висока 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 Висока 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

Докладът показва CVE идентификатора, уязвимия пакет, тежестта и дали има поправка или не. За нашия образ openjdk: 8-jre-alpine, анализът показва, че той има пет високи уязвимости и доста голям брой средни и нищожни уязвимости. (някои не са показани по-горе).

За да видите резултатите от уязвимостта за стабилен образ debian: най-нов

Изпълнете командата

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

продукция

[Имейл защитен]: ~ / anchore $ anchore-cli image vuln debian: all all
Уязвимост IDPackage Severity Fix CVE RefsVulnerability URL
CVE-2005-2541 tar-1.30 + dfsg-6 Пренебрежимо нищо https://security-tracker.debian.org/tracker/CVE-2005-2541
CVE-2019-1010022libc-bin-2.28-10 Пренебрежимо нищо https://security-tracker.debian.org/tracker/CVE-2019-1010022
CVE-2019-1010022libc6-2.28-10 нищожно нищо https://security-tracker.debian.org/tracker/CVE-2019-1010022
CVE-2019-1010023libc-bin-2.28-10 нищожно нищо https://security-tracker.debian.org/tracker/CVE-2019-1010023
CVE-2019-1010023libc6-2.28-10 нищожно нищо https://security-tracker.debian.org/tracker/CVE-2019-1010023
CVE-2019-1010024libc-bin-2.28-10 Пренебрежимо нищо https://security-tracker.debian.org/tracker/CVE-2019-1010024

Както се вижда от доклада, изображението debian: latest има пренебрежими уязвимости и няма корекции.

За да видите резултатите от оценката на политиката за нестабилното изображение openjdk: 8-jre-alpine

тичам

anchore-cli оценка check openjdk: 8-jre-alpine

Резултат – Резултатите показват неуспех

[Имейл защитен]: ~ / anchore $ anchore-cli Оценка на проверка openjdk: 8-jre-alpine
Дайджест на изображения: sha256: b2ad93b079b1495488cc01375de799c402d45086015a120c105ea00e1be0fd52
Пълен маркер: docker.io/openjdk:8-jre-alpine
Състояние: неуспех
Последно Eval: 2019-09-20T12: 03: 32Z
Идентификационен номер на политиката: 2c53a13c-1765-11e8-82ef-23527761d060

Изображението openjdk: 8-jre-alpine нарушава указания идентификационен номер на политиката (ID на политиката: 2c53a13c-1765-11e8-82ef-23527761d060) и следователно връща състояние на Fail.

Сега, когато видяхме как Anchore Engine реагира след откриване на нарушение на политиката, е време да проверим дали се държи с нашия стабилен имидж debian: последен.

Проверка на политиката за debian: последно стабилно изображение

anchore-cli оценка check docker.io/library/debian:latest –detail

[Имейл защитен]: ~ / anchore $ anchore-cli оценка проверка docker.io/library/debian:latest –detail
Image Digest: sha256: d3351d5bb795302c8207de4db9e0b6eb23bcbfd9cae5a90b89ca01f49d0f792d
Пълен маркер: docker.io/library/debian:latest
ID на изображението: c2c03a296d2329a4f3ab72a7bf38b78a8a80108204d326b0139d6af700e152d1
Състояние: пропуск
Последно Eval: 2019-09-20T12: 00: 06Z
Идентификационен номер на политиката: 2c53a13c-1765-11e8-82ef-23527761d060
Окончателно действие: предупреди
Причина за крайно действие: оценка на политиката
Състояние на TriggerDetail
dockerfileinstructionDockerfile директива „HEALTHCHECK“ не е намерена, съвпадение с условие „not_exists“

Резултатите показват статус на Pass и Final Action of Warn поради несъответствие на информацията с директива на Dockerfile. Това не се проваля, но може да изисква проверка и адресиране на проблема.

Конфигуриране и използване на плъгин за скенер за изображение на контейнер за анкери в Дженкинс

Стъпка 6: – Добавете и конфигурирайте приставката за сканиране на изображение на контейнер Anchore в Дженкинс

В тази стъпка ще интегрираме двигателя за котва със сървъра на Jenkins. Jenkins е сървър с отворен код, базиран на Java, за автоматизиране на широк спектър от повтарящи се задачи в цикъла на разработка на софтуер.

Най- Приставка за закрепване е наличен в Jenkins, но не е инсталиран по подразбиране.

Влезте в Jenkins чрез уеб браузър

HTTP: // your_server_ip_or_domain: 8080

Въведете потребителско име и парола.

Отидете на Меню на Дженкинс

Намерете и изберете Управление на Дженкинс

Отидете на Управление на приставки

На Наличен раздел, превъртете надолу до Инструменти за изграждане и изберете Скенер за изображение на контейнер за закрепване

Щракнете върху Инсталирайте без рестартиране опция.

След успешната инсталация на Плъгин за скенер за изображение на контейнер за анкери, следващата стъпка е да конфигурирате идентификационните данни.

Отидете на Дженкинс менюто и изберете Управление на Дженкинс раздел.

отворено Конфигуриране на системата.

Намерете Конфигурация на анкера.

Изберете Режим на двигателя

Влез в Двигател за закрепване подробности (URL адрес на двигателя, потребителско име и парола и порт 8228 – портът по подразбиране за двигателя).

URL адрес – http: // your_server_IP: 8228 / v1

Въведете потребителско име = администратор
Въведете паролата = foobar или нова парола, ако сте я променили Стъпка 3 (По-горе)

Кликнете Запази

Конфигурирайте приставката за закрепване

Стъпка 8: – Добавяне и сканиране на изображения

Кликнете Нов продукт в таблото за управление на Дженкинс в горното ляво меню

Това ще отвори екран с няколко опции.
Въведете желаното име за вашия тестов проект в полето Въведете име на елемент.

В този проект ще използваме изграждането на тръбопровода.
Изберете тръбопровод и щракнете Добре.

Вече сте готови да сканирате изображенията. В нашия случай ще използваме изображения, които вече са в регистъра на докерите, който е достъпен от Двигател за закрепване.

За да направите това, ще добавите скрипта на тръбопровода, който ще определи изображението за сканиране.

Стъпка 9: – Добавете скрипт на тръбопровода

Превъртете надолу до секцията Pipeline и добавете скрипта, за да определите изображението за сканиране. Ще започнем с openjdk: 8-jre-alpine, който съдържа някои уязвими места.

възел {
def imageLine = ‘openjdk: 8-jre-alpine’`
writeFile файл: ‘anchore_images’, текст: imageLine`
име за котва: ‘anchore_images’ ‘
}

Кликнете Запази

Стъпка 10: – Стартирайте изграждането и прегледайте отчетите за сканиране

От менюто на Дженкинс

Кликнете Изградете сега

Това ще започне процеса на изграждане, който отнема няколко минути в зависимост от размера на изображението. След приключване ще се появи номер и цветен бутон под историята на изграждането. Това ще има червен цвят за Fail или син за Pass. Щракването върху бутона ще покаже повече резултати.

Стъпка 11: – Преглед на резултатите

Кликнете върху Изграждане № за да видите повече подробности
Това отваря a Изход на конзолата прозорец, показващ провал – Доклад за закрепване (FAIL)

Подробните отчети показват дали анализът е Fail или Pass и предоставят няколко отчета, показващи уязвимостите, предупрежденията и други въз основа на конфигурацията. По подразбиране приставката е конфигурирана да не успее да изгради (Спри се) винаги, когато има уязвимости. По-долу са скрийншотите за докладите за политика и сигурност.

Обобщение на оценката на политиката за закрепване

По-долу е снимка на резултатите от защитата на уязвимия образ.

Списък с общи уязвимости и експозиции (CVE)

Ако сега сканираме стабилен образ, debian: последен, без уязвимости, получаваме резултатите по-долу.

Обобщение на оценката на политиката за закрепване (пас)

Общ списък на уязвимости и експозиции (CVE) 

заключение

Сканерът за изображение на контейнер Anchore Container е мощен инструмент за анализ на изображения, който идентифицира широк спектър от уязвимости и проблеми с политиката в изображенията на Докер. Той има много опции за персонализиране и може да се конфигурира как да се отговори при откриване на проблеми по време на анализа. Едно от тях е да се прекъсне изграждането, когато двигателят срещне сериозна уязвимост.

Ако търсите да изградите кариерата си в DevSecOps, проверете това Удеми курс.

ЕТИКЕТИ:

  • Отворен код

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