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

Проверка резервного копирования и восстановления

В данном разделе описаны процедуры проверки функций резервного копирования и восстановления KOMRAD Enterprise SIEM в соответствии с требованиями к средствам ГосСОПКА. Процедуры охватывают резервное копирование всех компонентов хранения данных системы: PostgreSQL, ClickHouse и очереди сообщений.

Перечень сервисов KOMRAD Enterprise SIEM

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

komrad-bus
pauth-server
komrad-server.service
komrad-server.socket
komrad-processor
komrad-scanner
komrad-reactor
komrad-correlation-dispatcher
komrad-incident-manager
komrad-syslog-collector
komrad-file-collector
komrad-snmp-collector
komrad-sql-collector
komrad-xflow-collector
komrad-http-collector
komrad-ebpf-collector
grafana
komrad-backup
komrad-waf-proxy

Проверка ФБ 21: Настройка создания и сохранения резервной копии

Шаг 1. Остановка сервисов

Остановить все сервисы KOMRAD Enterprise SIEM:

sudo systemctl stop komrad-bus pauth-server komrad-server.service \
komrad-server.socket komrad-processor komrad-scanner komrad-reactor \
komrad-correlation-dispatcher komrad-incident-manager \
komrad-syslog-collector komrad-file-collector komrad-snmp-collector \
komrad-sql-collector komrad-xflow-collector komrad-http-collector \
komrad-ebpf-collector grafana komrad-backup komrad-waf-proxy

Ожидаемый результат: сервисы успешно остановлены.

Шаг 2. Проверка статусов сервисов

Убедиться, что все сервисы остановлены:

sudo systemctl status komrad-bus pauth-server komrad-server.service \
komrad-server.socket komrad-processor komrad-scanner komrad-reactor \
komrad-correlation-dispatcher komrad-incident-manager \
komrad-syslog-collector komrad-file-collector komrad-snmp-collector \
komrad-sql-collector komrad-xflow-collector komrad-http-collector \
komrad-ebpf-collector grafana komrad-backup komrad-waf-proxy

Ожидаемый результат: статус всех сервисов -- Active: inactive (dead).

Шаг 3. Сброс ошибочных статусов

При наличии у каких-либо сервисов ошибочных статусов сбросить их:

sudo systemctl reset-failed komrad-bus pauth-server komrad-server.service \
komrad-server.socket komrad-processor komrad-scanner komrad-reactor \
komrad-correlation-dispatcher komrad-incident-manager \
komrad-syslog-collector komrad-file-collector komrad-snmp-collector \
komrad-sql-collector komrad-xflow-collector komrad-http-collector \
komrad-ebpf-collector grafana komrad-backup komrad-waf-proxy

Ожидаемый результат: ошибочные статусы сервисов сброшены.

Шаг 4. Создание резервных копий PostgreSQL

Создать резервные копии всех баз данных PostgreSQL:

pg_dump -U postgres -h 127.0.0.1 -p 5432 -F c -b -v \
-f komrad-preferences.dump komrad-preferences

pg_dump -U postgres -h 127.0.0.1 -p 5432 -F c -b -v \
-f pauth-preferences.dump pauth-preferences

pg_dump -U postgres -h 127.0.0.1 -p 5432 -F c -b -v \
-f scanner.dump scanner

pg_dump -U postgres -h 127.0.0.1 -p 5432 -F c -b -v \
-f komrad-grafana.dump komrad-grafana

Ожидаемый результат: команды завершены без ошибок, файлы дампов созданы.

Шаг 5. Создание резервных копий ClickHouse

Создать резервные копии данных ClickHouse:

clickhouse-client -u komrad --password <пароль> \
--query="SELECT * FROM komrad_events.events" \
--format=TabSeparated > komrad_events.tsv

clickhouse-client -u komrad --password <пароль> \
--query="SELECT * FROM komrad_events.logs_v2" \
--format=TabSeparated > komrad_events_logs.tsv

Ожидаемый результат: команды завершены без ошибок, файлы экспорта созданы.

Шаг 6. Проверка наличия резервных копий

Убедиться в наличии всех созданных файлов:

ls -la *.dump *.tsv

Ожидаемый результат: в выводе отображаются все созданные резервные копии с ненулевым размером.

Шаг 7. Создание архива очереди сообщений

Создать архив очереди сообщений JetStream:

cd /var/lib/echelon/komrad/komrad-bus/
tar -cvf jetstream.tar .jetstream/

Ожидаемый результат: архив jetstream.tar успешно создан.

Шаг 8. Проверка наличия архива

Убедиться в наличии созданного архива:

ls -la /var/lib/echelon/komrad/komrad-bus/jetstream.tar

Ожидаемый результат: файл jetstream.tar присутствует и имеет ненулевой размер.

Проверка ФБ 22: Восстановление из резервной копии

Шаг 1. Очистка баз данных PostgreSQL

