Сканеры Kubernetes для поиска уязвимостей и неправильной конфигурации кластеров

Thank you for reading this post, don't forget to subscribe!

 

Kube Bench – это один из каче­ствен­ных инстру­мен­тов без­опас­но­сти с откры­тым исход­ным кодом, кото­рый про­ве­ря­ет, соот­вет­ству­ют ли ваши дей­плой­мен­ты тестам без­опас­но­сти CIS (Center for Internet Security).

Инстру­мент так­же под­дер­жи­ва­ет тесты про­из­во­ди­тель­но­сти для несколь­ких вер­сий Kubernetes.

Кро­ме того, он так­же ука­зы­ва­ет на ошиб­ки и помо­га­ет их исправить.

Это хоро­шее реше­ние для исправ­ле­ния ошибок.

Этот инстру­мент так­же про­ве­ря­ет пра­виль­ность авто­ри­за­ции и аутен­ти­фи­ка­ции поль­зо­ва­те­ля, а так­же надеж­ность шиф­ро­ва­ния данных.

Особенности Kube Bench:

  • Напи­сан на Go
  • Тести­ру­ет мастер и вор­кер ноды Kubernetes
  • Досту­пен как контейнер
  • Тесты опре­де­ле­ны в YAML, их лег­че рас­ши­рять и обновлять.
  • Под­дер­жи­ва­ет вывод в фор­ма­те JSON

 

Checkov – это инстру­мент без­опас­но­сти, исполь­зу­е­мый для предот­вра­ще­ния непра­виль­ной кон­фи­гу­ра­ции обла­ка во вре­мя сбор­ки для Kubernetes, Terraform, Cloudformation, Serverless framework и дру­гих типов инфра­струк­ту­ры как кода.

Он напи­сан на Python и направ­лен на повы­ше­ние уров­ня без­опас­но­сти и соот­вет­ствия пере­до­вым практикам.

Вы може­те запус­кать ска­ни­ро­ва­ние Checkov, что­бы ана­ли­зи­ро­вать инфра­струк­ту­ру как код.

Особенности Checkov:

  • OpenSource и прост в использовании
  • Более 500 встро­ен­ных поли­тик безопасности
  • Реко­мен­да­ции по соблю­де­нию нор­ма­тив­ных тре­бо­ва­ний для AWS, Azure и Google Cloud
  • Под­дер­жи­ва­ет несколь­ко фор­ма­тов выво­да – CLI, JUnit XMLJSON
  • Инте­гри­ру­ет обра­зы в ваш ci / cd
  • Запус­ка­ет ска­ни­ро­ва­ние пап­ки, содер­жа­щей фай­лы Terraform и Cloudformation.

 

Tufin пред­ла­га­ет раз­лич­ные скрип­ты, из кото­рых нам интерессны:

  • kubernetes-vulnerabilities
  • test-network-policies

kubernetes-vulnerabilities

Содер­жит инфор­ма­цию о Kubernetes:

  • Уяз­ви­мо­сти
  • Пла­ги­ны Admission controller 

Уязвимости

Каж­дый файл в пап­ках (vanilla, gke, eks и т. д.) содер­жит извест­ные уяз­ви­мо­сти k8s.

В каж­дом фай­ле есть спи­сок CVE. В каж­дом CVE долж­но быть одно из сле­ду­ю­щих полей:

  • FixedIn: номе­ра пат­чей, кото­рые исправ­ля­ют каж­дую уяз­ви­мую млад­шую вер­сию (пред­по­ла­га­ет­ся, что более высо­кие вер­сии исправлены)
  • ExistsIn: спи­сок уяз­ви­мых вер­сий (диа­па­зо­ны или версии)

FirstVulnerableVersion – пер­вая вер­сия, в кото­рой обна­ру­же­на эта уязвимость.

Плагины Admission controller 

Этот файл содер­жит спи­сок пла­ги­нов адми­шен Kubernetes.

У каж­до­го пла­ги­на может быть реко­мен­да­ция (вклю­чить / отклю­чить) для каж­дой плат­фор­мы Kubernetes.

 

MKIT рас­шиф­ро­вы­ва­ет­ся как Managed Kubernetes Inspection Tool.

Этот инстру­мент помо­га­ет быст­ро опре­де­лить клю­че­вые рис­ки без­опас­но­сти кла­сте­ров Kubernetes и их ресурсов.

У него есть быст­рые и про­стые спо­со­бы оцен­ки непра­виль­ной кон­фи­гу­ра­ции в кла­сте­ре и инстансов.

Инстру­мент постав­ля­ет­ся с интер­фей­сом, кото­рый по умол­ча­нию рабо­та­ет на http://localhost: 8000.

