Проверка резервного копирования и восстановления
В данном разделе описаны процедуры проверки функций резервного копирования и восстановления 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.
Требования к автоматизированному резервному копированию
- Автоматизация -- скрипты резервного копирования запускаются автоматически по расписанию через
cron - Полнота данных -- резервные копии включают все необходимые схемы и данные для PostgreSQL и ClickHouse
- Ротация -- реализована логика очистки старых копий (хранение за последние N дней) для предотвращения переполнения дискового пространства
- Логирование -- результат выполнения каждой итерации записывается в системный журнал или отдельный файл
- Безопасность -- пароли к базам данных не хранятся в открытом виде в crontab; используются файлы конфигурации с ограниченными правами доступа (например,
.pgpass) - Уведомления -- при необходимости система отправляет оповещение в случае сбоя при создании резервной копии
Рекомендации по настройке
- Скрипты должны иметь флаг исполнения (
chmod +x) - В crontab должны быть прописаны абсолютные пути к скриптам и бинарникам
- Перед настройкой автоматического копирования необходимо проверить наличие достаточного свободного места на диске
- Права на чтение файлов резервных копий должны быть ограничены (только для пользователя-владельца)
- Хранение агрегированных событий ИБ должно обеспечиваться не менее 6 месяцев в соответствии с требованиями к средствам ГосСОПКА