Конфигурация KOMRAD-сервера

Описание возможностей настройки конфигурации komrad-server.yaml.

Для редактирования конфигурационного файла выполните команду:

sudo nano /etc/echelon/komrad/komrad-server.yaml
### schema: komrad/komrad-server/4.1.33
# Лицензия на продукт, можно вставить путь к файлу лицензии в поле path ЛИБО текст лицензии base64 в поле license.
license:
  # Приоритетно - путь к файлу лицензии
  path: /etc/echelon/komrad/license/
  # Опционально - текст лицензии закодированный в base64
  license: ""
  # Канал SMTP для отправки уведомлений об окончании
  transport: SMTP Service
  email: info@info.ru
  # Интервал отправки e-mail сообщений (в часах)
  AlertInterval: 2
# Пароль и соль для шифрования секретов (паролей, учётных данных), хранимых в БД KOMRAD.
secrets:
  storage:
    type: FILESYSTEM
    secretsdir: /etc/echelon/komrad/secrets
    SecretCacheTTL: 5m
    SecretExpansion: true
    FilesystemRoot: /etc/echelon/komrad/secrets
  vault:
    # Адрес Vault
    address: https://127.0.0.1:8200
    # Адрес агента Vault
    AgentAddress: ""
    # Максимальное число повторов при ошибке от агента Vault, по умолчанию 2
    MaxRetries: 2
    # параметр таймаута для HTTP клиента Vault, по умолчанию 60s
    timeout: 60s
    # SRVLookup разрешает клиенту Vault осуществлять поиск агента через DNS SRV lookup
    SRVLookup: true
    tls:
      disable: 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
      system-pool: false
      min-version: "1.3"
      client-auth: require-and-verify-client-cert
  keys:
    type: FILESYSTEM
    FilesystemRoot: /etc/echelon/komrad/keys
  keysize: 32
  password: default-insecure-password
  salt: default-insecure-salt
# Настройки связи с сервером авторизации PAuth
auth:
  # адрес gRPC сервера PAuth
  addr: 127.0.0.1:2021
  tls:
    disable: 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
    system-pool: false
    min-version: "1.3"
    client-auth: require-and-verify-client-cert
