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

Настройка отправки уведомлений по SMTP

Для обеспечения возможности отправки уведомлений об инцидентах по электронной почте в конфигурационном файле komrad-server.yaml задайте параметры отправителя и подключения к почтовому серверу в блоке директив.

примечание

При очереди писем, в случае повторной отправке, они не должны пытаться отправляться чаще раза в минуту по каждому адресату

  1. В терминале машины, на которой установлен KOMRAD, введите:

    nano /etc/echelon/komrad/komrad-server.yaml
  2. В блоке notification заполните поля следующим образом:

        smtp:
    - name: SMTP Service
    client:
    host: smtp.yandex.ru (1)
    idletimeout: 30s
    password: пароль от вашей почты (2)
    port: 465 (3)
    username: ваша почта (4)

    start_tls: no_start_tls (5)

    disable: false

    system-pool: true

    (1) IP-адрес или имя почтового сервера

    (2) Пароль пользователя

    (3) Порт почтового сервера

    (4) Пользователь почтового сервера

    (5) Настройка StartTLS

  3. Перезапустите komrad-server:

    sudo systemctl restart komrad-server
  4. Перейдите во вкладку "manage" ⇒ "Уведомления", в левом верхнем углу нажмите "Добавить":

    • Название: укажите название
    • Транспорт: SMTP Service
    • Получатель: введите свою почту
    • Включите чекбокс "Использовать собственный шаблон сообщения"
    • Выбор директивы: выберите необходимую директиву
    • В поле "Шаблон темы сообщения" ввести: По {{ directive }} зарегистрирован инцидент
    • В поле "Шаблон сообщения" ввести:
    Внимание!

    В {{ incident.InitialTime | date: "%H:%M %d-%m-%Y" }}
    сработала директива {{ directive }}
    на активе {% for ip in incident.Assets %} {{ ip | IPToString}} {% endfor %}, установленном в {{ incident.TenantID }}.

    Степень важности инцидента - {{ incident.Severity | ru }}
    Тип инцидента – {{ incident.GosSOPKAIncidentType }}

    Ответственным за инцидент назначен - {{ incident.AssignedTo }}
    По данному инциденту необходимо выполнить следующие рекомендации:
    {{ incident.Recommendations }}

    Справочно:
    Номер инцидента: {{ incident.ID }}
    Номер директивы: {{ incident.DirectiveID }}
    События, благодаря которым был сгенерирован инцидент:
    ====
    {% if incident.EventKeys != null %}
    {% for key in incident.EventKeys %}
    {{ key }}{% endfor %}
    {% else %}Событий не найдено, возможно ошибка в директиве корреляции.
    {% endif %}
    ====
  5. Нажмите "Сохранить"

В состав сообщения можно включать предустановленные поля с информацией инцидента при помощи встроенного языка запросов.

Уведомления по e-mail с помощью встроенного шаблона

Начиная с версии KOMRAD 4.3 для уведомлений по e-mail был добавлен шаблон письма для сообщений об инцидентах.

Больше не требуется его прописывать вручную, однако, вы всё равно можете это сделать, если вас не устраивает уже готовый шаблон письма. Для этого нажмите галочку в квадрате рядом с полем "Использовать собственный шаблон сообщения".

Ниже приведён скриншот с примером использования уже готового шаблона сообщения об инциденте.

Шаблон сообщения

Язык запросов

Язык запросов разделён на объекты и теги.

Объекты

Объекты сообщают, где показывать информацию из полей в тексте сообщении.

Имена объектов и переменных обозначаются двойными фигурными скобками: {{ Предустановленное поле }}

Пример: Тип инцидента: {{ GosSOPKAIncidentType }} В этом случае в тексте сообщения содержимое объекта с именем GosSOPKAIncidentType, будет содержать текст о типе инцидента:

Тип инцидента: Компрометация учётной записи

Теги

Теги создают логику и поток управления для вывода информации. Фигурные скобки, разделители процентов

{% теги и текст %} который они окружают, не производят видимого вывода при выводе сообщений. Это позволяет вам назначать переменные и создавать условия или циклы, не отображая на странице какую-либо логику.

Теги разделяются на несколько типов:

  • Логические операторы (if, unless, elsif/else, case/when)
  • Циклы (for, else, break, continue, limit, offset, range, reversed, cycle, tablerow)
  • Работа с шаблоном вывода (comment, raw, liquid, echo, render, include)
  • Работа с переменными (assign, capture, increment, decriment)

Пример:

{% if incident.EventKeys != null %}
{% for key in incident.EventKeys %}
{{ key }}{% endfor %}
{% else %} - Событий не найдено, возможно ошибка в директиве корреляции
{% endif %}

Пример электронного сообщения

