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

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

Уведомления являются способом реакции на инцидент, доступные способы уведомлений указаны ниже.

📄️ НКЦКИ ГосСОПКА

ГосСОПКА — это государственная система обнаружения, предупреждения и ликвидации последствий компьютерных атак на информационные ресурсы Российской Федерации. Она создаётся для обмена информацией о кибератаках на информационные системы, нарушение или прекращение работы которых крайне негативно скажется на экономике страны или безопасности граждан.

Фильтрация уведомлений (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

Изменения в уведомлениях

Стратегии по отправке уведомлений

  1. Обнаружен инцидент по директиве без агрегации

    • Syslog и E-mail: будет отправлено одно уведомление
  2. Обнаружен инцидент по директиве с включенной агрегацией

    • Syslog: Будет отправлено 2 уведомления. На начало и конец окна агрегации
    • E-mail: Если окно агрегации < 5 минут, будет отправлено только одно письмо в конце окна агрегации. Иначе - 2 письма (на начало и конец окна агрегации)
  3. Изменение инцидента

    • Syslog и E-mail: будет отправлено одно уведомление на каждое изменение инцидента

Изменения шаблона уведомления

  1. Добавлены ссылки на инцидент, директиву, активы, события в e-mail уведомление. Чтобы они отображались корректно, необходимо указать external-provider-address в конфигурации.
  2. Пользовательские переменные из истории инцидента отображаются в отдельной таблице e-mail уведомления.
  3. При изменении инцидента в 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