http:
  # Адрес для старта HTTP сервера. Если выбран порт 443 -- сервису потребуются расширенные привилегии в ОС.
  addr: [ip_server]:443
  # Имя публичного домена, например komrad.enterprise.lan. Служит для увеличения безопасности cookie
  # Раздел Path в https://developer.mozilla.org/ru/docs/Web/HTTP/Headers/Set-Cookie
  PublicDomain: 127.0.0.1
  # Срок истечения cookie в секундах, по умолчанию одни сутки (86 400)
  cookieexpiration: 86400
  # Путь до файла где будет храниться один из двух ключей для генерации Secure Cookie
  CookieKeyPath: /etc/echelon/komrad/komrad-server/cookie-key.dat
  # Настройки алгоритма ограничения числа запросов к HTTP
  rate-limit:
    # Включить лимиты на HTTP запросы
    enabled: true
    # Максимальное число запросов от одного пользователя на один метод API в секунду.
    # На ограничение стоит допуск со стандартным распределением вероятности +-50%.
    rps: 200
    # Считать раздельно лимиты для выбранных HTTP заголовков.
    vary-by-headers: []
    # Считать раздельно лимиты для запросов от одного пользователя с разных IP адресов.
    # В этом случае раздельно будут считаться запросы от одного и того же пользователя с разных IP адресов.
    vary-by-remote-address: false
  # Настройки защиты для Cross-Origin-Resource-Sharing (CORS)
  cors:
    enabled: true
    # При возникновении ошибок с CORS возможный выход - небезопасная настройка `allowedorigins: ["*"]`
    # allowedorigins: ["*"]
    allowedorigins:
    - http://127.0.0.1:8080
    - http://localhost:8080
    - https://[ip_server]
    - https://[ip_server]:443
    - https://127.0.0.1
    - https://127.0.0.1:3400
    - https://127.0.0.1:443
    - https://127.0.0.1:9050
    - https://::1
    - https://[::1]:443
    - https://localhost
    - https://localhost:3400
    - https://localhost:443
    - https://[server_name]
    - https://[server_name]:443
  secure:
    # Включён
    enabled: true
    # Добавить заголовок X-XSS-Protection со значением `1; mode=block`. По умолчанию отключен.
    BrowserXssFilter: false
    # CustomBrowserXssValue позволяет указать собственное значение заголовка  X-XSS-Protection,
    # если не пустая строка - имеет приоритет перед BrowserXssFilter
    CustomBrowserXssValue: ""
    # Добавить заголовок X-Content-Type-Options со значением `nosniff`
    ContentTypeNosniff: false
    # Добавить заголовок Strict Transport Security даже для попыток HTTP соединений, по умолчанию включено
    # подробнее -- https://tools.ietf.org/html/rfc6797#section-7.2
    # Этот параметр можно выключить если вы используете proxy (nginx, caddy, haproxy, apache)
    ForceSTSHeader: true
    # Применять Strict-Transport-Security для поддоменов, по умолчанию - включено
    STSIncludeSubdomains: true
    # Добавляет флаг `preload` к заголовку Strict-Transport-Security, по-умолчанию отключено
    STSPreload: false
    # Определяет срок жизни в секундах (maxage) заголовка Strict-Transport-Security
    # Если равно 0
    STSSeconds: 315360000
    # Добавляет параметр X-Frame-Options со значением DENY, по умолчанию включен
    FrameDeny: true
    # Включает режим отладки приложения, отключает большинство настроек безопасности
    IsDevelopment: false
    # Включить обязательный редирект HTTP на HTTPS, по умолчанию включено
    TLSRedirect: true
    # Если задан параметр TLSHost - автоматически переадресовывать все запросы с
    # отличными от TLSHost хостами, даже если они HTTPS. По умолчанию - включено.
    TLSForceHost: true
    # Список FQDN от которых разрешены запросы, если список пустой - запросы со всех
    # хостов будут приниматься. Можно использовать регулярные выражения.
    AllowedHosts:
    - [ip]
    - [ip]:443
    - 127.0.0.1
    - 127.0.0.1:3400
    - 127.0.0.1:443
    - 127.0.0.1:8080
    - "::1"
    - "[::1]:443"
    - komrad.enterprise.lan
    - localhost
    - localhost:3400
    - localhost:443
    - localhost:8080
    - [server_name]
    - [server_name]:443
    # Использовать 302 HTTP статус вместо 301 во время переадресации запросов TLS
    TLSTemporaryRedirect: false
    # Заголовок Content-Security-Policy
    ContentSecurityPolicy: ""
    # Заголовок Content-Security-Policy-Report-Only
    ContentSecurityPolicyReportOnly: ""
    # Позволяет задать пользовательское значение заголовку X-Frame-Options
    CustomFrameOptionsValue: ""
    # Управляет поведением браузеров при передаче заголовков Referer
    ReferrerPolicy: ""
    # PermissionsPolicy позволяет селективно управлять настройками браузеров и API
    PermissionsPolicy: ""
    # Набор имён заголовков из которых можно извлечь имя проксированного хоста
    HostsProxyHeaders: []
    # Список заголовков, по которым можно принимать запрос как корректный HTTPS запрос,
    # полезно при наличии прокси-серверов -- NGINX, HAProxy, Caddy, Apache.
    TLSProxyHeaders:
      X-Forwarded-Proto: https
  # Ограничение периода поиска по событиям в прошлом
  EventsSearchBackwardsTimeLimit: 240h
  # Настройки логирования модуля Web HTTP
  logging:
    enabled: true
    level: info
  # Включение шифрования передачи данных Web сервера
  tls:
    disable: false
    ServerName: ""
    TrustedCA: /var/lib/echelon/komrad/certs/ca.pem
    Cert: /var/lib/echelon/komrad/certs/server.pem
    CertKey: /var/lib/echelon/komrad/certs/server-key.pem
    system-pool: false
    min-version: "1.3"
    # Тип авторизации клиента TLS/mTLS.
    # Может принимать одно из значений: no-client-cert, request-client-cert,
    # require-any-client-cert, verify-client-cert-if-given,
    # require-and-verify-client-cert
    client-auth: no-client-cert