Внимание!

В {{ incident.InitialTime | date: "%H:%M %d-%m-%Y" }}
сработала директива {{ directive }}
на активе {% for ip in incident.Assets %} {{ ip | IPToString}} {% endfor %}, установленном в {{ incident.TenantID }}.

Степень важности инцидента - {{ incident.Severity | ru }}
Тип инцидента – {{ incident.GosSOPKAIncidentType }}

Ответственным за инцидент назначен - {{ incident.AssignedTo }}
По данному инциденту необходимо выполнить следующие рекомендации:
{{ incident.Recommendations }}

Справочно:
Номер инцидента: {{ incident.ID }}
Номер директивы: {{ incident.DirectiveID }}
События, благодаря которым был сгенерирован инцидент:
=====
{% if incident.EventKeys != null %}
{% for key in incident.EventKeys %}
{{ key }}{% endfor %}
{% else %}Событий не найдено, возможно ошибка в директиве корреляции.
{% endif %}
=====

Предустановленные поля с информацией из инцидента представлены в следующей таблице.

Таблица 1 - Поля в KOMRAD Enterprise SIEM, которые используются при отправке сообщений

Название поляОписание
incident.IDНомер инцидента
incident.DirectiveIDНомер директивы
incident.CorrelatorIDsНомера корреляторов, которые сгенерировали инцидент
incident.AssignedToОтветственный за инцидент
incident.InitialTimeВремя первого события, из числа всех событий выявленного инцидента
incident.RegistrationTimeВремя регистрации инцидента менеджером инцидентов
incident.CloseTimeВремя закрытия инцидента
incident.StatusСтатус инцидента (новый, закрыт, расследуется, ложное срабатывание)
incident.SeverityУровень инцидента (несущественный, низкий, средний, высокий)
incident.RecommendationsРекомендации из директивы
incident.GosSOPKASendingStatusСтатус отправки в ГосСОПКА
incident.EventKeysСобытия, благодаря которым был сгенерирован инцидент
incident.TenantIDИдентификатор организации
incident.SecurityLabelМетка безопасности
incident.AssetsIP-адреса активов
incident.HistoriesИстория генерации инцидента (несколько историй, если инцидент агрегированный)
incident.HasErrorsВозможно ложное срабатывание или неправильно написано правило корреляции
incident.UpdatedAtВремя редактирования инцидента
incident.StatusReasonПричина (пояснение) установки того или иного статуса
incident.GosSOPKAIncidentTypeТип инцидента из справочника
incident.GosSOPKAIncidentIDИдентификатор инцидента в ГосСОПК’е. Доступен, если статус отправки инцидента «Успешно»
incident.ResponseStageЗначение поля «Линия расследования»
incident.DescriptionОписание инцидента, задаётся пользователем
directiveИмя директивы

Настройка и отправка сообщений об инцидентах на почту с сертификатами и без

осторожно

Не рекомендуется использовать 465 порт

Описание параметров для элементов списка:

name: имя почтового сервера, используется для отображения в визуальном интерфейсе

client: настройки клиента почтового сервера

host: адрес хоста SMTP-сервера. Например, mail.enterprise.ru

idle-timeout: время, через которое соединение SMTP будет разорвано в случае отсутствия активных сообщений

password: пароль почтового ящика

identity: почтовый адрес отправителя, используется и для аутентификации как параметр identity

port: порт SMTP-сервера. Обычно один из:

  • 25 ("opportunistic_start_tls" explicit TLS ⇒ STARTTLS)
  • 465 ("mandatory_start_tls" implicit TLS)
  • 587 ("opportunistic_start_tls" explicit TLS ⇒ STARTTLS)

ServerName: имя сервера используется для проверки имени хоста в возвращённых сертификатах

local_name: используется для тонкой настройки при включенном TLS-соединении. Задаёт имя хоста в команде HELO/EHLO. Если не задана, клиент представит себя автоматически как localhost

username: логин почтового аккаунта, например, siem@mail.enterprise.ru

start_tls: StartTLS настраивает стратегию информирования почтового сервера о том, что почтовый клиент хочет перейти с небезопасного соединения на безопасный с использованием TLS. SMTP всегда запускается незашифрованным. Команда StartTLS запускает согласование между сервером и клиентом.

opportunistic_start_tls: (в литературе встречается также как Explicit TLS) позволяет почтовому клиенту доставлять на самом высоком уровне шифрования, который принимает сервер-получатель. Если сервер-получатель не принимает соединения с TLS, почтовый клиент попробует согласовать с сервером переход на незашифрованное соединение.

Затем сообщение будет отправлено в незашифрованном текстовом виде.

Этот метод удобен тем, что вы можете использовать один и тот же порт для зашифрованных и обычных текстовых сообщений электронной почты.

