Интеграция с SIEM-системами

Compass может передавать события безопасности в SIEM-систему через Kafka. Поддерживаются события входа пользователя, достижения лимита попыток входа, смены пароля и завершения сессии. Это позволяет централизованно анализировать активность пользователей и отслеживать подозрительные действия.

После включения интеграции Compass будет отправлять события безопасности в Kafka-брокер, запущенный на сервере Compass. Подключение к Kafka и настройка приема событий выполняются на стороне SIEM-системы или SIEM-коннектора.

Включение отправки событий на сервере Compass

Для активации механизма отправки событий в Kafka:

  1. Откройте файл configs/siem.yaml любым текстовым редактором.

  2. Укажите параметры подключения:

    # Включена ли интеграция с SIEM.
    # При значении kafka приложение отправляет события в Kafka, и стек интеграции
    # поднимается. При none отправка не производится, стек интеграции
    # останавливается.
    #
    # Тип данных: строка, kafka\none
    siem.enabled_driver: "kafka"
    
    # Порт, на котором Kafka принимает внешние подключения SIEM.
    #
    # Тип данных: число
    # Пример: siem.driver_data.listen_port: 9094
    siem.driver_data.listen_port: 9094
    
    # Имя пользователя Kafka, под которым SIEM подключается для чтения событий.
    # Пользователю выдаётся доступ только на чтение топика raw.events.
    #
    # Тип данных: строка
    # Пример: siem.driver_data.user: "siem"
    siem.driver_data.user: "siem"
    
    # Пароль пользователя из siem.driver_data.user.
    # Внимание: файл siem.yaml содержит секрет — ограничьте права доступа к файлу.
    # В пароле не используйте символы "," и "]", а также символ "!" в начале.
    #
    # Тип данных: строка
    siem.driver_data.password: "<пароль>"
    
    # Срок хранения событий в часах.
    # Тип данных: число
    siem.driver_data.storage_time: 72
    
    # Идентификатор consumer-группы Kafka, под которой SIEM-коннектор читает
    # топик raw.events. По этому имени update-скрипт выдаёт пользователю
    # siem.driver_data.user право READ на consumer-группу — без него брокер запретит
    # чтение (allow.everyone.if.no.acl.found=false). Значение должно совпадать
    # с group.id, настроенным на стороне SIEM-коннектора.
    #
    # Тип данных: строка
    siem.driver_data.consumer_group_id: "siem"
    
  3. Сохраните файл и выполните обновление серверной части:

    python3 script/update.py
    

После обновления на сервере Compass будет запущен Kafka-брокер, создан пользователь Kafka с указанным именем и паролем, а также создан топик raw.events. Compass начнет отправлять в этот топик события безопасности.

Параметр siem.driver_data.listen_port определяет порт, на котором Kafka-брокер будет доступен на сервере Compass. Убедитесь, что этот порт открыт на сервере Compass и доступен для подключения с сервера SIEM-системы или SIEM-коннектора.

Подключение к OpenSearch

Данный раздел показывает, как настроить прием событий в OpenSearch с использованием Data Prepper. Это лишь один из возможных способов подключения — вы можете использовать любую SIEM-систему, поддерживающую чтение из Kafka.

Настройка Data Prepper

Data Prepper читает события из Kafka и отправляет их в OpenSearch.

  1. Внесите описание пайплайна в файл pipelines.yaml вашего экземпляра Data Prepper:

    В поле certificate укажите содержимое корневого сертификата Compass - файла compassRootCA.crt из каталога certs в директории установщика.

    version: "2"
    
    raw-events-pipeline:
      source:
        kafka:
          bootstrap_servers:
            - "<адрес_вашего_сервера>:<порт_из_siem.driver_data.listen_port>"
          encryption:
            type: ssl
            insecure: false
            certificate: |
              -----BEGIN CERTIFICATE-----
              <содержимое файла сертификата CA>
              -----END CERTIFICATE-----
          authentication:
            sasl:
              scram:
                username: "<пользователь_из_siem.driver_data.user>"
                password: "<пароль_из_siem.driver_data.password>"
                mechanism: "SCRAM-SHA-256"
          topics:
            - name: "raw.events"
              group_id: "<идентификатор_из_siem.driver_data.consumer_group_id>"
              auto_offset_reset: earliest
              serde_format: json
    
      processor:
        - date:
            match:
              - key: event_timestamp
                patterns: ["epoch_second"]
            destination: "@timestamp"
    
      sink:
        - opensearch:
            hosts: ["https://<адрес_opensearch>:9200"]
            auth:
              username: "<пользователь_opensearch>"
              password: "<пароль_opensearch>"
            index: "raw-events-%{yyyy.MM.dd}"
            insecure: true
    
  2. Запустите Data Prepper, указав ему созданный файл pipelines.yaml.

    Инструкции по установке и запуску Data Prepper описаны в его официальной документации.

Формат события

Все события отправляются в топик raw.events в формате JSON:

{
  "event_id": "6da9aefd-7403-4d35-9311-b4b25749e359",
  "event_type": "user.session.invalidation",
  "event_timestamp": 1778824670,
  "source_type": "app",
  "source_id": "pivot",
  "data": {
    "user_id": 16004,
    "device_id": "048e0bb8-301d-44a7-b02a-6da0b8359b51",
    "ip_address": "1.2.3.4",
    "device_name": "Ipad"
  }
}

Напишите нам в пространстве поддержки On-premise, Telegram или на почту support@getcompass.ru, чтобы получить индивидуальную демонстрацию функционала и помощь по вопросам интеграции мессенджера в вашей компании.