grpc:
  addr: 127.0.0.1:3401
  tls:
    disable: false
    ServerName: ""
    TrustedCA: /var/lib/echelon/komrad/certs/ca.pem
    Cert: /var/lib/echelon/komrad/certs/server.pem
    CertKey: /var/lib/echelon/komrad/certs/server-key.pem
    system-pool: false
    min-version: "1.3"
    client-auth: require-and-verify-client-cert
  client:
    ClientCert: /var/lib/echelon/komrad/certs/client.pem
    ClientKey: /var/lib/echelon/komrad/certs/client-key.pem
starttimeout: 10m
bus:
  servers:
  - nats://[bus_ip]:3490
  user: komrad
  password: pass
  user-credentials: ""
  tls:
    disable: 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
    system-pool: false
    min-version: "1.3"
    client-auth: require-and-verify-client-cert
  tuning:
    # Возможность установить время ожидания при соединении.
    connect-timeout: 10s
    # Возможность установить максимальное количество попыток повторного подключения.
    max-reconnects: 1000000
    # Устанавливает максимальное количество времени, в течение которого мы будем ждать ответа.
    max-wait: 0s
    # Параметр для установки периода для клиентских команд ping.
    ping-interval: 2m
    # Возможность установить максимальное количество запросов ping,
    # которые могут остаться без ответа сервера, прежде чем закрыть соединение.
    max-pings-outstanding: 2
    # Устанавливает максимальное количество незавершенных асинхронных публикаций,
    # которые могут быть одновременно запущены.
    publish-async-max-pending: 0
    # Интервал переподключения.
    reconnect-interval: 5s
    # Возможность установить время ожидания между попытками повторного подключения.
    reconnect-wait: 1s
    # Устанавливает соединение в состояние повторного подключения, если оно не может подключиться.
    retry-on-failed-connect: false
s3:
  endpoint: 127.0.0.1:9050
  AccessKeyID: komrad-s3
  SecretAccessKey: komrad-s3-password
  tls:
    disable: 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
    system-pool: false
    min-version: "1.3"
    client-auth: require-and-verify-client-cert
  BucketName: komrad-images
database:
  pg:
    db: komrad-preferences
    host: 127.0.0.1
    port: 5432
    tlsmode: disable
    user: postgres
  secrets:
    type: IN_MEMORY
    # /var/run/secrets
    SecretsDir: ""
    SecretCacheTTL: 5m
    SecretExpansion: false
  keys:
    type: FILESYSTEM
    # /var/run/secrets
    FilesystemRoot: ""
addresses:
  incidentmanagerhttp: http://127.0.0.1:3410
  incidentmanagergrpc: 127.0.0.1:3411
  correlationdispatcherhttp: http://127.0.0.1:3415
  correlationdispatchergrpc: 127.0.0.1:3416
  reactorhttp: http://127.0.0.1:3440
  scannergrpcserver: 127.0.0.1:3301
  processorgrpcserver: 127.0.0.1:3405
  widgetsgrpc: 127.0.0.1:3446
  searchgrpc: 127.0.0.1:3456