mandatory_start_tls: (в литературе встречается также как Implicit TLS) требует, чтобы почта была отправлена через безопасное соединение.

Если соединение не зашифровано, отправка почты будет заблокирована.

Этот метод гораздо более безопасен, чем opportunistic_start_tls, но приводит к возможной потере большего количества почты из-за неверной конфигурации клиента либо сервера почты.

no_start_tls: не рекомендуется использовать этот вариант в работе.

Настройка и отправка сообщений об инцидентах на почту с сертификатами Let’s Encrypt / самоподписными (самозаверенными) сертификатами / без сертификатов

В терминале машины, на которой установлен KOMRAD, откройте следующий файл:

sudo nano /etc/echelon/komrad/komrad-server.yaml

В блоке notificationtransport заполнить поля следующим образом (Explicit TLS):

komrad-server.yaml

transports:

aggregation-window: 5s
smtp:
name: SMTP Service
client:
host: Адрес хоста SMTP-сервера. Например, mail.enterprise.ru
idletimeout: 300s
password: укажите пароль от почтового ящика
port: 25
username: Логин почтового аккаунта, например, siem@mail.enterprise.ru
identity: Почтовый адрес отправителя
start_tls: opportunistic_start_tls
tls:
disable: false
system-pool: true
ServerName: ""
TrustedCA: /var/lib/echelon/komrad/certs/ca.pem
Cert: /var/lib/echelon/komrad/certs/client.pem
CertKey: /var/lib/echelon/komrad/certs/client-key.pem
local_name: ""

В блоке notificationtransport заполнить поля следующим образом (Explicit TLS):

komrad-server.yaml

transports:

aggregation-window: 5s
smtp:
name: SMTP Service
client:
host: Адрес хоста SMTP-сервера. Например, mail.enterprise.ru
idletimeout: 300s
password: укажите пароль от почтового ящика
port: 465
username: Логин почтового аккаунта, например, siem@mail.enterprise.ru
identity: Почтовый адрес отправителя
start_tls: opportunistic_start_tls
tls:
disable: false
system-pool: true
ServerName: ""
TrustedCA: /var/lib/echelon/komrad/certs/ca.pem
Cert: /var/lib/echelon/komrad/certs/client.pem
CertKey: /var/lib/echelon/komrad/certs/client-key.pem
local_name: ""

В блоке notificationtransport заполнить поля следующим образом (Implicit TLS):

komrad-server.yaml

transports:

aggregation-window: 5s
smtp:
name: SMTP Service
client:
host: Адрес хоста SMTP-сервера. Например, mail.enterprise.ru
idletimeout: 300s
password: укажите пароль от почтового ящика
port: 587
username: Логин почтового аккаунта, например, siem@mail.enterprise.ru
identity: Почтовый адрес отправителя
start_tls: mandatory_start_tls
tls:
disable: false
system-pool: true
ServerName: ""
TrustedCA: /var/lib/echelon/komrad/certs/ca.pem
Cert: /var/lib/echelon/komrad/certs/client.pem
CertKey: /var/lib/echelon/komrad/certs/client-key.pem
local_name: ""

В блоке notificationtransport заполнить поля следующим образом (No Start TLS):

komrad-server.yaml

transports:

aggregation-window: 5s
smtp:
name: SMTP Service
client:
host: Адрес хоста SMTP-сервера. Например, mail.enterprise.ru
idletimeout: 300s
password: укажите пароль от почтового ящика
port: 587
username: Логин почтового аккаунта, например, siem@mail.enterprise.ru
identity: Почтовый адрес отправителя
start_tls: no_start_tls
tls:
disable: false
system-pool: false
ServerName: ""
TrustedCA: /var/lib/echelon/komrad/certs/ca.pem
Cert: /var/lib/echelon/komrad/certs/client.pem
CertKey: /var/lib/echelon/komrad/certs/client-key.pem
local_name: ""

В блоке notificationtransport заполнить поля следующим образом (Explicit TLS):

komrad-server.yaml

transports:

aggregation-window: 5s
smtp:
name: SMTP Service
client:
host: Адрес хоста SMTP-сервера. Например, mail.enterprise.ru
idletimeout: 300s
password: укажите пароль от почтового ящика
port: 587
username: Логин почтового аккаунта, например, siem@mail.enterprise.ru
identity: Почтовый адрес отправителя
start_tls: opportunistic_start_tls
tls:
disable: false
system-pool: false
ServerName: ""
TrustedCA: /var/lib/echelon/komrad/certs/ca.pem
Cert: /var/lib/echelon/komrad/certs/client.pem
CertKey: /var/lib/echelon/komrad/certs/client-key.pem
local_name: ""