Настройка отправки уведомлений по SMTP
Для обеспечения возможности отправки уведомлений об инцидентах по электронной почте в конфигурационном файле komrad-server.yaml
задайте параметры отправителя и подключения к почтовому серверу в блоке notification: smtp:
.
-
В терминале машины, на которой установлен KOMRAD, введите:
nano /etc/echelon/komrad/komrad-server.yaml
-
В блоке
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) Пользователь почтового сервера
-
Перезапустите
komrad-server
:sudo systemctl restart komrad-server
-
Перейдите во вкладку "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 %}
==== -
Нажмите "Сохранить"
В состав сообщения можно включать предустановленные поля с информацией инцидента при помощи встроенного языка запросов.
Уведомления по 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.Assets | IP-адреса активов |
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: ""