Перейти к основному содержимому
Версия: 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.