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

Контроль целостности (КЦ) представляет собой механизм, предназначенный для обнаружения и предотвращения несанкционированных изменений или повреждений файлов, способных нарушить безопасность и работоспособность системы ARMA Стена.

Автоматическая проверка КЦ выполняется в следующие моменты:

  • при загрузке системы;

  • ежечасно в момент времени хх:00:00;

  • при выполнении команд: commit, save, reboot, poweroff.

Если требуется изменить время автоматической проверки КЦ — например, чтобы она выполнялась не в 00 минут каждого часа, а в другую минуту в пределах часа, — допускается указать желаемую минуту с помощью следующей команды в конфигурационном режиме:

set system integrity-control period <0-59>

где <0-59> - целочисленное значение минуты в пределах часа, в которую планируется запускать проверку. Возможно указать значение в диапазоне от «0» до «59». По умолчанию проверка контроля целостности запускается в 0-ю минуту каждого часа (например, 09:00, 10:00, 11:00 и т.д.).

Пример:

Команда set system integrity-control period 10 устанавливает время запуска автоматической проверки КЦ на ХХ:10 (например, 09:10, 10:10, 11: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 — максимально подробное трассировочное журналирование.

Примечание

Изменение уровня логирования вступает в силу только после перезапуска службы контроля целостности, что возможно исключительно после перезагрузки всего устройства.

При задании уровня логирования записываются только события строго указанного уровня, без включения событий более высоких (более приоритетных) уровней.

Примечание

Команды конфигурирования службы КЦ (set system integrity-control) и команда ручного пересчёта эталонных значений (integrity-control update) по умолчанию доступны только встроенной учётной записи «admin».

Список контролируемых объектов КЦ

Для отображения списка объектов, подлежащих контролю целостности, используется команда:

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

/boot/initrd.img

notify

/boot/initrd.img-6.6.54-amd64-ngfwos

notify

/boot/vmlinuz

notify

/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/emerg-files.txt

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

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

root@ngfwos:~# systemctl status iwarma-endpoint
● iwarma-endpoint.service - Infowatch ARMA EndPoint Linux
     Loaded: loaded (/lib/systemd/system/iwarma-endpoint.service; enabled; preset: enabled)
     Active: active (running) since Mon 2026-01-12 08:36:38 UTC; 2s ago
   Main PID: 513168 (endpointd)
      Tasks: 5 (limit: 13981)
     Memory: 4.4M
        CPU: 3.403s
     CGroup: /system.slice/iwarma-endpoint.service
             └─513168 /usr/sbin/endpointd

Jan 12 08:36:35 ngfwos endpointd[513168]: /home/admin/.ssh/authorized_keys
Jan 12 08:36:37 ngfwos endpointd[513168]: /usr/bin/
Jan 12 08:36:37 ngfwos endpointd[513168]: /usr/lib/live/mount/persistence/boot/grub/grub.cfg.d/ngfwos-versions/4.8.0-1-g0a90>
Jan 12 08:36:38 ngfwos endpointd[513168]: /usr/sbin/
Jan 12 08:36:38 ngfwos endpointd[513168]: /usr/share/pam-configs/ngfwos_auth
Jan 12 08:36:38 ngfwos endpointd[513168]: /config/config.boot
Jan 12 08:36:38 ngfwos endpointd[513168]: /opt/ngfwos/etc/config.boot.default
Jan 12 08:36:38 ngfwos endpointd[513168]: /opt/ngfwos/etc/config.boot.ssh_dhcp
Jan 12 08:36:38 ngfwos endpointd[513168]: /opt/ngfwos/etc/config.boot.ssh_dhcp_static_ips
Jan 12 08:36:38 ngfwos systemd[1]: Started iwarma-endpoint.service - Infowatch ARMA EndPoint Linux.
lines 1-20/20 (END)

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

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

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

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

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

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

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

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

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

admin@ngfwos:~$ integrity-control run all

Пример вывода:

admin@ngfwos:~$ integrity-control run all

Violation checking integrity of file(s):
/usr/bin/apt

Данный вывод указывает на нарушение целостности файла /usr/bin/apt.

Для проверки целостности конкретного объекта, входящего в список контролируемых, в эксплуатационном режиме используется команда:

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

  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. Если после выполнения указанных действий служба не переходит в активное состояние, требуется анализ системных журналов и, при необходимости, обращение в техническую поддержку.