CLI-утилита контроля целостности
Для проверки и управления целостностью файлов KOMRAD предоставляет утилиту командной строки filecheck. Утилита поддерживает группировку файлов, работу с файлами по умолчанию и вывод детальной статистики по шести категориям результатов с возможностью аудита изменений через историю immudb.
Команды
Утилита поддерживает три основные команды:
| Команда | Описание |
|---|---|
init | Инициализация новой группы файлов с расчётом эталонных хешей |
verify | Проверка целостности файлов с выводом отчёта |
save | Обновление эталонных хешей для файлов |
Параметры запуска
| Параметр | Описание | Значение по умолчанию |
|---|---|---|
--group <name> | Имя группы для проверки | default |
--immudb-addr <host:port> | Адрес сервера immudb | localhost:3322 |
--immudb-db <name> | Имя базы данных в immudb | filecheck |
--immudb-username <user> | Имя пользователя immudb | immudb |
--immudb-password <pass> | Пароль пользователя immudb | immudb |
--algo <алгоритм> | Алгоритм хеширования | sha256 |
--config <path> | Путь к конфигурационному файлу | .filecheck.yaml |
--include <category> | Фильтр категорий для команды save | all |
--dry-run | Симуляция операции без записи в immudb | --- |
--force | Пропустить интерактивное подтверждение | --- |
--verbose | Подробный вывод | --- |
--format json | Вывод результатов в формате JSON | --- |
Поддерживаемые алгоритмы хеширования
sha256sha512Стрибог-256Стрибог-512
Значения параметра --include
| Значение | Описание |
|---|---|
modified | Только изменённые файлы |
new | Только неожиданные новые файлы |
all | Все файлы из указанных путей (по умолчанию для save) |
Переменные окружения
Для передачи учётных данных immudb можно использовать переменные окружения:
IMMUDB_USERNAME--- имя пользователя;IMMUDB_PASSWORD--- пароль.
Команда init
Инициализирует новую группу файлов, сканирует указанные пути и сохраняет эталонные хеши в immudb.
filecheck init --group web /opt/web-service/
Команда verify
Выполняет проверку целостности файлов указанной группы. Процесс включает:
- Подключение к immudb с аутентификацией.
- Загрузка эталонных хешей для указанной группы.
- Рекурсивное сканирование файловой системы по заданным путям.
- Расчёт текущих хешей файлов.
- Классификация файлов по шести категориям.
Категории результатов
| Категория | Описание |
|---|---|
| Файлы без ошибок | Хеш совпадает с последней записью в immudb |
| Изменённые файлы | Хеш не совпадает с последней записью |
| Отсутствующие файлы | Есть в immudb, но отсутствуют в файловой системе |
| Неожиданные новые файлы | Есть в файловой системе, но отсутствуют в immudb |
| Ошибки доступа | Невозможно прочитать файл |
| Проверено файлов | Общее число обработанных путей |
Пример вывода
+------------------------------------------------------------+
| Отчёт проверки целостности (группа: default) |
+------------------------------------------------------------+
| Проверено файлов: 142 |
| Файлы без ошибок: 128 |
| Изменённые файлы: 5 |
| Отсутствующие файлы: 3 |
| Неожиданные новые файлы: 4 |
| Ошибки доступа: 2 |
+------------------------------------------------------------+
Код возврата: 0 --- целостность сохранена, 1 --- найдены расхождения.
При использовании флага --verbose выводится перечисление файлов в каждой категории.
При использовании флага --audit для изменённых файлов отображается история версий из immudb (временные метки и хеши).
filecheck verify --group prod --audit --verbose
Команда save
Обновляет эталонные хеши для файлов в immudb. Перед записью выполняется логика команды verify для получения текущего состояния файлов.
Логика работы
- Выполняется проверка целостности (аналогично
verify). - Файлы фильтруются по флагу
--include:--include modified--- обновить только изменённые файлы;--include new--- добавить только новые файлы в группу;--include all--- пересохранить все указанные пути (по умолчанию).
- Запрашивается интерактивное подтверждение (если не указан
--force). - Новые хеши записываются в 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.