Контроль целостности
Контроль целостности (КЦ) представляет собой механизм, предназначенный для обнаружения и предотвращения несанкционированных изменений или повреждений файлов, способных нарушить безопасность и работоспособность системы ARMA Стена.
Команды конфигурирования службы КЦ («set system integrity-control») и команда ручного пересчёта эталонных значений («integrity-control update») по умолчанию доступны только встроенной учётной записи «admin».
Автоматическая проверка КЦ выполняется в следующие моменты:
при загрузке системы;
ежечасно в момент времени ЧЧ:00:00.
Для изменения времени запуска автоматической проверки КЦ необходимо ввести следующую команду в конфигурационном режиме:
set system integrity-control period <minute>где <minute> – целочисленное значение минуты в пределах часа, в которую планируется запускать проверку. Допускается указать значение в диапазоне от «0» до «59». По умолчанию проверка КЦ запускается в 0-ю минуту каждого часа (например, «08:00», «09:00», «10:00» и т.д.).
Пример:
Команда «set system integrity-control period 10» устанавливает время запуска автоматической проверки КЦ на ЧЧ:10 (например, «08:10», «09:10», «10:10» и т.д.).
Ручной запуск проверки целостности осуществляется командой:
admin@ngfwos:~$ integrity-control run <path/to/file | all>где:
<path/to/file> – абсолютный путь к конкретному контролируемому файлу. При нажатии клавиши «Tab» система предоставляет автодополнение со списком всех объектов, находящихся под контролем КЦ;
<all> – инициирует проверку целостности всех контролируемых объектов.
При успешном завершении проверки система выводит сообщение: «Integrity is ok».
Все события, связанные с функционированием механизма контроля целостности, включая действия администратора, регистрируются в глобальном журнале. Для просмотра этих событий применяется фильтр «arma-endpoint»:
admin@ngfwos:~$ show logging arma-endpoint
Настройка уровня логирования событий КЦ выполняется в конфигурационном режиме командой:
set system integrity-control log level <level>где <level> – уровень детализации журналирования событий КЦ. Доступны следующие значения:
«fatal» – фатальные ошибки;
«error» – ошибки;
«warning» – предупреждения;
«info» – информационные сообщения (уровень по умолчанию);
«debug» – отладочная информация;
«trace» – максимально подробное трассировочное журналирование.
При задании уровня логирования записываются только события строго указанного уровня, без включения событий уровней повышенного приоритета.
Система ARMA Стена может выводить следующие сообщения, касаемые работы КЦ:
«Could not communicate with integrity control service iwarma-endpoint. Please check if it is running» – «Не удалось связаться с сервисом КЦ. Проверьте статус сервиса». Отображается шрифтом жёлтого цвета.
«The endpoint service’s integrity control module is disabled» – «Модуль КЦ отключён». Отображается шрифтом жёлтого цвета.
«Integrity control no paths for checking» – «Отсутствуют пути для проверки». Отображается шрифтом серого цвета.
«Error: integrity control failed!» – «Ошибка: отказ сервиса КЦ». Отображается шрифтом красного цвета.
«Your system might be compromised!» – «Система может быть скомпрометирована». Отображается шрифтом красного цвета.
«Check logs for details» – «Проверьте логи». Отображается шрифтом красного цвета.
Список контролируемых объектов КЦ
Для отображения списка объектов, подлежащих контролю целостности, используется команда:
admin@ngfwos:~$ show system integrity-control [notify|emergency|json]Дополнительные параметры позволяют фильтровать вывод:
«notify» – отображает объекты, при нарушении целостности которых система генерирует уведомление;
«emergency» – отображает объекты, при нарушении целостности которых система переходит в аварийный режим;
«json» – отображает полный список объектов в формате JSON.
Список объектов, контролируемых по умолчанию, приведён в таблице «Список контролируемых объектов по умолчанию»).
Действие |
Объект |
|---|---|
emergency |
/config/config.boot |
emergency |
/opt/ngfwos/etc/config.boot.default |
emergency |
/opt/ngfwos/etc/config.boot.ssh_dhcp |
emergency |
/opt/ngfwos/etc/config.boot.ssh_dhcp_static_ips |
notify |
/usr/lib/live/mount/persistence/boot/[имя_образа]/initrd.img |
notify |
/usr/lib/live/mount/persistence/boot/[имя_образа]/initrd.img-6.6.54-amd64-ngfwos |
notify |
/usr/lib/live/mount/persistence/boot/[имя_образа]/vmlinuz |
notify |
/usr/lib/live/mount/persistence/boot/[имя_образа]/vmlinuz-6.6.54-amd64-ngfwos |
notify |
/etc/containers/containers.conf |
notify |
/etc/containers/registries.conf |
notify |
/etc/containers/storage.conf |
notify |
/etc/cron.d/integrity_check |
notify |
/etc/curlrc |
notify |
/etc/hosts |
notify |
/etc/iwarma-endpoint/general-config.yaml |
notify |
/etc/iwarma-endpoint/integrity-control-config.yaml |
notify |
/etc/logrotate.d/ngfwos-rsyslog |
notify |
/etc/modprobe.d/vyatta_nf_conntrack.conf |
notify |
/etc/motd |
notify |
/etc/nginx/sites-enabled/default |
notify |
/etc/nginx/sites-enabled/ngfw-web.conf |
notify |
/etc/nsswitch.conf |
notify |
/etc/resolv.conf |
notify |
/etc/rsyslog.d/00-ngfwos.conf |
notify |
/etc/ssh/ssh_config.d/91-ngfwos-ssh-client-options.conf |
notify |
/etc/systemd/journald.conf |
notify |
/etc/udev/rules.d/40-usb-autosuspend.rules |
notify |
/home/admin/.ssh/authorized_keys |
notify |
/usr/bin/ |
notify |
/usr/bin/все файлы каталога |
notify |
/usr/lib/live/mount/persistence/boot/grub/grub.cfg.d/ngfwos-versions/[имя_образа].cfg |
notify |
/usr/sbin/ |
notify |
/usr/sbin/все файлы каталога |
notify |
/usr/share/pam-configs/ngfwos_auth |
Добавление объекта в список КЦ
Добавление объекта в список КЦ осуществляется с использованием конфигурационных команд в зависимости от требуемого действия при нарушении целостности:
Для действия «уведомление» (notify):
set system integrity-control list notify path <path/to/file>Для действия «аварийный режим» (emergency):
set system integrity-control list emergency path <path/to/file>где <path/to/file> – абсолютный путь к файлу или каталогу, который требуется включить в мониторинг КЦ.
Предупреждение
При добавлении объектов в список КЦ в условиях высокой загрузки центрального процессора возможно нештатное завершение работы службы КЦ (iwarma-endpoint).
Проверка работоспособности службы КЦ
После добавления объектов контроля рекомендуется убедиться в работоспособности службы КЦ. Для этого необходимо выполнить следующие действия:
Перейти в учётную запись суперпользователя:
admin@ngfwos:~$ sudo -i root@ngfwos:~#
Проверить статус службы КЦ:
root@ngfwos:~# systemctl status iwarma-endpointВ случае, если служба остановлена (статус «inactive» или «failed»), требуется её ручной запуск:
root@ngfwos:~# systemctl start iwarma-endpoint
После запуска необходимо повторно проверить статус службы КЦ. Пример корректного вывода при активном состоянии (см. Рисунок – Статус службы КЦ).
Рисунок – Статус службы КЦ
Удаление объекта из списка КЦ
Удаление объекта из списка КЦ выполняется командой:
delete system integrity-control list notify path <path/to/file>где <path/to/file> – абсолютный путь к файлу или каталогу, подлежащему исключению из мониторинга КЦ.
Примечание
Система содержит предопределённый список объектов КЦ по умолчанию (см. Таблица «Список контролируемых объектов по умолчанию»). При обновлении программного обеспечения записи, входящие в этот исходный список, автоматически восстанавливаются в первоначальное состояние, даже если пользователь вносил в них изменения. Пользовательские объекты, добавленные дополнительно, сохраняются без изменений.
Регистрация событий КЦ
Верификация целостности объектов осуществляется путём сравнения текущего хэш-значения с эталонным, хранящимся в базе данных механизма КЦ.
В случае обнаружения несоответствия текущего хэш-значения объекта наблюдения эталонному значению в процессе функционирования системы ARMA Стена, система выведет предупреждающее сообщение и выполнит предусмотренные действия в отношении данного объекта: переход в аварийный режим (см. Рисунок – Переход в аварийный режим при нарушении КЦ) или вывод уведомления о нарушении целостности (см. Рисунок – Предупреждение о нарушении КЦ).
Рисунок – Переход в аварийный режим при нарушении КЦ
Рисунок – Предупреждение о нарушении КЦ
Если при загрузке системы контролируемый объект с установленным для него действием «emergency» не проходит проверку на целостность, то после завершения загрузки система переходит в аварийный режим (см. Рисунок – Аварийный режим. Не удалось выполнить проверку КЦ).
Рисунок – Аварийный режим. Не удалось выполнить проверку КЦ
Для идентификации объекта, не прошедшего проверку КЦ, необходимо в эксплуатационном режиме ввести команду:
admin@ngfwos:~$ integrity-control run all
В результате будет выведена информация о выполненной проверке:
«Ok paths» – пути с неизменённым эталоном;
«Violation paths» – пути с изменённым эталоном;
«No etalons» – пути, находящиеся под КЦ, но для которых не рассчитан эталон;
«Non-existent paths» – несуществующие пути;
«Scan error paths» – пути, которые не удалось прочитать в файловой системе или в БД.
Пример вывода:
admin@ngfwos:~$ integrity-control run all Violation paths: /usr/bin/ Non-existent paths: /etc/curlrc Checking results Ok paths: 24 Violation paths: 1 No etalons: 0 Non-existent paths: 1 Scan error paths: 0Данный вывод указывает на нарушение целостности объекта «/usr/bin».
Для проверки целостности конкретного объекта, входящего в список контролируемых, необходимо в эксплуатационном режиме ввести команду:
admin@ngfwos:~$ integrity-control run <path/to/file>где <path/to/file> – абсолютный путь к файлу или каталогу, подлежащему проверке.
Пересчёт эталонных значений КЦ
Пересчёт эталонных хэш-значений КЦ может выполняться автоматически или вручную.
Автоматический пересчёт.
Осуществляется после выполнения команд: «commit», «save», «load», «rollback».
Примечание
В аварийном режиме автоматический пересчёт не производится для команд «commit», «save» и «load».
Ручной пересчёт.
Для пересчёта эталонных значений КЦ необходимо ввести команду:
admin@ngfwos:~$ integrity-control update <path/to/file | all>где:
<path/to/file> – путь к объекту, для которого требуется обновить эталонное значение;
<all> – обновление эталонных значений для всех контролируемых объектов.
Диагностика и восстановление службы контроля целостности при загрузке
В случае невозможности запуска службы КЦ при загрузке системы ARMA Стена выводится одно из следующих предупреждающих сообщений в зависимости от состояния сервиса в systemd:
Если systemd отметил сервис как failed:
Warning: failed to start integrity control service!
Если systemd отметил сервис как dead (неактивен):
Warning: integrity control service is not running!
Сценарий 1: Сервис в состоянии failed
В этом случае рекомендуется выполнить следующие действия:
Проверить журнал событий КЦ с помощью команды:
admin@ngfwos:~$ show logging arma-endpoint
Если журнал не содержит диагностической информации, установить максимальный уровень детализации:
set system integrity-control log level trace commit save
Перезагрузить систему – reboot.
После перезагрузки повторно проверить журнал событий.
На основании полученных данных либо устранить причину сбоя самостоятельно, либо обратиться в техническую поддержку ООО «ИнфоВотч АРМА».
Сценарий 2: Сервис в состоянии dead
Для восстановления работоспособности службы необходимо выполнить следующие действия под встроенной учётной записью «admin»:
Получить права суперпользователя:
admin@ngfwos:~$ sudo -iВключить службу в автозагрузку:
root@ngfwos:~# systemctl enable iwarma-endpointЗапустить службу вручную:
root@ngfwos:~# systemctl start iwarma-endpointПроверить текущий статус службы:
root@ngfwos:~# systemctl status iwarma-endpointЕсли после выполнения указанных действий служба не переходит в активное состояние, требуется анализ системных журналов и, при необходимости, обращение в техническую поддержку.