Он дает вам пред­став­ле­ние о неудач­ных и прой­ден­ных про­вер­ках. В раз­де­ле затро­ну­тых ресур­сов вы полу­чи­те подроб­ную инфор­ма­цию о затро­ну­тых и неза­тро­ну­тых ресурсах.

Особенности MKIT:

  • Создан с исполь­зо­ва­ни­ем всех биб­лио­тек и инстру­мен­тов с откры­тым исход­ным кодом
  • Про­сто­та уста­нов­ки и использования
  • Под­дер­жи­ва­ет несколь­ко про­вай­де­ров Kubernetes – AKS, EKS и GKE.
  • Хра­нит кон­фи­ден­ци­аль­ные дан­ные внут­ри контейнера
  • Предо­став­ля­ет веб-интерфейс

 

Возможности Kube Scan:

  • Инстру­мент для оцен­ки рис­ков с откры­тым исход­ным кодом
  • Веб-интер­фейс с  подроб­но­стя­ми оцен­ки рисков
  • Он рабо­та­ет как кон­тей­нер в кластере.
  • Повтор­но ска­ни­ру­ет кла­стер каж­дые 24 часа

 

Kubeaudit, как сле­ду­ет из назва­ния, пред­став­ля­ет собой инстру­мент ауди­та кла­сте­ров Kubernetes с откры­тым исход­ным кодом.

Он нахо­дит непра­виль­ные кон­фи­гу­ра­ции без­опас­но­сти в ресур­сах Kubernetes и сооб­ща­ет вам, как их исправить.

Он напи­сан на язы­ке Go для исполь­зо­ва­ния в каче­стве паке­та Go или инстру­мен­та команд­ной строки.

Вы може­те уста­но­вить его на свой ком­пью­тер, исполь­зуя brew с помо­щью одной команды.

Он пред­ла­га­ет раз­лич­ные мето­ды, такие как запуск при­ло­же­ний от име­ни поль­зо­ва­те­ля без пол­но­мо­чий root, предо­став­ле­ние досту­па толь­ко для чте­ния к кор­не­вой фай­ло­вой систе­ме, избе­га­ние предо­став­ле­ния допол­ни­тель­ных при­ви­ле­гий при­ло­же­ни­ям в кла­сте­ре для предот­вра­ще­ния общих про­блем безопасности.

В нем есть обшир­ный спи­сок ауди­тов, исполь­зу­е­мых для тести­ро­ва­ния про­блем без­опас­но­сти кла­сте­ра Kubernetes, таких как SecurityContext для подов.

Возможности Kubeaudit:

  • Инстру­мент ауди­та Kubernetes с откры­тым исход­ным кодом
  • Предо­став­ля­ет три раз­лич­ных режи­ма – manifest, local, cluster, для ауди­та кластера.
  • Предо­став­ля­ет резуль­тат ауди­та на трех уров­нях севе­ри­ти – Error, Warn, Info.
  • Исполь­зу­ет несколь­ко встро­ен­ных ауди­тов для  кон­тей­не­ров, подов,  неймспесов

 

Kubesec – это инстру­мент ана­ли­за рис­ков без­опас­но­сти с откры­тым исход­ным кодом ресур­сов Kubernetes.
Он про­ве­ря­ет кон­фи­гу­ра­цию и фай­лы мани­фе­стов, исполь­зу­е­мые для раз­вер­ты­ва­ния и опе­ра­ций кла­сте­ра Kubernetes.
Вы може­те уста­но­вить его в сво­ей систе­ме, исполь­зуя его образ кон­тей­не­ра, его бинар­ник, адми­шен пла­гин Kubernetes или пла­гин kubectl.
  • Инстру­мент ана­ли­за рис­ков с откры­тым исход­ным кодом
  • Он постав­ля­ет­ся со встро­ен­ным HTTP-сер­ве­ром, кото­рый по умол­ча­нию рабо­та­ет в фоно­вом режи­ме на 8080.
  • Запус­ка­ет­ся Kubesec-as-a-Service через HTTPS на v2.kubesec.io/scan
  • Он может ска­ни­ро­вать несколь­ко доку­мен­тов YAML в одном вход­ном файле.

 

======================================================================================================

Clair – это про­ект с откры­тым исход­ным кодом, кото­рый пред­ла­га­ет ска­ни­ро­ва­ние уяз­ви­мо­стей кон­тей­не­ров Docker и при­ло­же­ний (appc).

Это меха­низм ана­ли­за, управ­ля­е­мый API, кото­рый слой за сло­ем про­ве­ря­ет нали­чие недо­стат­ков без­опас­но­сти в контейнерах.

Вы може­те созда­вать сер­ви­сы с помо­щью Clair, кото­рые могут непре­рыв­но отсле­жи­вать ваши кон­тей­не­ры на пред­мет любых уязвимостей.

Так­же он уве­дом­ля­ет о потен­ци­аль­ной угро­зе в контейнере.

