Запуск нескольких экземпляров коллекторов
В некоторых сценариях использования SIEM KOMRAD может потребоваться запустить несколько независимых экземпляров сервиса сбора событий на одном хосте. Это руководство подробно описывает, как правильно настроить такие экземпляры, обеспечив их полную изоляцию и стабильную работу.
Эта инструкция универсальна и применима к любому коллектору KOMRAD. Мы рассмотрим общие шаги, а затем углубимся в специфику настройки для:
komrad-syslog-collector
: для сбора событий по Syslog.komrad-http-collector
: для приёма данных по HTTP/HTTPS, например, от веб-приложений, систем мониторинга или API.
KOMRAD Enterprise SIEM позволяет осуществлять централизованный сбор событий ИБ, выявлять инциденты и оперативно на них реагировать. Гибкость настройки коллекторов является ключом к эффективному управлению потоками данных в сложных инфраструктурах.
Зачем это может понадобиться?
Запуск нескольких коллекторов на одной машине открывает широкие возможности для управления данными и безопасностью. Вот несколько распространенных сценариев:
-
Мультитенантность (Multi-tenancy): Если вы предоставляете услуги по мониторингу нескольким заказчикам (тенантам), вы можете выделить для каждого из них отдельный экземпляр коллектора. Это обеспечивает изоляцию данных, гибкую конфигурацию (уникальные TLS, порты, учётные данные) и раздельный учёт ресурсов.
-
Разделение потоков по уровню критичности: Вы можете создать один коллектор для высокоприоритетных событий, а другой — для менее важных данных с другими параметрами.
-
Гранулярное управление доступом: Присваивая разные
setup_id
для разных экземпляров, можно настроить в KOMRAD политики доступа так, чтобы, например, младшие специалисты SOC видели события только с определенных систем.
Пошаговая инструкция
Общий алгоритм идентичен для любого типа коллектора. Для примера мы создадим "двойника" для коллектора tenant2
.
Шаг 1: Создание копии сервисного файла systemd
Скопируем оригинальный сервисный файл в /etc/systemd/system/
, чтобы наши изменения не были затронуты при обновлениях
пакетов.
# Замените 'syslog' на 'http' при работе с HTTP-коллектором
sudo cp \
/lib/systemd/system/komrad-syslog-collector.service \
/etc/systemd/system/komrad-syslog-collector-tenant2.service
Шаг 2: Адаптация нового сервисного файла
Отредактируйте новый файл (...-tenant2.service
), указав уникальные пути и параметры.
[Unit]
Description=Syslog events collector for tenant2
# ...
[Service]
# ...
RuntimeDirectory=komrad-syslog-collector-tenant2
# ...
EnvironmentFile=-/etc/default/komrad-syslog-collector-tenant2
ExecStart=/usr/bin/komrad-syslog-collector -c /etc/echelon/komrad/komrad-syslog-collector-tenant2.yaml
# ...
Шаг 3: Создание изолированной конфигурации
Создадим копии файлов конфигурации и окружения.
# Замените 'syslog' на 'http' при необходимости
sudo cp \
/etc/echelon/komrad/komrad-syslog-collector.yaml \
/etc/echelon/komrad/komrad-syslog-collector-tenant2.yaml
sudo cp \
/etc/default/komrad-syslog-collector \
/etc/default/komrad-syslog-collector-tenant2
Шаг 4: Настройка конфигурационного файла
Это ключевой шаг. Откройте новый файл конфигурации (...-tenant2.yaml
) и измените параметры, которые должны быть
уникальными для каждого экземпляра.
Для komrad-syslog-collector
Необходимо указать уникальные порты (tcp-port
, udp-port
) и путь к Unix-сокету (unix.path
).
collector:
type: syslog
value:
tcp-port: 49001 # Убедитесь, что порт уникален
udp-port: 49051 # Убедитесь, что порт уникален
# ...
unix:
path: /var/lib/echelon/komrad/syslog-collector-tenant2/komrad-syslog.sock
# ...
Для komrad-http-collector
Этот коллектор может открывать две конечные точки: endpoint
и fake-elastic
. Для каждой из них необходимо задать
уникальный порт и, при необходимости, уникальные учётные данные.
collector:
type: http
value:
endpoint:
basic-auth: true
username: tenant2_user
password: VeryLongAndSecretPasswordForTenant2
listen-address: 127.0.0.1 # Более безопасно для локальных источников
listen-port: 48001 # Уникальный порт
# ...
fake-elastic:
enable: true # Если используется
username: tenant2_elastic_user
password: AnotherSecretPasswordForElastic
listen-port: 9201 # Уникальный порт
# ...
listen-address
По умолчанию listen-address
может быть установлен в 0.0.0.0
, что делает коллектор доступным со всех сетевых
интерфейсов. Если источник событий (например, Grafana) находится на той же машине, что и коллектор, настоятельно
рекомендуется изменить listen-address
на 127.0.0.1
. Это ограничит доступ к порту только локальными процессами,
значительно повышая безопасность.
Общие параметры для всех типов коллекторов
Вне зависимости от типа коллектора, обязательно укажите уникальные пути для хранения состояния (storage
) и журнала
предзаписи (wal
).
storage:
storage_path: /var/lib/komrad/syslog-collector-tenant2/storage
# ...
wal:
wal_path: /var/lib/komrad/syslog-collector-tenant2/wal
# ...
Шаг 5: Создание каталогов и настройка прав доступа
Используйте новые имена и пути из конфигурации.
# Создаем каталоги для WAL, Storage и (если нужно) Unix-сокета
sudo mkdir -p /var/lib/komrad/syslog-collector-tenant2
sudo mkdir -p /var/lib/echelon/komrad/syslog-collector-tenant2
# Устанавливаем владельца (обычно komrad:komrad)
sudo chown -R komrad:komrad \
/var/lib/komrad/syslog-collector-tenant2 \
/var/lib/echelon/komrad/syslog-collector-tenant2
# Устанавливаем права доступа
sudo chmod -R 0750 \
/var/lib/komrad/syslog-collector-tenant2 \
/var/lib/echelon/komrad/syslog-collector-tenant2
Шаг 6: Запуск и проверка нового сервиса
Все готово к запуску!
- Перезагрузите конфигурацию systemd:
sudo systemctl daemon-reload
- Включите автозапуск нового сервиса:
sudo systemctl enable komrad-syslog-collector-tenant2.service
- Запустите новый сервис:
sudo systemctl start komrad-syslog-collector-tenant2.service
- Проверьте статус обоих сервисов:
sudo systemctl status "komrad-syslog-collector*.service"
Продвинутый сценарий: Мультитенантный сбор алертов по HTTP
Рассмотрим реальный кейс. У нас есть два клиента, Alpha и Beta. У каждого из них есть своя система мониторинга (
Grafana или Prometheus AlertManager), которая отправляет алерты по HTTP. Наша задача — принять эти алерты в KOMRAD, но
так, чтобы данные были полностью изолированы. Мы создадим два экземпляра komrad-http-collector
.
1. Конфигурация для komrad-http-collector-alpha.yaml
Этот коллектор будет слушать порт 48001
и требовать аутентификацию alpha_user
.
collector:
type: http
value:
endpoint:
basic-auth: true
username: alpha_user
password: VeryLongAndSecretPasswordForAlpha
listen-address: 127.0.0.1
listen-port: 48001
# ... (уникальные storage_path: /var/lib/komrad/http-collector-alpha/storage и т.д.)
2. Конфигурация для komrad-http-collector-beta.yaml
Этот коллектор будет слушать порт 48002
и требовать аутентификацию beta_user
.
collector:
type: http
value:
endpoint:
basic-auth: true
username: beta_user
password: AnotherSecretPasswordForBetaMonitoring
listen-address: 127.0.0.1
listen-port: 48002
# ... (уникальные storage_path: /var/lib/komrad/http-collector-beta/storage и т.д.)
3. Настройка источника (например, Grafana Alerting)
В настройках Contact points
в Grafana для каждого тенанта создается свой Webhook
:
-
Для тенанта Alpha:
- URL:
http://<IP_коллектора>:48001/
- Authorization / Basic Auth:
alpha_user
/VeryLongAndSecretPasswordForAlpha
- URL:
-
Для тенанта Beta:
- URL:
http://<IP_коллектора>:48002/
- Authorization / Basic Auth:
beta_user
/AnotherSecretPasswordForBetaMonitoring
- URL:
Результат: Алерты от Grafana тенанта Alpha поступают в свой экземпляр коллектора, а от Beta — в свой. В KOMRAD эти
потоки событий будут иметь разные setup_id
, что позволяет применять разные правила корреляции, строить отдельные
дашборды и настраивать гранулярные права доступа для аналитиков.
Мониторинг и диагностика
Просмотр логов
Чтобы просматривать логи для каждого экземпляра отдельно, используйте journalctl
с указанием имени сервиса.
# Следить за логами нового сервиса в реальном времени
sudo journalctl -f -u komrad-syslog-collector-tenant2.service
Возможные проблемы и их решение
Если новый сервис не запускается, вот несколько шагов для диагностики:
- Первый шаг: Всегда проверяйте детальный лог сервиса.
sudo journalctl -xeu имя-вашего-сервиса.service
-
Проблема: Сервис не запускается, в статусе
failed
. В логах может быть ошибкаaddress already in use
.- Причина: Конфликт ресурсов. Либо порт уже занят, либо файл Unix-сокета не может быть создан.
- Решение: Убедитесь, что в файле
.yaml
указаны уникальные порты и пути. Проверьте, кто занимает порт, командойsudo netstat -tulpn
.
-
Проблема: В логах сообщения
permission denied
.- Причина: Неправильно выставлены права на каталоги.
- Решение: Повторно выполните команды
chown
иchmod
из Шага 5.
-
Проблема: В логах ошибки
file not found
илиyaml: unmarshal errors
.- Причина: Опечатка в пути к
.yaml
файлу в.service
файле, либо синтаксическая ошибка в самом.yaml
( проверьте отступы!). - Решение: Внимательно перепроверьте все пути и синтаксис конфигурации.
- Причина: Опечатка в пути к
Заключение
Поздравляем! Вы успешно настроили и запустили второй, полностью изолированный экземпляр коллектора. Этот подход можно масштабировать для любого количества экземпляров, просто повторяя шаги с уникальными именами и путями. Такая гибкость позволяет строить надежные и легко управляемые системы сбора данных на базе KOMRAD SIEM.