Перейти к основному содержимому
Версия: 4.6.X

CLI-утилита контроля целостности

Для проверки и управления целостностью файлов KOMRAD предоставляет утилиту командной строки filecheck. Утилита поддерживает группировку файлов, работу с файлами по умолчанию и вывод детальной статистики по шести категориям результатов с возможностью аудита изменений через историю immudb.

Команды

Утилита поддерживает три основные команды:

КомандаОписание
initИнициализация новой группы файлов с расчётом эталонных хешей
verifyПроверка целостности файлов с выводом отчёта
saveОбновление эталонных хешей для файлов

Параметры запуска

ПараметрОписаниеЗначение по умолчанию
--group <name>Имя группы для проверкиdefault
--immudb-addr <host:port>Адрес сервера immudblocalhost:3322
--immudb-db <name>Имя базы данных в immudbfilecheck
--immudb-username <user>Имя пользователя immudbimmudb
--immudb-password <pass>Пароль пользователя immudbimmudb
--algo <алгоритм>Алгоритм хешированияsha256
--config <path>Путь к конфигурационному файлу.filecheck.yaml
--include <category>Фильтр категорий для команды saveall
--dry-runСимуляция операции без записи в immudb---
--forceПропустить интерактивное подтверждение---
--verboseПодробный вывод---
--format jsonВывод результатов в формате JSON---

Поддерживаемые алгоритмы хеширования

  • sha256
  • sha512
  • Стрибог-256
  • Стрибог-512

Значения параметра --include

ЗначениеОписание
modifiedТолько изменённые файлы
newТолько неожиданные новые файлы
allВсе файлы из указанных путей (по умолчанию для save)

Переменные окружения

Для передачи учётных данных immudb можно использовать переменные окружения:

  • IMMUDB_USERNAME --- имя пользователя;
  • IMMUDB_PASSWORD --- пароль.

Команда init

Инициализирует новую группу файлов, сканирует указанные пути и сохраняет эталонные хеши в immudb.

filecheck init --group web /opt/web-service/

Команда verify

Выполняет проверку целостности файлов указанной группы. Процесс включает:

  1. Подключение к immudb с аутентификацией.
  2. Загрузка эталонных хешей для указанной группы.
  3. Рекурсивное сканирование файловой системы по заданным путям.
  4. Расчёт текущих хешей файлов.
  5. Классификация файлов по шести категориям.

Категории результатов

КатегорияОписание
Файлы без ошибокХеш совпадает с последней записью в immudb
Изменённые файлыХеш не совпадает с последней записью
Отсутствующие файлыЕсть в immudb, но отсутствуют в файловой системе
Неожиданные новые файлыЕсть в файловой системе, но отсутствуют в immudb
Ошибки доступаНевозможно прочитать файл
Проверено файловОбщее число обработанных путей

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

+------------------------------------------------------------+
| Отчёт проверки целостности (группа: default) |
+------------------------------------------------------------+
| Проверено файлов: 142 |
| Файлы без ошибок: 128 |
| Изменённые файлы: 5 |
| Отсутствующие файлы: 3 |
| Неожиданные новые файлы: 4 |
| Ошибки доступа: 2 |
+------------------------------------------------------------+

Код возврата: 0 --- целостность сохранена, 1 --- найдены расхождения.

При использовании флага --verbose выводится перечисление файлов в каждой категории.

При использовании флага --audit для изменённых файлов отображается история версий из immudb (временные метки и хеши).

filecheck verify --group prod --audit --verbose

Команда save

Обновляет эталонные хеши для файлов в immudb. Перед записью выполняется логика команды verify для получения текущего состояния файлов.

Логика работы

  1. Выполняется проверка целостности (аналогично verify).
  2. Файлы фильтруются по флагу --include:
    • --include modified --- обновить только изменённые файлы;
    • --include new --- добавить только новые файлы в группу;
    • --include all --- пересохранить все указанные пути (по умолчанию).
  3. Запрашивается интерактивное подтверждение (если не указан --force).
  4. Новые хеши записываются в immudb с метаданными операции.

Пример: обновление после развёртывания

filecheck save --group prod --include modified --force

Пример: симуляция обновления

filecheck save --group prod --include modified --dry-run

Схема хранения в immudb

Данные хранятся в формате ключ-значение с составным ключом:

Ключ:   "group:{group_name}:file:{filepath}"
Значение: "{hash}"

Метаданные каждой записи:

ТегОписание
algoАлгоритм хеширования (например, sha256)
filepathПуть к файлу
groupИмя группы
operationТип операции (verify, save, init)
timestampВременная метка операции
userПользователь и хост ($USER@$HOSTNAME)

Все операции save создают новые версии записей --- предыдущие хеши остаются в истории immudb для аудита.

Сценарии использования

СценарийКомандаРезультат
Ежедневная проверка целостностиfilecheck verify --group prod --format jsonПри изменениях --- ненулевой код возврата для триггера оповещения
Подтверждение легитимных изменений после развёртыванияfilecheck save --group app --include modified --forceХеши обновлены, предыдущие версии сохранены в истории
Аудит изменений критичного файлаfilecheck verify --group critical --auditОтображена история изменений: временные метки и хеши
Добавление нового сервиса в мониторингfilecheck init --group new-service /opt/new-service/Создана новая группа с хешами всех файлов
Полное обновление группыfilecheck save --group web --include all --forceВсе хеши пересохранены

Управление через integrity-cli

Для управления сервером контроля целостности на уровне сервисов и групп записей используется утилита integrity-cli:

/opt/echelon/integrity/integrity-cli

Добавление группы записей

/opt/echelon/integrity/integrity-cli add group \
--name "backend-rules-groups" \
--path-patterns '["/var/opt/echelon/ids-backend/repositories/**"]' \
--service-id 44c1a3ff-9fbb-541f-a10d-e9e854ce1753

Просмотр групп записей

/opt/echelon/integrity/integrity-cli find group

Сброс контрольных сумм группы

/opt/echelon/integrity/integrity-cli reset group --id <ID>

Где <ID> --- идентификатор группы записей, полученный командой find group.