А имен­но, он уве­дом­ля­ет вас о потен­ци­аль­ной угро­зе в кон­тей­не­ре на осно­ве базы дан­ных Common Vulnerabilities and Exposures (CVE) и ана­ло­гич­ных баз данных.

Если выяв­ля­ет­ся какая-либо угро­за или про­бле­ма, кото­рая уже есть в Наци­о­наль­ной базе дан­ных уяз­ви­мо­стей (NVD), инстру­мент извле­ка­ет подроб­но­сти и предо­став­ля­ет их в отчете.

Особенности Clair:

  • Ска­ни­ру­ет суще­ству­ю­щие уяз­ви­мо­сти и предот­вра­ща­ет их появ­ле­ние в будущем.
  • Предо­став­ля­ет REST API для инте­гра­ции с дру­ги­ми инструментами
  • Отправ­ля­ет уве­дом­ле­ние при обна­ру­же­нии любой уязвимости
  • Предо­став­ля­ет отчет в фор­ма­те HTML со все­ми дета­ля­ми сканирования
  • Регу­ляр­но обнов­ля­ет метаданные

 

Trivy – это про­стой и ком­плекс­ный ска­нер уяз­ви­мо­стей для кон­тей­не­ров и дру­гих артефактов.

Он помо­га­ет обна­ру­жи­вать уяз­ви­мо­сти паке­тов опе­ра­ци­он­ной систе­мы (Alpine, RHEL, CentOS и т. д.) и зави­си­мо­сти при­ло­же­ний (Bundler, Composer, npm, yarn и т. д.).

Перед отправ­кой в ​​редже­стри кон­тей­не­ров или раз­вер­ты­ва­ни­ем при­ло­же­ния вы може­те лег­ко про­ска­ни­ро­вать свой локаль­ный образ кон­тей­не­ра и дру­гие арте­фак­ты, что даст вам уве­рен­ность в том, что с вашим при­ло­же­ни­ем все в порядке.

Особенности Trivy

  • Обна­ру­же­ние ком­плекс­ных уязвимостей
  • Про­сто­та – ука­жи­те толь­ко имя обра­за или имя артефакта.
  • Быст­ро­та – пер­вое ска­ни­ро­ва­ние завер­шит­ся в тече­ние 10 секунд (в зави­си­мо­сти от вашей сети). После­ду­ю­щее ска­ни­ро­ва­ние завер­шит­ся за счи­тан­ные секунды
  • DevSecOps – под­хо­дит для CI, таких как Travis CI, CircleCI, Jenkins, GitLab CI и т. д.
  • Под­держ­ка несколь­ких фор­ма­тов – в том чис­ле: образ кон­тей­не­ра, локаль­ная фай­ло­вая систе­ма, уда­лен­ный репо­зи­то­рий git.
  • Про­стая уста­нов­ка – воз­мож­на уста­нов­ка apt-get, yum install и brew без пред­ва­ри­тель­ных усло­вий, таких как уста­нов­ка БД, биб­лио­тек и т. д.

 

Anchore – это про­ект с откры­тым исход­ным кодом для глу­бо­ко­го ана­ли­за обра­зов Docker.

Он так­же удо­сто­ве­ря­ет образ, сооб­щая, защи­щен он или нет.

Anchore может рабо­тать как на отдель­ной плат­фор­ме, так и на плат­фор­мах оркест­ров­ки, таких как Kubernetes, Rancher, Amazon ECS, Docker Swarm.

Anchore так­же досту­пен в пла­ги­нах Jenkins для ска­ни­ро­ва­ния пай­плай­нов CI/CD.

Вам необ­хо­ди­мо отпра­вить образ в anchore, кото­рый про­ана­ли­зи­ру­ет и предо­ста­вит вам подроб­ную инфор­ма­цию, если в нем есть какие-либо уязвимости.

Вы так­же може­те исполь­зо­вать свою соб­ствен­ную поли­ти­ку без­опас­но­сти для оцен­ки образов.

 

Dagda – это инстру­мент с откры­тым исход­ным кодом для ста­ти­че­ско­го ана­ли­за извест­ных уяз­ви­мо­стей, таких как тро­я­ны, вре­до­нос­ное ПО, виру­сы и т. д., в обра­зах и контейнерах.

Он исполь­зу­ет анти­ви­рус­ный дви­жок ClamAV для обна­ру­же­ния таких уязвимостей.

Сна­ча­ла он импор­ти­ру­ет все извест­ные уяз­ви­мо­сти из CVE, Red Hat Security Advisories (RHSA), Red Hat Bug Advisories (RHBA), иден­ти­фи­ка­то­ров Bugtraq (BID), базы дан­ных без­опас­но­сти Offensive в MongoDB.

