Контроль целостности

Контроль целостности (КЦ) представляет собой механизм, предназначенный для обнаружения и предотвращения несанкционированных изменений или повреждений файлов, способных нарушить безопасность и работоспособность системы 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).

Проверка работоспособности службы КЦ

После добавления объектов контроля рекомендуется убедиться в работоспособности службы КЦ. Для этого необходимо выполнить следующие действия:

  1. Перейти в учётную запись суперпользователя:

admin@ngfwos:~$ sudo -i
root@ngfwos:~#
  1. Проверить статус службы КЦ:

root@ngfwos:~# systemctl status iwarma-endpoint

В случае, если служба остановлена (статус «inactive» или «failed»), требуется её ручной запуск:

root@ngfwos:~# systemctl start iwarma-endpoint

После запуска необходимо повторно проверить статус службы КЦ. Пример корректного вывода при активном состоянии (см. Рисунок – Статус службы КЦ).

../../../../../_images/ngfw.r.cli.system_management.integrity-control_1.1.png

Рисунок – Статус службы КЦ

Удаление объекта из списка КЦ

Удаление объекта из списка КЦ выполняется командой:

delete system integrity-control list notify path <path/to/file>

где <path/to/file> – абсолютный путь к файлу или каталогу, подлежащему исключению из мониторинга КЦ.

Примечание

Система содержит предопределённый список объектов КЦ по умолчанию (см. Таблица «Список контролируемых объектов по умолчанию»). При обновлении программного обеспечения записи, входящие в этот исходный список, автоматически восстанавливаются в первоначальное состояние, даже если пользователь вносил в них изменения. Пользовательские объекты, добавленные дополнительно, сохраняются без изменений.

Регистрация событий КЦ

Верификация целостности объектов осуществляется путём сравнения текущего хэш-значения с эталонным, хранящимся в базе данных механизма КЦ.

В случае обнаружения несоответствия текущего хэш-значения объекта наблюдения эталонному значению в процессе функционирования системы ARMA Стена, система выведет предупреждающее сообщение и выполнит предусмотренные действия в отношении данного объекта: переход в аварийный режим (см. Рисунок – Переход в аварийный режим при нарушении КЦ) или вывод уведомления о нарушении целостности (см. Рисунок – Предупреждение о нарушении КЦ).

../../../../../_images/ngfw.r.cli.system_management.integrity-control_2.1.png

Рисунок – Переход в аварийный режим при нарушении КЦ

../../../../../_images/ngfw.r.cli.system_management.integrity-control_2.2.png

Рисунок – Предупреждение о нарушении КЦ

Если при загрузке системы контролируемый объект с установленным для него действием «emergency» не проходит проверку на целостность, то после завершения загрузки система переходит в аварийный режим (см. Рисунок – Аварийный режим. Не удалось выполнить проверку КЦ).

../../../../../_images/ngfw.r.cli.system_management.integrity-control_2.4.png

Рисунок – Аварийный режим. Не удалось выполнить проверку КЦ

Для идентификации объекта, не прошедшего проверку КЦ, необходимо в эксплуатационном режиме ввести команду:

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> – абсолютный путь к файлу или каталогу, подлежащему проверке.

Пересчёт эталонных значений КЦ

Пересчёт эталонных хэш-значений КЦ может выполняться автоматически или вручную.

  1. Автоматический пересчёт.

Осуществляется после выполнения команд: «commit», «save», «load», «rollback».

Примечание

В аварийном режиме автоматический пересчёт не производится для команд «commit», «save» и «load».

  1. Ручной пересчёт.

Для пересчёта эталонных значений КЦ необходимо ввести команду:

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»:

  1. Получить права суперпользователя:

    admin@ngfwos:~$ sudo -i
    
  2. Включить службу в автозагрузку:

    root@ngfwos:~# systemctl enable iwarma-endpoint
    
  3. Запустить службу вручную:

    root@ngfwos:~# systemctl start iwarma-endpoint
    
  4. Проверить текущий статус службы:

    root@ngfwos:~# systemctl status iwarma-endpoint
    
  5. Если после выполнения указанных действий служба не переходит в активное состояние, требуется анализ системных журналов и, при необходимости, обращение в техническую поддержку.