Проверка безопасности Docker-образов с помощью Trivy

Безопасность

Безопасность контейнеров является одним из важнейших аспектов кибербезопасности. В этой статье я познакомлю вас с инструментом для проверки безопасности контейнеров Docker. Мы рассмотрим установку и использование Trivy.

Еще по теме: Сканер уязвимостей из Nmap с помощью Vulscan

Проверка безопасности Docker-образов с помощью Trivy

Aquasecurity Trivy — это сканер уязвимостей Docker-образов. Trivy умеет сканировать как образ в репозитории, так и локальный образ. Он нацелен на нахождение уязвимостей двух типов – проблемы сборок ОС (поддерживаются Alpine, RedHat (EL), CentOS, Debian GNU, Ubuntu) и проблемы в зависимостях (Gemfile.lock, Pipfile.lock, composer.lock, package-lock.json, yarn.lock, Cargo.lock).

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

Trivy может работать на разных платформах Linux, включая RHEL, CentOs, Ubuntu, Debian, Arch Linux, MacOS, Nix и т. д. Мы будем устанавливать и использовать в Ubuntu 18.04 Bionic Beaver LTS.

Установка Trivy

Есть разные способы установки Trivy на разные платформы. Чтобы установить Trivy в Ubuntu, используйте следующие команды:

После установки приступим к поиску и сканированию уязвимостей.

Использование сканера уязвимостей Trivy

Чтобы запустить поиск уязвимостей образа Docker, используйте следующую команду:

Например, мы хотим запустить поиск уязвимостей образа nginx:


И как видим, уязвимостей очень много. Теперь попробуем запустить проверку Alpine:

Мы также можем использовать Trivy для обнаружения неправильных конфигураций безопасности в IaC, Dockerfile и манифесте Kubernetes.

Обнаружение неправильных настроек безопасности

Можно запускать проверку неправильных настроек безопасности как в файловой системе, так и в репозиториях git. Попробуем запустить сканирование файловой системы. Для этого нужно клонировать этот репозиторий:

Репозиторий git содержит файл Dockerfile и файл манифеста deployment.yaml k8s.

Dockerfile выглядит следующим образом:

Обратите внимание, что мы начали с базового образа nginx и установили для пользователя значение root. Однако это не лучшая практика. Не рекомендуется использовать пользователя root для запуска контейнеров.

Файл deployment.yaml выглядит следующим образом:

В этом манифесте мы целенаправленно, в качестве эксперимента установили для привилегированного атрибута в securityContext значение true. Этого конечно делать нельзя.

А теперь, попробуем запустить сканирование и посмотреть, сможет ли найти эту критичную (в плане безопасности) настройку комфигурации:

И как видите, сканер нашел эту проблему в конфигурации.

Заключение

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

Более подробно о безопасности контейнеров Docker.

QUASAR

Этичный хакер и компьютерный ниндзя. Новые статьи в нашей Телеге!

Добавить комментарий