Утилита openscap-podman#
Сервис openscap-podman - это служба сканирования образов контейнеров на наличие уязвимостей с помощью OpenSCAP (инструментарий Security Content Automation Protocol) и Podman. Представляет собой юнит systemd, который может быть установлен в систему из одноименного пакета RPM.
ID просканированных образов контейнеров с временными метками последнего сканирования хранятся в /var/lib/openscap-podman/images-ts.log.
Конфигурационный файл сервиса - /etc/openscap-podman/engine.conf (подробнее см. в «Файл /etc/openscap-podman/engine.conf»). Особое внимание следует уделять следующим полям данного файла:
oval_path- задает абсолютный путь к файлу OVAL (Open Vulnerability and Assessment Language - формат файлов, используемых для сканирования системы), из которого будут браться тесты для проверки образов контейнеров. Путь по умолчанию соответствует пути, в который распаковывается файл OVAL из пакетаsberlinux-oval.oscap_podman_bin- путь до файла скриптаpodman-scanner, который непосредственно монтирует файловую систему образа и проверяет его на соответствие OVAL. Данныйbash-скрипт также может быть вызван отдельно - подробнее см. в Примерах использования ниже.check_interval- интервал в минутах для совершения вызоваpodman images(подробнее см. в «Утилита podman images»), которая выводит список существующих контейнеров для пользователя с административными полномочиями (например,root) и позволяет сравнить временные метки сimages-ts.log. При этом после последнего сканирования должно пройти большее количество дней, чем указано в полеtime_diff. Образы сканируются и происходит обновлениеimages-ts.log.
Запись событий в журнал аудита происходит при выявлении любой уязвимости, с типом UNKNOWN и индексом 2150. При этом в поле сообщения msg включена информация:
severity- уровень уязвимости, например,Критический,Высокий,Среднийи т.д.;vul_type- наименование/тип уязвимости;cve- идентификационный номер уязвимости из базы данных CVE (Common Vulnerabilities and Exposures) для данного срабатывания;cwe- идентификационный номер дефекта CWE (Common Weakness Enumeration);description- описание уязвимости;os_name- название ОС, например,SberLinux; подтягивается из тега с системной информацией вxml-отчетеoscapпосле сканирования, унаследованного из файла, содержащего информацию о версии ОС, например,/etc/sberlinux-release;os_release- релиз ОС, например,9.3 (Shkhara); источник информации аналогиченos_name;architecture- архитектура, для контейнеров в SberLinux OS -x86_64, в иных случаях - по аналогии сos_name;primary_host_name- ID образа контейнера.
Пример записи в аудит:
type=UNKNOWN[2150] msg=audit(1706520298.888:179116): pid=2441251 uid=0 auid=4294967295 ses=4294967295 subj=system_u:system_r:unconfined_service_t:s0 msq='severity="Средний" vul_type="Уязвимость реализации протоколов ТLS и SSH утилиты командной строки cURL, позволяющая нарушителю получить несанкционированный доступ к защищаемой информации" cve="CVE-2022-27782" cwe="CWE-287" description="Уязвимость реализации протоколов TLS и SSH утилиты командной строки cURL связана с недостатками процедуры аутентификации при использовании ранее созданного соединения в пуле соединений. Эксплуатация уязвимости может позволить нарушителю, действующему удаленно, получить несанкционированный доступ к защищаемой информации" os_name="SberLinux" os_version="9.0 (Shkhara)" architecture="x86_64" primary_host_name="25d4db7cd88e23e61d2aadadf6cf6864b054083abfb16ffd72fbe530dd385305" exe="usr/bin/python3.9" hostname=localhost.localdomain addr=localhost terminal=? res=success' UID="root" AUID="unset"
Примеры использования#
Для установки
openscap-podmanвведите команду:dnf install openscap-podmanПодробнее про
dnfсм. в «Утилита dnf».Для запуска
openscap-podmanвведите команду:systemctl start openscap-podman.serviceПодробнее про
systemctlсм. в «Утилита systemctl».Для запуска сканирования образа контейнера вручную используйте команду:
podman-scanner [--oscap=<OSCAP_BINARY>] IMAGE_NAME OSCAP_ARGUMENT [OSCAP_ARGUMENT...]Где:
podman-scanner- исполняемый файл/usr/sbin/podman-scannerсо скриптом для проверки образа;--oscap=<OSCAP_BINARY>- указание пути к исполняемому файлу OSCAP (OpenSCAP), который используется для анализа образов контейнеров;IMAGE_NAME- имя образа контейнера;OSCAP_ARGUMENT...- прочие аргументы, которые необходимо передать для настройки сканирования.По умолчанию в выводе будет содержаться код:
0- сканирование не выявило уязвимостей указанного типа;50- в образе обнаружились уязвимости Критического или Высокого уровня;другое числовое значение - во время исполнения произошла другая ошибка.