Затем в соот­вет­ствии с импор­ти­ро­ван­ны­ми уяз­ви­мо­стя­ми ана­ли­зи­ру­ют­ся обра­зы и контейнеры.

Особенности Dagda:

  • Под­дер­жи­ва­ет несколь­ко обра­зов Linux (CentOS, Ubuntu, OpenSUSE, Alpine и т. д.)
  • Ана­ли­зи­ру­ет зави­си­мо­сти от java, python node js, javascript, ruby, PHP
  • Инте­гри­ру­ет­ся с Falco для мони­то­рин­га рабо­та­ю­щих контейнеров
  • Сохра­ня­ет каж­дый отчет ана­ли­за в MongoDB для веде­ния исто­рии каж­до­го обра­за доке­ра или контейнера.

 

Falco – это про­ект с откры­тым исход­ным кодом как меха­низм обна­ру­же­ния угроз в Kubernetes.

Это инстру­мент без­опас­но­сти во вре­мя выпол­не­ния для обна­ру­же­ния ано­маль­ной актив­но­сти на хостах и кон­тей­не­рах, рабо­та­ю­щих в Kubernetes.

Он обна­ру­жи­ва­ет любое неожи­дан­ное пове­де­ние в вашем при­ло­же­нии и пре­ду­пре­жда­ет вас об угро­зах во вре­мя выполнения.

Он исполь­зу­ет син­так­сис, подоб­ный tcpdump, для созда­ния пра­вил и исполь­зу­ет биб­лио­те­ки, такие как libscap и libinsp, кото­рые могут вхо­дить и извле­кать дан­ные с ваше­го сер­ве­ра API Kubernetes или сре­ды выпол­не­ния контейнера.

После это­го вы може­те исполь­зо­вать эти мета­дан­ные, что­бы полу­чить инфор­ма­цию о подах, мет­ках и про­стран­ствах имен, что­бы фак­ти­че­ски создать пра­ви­ла, спе­ци­фич­ные для кон­крет­но­го про­стран­ства имен или опре­де­лен­но­го обра­за контейнера.

Пра­ви­ла фоку­си­ру­ют­ся на систем­ных вызо­вах и на том, какие систем­ные вызо­вы раз­ре­ше­ны и запре­ще­ны в системе.

 

Aqua Security защи­ща­ет при­ло­же­ния, создан­ные с исполь­зо­ва­ни­ем облач­ных тех­но­ло­гий, таких как контейнеры.

Он обес­пе­чи­ва­ет ска­ни­ро­ва­ние уяз­ви­мо­стей и управ­ле­ние для таких оркест­ра­то­ров, как Kubernetes.

Это ком­плекс­ная плат­фор­ма без­опас­но­сти, обес­пе­чи­ва­ю­щая без­опас­ность при­ло­же­ний, рабо­та­ю­щих в кон­тей­не­рах, и их выпол­не­ние в без­опас­ной среде.

Когда раз­ра­бот­чи­ки созда­ют обра­зы, у них есть набор тех­но­ло­гий и биб­лио­тек для их создания.

Aqua security поз­во­ля­ет им ска­ни­ро­вать эти обра­за, что­бы убе­дить­ся, что они “чистые”, в них нет извест­ных уяз­ви­мо­стей, в них нет откры­тых паро­лей или сек­ре­тов, а так­же нет угроз без­опас­но­сти, кото­рые мог­ли бы сде­лать этот образ уязвимым.

Если обна­ру­же­на какая-либо уяз­ви­мость, aqua security сооб­ща­ет о них раз­ра­бот­чи­ку и реко­мен­ду­ет, что им нуж­но сде­лать, что­бы испра­вить эти уяз­ви­мые образы.

Aqua Security так­же име­ет тех­но­ло­гии, гаран­ти­ру­ю­щие, что образ не под­верг­нет­ся ата­ке или про­ник­но­ве­нию с какой-либо угро­зой без­опас­но­сти, когда кон­тей­нер запу­щен в продакшен.

 

Docker Bench Security – это скрипт с несколь­ки­ми авто­ма­ти­че­ски­ми теста­ми для про­вер­ки луч­ших прак­тик раз­вер­ты­ва­ния кон­тей­не­ров в про­из­вод­ствен­ной среде.

Что­бы запу­стить систе­му без­опас­но­сти Docker Bench, вам пона­до­бит­ся Docker 1.13.0 или новее.

Вам необ­хо­ди­мо выпол­нить при­ве­ден­ную ниже коман­ду, что­бы запу­стить систе­му без­опас­но­сти Docker Bench.

После это­го скрипт запу­стит­ся, и он поде­лит­ся дета­ля­ми по севе­ре­ти INFO, WARNPASS.
После запус­ка скрип­та вы може­те про­ве­рить все пре­ду­пре­жда­ю­щие сооб­ще­ния и вне­сти исправления.