Удалить и пересоздать базы данных PostgreSQL:

psql -U postgres -h 127.0.0.1 -p 5432 \
-c 'DROP DATABASE "komrad-preferences";' \
-c 'CREATE DATABASE "komrad-preferences";'

psql -U postgres -h 127.0.0.1 -p 5432 \
-c 'DROP DATABASE "pauth-preferences";' \
-c 'CREATE DATABASE "pauth-preferences";'

psql -U postgres -h 127.0.0.1 -p 5432 \
-c 'DROP DATABASE "scanner";' \
-c 'CREATE DATABASE "scanner";'

psql -U postgres -h 127.0.0.1 -p 5432 \
-c 'DROP DATABASE "komrad-grafana";' \
-c 'CREATE DATABASE "komrad-grafana";'

Ожидаемый результат: базы данных очищены и пересозданы.

Шаг 2. Восстановление PostgreSQL из резервных копий

Выполнить восстановление данных из дампов:

pg_restore -U postgres -h 127.0.0.1 -p 5432 \
-d komrad-preferences -v komrad-preferences.dump

pg_restore -U postgres -h 127.0.0.1 -p 5432 \
-d pauth-preferences -v pauth-preferences.dump

pg_restore -U postgres -h 127.0.0.1 -p 5432 \
-d scanner -v scanner.dump

pg_restore -U postgres -h 127.0.0.1 -p 5432 \
-d komrad-grafana -v komrad-grafana.dump

Ожидаемый результат: восстановление завершено без ошибок.

Шаг 3. Восстановление ClickHouse из резервных копий

Выполнить импорт данных в ClickHouse:

clickhouse-client -u komrad --password <пароль> \
--query="INSERT INTO komrad_events.events FORMAT TabSeparated" \
< komrad_events.tsv

clickhouse-client -u komrad --password <пароль> \
--query="INSERT INTO komrad_events.logs_v2 FORMAT TabSeparated" \
< komrad_events_logs.tsv

Ожидаемый результат: восстановление данных ClickHouse завершено без ошибок.

Шаг 4. Восстановление очереди сообщений

Восстановить очередь сообщений JetStream из архива:

cp jetstream.tar /var/lib/echelon/komrad/komrad-bus/
cd /var/lib/echelon/komrad/komrad-bus/
mv .jetstream .jetstream_origin
tar -xvf jetstream.tar

Ожидаемый результат: восстановление очереди сообщений завершено.

Шаг 5. Удаление старой очереди сообщений

Удалить исходную очередь событий:

rm -rf /var/lib/echelon/komrad/komrad-bus/.jetstream_origin

Ожидаемый результат: исходная очередь событий удалена.

Шаг 6. Перезапуск сервисов

Перезапустить все сервисы KOMRAD Enterprise SIEM:

sudo systemctl restart komrad-bus pauth-server komrad-server.service \
komrad-server.socket komrad-processor komrad-scanner komrad-reactor \
komrad-correlation-dispatcher komrad-incident-manager \
komrad-syslog-collector komrad-file-collector komrad-snmp-collector \
komrad-sql-collector komrad-xflow-collector komrad-http-collector \
komrad-ebpf-collector grafana komrad-waf-proxy

Ожидаемый результат: сервисы успешно перезапущены, все сервисы в состоянии Active: active (running).

Шаг 7. Проверка восстановления данных

Авторизоваться в веб-интерфейсе KOMRAD Enterprise SIEM, перейти на страницу «Поиск по событиям» и убедиться в наличии записей событий.

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

Автоматизация резервного копирования

Для автоматизации процесса резервного копирования рекомендуется настроить системный планировщик cron.

Требования к автоматизированному резервному копированию

  1. Автоматизация -- скрипты резервного копирования запускаются автоматически по расписанию через cron
  2. Полнота данных -- резервные копии включают все необходимые схемы и данные для PostgreSQL и ClickHouse
  3. Ротация -- реализована логика очистки старых копий (хранение за последние N дней) для предотвращения переполнения дискового пространства
  4. Логирование -- результат выполнения каждой итерации записывается в системный журнал или отдельный файл
  5. Безопасность -- пароли к базам данных не хранятся в открытом виде в crontab; используются файлы конфигурации с ограниченными правами доступа (например, .pgpass)
  6. Уведомления -- при необходимости система отправляет оповещение в случае сбоя при создании резервной копии

Рекомендации по настройке

  • Скрипты должны иметь флаг исполнения (chmod +x)
  • В crontab должны быть прописаны абсолютные пути к скриптам и бинарникам
  • Перед настройкой автоматического копирования необходимо проверить наличие достаточного свободного места на диске
  • Права на чтение файлов резервных копий должны быть ограничены (только для пользователя-владельца)
  • Хранение агрегированных событий ИБ должно обеспечиваться не менее 6 месяцев в соответствии с требованиями к средствам ГосСОПКА