podsec-inotify-check-images(1)
| PODSEC-INOTIFY-CHECK-POLICY(1) | PODSEC-INOTIFY-CHECK-POLICY(1) |
NAME
podsec-inotify-check-policy - Плугин проверяет образы на предмет их соответствия настройки политикам контейнеризации на узле
SYNOPSIS
podsec-inotify-check-images [-v[vv]] [-a интервал] [-f интервал] -c интервал -h интервал [-m интервал] х-w интервалъ [-l интервал] [-d интервал]
DESCRIPTION
Плугин проверяет образы на предмет их соответствия настройки политикам контейнеризации на узле. Проверка идет по следующим параметрам:
Все веса метрик суммируются и формируется итоговая метрика.
OPTIONS
Уровень опасности определяется при запуске флагами:
- для системных логов:
-
Имя уровня | Уровень | Префикс | Флаг | Рекомендуемое значение интервала
------------|---------|------------|------|------------------------
аварийный | 7 | Crash | `-a` | не указывать
фатальный | 6 | Fatal | `-f` | не указывать
критический | 5 | Critical | `-c` | 100
высокий | 4 | Heigh | `-h` | 0
средний | 3 | Middle | `-m` | не указывать
низкий | 2 | Low | `-l` | не указывать
отладочный | 1 | Debug | `-d` | не указывать
- для сервера nagios:
-
Имя уровня | Уровень | Префикс | Флаг | Рекомендуемое значение интервала
---------------|---------|------------|------|-----------------------
критический | 2 | Critical | `-c` | 100
предупреждение | 1 | Warning | `-w` | 0
Любой параметр может отсутствовать. В этом случае он не рассматривается при просмотре соответствия полученной метрики интервалам.
Значение параметров имеют формат интервала, описанного в документации по nagios: Threshold and Ranges https://nagios-plugins.org/doc/guidelines.html#THRESHOLDFORMAT.
Общее описание:
[@]start:end
Замечания:
- start ≤ end
- 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 тег "тег: сообщение"
Кроме основного сообщения для nagios формируются:
- список пользователей нарушителей;
- укороченные сообщения для уровня детализации 1.
Логи nagios
Форматы сообщений и кодов завершения плугина описаны в Plugin Output for Nagios https://nagios-plugins.org/doc/guidelines.html#PLUGOUTPUT.
Уровень опасности для логов nagios определяется СУММАРНОЙ метрике. Суммарная метрика определяется для определения уровня сравнивается с интервалами, задаваемыми флагами
- -c - Critical
- -w - Warning
Если соответствие не найдено, в nagios выводится сообщение:
-
POLICY OK: Политики контейнеризации не нарушены
Код завершение программы (которое обрабатывается на стороне сервера nagios) - 0.
Формат логов для nagios зависит от уровня детализации, задаваемый флагом -v[vv] (см. Verbose Output https://nagios-plugins.org/doc/guidelines.html#AEN41):
-
Флаг | Уровень ------------|-------- отcутствует | 0 -v | 1 -vv | 2 -vvv | 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
- •
- создайте в /etc/nagios/commands/ конфигурационный файл nagios-plugins-podsec.cfg для всех podsec планинов
-
define command{
command_name podsec-inotify-check-policy
command_line $USER1$/check_by_ssh -H $HOSTADDRESS$ -l root -C ´/usr/lib/nagios/plugins/podsec-inotify-check-policy -vvv -w $ARG1$ -l $ARG1$ -c $ARG2$ ´
}
В command_name надо указать имя плагина которое будет использоваться в секции define service файла конфигурации в каталоге /etc/nagios/objects. В command_line не забудьте если в этом есть необходимость указать флаг -l root для запуска скрипта под пользователем root на удаленной машине. Если для плагина достаточно прав обыкновенного пользователя nagios, флаг -l не нужен.
Переменныe $ARG1, $ARG2, ... берутся из командной строки описания сервиса в каталоге /etc/nagios/objects.
-
define service {
use generic-service
host_name <host>
service_description Check containers policy
check_command podsec-inotify-check-policy!0!100
}
В строке service_description укахите иям сервиска которое будет отображаться в WEB-интерейсе nagios. В check_command имя команды, из вышеописанного файла nagios-plugins-podsec.cfg каталога /etc/nagios/commands/. Параметры использумые в команде указываются через символ |.
Запуск сервиса через 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
| November 2023 |