# Настройки каналов уведомлений. Доступно подключение неограниченного числа каналов
# электронной почты (SMTP), syslog CEF.
notification:
  # Временное окно для накапливания уведомлений и отправкой одним письмом, используется для защиты от спама.
  # По умолчанию - 1m (одна минута).
  aggregation-window: 1m
  # Выражение на языке CEL для фильтрации обновлений по инцидентам по статусам, важности и другим параметрам.
  # Выражение по-умолчанию: "!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
  cel-filter: "!is_update || (is_update && status == 'investigating' && severity == 'high')"
  # Не передавать истории генерации инцидента в уведомлениях.
  drop-histories: true
  # Список подключенных каналов для отправки уведомлений по электронной почте.
  # Описание параметров для элементов списка:
  #   name: Имя почтового сервера, используется для отображения в визуальном интерфейсе
  #   client: Настройки клиента почтового сервера"
  #   host: Адрес хоста SMTP сервера. Например, mail.enterprise.ru
  #   idletimeout: Время через которое соединение SMTP будет разорвано в случае отсутствия активных сообщений
  #   password: Пароль почтового ящика. Можно хранить пароль в отдельном файле и указывать путь к нему в виде:
  #                 password: "file:/run/secrets/mailbox_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)
  #   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" (в литературе встречается также как or Implicit TLS) требует,
  #               чтобы почта была отправлена через безопасное соединение.
  #               Если соединение не зашифровано, отправка почты будет заблокирована.
  #               Этот метод гораздо более безопасен, чем opportunistic_start_tls, но приводит
  #               к возможной потере большего количества почты из-за неверной конфигурации
  #               клиента либо сервера почты.
  #
  #               "no_start_tls" do not starts STARTTLS negotiating with server, do not use it in production!
  smtp:
  - name: SMTP Service
    host: 127.0.0.1
    idle-timeout: 30s
    password: password
    port: 465
    username: siem-noreply@mail.komrad.enterprise.ru
    identity: siem-noreply@mail.komrad.enterprise.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: false
    local_name: ""
  # Конфигурация отправки инцидентов по syslog в формате CEF.
  # Возможна отправка на протоколы tcp и udp. Возможно включение шифрования передачи данных TLS.
  syslog-cef:
  - name: syslog CEF
    idle-timeout: 30s
    dial-timeout: 30s
    disable: true
    recipient: tcp://127.0.0.1:49000
    hostname: komrad-node
    mapping: /etc/echelon/komrad/komrad-server-notification-mapping-syslog-cef.yaml
    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: true
      system-pool: true
    framing: delimiter
retroindexationsegment: 96h
eventfieldscache:
  cacheexpiration: 1m
widgets:
  byseverityinterval: 168h0m0s
  bystatusinterval: 24h0m0s
  requesttimeout: 5s
  updateinterval: 1h0m0s
  reconnecttimeout: 5s
jwt:
  secret: komrad
  token-expiration: 1m
# Настройки вывода логов приложения.
# Сервис может отправлять логи сразу в несколько целей -- файл, системный журнал ОС, консоль, syslog.
# Включить вывод логов в консоль для режима отладки приложения
#  - filename: stdout
#    format: color
#    filter: ""
#    levels: [all]
# Включить вывод логов в файл с ротацией.
# ВАЖНО: старые файлы с логами не удаляются, необходимо производить мониторинг использования диска.
# - filename: "/var/log/echelon/komrad/service.log"
#   format: json
# возможно задать выражение для фильтрации выводимых логов
#   filter: ""
#   levels: [info, error, warn, panic, fatal]
log:
- filename: systemd/journal
  format: json
  filter: ""
  levels:
  - info
  - error
  - panic
  - fatal
  - warn
monitoring:
  http:
    correlationdispatcher:
      url: http://127.0.0.1:3415
      interval: 10s
    incidentmanager:
      url: http://127.0.0.1:3410
      interval: 10s
    reactor:
      url: 127.0.0.1:3441
      interval: 10s
  statestoragepath: .
event-card:
  allowed-redirect-hosts:
  - 127.0.0.1
  - "*.etecs.ru"