podsec-inotify-check-images(1)

PODSEC-INOTIFY-CHECK-IMAGES(1) General Commands Manual PODSEC-INOTIFY-CHECK-IMAGES(1)

NAME

podsec-inotify-check-images - Плугин проверяет образы на предмет их соответствия настройки политикам контейнеризации на узле

## SYNOPSIS

podsec-inotify-check-images [-v[vv]] [-a интервал] [-f интервал] -c интервал -h интервал [-m интервал] х-w интервалъ [-l интервал] [-d интервал] [-M EMail]

DESCRIPTION

Плугин проверяет образы на предмет их соответствия настройки политикам контейнеризации на узле. Проверка идет по следующим параметрам:

Параметр контроля пользователей Вес метрики
наличие в политике пользователя регистраторов не поддерживающие электронную подпись 101
наличие в кэше образов неподписанных образов 102
наличие в кэше образов вне поддерживаемых политик 103

Все веса метрик суммируются и формируется итоговая метрика.

OPTIONS

При указании флага -M Email итоговое сообщение отсылается указанному пользователю.

Уровень опасности определяется при запуске флагами:

для системных логов:


Имя уровня | Уровень | Префикс | Флаг | Рекомендуемое значение интервала
------------|---------|------------|------|------------------------
аварийный | 7 | Crash | `-a` | не указывать
фатальный | 6 | Fatal | `-f` | не указывать
критический | 5 | Critical | `-c` | 100
высокий | 4 | Heigh | `-h` | 0
средний | 3 | Middle | `-m` | не указывать
низкий | 2 | Low | `-l` | не указывать
отладочный | 1 | Debug | `-d` | не указывать
для сервера icigna:


Имя уровня | Уровень | Префикс | Флаг | Рекомендуемое значение интервала
---------------|---------|------------|------|-----------------------
критический | 2 | Critical | `-c` | 100
предупреждение | 1 | Warning | `-w` | 0

Любой параметр может отсутствовать. В этом случае он не рассматривается при просмотре соответствия полученной метрики интервалам.

Значение параметров имеют формат интервала, описанного в документации по nagios: Threshold and Ranges https://nagios-plugins.org/doc/guidelines.html#THRESHOLDFORMAT.

Общее описание:

[@]start:end

Замечания:

startend
start и : не требуется если start=0
если интервал задан в формате start: и конец не задан, то концом интервала считается бесконечность
для указания отрицательной бесконечности (-ꝏ) используйте ~
триггер срабатывает когда значение метрики ВНЕ УКАЗАННОГО ИНТЕРВАЛА (начальные и конечные точки включаются в интервал)
если интервал начинается с символа @, тогда условие инвертируется - триггер срабатывает при значении метрики В УКАЗАННОМ ИНТЕРВАЛЕ (начальные и конечные точки включаются в интервал)

Примеры возможных форматов:

Формат интервала | Описание условия срабатывания триггера
-----------------|--------------------------------------
100              | metrica < 0 || metrica > 100 (вне интервала 0-100)
100:             | metrica < 100 (вне интервала 100-ꝏ)
~:100            | metrica > 100 (вне интервала -ꝏ-100)
20-100           | metrica < 20 || metrica > 100 (вне интервала 20-100)
@20-100          | metrica >= 20 && metrica <= 100 (в интервале 20-100)

Системные логи

Для системных логов уровень опасности определяется для каждого сообщения. Интервалы уровней опасностей, заданные параметрами просматриваются в порядке от большого к меньшему. Уровень сообщения определяется по первому найденному соответствию (не забываете, что триггер срабатывает при нахождении метрики ВНЕ интервала). Если соответствие не найдено, сообщение в системный лог не выводится.

Исходя найденного уровня определяет приоритет сообщения и его тег (префикс). В системный лог командой logger посылается сообщение с указанным приоритетом и тегом:

# logger -p приоритет -t тег "тег: сообщение"

Кроме основного сообщения для icigna формируются:

список пользователей нарушителей;
укороченные сообщения для уровня детализации 1.

Логи icigna

Форматы сообщений и кодов завершения плугина описаны в Plugin Output for Nagios https://nagios-plugins.org/doc/guidelines.html#PLUGOUTPUT.

Уровень опасности для логов icigna определяется СУММАРНОЙ метрике. Суммарная метрика определяется для определения уровня сравнивается с интервалами, задаваемыми флагами

-c - Critical
-w - Warning

Если соответствие не найдено, в icigna выводится сообщение:

POLICY OK: Политики контейнеризации не нарушены

Код завершение программы (которое обрабатывается на стороне сервера icigna) - 0.

Формат логов для nagios зависит от уровня детализации, задаваемый флагом -v[vv] (см. Verbose Output https://nagios-plugins.org/doc/guidelines.html#AEN41):

Флаг        | Уровень
------------|--------
отcутствует | 0
-v          | 1
-vv         | 2
-vvv        | 3
...         | 3

Для всех уровней формируется префикс сообщение формата:

POLICY $prefix:

Где prefix в зависимости от уровня опасности принимает значения:

-c - Critical
-w - Warning

Если уровень детализации - 0, то выводится укороченное сообщение.

POLICY $prefix: Нарушение политик контейнеризации пользователей users

Где users - список пользователей у которых обнаружены нарушения.

Если уровень детализации - 1, то к сообщению с префиксом Есть пользователи: добавляется первый уровень детализации из списка укороченных сообщений сформированных при формировании системных логов.

POLICY $prefix: Нарушение политик контейнеризации пользователей $users | Есть пользователи:
укороченное сообщение
...

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

POLICY $prefix: Нарушение политик контейнеризации пользователей $users | Есть пользователи:
укороченное сообщение
...
укороченное сообщение |
полное сообщение
...

После вывода сообщений плугин завершается кодом завершения:

Critical - 2
Warning - 1

Запуск сервиса через systemd/Timers

Кроме запуска скрипта через nagios скрипт может запускаться через systemd/Timers.

В состав пакета входит systemd-файлы podsec-inotify-check-images.service, podsec-inotify-check-images.timer. Файл сервисов podsec-inotify-check-images.service описывает в параметре ExecStart строку с описанием режима запуска скрипта podsec-inotify-check-images. Скрипт запускается с флагами -vvv -c 100 - выводить подробную информацию, все сообщения имеют уровень c - критический. Если во время работы скрипта обнаружены некорректные настройки политики, они выводятся в системный лог и передаются почтой системному администратору (root).

Расписание запуска сервиса podsec-inotify-check-images.service описывается в параметре OnCalendar файла расписания podsec-inotify-check-images.timer. Сервис вызывается ежечасно.

По умолчанию таймер запуска сервиса выключен. Для его включения наберите команду:

#  systemctl enable --now podsec-inotify-check-images.timer

Если необходимо изменить режим запуска скрипта отредактируйте параметр OnCalendar файла расписания podsec-inotify-check-images.timer.

EXAMPLES

podsec-inotify-check-images -vvv -w 0 -h 0 -c 100

SECURITY CONSIDERATIONS

SEE ALSO

AUTHOR

Костарев Алексей, Базальт СПО kaf@basealt.ru

October 2024