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

Иерархия

В данном разделе описано сопряжение двух KOMRAD и выстраивание иерархии между ними. Связь настраивается как обычный syslog транспорт. Для синхронизации статусов инцидентов потребуется дополнительная настройка в файле конфигурации сервера.

Логика работы

При сопряжении двух KOMRAD, один будет являться вышестоящим, второй — нижестоящим. Настройка производится на нижестоящем KOMRAD. После того, как будет выполнена настройка, указанная в пункте ниже, созданные инциденты в нижестоящем KOMRAD будут попадать в вышестоящий KOMRAD и регистрироваться как инциденты. Определить, что это внешний инцидент в вышестоящем KOMRAD можно по истории инцидента, в событии будет указано external. В случае изменения статуса в вышестоящем KOMRAD, статус изменится и в нижестоящем KOMRAD.

В случае различия важности директив на подчиненном и вышестоящем KOMRAD сравнивается важность этих директив и присваивает ту, которая выше.

В общем случае схема будет выглядеть так:

1

примечание

При использовании агрегации статусы инцидентов будут обновляться только после закрытия временного окна агрегации.

Иерархия из 2-х KOMRAD

Настройки для сопряжения в нижестоящем KOMRAD

Откройте конфигурационный файл komrad-server.yaml:

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

И задайте параметры KOMRAD, в который планируется отправлять инциденты:

.komrad-server.yaml
----
syslog-cef:
- name: syslog CEF
idle-timeout: 30s
dial-timeout: 30s
disable: false
recipient: tcp://[Вышестоящий_ПК_комрад]: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
----

Для синхронизации статусов инцидентов в конце файла конфигурации сервера укажите порт komrad-reactor (при установке AiO localhost):

