Конфигурация КОМРАД сервера

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

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

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

Лицензия на продукт

Лицензия на продукт, можно вставить путь к файлу лицензии в поле path либо текст лицензии base64 в поле license.

license:
  path: /etc/echelon/komrad/license.lic (1)
  license: |
    ewogICAgImlkI ... aFo3QSIKfQ== (2)
  transport: SMTP Service (3)
  email: info@info.ru
  AlertInterval: 2 (4)
1 приоритетно - путь к файлу лицензии;
2 опционально (необязательно) - текст лицензии закодированный в base64;
3 канал SMTP для отправки уведомлений об окончании;
4 интервал отправки e-mail сообщений (в часах);

Пароль и модификатор входа для хэш-функции (соль)

Пароль и соль для шифрования секретов (паролей, учётных данных), хранимых в БД КОМРАД.

secrets:
  storage:
    type: FILESYSTEM
    secretsdir: /home/user/echelon/polygon/komrad/build/secrets
    SecretCacheTTL: 5m
    SecretExpansion: true
    FilesystemRoot: /home/user/echelon/polygon/komrad/build/secrets
  vault:
    address: https://127.0.0.1:8200 (1)
    AgentAddress: "" (2)
    MaxRetries: 2 (3)
    timeout: 60s (4)
    SRVLookup: true (5)
    tls:
      disable: false
      ServerName: komrad-server
      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
  keys:
    type: FILESYSTEM
    FilesystemRoot: /home/user/echelon/polygon/komrad/build/keys
  keysize: 32
  password: default-insecure-password
  salt: default-insecure-salt
1 адрес Vault;
2 адрес агента Vault;
3 максимальное число повторов при ошибке от агента Vault (по умолчанию 2);
4 параметр таймаута для HTTP клиента Vault (по умолчанию 60s);
5 SRVLookup разрешает клиенту Vault осуществлять поиск агентов через DNS SRVLookup;

Авторизация PAuth

Настройки связи с сервером авторизации PAuth.

auth:
  addr: localhost:2021 (1)
  tls:
    disable: true
    ServerName: komrad-server
    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
http:
  addr: ":3400" (2)
  PublicDomain: localhost (3)
  cookieexpiration: 86400 (4)
  CookieKeyPath: /etc/echelon/komrad/cookie-key.dat (5)
  cors: (6)
    enabled: true
    allowedorigins: (7)
    - https://localhost
    - https://localhost:3400
    - https://localhost:9050
    - http://localhost:8080
    - https://localhost:3400
    - https://localhost:443
  secure:
    enabled: false
    BrowserXssFilter: false (8)
    CustomBrowserXssValue: "" (9)
    ContentTypeNosniff: false (10)
    ForceSTSHeader: true (11)
    STSIncludeSubdomains: true (12)
    STSPreload: false (13)
    STSSeconds: 315360000 (14)
    FrameDeny: true (15)
    IsDevelopment: false (16)
    TLSRedirect: true (17)
    TLSForceHost: true (18)
    AllowedHosts: (19)
    - localhost
    - localhost:3400
    - localhost
    - localhost:3400
    - localhost:443
    - localhost:8080
    - komrad.enterprise.lan
    TLSTemporaryRedirect: false (20)
    ContentSecurityPolicy: "" (21)
    ContentSecurityPolicyReportOnly: "" (22)
    CustomFrameOptionsValue: "" (23)
    ReferrerPolicy: "" (24)
    PermissionsPolicy: "" (25)
    HostsProxyHeaders: [] (26)
    TLSProxyHeaders: (27)
      X-Forwarded-Proto: httpsм
  EventsSearchBackwardsTimeLimit: 240h (28)
  logging: (29)
    enabled: true
    level: info
  tls: (30)
    disable: true
    ServerName: komrad-server
    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
1 адрес gRPC сервера;
2 адрес для старта HTTP сервера. Если выбран порт 443, тогда сервису потребуется расширенные привилегии в ОС;
3 имя публичного домена (пример: komrad.enterprise.lan);
4 срок истечения cookie в секундах, по умолчанию одни сутки (86 400);
5 путь до файла где будет храниться один из двух ключей для генерации Secure Cookie;
6 настройки защиты для Cross-Origin-Sharing (CORS);
7 при возникновении ошибок с CORS возможный выход - небезопасная настройка allowedorigins: [*]
8 по умолчанию отключен. Добавить заголовок X-XSS-Protection со значением 1; mode=block;
9 CustomBrowserXssValue позволяет указать собственное значение заголовка X-XSS-Protection, если не пустая строка - имеет приоритет перед BrowserXssFilter;
10 добавить заголовок X-Content-Type-Options со значением nosniff;
11 добавить заголовок Strict Transport Security даже для попыток HTTP соединений, по умолчанию включено. Этот параметр можно выключить если вы используете proxe (nginx, caddy, haproxy, apache);
12 применять Strict-Transport-Security для поддоменов, по умолчанию включено;
13 добавлять флаг preload к заголовку Strict-Transport-Security, по умолчанию отключено;
14 определяет срок жизни в секундах (maxage) заголовка Strict-Transport-Security;
15 добавляет параметр X-Frame-Options со значением DENY, по умолчанию включен;
16 включает режим отладки приложения, отключает большинство настроек безопасности;
17 включить обязательный редирект HTTP на HTTPS, по умолчанию включено;
18 если задан параметр TLSHost - автоматически переадресовывать все запросы с оличными от TLSHost хостами, даже если они HTTPS. По умолчанию включено;
19 список FQDN от которых разрешены запросы, если список пустой - запросы со всех хостов будут приниматься. Можно использовать регулярные выражения;
20 использовать 302 HTTP статус вместо 301 во время переадресации запросов TLS;
21 заголовок Content-Security-Police;
22 заголовок Content-Security-Police-Report-Only;
23 позволяет задавать пользовательские заголовки X-Frame-Options;
24 управляет поведение браузеров при передаче заголовков Referer;
25 PermissionPolicy позволяет селективно управлять настройками браузера и API;
26 Набор имён заголовков из которых можно извлечь имя проксированного хоста;
27 список заголовков, по которым можно принимать запрос как корректный HTTPs запрос, полезно при наличии прокси-сервера: nginx, hsproxy, caddy, apache;
28 Ограничение периода поиска по событиям в прошлом;
29 настройки логирования модуля Web HTTP;
30 включение шифрования передачи данных Web сервера;

