Иерархия
В данном разделе описано сопряжение двух KOMRAD и выстраивание иерархии между ними. Связь настраивается как обычный syslog транспорт. Для синхронизации статусов инцидентов потребуется дополнительная настройка в файле конфигурации сервера.
Логика работы
При сопряжении двух KOMRAD, один будет являться вышестоящим, второй — нижестоящим. Настройка производится на нижестоящем KOMRAD. После того, как будет выполнена настройка, указанная в пункте ниже, созданные инциденты в нижестоящем KOMRAD будут попадать в вышестоящий KOMRAD и регистрироваться как инциденты. Определить, что это внешний инцидент в вышестоящем KOMRAD можно по истории инцидента, в событии будет указано external
. В случае изменения статуса в вышестоящем KOMRAD, статус изменится и в нижестоящем KOMRAD.
В случае различия важности директив на подчиненном и вышестоящем KOMRAD сравнивается важность этих директив и присваивает ту, которая выше.
В общем случае схема будет выглядеть так:
При использовании агрегации статусы инцидентов будут обновляться только после закрытия временного окна агрегации.
Иерархия из 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
, необходимо:
-
Остановить syslog-коллектор:
sudo systemctl stop komrad-syslog-collector
-
Удалить 2 папки:
sudo rm -rf /var/lib/echelon/komrad/komrad-syslog-collector/.wal/
sudo rm -rf /var/lib/echelon/komrad/komrad-syslog-collector/.storage/ -
Запустить 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
заполнить поля следующим образом:
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
В самом низу файла заполнить поля следующим образом:
# Внешний адрес 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
В самом начале файла заполнить поля следующим образом:
# Настройка адреса для прослушивания входящих соединений по протоколу 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
заполнить поля следующим образом:
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
:
# Пути к доверенным корневым сертификатам для 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
-
На машине с KOMRAD отправителем создать папки
head1
иhead2
для двух комплектов сертификатов для отправки на два KOMRAD:sudo mkdir /var/lib/echelon/komrad/head1 sudo mkdir /var/lib/echelon/komrad/head2
-
На машине с KOMRAD-получателем №1 создать папку для сертификатов для получения инцидентов по syslog с tls и папку для корневого сертификата нижестоящего KOMRAD:
sudo mkdir /var/lib/echelon/komrad/head1 sudo mkdir /var/lib/echelon/komrad/sub-komrad
-
На машине с KOMRAD-получателем №2 создать папку для сертификатов для получения инцидентов по syslog с tls и папку для корневого сертификата нижестоящего KOMRAD:
sudo mkdir /var/lib/echelon/komrad/head2 sudo mkdir /var/lib/echelon/komrad/sub-komrad
-
Перейти в терминал с 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 -
На машине с KOMRAD-получателем №1 создать папку tls и сгенерировать корневой сертификат:
sudo mkdir /home/tls
cd /home/tls/
sudo komrad-cli certificates create ca -
На 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)
-
На KOMRAD-получателе №1 сгенерировать клиентский сертификат:
sudo komrad-cli certificates create client
-
Перейти в папку tls и отправить клиентские сертификаты и корневой сертификат на KOMRAD-отправитель:
cd /home/tls
sudo scp ca.pem client* echelon@ip KOMRAD-отправителя:/var/lib/echelon/komrad/head1/ -
Переместить все сертификаты в папку
head1
:sudo cp *.pem /var/lib/echelon/komrad/head1
-
На машине с KOMRAD-получателем №2 создать папку
tls
и сгенерировать корневой сертификат:sudo mkdir /home/tls
cd /home/tls/
sudo komrad-cli certificates create ca -
На 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)
-
На KOMRAD-получателе №2 сгенерировать клиентский сертификат:
sudo komrad-cli certificates create client
-
Перейти в папку
tls
и отправить клиентские сертификаты и корневой сертификат на KOMRAD-отправитель:cd /home/tls
sudo scp ca.pem client* echelon@ip KOMRAD-отправителя:/var/lib/echelon/komrad/head2/ -
Переместить все сертификаты в папку
head2
:sudo cp *.pem /var/lib/echelon/komrad/head2
-
В терминале машины, на которой установлен KOMRAD-отправитель открыть файл
komrad-server.yaml
sudo nano /etc/echelon/komrad/komrad-server.yaml
-
В блоке
notificationtransport
заполнить поля следующим образом:/etc/echelon/komrad/komrad-server.yamltransports:
# Конфигурация отправки инцидентов по 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 -
В самом низу файла заполнить поля следующим образом:
/etc/echelon/komrad/komrad-server.yaml# Внешний адрес KOMRAD, использующийся для указания источника инцидента, отправленного во внешние системы.
external-provider-address: https://ip KOMRAD-отправителя:443
# Адрес сервиса, использующегося для предоставления внешним системам возможности синхронизировать информацию об инцидентах.
external-incidents-synchronizer: https://ip KOMRAD-отправителя:3440 -
Сохранить файл с изменениями (опционально для докеров использовать команды
Ctrl+O
,Enter
,Ctrl+X
и выйти из контейнераExit
) -
В терминале машины, на которой установлен KOMRAD-отправитель открыть файл
komrad-reactor.yaml
sudo nano /etc/echelon/komrad/komrad-reactor.yaml
-
В самом начале файла заполнить поля следующим образом:
/etc/echelon/komrad/komrad-reactor.yaml# Настройка адреса для прослушивания входящих соединений по протоколу HTTP.
ListenHTTP: ip KOMRAD-отправителя:3440
# Включение шифрования передачи данных Web-сервера
http-tls:
disable: false -
Сохранить файл с изменениями (опционально для докеров использовать команды
Ctrl+O
,Enter
,Ctrl+X
и выйти из контейнераExit
) -
Перезагрузить KOMRAD-реактор и KOMRAD-сервер
sudo systemctl restart komrad-reactor komrad-server
-
В терминале машины c KOMRAD-получателем №1, открыть файл
komrad-sуslog-collector.yaml
sudo nano /etc/echelon/komrad/komrad-sуslog-collector.yaml
-
В блоке
tls
заполнить поля следующим образом:/etc/echelon/komrad/komrad-syslog-collector.yamltcp:
# Таймаут разрыва неактивного соединения, по умолчанию 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 -
В терминале машины с KOMRAD-получателем №1 открыть конфиг
komrad-reactor
sudo nano /etc/echelon/komrad/komrad-reactor.yaml
-
В блоке
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 -
Перезагрузить KOMRAD-реактор и syslog-коллектор
sudo systemctl restart komrad-syslog-collector komrad-reactor
-
В терминале машины c KOMRAD-получателем №2, открыть файл
komrad-sуslog-collector.yaml
sudo nano /etc/echelon/komrad/komrad-sуslog-collector.yaml
-
В блоке
tls
заполнить поля следующим образом:/etc/echelon/komrad/komrad-syslog-collector.yamltcp:
# Таймаут разрыва неактивного соединения, по умолчанию 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 -
В терминале машины с KOMRAD-получателем №2 открыть конфиг
komrad-reactor
sudo nano /etc/echelon/komrad/komrad-reactor.yaml
-
В блоке
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 -
Перезагрузить KOMRAD-реактор и syslog-коллектор
sudo systemctl restart komrad-syslog-collector komrad-server
-
Настройка завершена, теперь вы можете проверить работу иерархии.