.komrad-server.yaml
----
# Внешний адрес KOMRAD, использующийся для указания источника инцидента, отправленного во внешние системы.
external-provider-address: [http://ip_нижестоящий_комрад]:443
# Адрес сервиса, использующегося для предоставления внешним системам возможности синхронизировать информацию об инцидентах.
external-incidents-synchronizer: [http://ip_нижестоящий_комрад]:3440
----

Откройте файл конфигурации komrad-reactor и укажите ip

.komrad-reactor.yaml
----
# Настройка адреса для прослушивания входящих соединений по протоколу HTTP.
ListenHTTP: [http://ip_нижестоящий_комрад]:3440
----
предупреждение

При использовании https необходимо, чтобы на вышестоящем KOMRAD реактор использовал корневой сертификат нижестоящего KOMRAD для связи

Использование TLS для сопряжения двух KOMRAD

Перед тем как менять конфиг syslog-collector, необходимо:

  1. Остановить syslog-коллектор:

    sudo systemctl stop komrad-syslog-collector
  2. Удалить 2 папки:

    sudo rm -rf /var/lib/echelon/komrad/komrad-syslog-collector/.wal/

    sudo rm -rf /var/lib/echelon/komrad/komrad-syslog-collector/.storage/
  3. Запустить komrad-syslog-collector командой:

    sudo systemctl start komrad-syslog-collector

Мы рекомендуем использовать отдельные сертификаты для связи двух KOMRAD подробнее про выпуск сертификатов. Не имеет значения на каком из KOMRAD были сгенерированы сертификаты.Важно чтобы с сертификатах были указны ip обоих KOMRAD В данном примере созданы новые сертификаты и перемещены в папку /var/lib/echelon/komrad/certs2/

Выпуск отдельных сертификатов для связи

Для создания TLS сертификатов, на машине с KOMRAD-отправителем создать на жестком диске папку tls/:

sudo mkdir /home/tls/

Перейти в папку tls/ и сгенерировать корневой сертификат:

cd /home/tls/
sudo komrad-cli certificates create ca

Сгенерировать серверный сертификат (команда в одну строчку):

sudo komrad-cli certificates create server --organization “Echelon” localhost 127.0.0.1 $(hostname -I) $(hostname)

где необходимо прописать ip KOMRAD-отправителя и syslog-коллектора. Пример:

sudo komrad-cli certificates create server --organization “Echelon” localhost 127.0.0.1 [ip-вышестоящий_комрад] [ip-нижестоящий_комрад] $(hostname -I) $(hostname)

Сгенерировать клиентский сертификат:

sudo komrad-cli certificates create client

Перейти в /var/lib/echelon/komrad/ и создать папку certs2:

sudo mkdir certs2

Переместить сертификаты ca.pem client-key.pem client.pem в папку certs2:

sudo cp ca.pem client-key.pem client.pem /var/lib/echelon/komrad/certs2

Перейти в терминал машины с вышестоящим KOMRAD и скопировать сертификаты ca.pem server-key.pem server.pem в папку certs2:

sudo cp ca.pem server-key.pem server.pem /var/lib/echelon/komrad/certs2

В терминале машины, на которой установлен нижестоящий KOMRAD открыть файл komrad-server.yaml:

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

В блоке notificationtransport заполнить поля следующим образом:

/etc/echelon/komrad/komrad-server.yaml
transports:

# Конфигурация отправки инцидентов по syslog в формате CEF.
# Возможна отправка на протоколы tcp и udp. Возможно включение шифрования передачи данных TLS.
syslog-cef:
- name: syslog CEF
idle-timeout: 30s
disable: false
recipients: tcp://[ip вышестоящего KOMRAD]:49000
mapping: "/etc/echelon/komrad/komrad-server-notification-mapping-syslog-cef.yaml"
hostname: komrad-astra
tls:
TrustedCA: /var/lib/echelon/komrad/certs2/ca.pem
Cert: /var/lib/echelon/komrad/certs2/client.pem
CertKey: /var/lib/echelon/komrad/certs2/client-key.pem
disable: false
system-pool: false

В самом низу файла заполнить поля следующим образом:

/etc/echelon/komrad/komrad-server.yaml
   # Внешний адрес KOMRAD, использующийся для указания источника инцидента, отправленного во внешние системы.
external-provider-address: https://ip нижестоящий Комрад:443
# Адрес сервиса, использующегося для предоставления внешним системам возможности синхронизировать информацию об инцидентах.
external-incidents-synchronizer: https://ip нижестоящий Комрад:3440

Сохранить файл с изменениями.

В терминале машины, на которой установлен нижестоящий KOMRAD открыть файл komrad-reactor.yaml

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

В самом начале файла заполнить поля следующим образом:

/etc/echelon/komrad/komrad-reactor.yaml
# Настройка адреса для прослушивания входящих соединений по протоколу HTTP.
ListenHTTP: [ip нижестоящий Комрад:3440]

# Включение шифрования передачи данных Web сервера
http-tls:
disable: false
ServerName: ""
TrustedCA: /var/lib/echelon/komrad/certs2/ca.pem
Cert: /var/lib/echelon/komrad/certs2/server.pem
CertKey: /var/lib/echelon/komrad/certs2/server-key.pem
system-pool: false
min-version: "1.3"

Сохранить файл с изменениями.

Перезагрузить komrad-reactor:

sudo systemctl restart komrad-reactor 

Перезагрузить komrad-server при помощи команды:

sudo systemctl restart komrad-server

В терминале машины c вышестоящим KOMRAD, открыть файл komrad-sуslog-collector.yaml:

sudo nano /etc/echelon/komrad/komrad-sуslog-collector.yaml

В блоке tls заполнить поля следующим образом:

/etc/echelon/komrad/komrad-syslog-collector.yaml
tcp:
# Таймаут разрыва неактивного соединения, по умолчанию 20 минут
timeout: 20m
# Максимальный размер одного сообщения syslog, по умолчанию 20 Мб
max-message-size: 20971520
# Ограничение максимального числа установленных соединений, если 0 - неограниченное число
max-connections: 0
# Режим работы защищённого соединения с источниками с использованием сертификатов TLS
tls:
enabled: true
# Корневые сертификаты выпущенные внутренним либо внешним доверенным Центром Сертификации
certificate-authorities:
- /var/lib/echelon/komrad/certs2/ca.pem
certificate:
# Сертификат, используемый для аутентификации TLS.
certificate: /var/lib/echelon/komrad/certs2/server.pem
# Приватный ключ сертификата TLS
key: /var/lib/echelon/komrad/certs2/server-key.pem
# Опциональная парольная фраза для расшифровки приватного ключа сертификата
key-passphrase: null
# Режим проверки -- 'none', 'full', 'strict', 'certificate'
verification-mode: strict

Сохранить файл с изменениями.

Через терминал открыть конфиг komrad-reactor:

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

В блоке webhook-trusted-ca добавить еще одну строку и прописать путь к сертификату ca.pem в папке certs2:

/etc/echelon/komrad/komrad-reactor.yaml
# Пути к доверенным корневым сертификатам для Webhook HTTP-клиента
webhook-trusted-ca:
- /var/lib/echelon/komrad/certs2/ca.pem

Перезапустить komrad-reactor и komrad-syslog-collector:

sudo systemctl start komrad-syslog-collector 
sudo systemctl restart komrad-reactor

Иерархия с двумя вышестоящими KOMRAD

  1. На машине с KOMRAD отправителем создать папки head1 и head2 для двух комплектов сертификатов для отправки на два KOMRAD:

    sudo mkdir /var/lib/echelon/komrad/head1  sudo mkdir /var/lib/echelon/komrad/head2
  2. На машине с KOMRAD-получателем №1 создать папку для сертификатов для получения инцидентов по syslog с tls и папку для корневого сертификата нижестоящего KOMRAD:

    sudo mkdir /var/lib/echelon/komrad/head1  sudo mkdir /var/lib/echelon/komrad/sub-komrad
  3. На машине с KOMRAD-получателем №2 создать папку для сертификатов для получения инцидентов по syslog с tls и папку для корневого сертификата нижестоящего KOMRAD:

    sudo mkdir /var/lib/echelon/komrad/head2 sudo mkdir /var/lib/echelon/komrad/sub-komrad
  4. Перейти в терминал с KOMRAD-отправителем и отправить корневой сертификат на оба KOMRAD-получателя

    sudo scp /var/lib/echelon/komrad/certs/ca.pem echelon@ip KOMRAD-получателя №1://var/lib/echelon/komrad/sub-komrad/ca.pem

    sudo scp /var/lib/echelon/komrad/certs/ca.pem echelon@ip KOMRAD-получателя №2://var/lib/echelon/komrad/sub-komrad/ca.pem
  5. На машине с KOMRAD-получателем №1 создать папку tls и сгенерировать корневой сертификат:

    sudo mkdir /home/tls

    cd /home/tls/

    sudo komrad-cli certificates create ca
  6. На KOMRAD-получателе №1 сгенерировать серверный сертификат (команда в одну строчку):

    sudo komrad-cli certificates create server --organization “Echelon” localhost 127.0.0.1 $(hostname -I) $(hostname)

    где необходимо прописать ip KOMRAD-отправителя и syslog-коллектора получателя №1. Пример:

    sudo komrad-cli certificates create server --organization “Echelon” localhost 127.0.0.1 10.0.5.131 10.0.5.102 $(hostname -I) $(hostname)
  7. На KOMRAD-получателе №1 сгенерировать клиентский сертификат:

    sudo komrad-cli certificates create client
  8. Перейти в папку tls и отправить клиентские сертификаты и корневой сертификат на KOMRAD-отправитель:

    cd /home/tls

    sudo scp ca.pem client* echelon@ip KOMRAD-отправителя:/var/lib/echelon/komrad/head1/
  9. Переместить все сертификаты в папку head1:

    sudo cp *.pem /var/lib/echelon/komrad/head1
  10. На машине с KOMRAD-получателем №2 создать папку tls и сгенерировать корневой сертификат:

    sudo mkdir /home/tls

    cd /home/tls/

    sudo komrad-cli certificates create ca
  11. На KOMRAD-получателе №2 сгенерировать серверный сертификат (команда в одну строчку):

    sudo komrad-cli certificates create server --organization “Echelon” localhost 127.0.0.1 $(hostname -I) $(hostname)

    где необходимо прописать ip KOMRAD-отправителя и syslog-коллектора получателя №2. Пример:

    sudo komrad-cli certificates create server --organization “Echelon” localhost 127.0.0.1 10.0.5.105 10.0.5.102 $(hostname -I) $(hostname)
  12. На KOMRAD-получателе №2 сгенерировать клиентский сертификат:

    sudo komrad-cli certificates create client
  13. Перейти в папку tls и отправить клиентские сертификаты и корневой сертификат на KOMRAD-отправитель:

    cd /home/tls

    sudo scp ca.pem client* echelon@ip KOMRAD-отправителя:/var/lib/echelon/komrad/head2/
  14. Переместить все сертификаты в папку head2:

    sudo cp *.pem /var/lib/echelon/komrad/head2
  15. В терминале машины, на которой установлен KOMRAD-отправитель открыть файл komrad-server.yaml

    sudo nano /etc/echelon/komrad/komrad-server.yaml
  16. В блоке notificationtransport заполнить поля следующим образом:

    /etc/echelon/komrad/komrad-server.yaml
    transports:

    # Конфигурация отправки инцидентов по syslog в формате CEF.
    # Возможна отправка на протоколы tcp и udp. Возможно включение шифрования передачи данных TLS.

    syslog-cef:
    - name: syslog CEF
    idle-timeout: 30s
    dial-timeout: 30s
    disable: false
    recipient: tcp://ip-KOMRAD-получателя №1:49000
    hostname: komrad-node
    mapping: /etc/echelon/komrad/komrad-server-notification-mapping-syslog-cef.yaml
    cel-filter: ""
    tls:
    TrustedCA: /var/lib/echelon/komrad/head1/ca.pem
    Cert: /var/lib/echelon/komrad/head1/client.pem
    CertKey: /var/lib/echelon/komrad/head1/client-key.pem
    ServerName: ""
    disable: false
    system-pool: false
    framing: delimiter
    - name: syslog CEF2
    idle-timeout: 30s
    dial-timeout: 30s
    disable: false
    recipient: tcp://ip-KOMRAD-получателя №2:49000
    hostname: komrad-node
    mapping: /etc/echelon/komrad/komrad-server-notification-mapping-syslog-cef.yaml
    cel-filter: ""
    tls:
    TrustedCA: /var/lib/echelon/komrad/head2/ca.pem
    Cert: /var/lib/echelon/komrad/head2/client.pem
    CertKey: /var/lib/echelon/komrad/head2/client-key.pem
    ServerName: ""
    disable: false
    system-pool: false
    framing: delimiter
  17. В самом низу файла заполнить поля следующим образом:

    /etc/echelon/komrad/komrad-server.yaml
    # Внешний адрес KOMRAD, использующийся для указания источника инцидента, отправленного во внешние системы.
    external-provider-address: https://ip KOMRAD-отправителя:443
    # Адрес сервиса, использующегося для предоставления внешним системам возможности синхронизировать информацию об инцидентах.
    external-incidents-synchronizer: https://ip KOMRAD-отправителя:3440
  18. Сохранить файл с изменениями (опционально для докеров использовать команды Ctrl+O, Enter, Ctrl+X и выйти из контейнера Exit)

  19. В терминале машины, на которой установлен KOMRAD-отправитель открыть файл komrad-reactor.yaml

    sudo nano /etc/echelon/komrad/komrad-reactor.yaml
  20. В самом начале файла заполнить поля следующим образом:

    /etc/echelon/komrad/komrad-reactor.yaml
    # Настройка адреса для прослушивания входящих соединений по протоколу HTTP.
    ListenHTTP: ip KOMRAD-отправителя:3440

    # Включение шифрования передачи данных Web-сервера
    http-tls:
    disable: false
  21. Сохранить файл с изменениями (опционально для докеров использовать команды Ctrl+O, Enter, Ctrl+X и выйти из контейнера Exit)

  22. Перезагрузить KOMRAD-реактор и KOMRAD-сервер

    sudo systemctl restart komrad-reactor komrad-server
  23. В терминале машины c KOMRAD-получателем №1, открыть файл komrad-sуslog-collector.yaml

    sudo nano /etc/echelon/komrad/komrad-sуslog-collector.yaml
  24. В блоке tls заполнить поля следующим образом:

    /etc/echelon/komrad/komrad-syslog-collector.yaml
    tcp:
    # Таймаут разрыва неактивного соединения, по умолчанию 20 минут
    timeout: 20m
    # Максимальный размер одного сообщения syslog, по умолчанию 20 Мб
    max-message-size: 20971520
    # Ограничение максимального числа установленных соединений, если 0 - неограниченное число
    max-connections: 0
    # Режим работы защищённого соединения с источниками с использованием сертификатов TLS
    tls:
    enabled: true
    # Корневые сертификаты выпущенные внутренним либо внешним доверенным Центром Сертификации
    certificate-authorities:
    - /var/lib/echelon/komrad/head1/ca.pem
    certificate:
    # Сертификат, используемый для аутентификации TLS.
    certificate: /var/lib/echelon/komrad/head1/server.pem
    # Приватный ключ сертификата TLS
    key: /var/lib/echelon/komrad/head1/server-key.pem
    # Опциональная парольная фраза для расшифровки приватного ключа сертификата
    key-passphrase: null
    # Режим проверки -- 'none', 'full', 'strict', 'certificate'
    verification-mode: strict
  25. В терминале машины с KOMRAD-получателем №1 открыть конфиг komrad-reactor

    sudo nano /etc/echelon/komrad/komrad-reactor.yaml
  26. В блоке webhook-trusted-ca добавить еще одну строку и прописать путь к сертификату ca.pem в папке sub-komrad:

    /etc/echelon/komrad/komrad-reactor.yaml
    # Включение шифрования передачи данных Web сервера
    http-tls:
    disable: false

    # Пути к доверенным корневым сертификатам для Webhook HTTP-клиента

    webhook-trusted-ca:

    - /var/lib/echelon/komrad/certs/ca.pem

    - /var/lib/echelon/komrad/sub-komrad/ca.pem
  27. Перезагрузить KOMRAD-реактор и syslog-коллектор

    sudo systemctl restart komrad-syslog-collector komrad-reactor
  28. В терминале машины c KOMRAD-получателем №2, открыть файл komrad-sуslog-collector.yaml

    sudo nano /etc/echelon/komrad/komrad-sуslog-collector.yaml
  29. В блоке tls заполнить поля следующим образом:

    /etc/echelon/komrad/komrad-syslog-collector.yaml
    tcp:
    # Таймаут разрыва неактивного соединения, по умолчанию 20 минут
    timeout: 20m
    # Максимальный размер одного сообщения syslog, по умолчанию 20 Мб
    max-message-size: 20971520
    # Ограничение максимального числа установленных соединений, если 0 - неограниченное число
    max-connections: 0
    # Режим работы защищённого соединения с источниками с использованием сертификатов TLS
    tls:
    enabled: true
    # Корневые сертификаты выпущенные внутренним либо внешним доверенным Центром Сертификации
    certificate-authorities:
    - /var/lib/echelon/komrad/head2/ca.pem
    certificate:
    # Сертификат, используемый для аутентификации TLS.
    certificate: /var/lib/echelon/komrad/head2/server.pem
    # Приватный ключ сертификата TLS
    key: /var/lib/echelon/komrad/head2/server-key.pem
    # Опциональная парольная фраза для расшифровки приватного ключа сертификата
    key-passphrase: null
    # Режим проверки -- 'none', 'full', 'strict', 'certificate'
    verification-mode: strict
  30. В терминале машины с KOMRAD-получателем №2 открыть конфиг komrad-reactor

    sudo nano /etc/echelon/komrad/komrad-reactor.yaml
  31. В блоке webhook-trusted-ca добавить еще одну строку и прописать путь к сертификату ca.pem в папке sub-komrad:

    /etc/echelon/komrad/komrad-reactor.yaml
    # Включение шифрования передачи данных Web сервера
    http-tls:
    disable: false

    # Пути к доверенным корневым сертификатам для Webhook HTTP-клиента

    webhook-trusted-ca:

    - /var/lib/echelon/komrad/certs/ca.pem

    - /var/lib/echelon/komrad/sub-komrad/ca.pem
  32. Перезагрузить KOMRAD-реактор и syslog-коллектор

    sudo systemctl restart komrad-syslog-collector komrad-server
  33. Настройка завершена, теперь вы можете проверить работу иерархии.