gRPC

grpc:
  addr: ":3401"
  tls:
    disable: true
    ServerName: komrad-server
    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
  client:
    ClientCert: /var/lib/echelon/komrad/certs/client.pem
    ClientKey: /var/lib/echelon/komrad/certs/client-key.pem
komradbusclient:
  url: nats://localhost:3490
  cluster: polygon
  clientid: komrad-server
starttimeout: 60s
bus:
  name: komrad-server
  servers: polygon
  url: nats://localhost:3490
s3:
  endpoint: localhost:9050
  AccessKeyID: komradadmin
  SecretAccessKey: komradadmin
  tls: (1)
    disable: true
    ServerName: komrad-server (2)
    TrustedCA: /var/lib/echelon/komrad/certs/ca.pem (3)
    Cert: /var/lib/echelon/komrad/certs/client.pem (4)
    CertKey: /var/lib/echelon/komrad/certs/client-key.pem (5)
  BucketName: komrad-images
1 TLS для создания защищённого соединения;
2 имя сервера;
3 корневой сертификат Центра Сертификации;
4 сертификат TLS;
5 приватный ключ сертификата TLS;

DB

database:
  pg:
    TLSCertPath: /var/lib/echelon/komrad/certs/client.pem
    TLSKeyPath: /var/lib/echelon/komrad/certs/client-key.pem
    TLSRootCAPath: /var/lib/echelon/komrad/certs/ca.pem
    db: komrad-preferences
    host: localhost
    password: pass
    port: 5432
    tlsmode: disable
    user: postgres
  secrets:
    type: IN_MEMORY
    SecretsDir: ""
    SecretCacheTTL: 5m
    SecretExpansion: false
  keys:
    type: FILESYSTEM
    FilesystemRoot: ""
addresses:
  incidentmanagerhttp: http://localhost:3410
  incidentmanagergrpc: localhost:3411
  correlationdispatcherhttp: http://localhost:3415
  correlationdispatchergrpc: localhost:3416
  reactorhttp: http://localhost:3440
  scannergrpcserver: localhost:3301
  processorgrpcserver: localhost:3405
  widgetsgrpc: localhost:3446
  searchgrpc: localhost:3456

Уведомления инцидентов

notificationtransport:
  transports:
    senderaddress: sender-address@service.address
    aggregation-window: 1m
    emailtransports:
      name: SMTP Service
      client:
        host: localhost
        idletimeout: 30s
        password: password
        port: 465
        username: email-address@service.address
        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: komrad-server
          Insecure: true
    syslogtransports:
      name: syslog service
      client:
        idletimeout: 30s
        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: komrad-server
          Insecure: true
retroindexationsegment: 24h
gettingdocstimeout: 15s
gettingkeystimeout: 30s
eventfieldscache:
  cacheexpiration: 1m
widgets:
  byseverityinterval: 168h0m0s
  bystatusinterval: 24h0m0s
  requesttimeout: 5s
  updateinterval: 1h0m0s
  reconnecttimeout: 5s
jwt:
  secret: komrad
  token-expiration: 1m

Настройка выводов логов приложения

Сервис может отправлять логи сразу в несколько целей: файл, системный журнал ОС, консоль, syslog.

log:
- filename: stdout
  format: color
  filter: ""
  levels:
  - all
monitoring:
  http:
    correlationdispatcher:
      url: http://localhost:3415
      interval: 10s
    incidentmanager:
      url: http://localhost:3410
      interval: 10s
    reactor:
      url: localhost:3441
      interval: 10s
  statestoragepath: .

Включить вывод логов в консоль для режима отладки приложения:

log:
- filename: stdout
  format: color
  filter: ""
  levels: [all]

Включить вывод логов в файл с ротацией:

log:
- filename: "/var/log/echelon/komrad/service.log"
  format: json
  filter: ""
  levels: [info, error, warn, panic, fatal]

WARNING: старые файлы с логами не удаляются, необходимо производить мониторинг использования диска.