Настройка уведомлений
Уведомления являются способом реакции на инцидент, доступные способы уведомлений указаны ниже.
📄️ Электронная почта
Для обеспечения возможности отправки уведомлений об инцидентах по электронной почте в конфигурационном файле komrad-server.yaml задайте параметры отправителя и подключения к почтовому серверу в блоке директив.
📄️ НКЦКИ ГосСОПКА
ГосСОПКА — это государственная система обнаружения, предупреждения и ликвидации последствий компьютерных атак на информационные ресурсы Российской Федерации. Она создаётся для обмена информацией о кибератаках на информационные системы, нарушение или прекращение работы которых крайне негативно скажется на экономике страны или безопасности граждан.
📄️ Иерархия
В данном разделе описано сопряжение двух KOMRAD и выстраивание иерархии между ними. Связь настраивается как обычный syslog транспорт. Для синхронизации статусов инцидентов потребуется дополнительная настройка в файле конфигурации сервера.
📄️ Jet Signal
«Джет Сигнал» – это информационная система управления инцидентами информационной безопасности, предназначенная для повышения эффективности обработки инцидентов информационной безопасности.
📄️ Kafka
Теперь есть новый вид транспорта - Kafka, который позволяет синхронизировать инциденты с "Кафка".
📄️ Syslog CEF
Для обеспечения возможности отправки инцидента по Syslog в формате CEF:
📄️ Webhook
Теперь есть новый вид транспорта - webhook, который позволяет делать HTTP-запросы в качестве уведомления.
Фильтрация уведомлений (cel-filter)
Выражение на языке CEL для фильтрации обновлений по инцидентам, статусам, важности и другим параметрам. Для каждого вида транспорта есть возможность настроить отдельный cel-filter
.
Cel-filter
-
is_update - на почту присылаются только уведомления по измененным инцидентам
-
!is_update - на почту присылаются только уведомления по новым инцидентам, по измененным не приходят
Выражение по умолчанию присылать уведомления по новым (!is_update) инцидентам "ИЛИ" измененным (is_update) инцидентам "И" статус расследуется "И" высокой важностью:
"!is_update || (is_update && status == 'investigating' && severity == 'high')"
Допустимые значения для статусов (status) : new investigating closed fp
Допустимые значения для важности (severity): baseline low medium high
Доступные поля: is_update, status, severity, incident.AssignedTo, incident.StatusReason
Пример заполнения с уведомлением по ответственному:
В конфиге в блоке notification
заполнить поля указанным образом:
notification:
aggregation-window: 1m
cel-filter: "incident.AssignedTo == 'Фамилия Имя Отчество - admin@admin.com' "
drop-histories: true
smtp:
- name: SMTP Service
host: test.test.ru
idle-timeout: 30s
password: pass
port: [port]
username: siem@test.ru
identity: siem@test.ru
start_tls: opportunistic_start_tls
tls:
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
ServerName: ""
disable: false
system-pool: true
local_name: ""
Ещё примеры:
cel-filter: "severity == 'baseline' "
cel-filter: "incident.StatusReason == 'Причина - это важно' "
cel-filter: "status == 'new' "
История инцидента в уведомлении
Параметр drop-histories
- отображать информацию об истории инцидента или отбросить её.
Возможные значения:
- drop-histories: true // без истории
- drop-histories: false // с историей
Надёжность доставки
Для того чтобы уведомления не терялись, при недоступности транспорта или указанной цели задачи уведомлений попадут в очередь и KOMRAD попытается их доставить в заданные интервалы времени.
В конфигурационном файле вынесены параметры:
# Задержка перед повторной попыткой отправки уведомления из DLQ очереди.
# По умолчанию - 10m (десять минут).
dlq-retry-delay: 1m
# Максимальное время жизни уведомлений в DLQ очереди.
# По умолчанию - 1year (один год).
dlq-notifications-ttl: 24h
Этой командой можно очистить очередь недоставленных сообщений:
./komrad-cli nats stream purge DLQ --server=localhost:3490 --user=komrad --password=pass
Изменения в уведомлениях
Стратегии по отправке уведомлений
-
Обнаружен инцидент по директиве без агрегации
- Syslog и E-mail: будет отправлено одно уведомление
-
Обнаружен инцидент по директиве с включенной агрегацией
- Syslog: Будет отправлено 2 уведомления. На начало и конец окна агрегации
- E-mail: Если окно агрегации < 5 минут, будет отправлено только одно письмо в конце окна агрегации. Иначе - 2 письма (на начало и конец окна агрегации)
-
Изменение инцидента
- Syslog и E-mail: будет отправлено одно уведомление на каждое изменение инцидента
Изменения шаблона уведомления
- Добавлены ссылки на инцидент, директиву, активы, события в e-mail уведомление. Чтобы они отображались корректно,
необходимо указать
external-provider-address
в конфигурации. - Пользовательские переменные из истории инцидента отображаются в отдельной таблице e-mail уведомления.
- При изменении инцидента в e-mail уведомлении указывается поле, которое было изменено, а также предыдущее и текущее значение.
Новые поля для пользовательских шаблонов
Название поля | Описание |
---|---|
update_field_name | Название поля, которое поменяло значение при изменении инцидента |
prev_update_field_name | Предыдущее значение поля update_field_name при изменении инцидента |
incident_provider | Адрес KOMRAD, который можно использовать для генерации ссылок |
agg_window | Продолжительность окна агрегации. Поле доступно только в уведомлениях о начале и конце окна агрегации |
agg_finished | Флаг завершения агрегации. Поле доступно только в уведомлениях о начале и конце окна агрегации |
history_vars | Массив пользовательских переменных из истории инцидента. Массив содержит структуру вида {Name, Value} . К переменным можно обращаться по индексу history_vars[0].Name или в цикле:{% for var in history_vars %} {{ var.Name }}: {{ var.Value }} {% endfor %} |
Повторная отправка недоставленных уведомлений с помощью Dead Letter Queue
DLQ - очередь, в которой хранятся недоставленные уведомления.
После трех неудачных попыток доставки уведомления отправляются в DLQ. Раз в интервал dlq-retry-delay
сервис
повторно пытается отправить уведомление. Если оно было успешно доставлено, то удаляется из очереди.
Если уведомление не будет доставлено в течении dlq-notifications-ttl
с момента попадания его в DLQ, то оно
также удаляется из очереди.
Уведомления можно вручную удалить из DLQ, используя komrad-cli
:
./tools/bin/komrad-cli nats stream purge DLQ --server=localhost:3490 --user=komrad --password=pass
Опция защиты от спама для email уведомлений SilenceWindow
В предыдущих версиях KOMRAD была реализована опция защиты от спама для e-mail AggregationWindow
. Если она активна,
уведомления в окне aggregation-window
схлопывались в одно, и на почту приходило одно письмо.
В этой версии появилась новая опция защиты от спама и DOS-атак SilenceWindow
, которая пришла на замену AggregationWindow
.
С включенной опцией SilenceWindow
на почту приходит письмо по определенной директиве. После этого, в течение
интервала silence-window
уведомления по этой же директиве не будут приходить.
SilenceWindow
учитывает транспорт, директиву и получателя.
Изменения в конфигурации
-- komrad-server.yaml
notification:
# Deprecated. Теперь этот параметр используется для SilenceWindow, если опция silence-window не задана
# в конфигурации.
# По умолчанию - 1m (одна минута).
aggregation-window: 1m
# SilenceWindow используется для защиты от спама. При включенной в уведомлениях опции, гарантируется,
# что сообщения по каждой директиве будут приходить не чаще выставленного значения.
# По умолчанию - 1m (одна минута).
silence-window: 1m
# Задержка перед повторной попыткой отправки уведомления из DLQ очереди.
# По умолчанию - 10m (десять минут).
dlq-retry-delay: 10m
# Максимальное время жизни уведомлений в DLQ очереди.
# По умолчанию - 8760h (один год).
dlq-notifications-ttl: 8760h
# Внешний адрес KOMRAD, использующийся для указания источника инцидента, отправленного во внешние системы.
external-provider-address: https://komrad.etecs.ru:443
# Адрес сервиса, использующегося для предоставления внешним системам возможности синхронизировать информацию об инцидентах.
external-incidents-synchronizer: komrad.etecs.ru:3440