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

HTTP

Конфигурация

/etc/echelon/komrad/komrad-http-collector.yaml
### schema: komrad/komrad-http-collector/4.1.33
# Идентификатор предприятия
tenant_id: 75
# Идентификатор установки
setup_id: komrad-production
# Метка безопасности, аналог Oracle Security Label
sl: 715
bus:
servers:
- nats://10.0.5.197: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
# Таймаут между попытками рестарта коллектора во время неустойчивой связи с центральным сервером КОМРАД
restart-timeout: 1s
# local_ip: 10.0.0.1
# Настройки пакетного сбора данных - включает накопление событий в пакеты
# для оптимизации скорости передачи информации.
# Например, увеличение параметра timeout до 3s и limit до 20000 позволяет достигать 100 000 EPS.
batching:
# предельный интервал времени накопления пакетов, по умолчанию 1 секунда
timeout: 1s
# предельный лимит событий в пакете, по умолчанию - 100
limit: 1000
# Настройки write-ahead-log (WAL) - механизма записи на диск событий
# в случае разрыва соединения с сетью. События пишутся на диск в сжатом виде, в случае
# восстановления соединения с сетью сжатые пакеты событий направляются в шину событий Комрад.
# Рекомендуется контролировать объем свободного дискового пространства на узле с коллектором/агентом.
wal:
# Путь до папки в которой будет храниться конфигурационная информация коллектора/агента.
# Конфигурация хранится в сжатом, зашифрованном виде.
# Если путь не указан, будет выбрана папка по-умолчанию:
# - для Windows:
# C:\Program Files\Echelon\komrad\<name>-collector\.wal
# - для Linux:
# /var/lib/echelon/komrad/<name>-collector/.wal
# В случае установки нескольких одинаковых коллекторов на один хост необходимо устанавливать
# раздельные пути до хранилища каждого коллектора, путь к хранилищу одного коллектора не должен
# быть вложенным в путь до хранилища другого коллектора.
path: /var/lib/echelon/komrad/komrad-http-collector/.wal
# no-copy -- когда равен true включается режим оптимизации работы с памятью,
# изменять значение стоит лишь при рекомендации Службы Поддержки.
no-copy: true
# segment-size -- размер одного сегмента WAL, по умолчанию 4 Кб,
# изменять значение стоит лишь при рекомендации Службы Поддержки.
segment-size: 4MB
# max-length - максимальная длина WAL, если равно 0 длина не ограничена.
max-length: 0
collector:
type: http
value:
# Фильтр входящих соединений коллекторов по IP
ip-filter:
# действие фильтра -- разрешить соединения из интервалов и подсетей (`allow`) или запретить (`block`)
# можно выбрать лишь одну стратегию фильтра - allow либо block.
action: block
# Интервалы IP адресов
# Пример интервалов: ranges: "128.26.0.0-128.26.255.255,192.168.1.0/24,10.0.1.1"
# Можно использовать разделители - запятая, перевод строки.
ranges: ""
endpoint:
# Включает опциональную аутентификацию при помощи пары "пользователь:пароль"
# в стандарте HTTP Basic Auth. Потребуется указать username и password.
basic-auth: true
# При включённой опции basic-auth позволяет указать имя пользователя для аутентификации
# подключений HTTP клиентов. Потребуется также указать пароль в password.
username: komrad
# При включённой опции basic-auth позволяет указать пароль для аутентификации
# подключений HTTP клиентов. Потребуется также указать имя пользователя в username.
password: komrad
# Код ответа который будет возвращать HTTP сервер в случае успеха.
# Стандарты рекомендуют коды ответа в интервале от 200 до 299. По умолчанию 200 OK.
response-code: 200
# Код ответа который будет возвращать HTTP сервер в случае успеха.
# Стандарты рекомендуют коды ответа в интервале от 200 до 299. По умолчанию 200 OK.
response-body: "{\"message\": \"success\"}"
# Позволяет задать IP адрес для сервера HTTP в случаях если в системе присутствует
# несколько сетевых интерфейсов. По умолчанию 127.0.0.1.
listen-address: 0.0.0.0
# Внешний порт для HTTP сервера. По умолчанию 48000.
listen-port: 48000
# Протокол сервера - TCP IPv4, TCP IPv6 либо слушать и IPv4 и IPv6. Значения -- tcp, tcp4, tcp6.
listen-protocol: tcp4
# Указать путь REST сервера для приёма запросов. По умолчанию / (https://localhost:48000/).
url: /
# Префикс под которым будут сохраняться поля в событии в случае если отключен парсинг события с помощью плагинов.
# По умолчанию JSON (JSON.Foo.Bar = value).
prefix: json
http-methods:
- POST
content-type: application/json
secret-header: ""
secret-value: ""
hmac-header: ""
hmac-key: ""
hmac-type: ""
hmac-prefix: ""
# Сохранять исходный текст запроса HTTP в поле Raw события ИБ.
preserve-original-event: true
# Списков заголовков HTTP которые парсер будет извлекать и сохранять в полях события.
# Например, ["content-type"]. Имена заголовков нормализуются автоматически до ["Content-Type"].
include-headers: []
tls:
disable: true
ServerName: komrad-collector-http-endpoint
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
tuning:
# Максимальное число запросов которые сервер сможет обрабатывать параллельно, по умолчанию 256*1024 = 262 144.
concurrency: 0
# Размер буфера для каждого HTTP соединения. Рекомендуется изменять в редких случаях когда входящие запросы
# содержит очень большие заголовки или cookie.
read-buffer-size: 0
# Максимальное время ожидания окончания чтения входящего HTTP запроса. По умолчанию 5 секунд.
read-timeout: 15s
# Максимальное время ожидания окончания записи ответа на HTTP запрос. По умолчанию 5 секунд.
write-timeout: 15s
# Максимальное время ожидания окончания следующего запроса в установленном keep-alive HTTP соединении.
# Если равно 0 будет использоваться значение read-timeout. По умолчанию 5 секунд.
idle-timeout: 15s
# Максимальное число параллельных клиентских соединений с одного IP адреса. По умолчанию 1 000
# соединений может быть установлена с одного IP адреса.
max-conns-per-ip: 1000
# Максимальное число параллельных запросов в одном соединении.
# В случае превышения лимита соединение будет закрыто после последнего завершённого запроса. В последний запрос будет
# добавлен HTTP заголовок ответа "Connection=close". По умолчанию - 8 KB.
max-requests-per-conn: 0
# Максимальный размер тела HTTP запроса. Сервер будет отклонять запросы с размером тела больше
# установленного лимита. По умолчанию 8 килобайт (8192).
max-request-body-size: 8192
request-timeout: 15s
keepalive-period: 5m
# Отключить режим keep-alive для активных соединений. Если true -- сервер будет закрывать соединение сразу
# после отправки ответа клиенту.
disable-keepalive: false
# Включить режим агрессивного снижения потребления памяти за счёт повышенного потребления процессорного времени.
# Режим может снизить объём потребляемой памяти на 50% и более. По умолчанию отключено.
reduce-memory-usage: false
# Продолжительность времени, в течение которого сервер погружается в сон и не принимает соединения после достижения
# ограничения числа соединений.
sleep-when-concurrency-limits-exceeded: 1m
# Имитация Elasticsearch API коллектором HTTP.
fake-elastic:
enable: false
# Версия Elasticsearch API, имитируемая коллектором.
version: v8
# Включает опциональную аутентификацию при помощи пары "пользователь:пароль"
# в стандарте HTTP Basic Auth. Потребуется указать username и password.
basic-auth: true
# При включённой опции basic-auth позволяет указать имя пользователя для аутентификации
# подключений HTTP клиентов. Потребуется также указать пароль в password.
username: elastic
# При включённой опции basic-auth позволяет указать пароль для аутентификации
# подключений HTTP клиентов. Потребуется также указать имя пользователя в username.
password: pass
# Позволяет задать IP адрес для сервера HTTP в случаях если в системе присутствует
# несколько сетевых интерфейсов. По умолчанию 0.0.0.0.
listen-address: 0.0.0.0
# Внешний порт для HTTP сервера. По умолчанию 9200.
listen-port: 9200
tls:
disable: true
ServerName: komrad-collector-http-elasticsearch
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
tuning:
# Максимальное число запросов которые сервер сможет обрабатывать параллельно, по умолчанию 256*1024 = 262 144.
concurrency: 0
# Размер буфера для каждого HTTP соединения. Рекомендуется изменять в редких случаях когда входящие запросы
# содержит очень большие заголовки или cookie.
read-buffer-size: 0
# Максимальное время ожидания окончания чтения входящего HTTP запроса. По умолчанию 5 секунд.
read-timeout: 15s
# Максимальное время ожидания окончания записи ответа на HTTP запрос. По умолчанию 5 секунд.
write-timeout: 15s
# Максимальное время ожидания окончания следующего запроса в установленном keep-alive HTTP соединении.
# Если равно 0 будет использоваться значение read-timeout. По умолчанию 5 секунд.
idle-timeout: 15s
# Максимальное число параллельных клиентских соединений с одного IP адреса. По умолчанию 1 000
# соединений может быть установлена с одного IP адреса.
max-conns-per-ip: 1000
# Максимальное число параллельных запросов в одном соединении.
# В случае превышения лимита соединение будет закрыто после последнего завершённого запроса. В последний запрос будет
# добавлен HTTP заголовок ответа "Connection=close". По умолчанию - 8 KB.
max-requests-per-conn: 0
# Максимальный размер тела HTTP запроса. Сервер будет отклонять запросы с размером тела больше
# установленного лимита. По умолчанию 1 мегабайт (1048576).
max-request-body-size: 1048576
request-timeout: 15s
keepalive-period: 5m
# Отключить режим keep-alive для активных соединений. Если true -- сервер будет закрывать соединение сразу
# после отправки ответа клиенту.
disable-keepalive: false
# Включить режим агрессивного снижения потребления памяти за счёт повышенного потребления процессорного времени.
# Режим может снизить объём потребляемой памяти на 50% и более. По умолчанию отключено.
reduce-memory-usage: false
# Продолжительность времени, в течение которого сервер погружается в сон и не принимает соединения после достижения
# ограничения числа соединений.
sleep-when-concurrency-limits-exceeded: 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]
# Отправлять критические сообщения в Журнал Windows.
# ВНИМАНИЕ: не стоит включать levels (info, warn, debug, error) в windowseventlog , это может
# крайне негативно сказаться на быстродействии и доступности узла.
# - filename: windowseventlog
# format: json
# levels: [panic, fatal]
log:
- filename: systemd/journal
format: json
filter: ""
levels:
- info
- error
- panic
- fatal
- warn
# Настройки дискового хранилища конфигурационной информации коллектора/агента
storage:
# Путь до папки в которой будет храниться конфигурационная информация коллектора/агента.
# Конфигурация хранится в сжатом, зашифрованном виде.
# Если путь не указан, будет выбрана папка по-умолчанию:
# - для Windows:
# C:\Program Files\Echelon\komrad\<name>-collector\.storage
# - для Linux:
# /var/lib/echelon/komrad/<name>-collector/.storage
# В случае установки нескольких одинаковых коллекторов на один хост необходимо устанавливать
# раздельные пути до хранилища каждого коллектора, путь к хранилищу одного коллектора не должен
# быть вложенным в путь до хранилища другого коллектора.
path: /var/lib/echelon/komrad/komrad-http-collector/.storage
compress: false
# Включить режим синхронной записи каждого результата на диск, по-умолчанию отключено
sync-writes: false
# Путь к базе данных GeoIP
geo-ip:
path: /var/lib/echelon/komrad/komrad-http-collector/geoip/db.mmdb
# Проверка на корректность базы данных geoIP при инициализации geodata.
# Полезная опция, чтобы удостоверится, что база mmdb не содержит ошибок.
# Однако верификация длится от 20 секунд до 2х минут в зависимости от ресурсов
# и размера базы геоданных. По умолчанию опция отключена.
verify-on-start: false
# Отключить запись исходного текста события в поле Raw.
# Большинство требований регулятора требуют сохранять текст исходного события.
# Сохранение исходного текста события влияет на размер БД для хранения событий,
# возможно повышение требований в 2-10 раз.
# Коллекторы WMI, SQL, SNMP, xFLOW всё, что получают от протоколов источников
# сбора сохраняют в нормализованные поля события. Поле Raw заполняется
# синтетическими данными -- нормализованные поля в формате JSON.
# Рекомендуется установить `disable-raw-field: true` для коллекторов типа WMI, SQL, SNMP, xFLOW
# для сохранения затрат на хранение избыточных данных.
# Коллекторы Syslog и File имеют доступ к исходному тексту события, отключать запись в Raw
# для этих коллекторов невозможно.
disable-raw-field: false
# Использовать при работе только в локальном автономном режиме
offline: false
plugins: []
events_file: ""

Подключение нового HTTP-коллектора

Предварительные условия:

Для установки HTTP-коллектора на определенный узел, необходимо:

  1. На узле создать директорию, в которую необходимо переместить deb-пакет komrad-http-collector*.deb из дистрибутива KOMRAD

  2. Установить из папки HTTP-коллектор командой:

    sudo dpkg -i ./komrad-http-collector*.deb
  3. Открыть файл komrad-http-collector.yaml командой:

    sudo nano /etc/echelon/komrad/komrad-http-collector.yaml
  4. Отредактировать параметр bus-url, задав IP-адрес сервера KOMRAD:

    bus-url: nats://IP_KOMRAD:3490
  5. Сохранить файл и перезагрузить HTTP-коллектор командой:

    sudo systemctl restart komrad-http-collector.service
  6. Новый HTTP-коллектор отобразится в списке коллекторов в веб-интерфейсе

Подключение новых источников событий

Предварительные условия:

  • убедиться, что существует возможность сетевого взаимодействия между KOMRAD и источником событий

Настройка HTTP-коллектора

  1. manage ⇒ Настройки коллекторов ⇒ Коллекторы ⇒ HTTP

  2. Нажать иконку «Редактировать» ⇒ Настраиваем коллектор:

    • При необходимости можно изменить имя коллектора
    • Указать порт коллектора
    • Указать протокол
    • Указать фильтрацию входящих соединений по списку IP адресов. Значения списка необходимо разделять запятой, либо начинать с новой строки. Значения могут быть:
      • адрес IPv4, например 192.0.2.3
      • адрес IPv6, например 2001:db8::
      • интервал адресов IPv4, например 10.0.4.0/24
      • интервал адресов IPv4, например 10.0.4.2-10.0.4.28
      • интервал IPv6 адресов, например 2001:db8::/48
      • интервал IPv6 адресов, например 2001:db8::-2001:xe8::
      • тег сканера активов Сканер-ВС, например #office (актуальные адреса IP будут запрошены в Сканер-ВС)
    • Способ фильтрации по IP
    • Включить защиту BasicAuth:
      • Имя пользователя
      • Пароль
    • Строка ответа
      • URL
      • HTTP-методы - фильтрация поступающих запросов по HTTP-методам
    • Извлекать заголовки - список заголовков HTTP, которые необходимо извлечь
    • Сохранять исходный текст запроса в поле Raw в карточке события

Пример:

  • Настройка HTTP-коллектора

Настройка HTTP-коллектора

  • Отправка HTTP запроса в KOMRAD

Отправка HTTP запроса в KOMRAD

Где:

  1. IP-адрес хоста, с которого идет отправка события

  2. Curl-запрос

    curl -X "POST" "http://10.0.5.90:48000/test" -u "komrad:komrad"  -H 'Content-Type: application/json' -d '{"Event": "Привет, мир!"}' -v
  3. Проверка BasicAuth и HTTP-заголовки

  4. Выходные данные

  5. Строка ответа KOMRAD

  • Событие ИБ в KOMRAD

Событие ИБ Событие ИБ продолжение

примечание

Для настройки с TLS необходимо переустановить коллектор и выполнить настройки TLS до запуска коллектора

Удаление

Удалить http-коллектор можно с помощью команды:

sudo dpkg -P komrad-http-collector

Использование в качестве fake-elastic

Теперь в конфиге HTTP коллектора имеется новый блок - "fake-elastic", требующийся для настроек elasticsearch-like сервера для получения событий. Большинство настроек, кроме "enable" и "version", схожи с HTTP endpoint.

Включение elastic search через komrad-http-collector.yaml

  1. Из терминала остановить http-коллектор:

       sudo systemctl stop komrad-http-collector
  2. Комраде перейти во вкладку Администрирование -> Настройки коллекторов -> выбрать http-коллектор в левом меню.

  3. Поставить галочку рядом с существующим http-коллектором

  4. Нажать "Удалить"

  5. В терминале перейти в конфиг-файл http-коллектора sudo nano /etc/echelon/komrad/komrad-http-collector.yaml

  6. Найти блок fake elastic, заполнить следующим образом:

    /etc/echelon/komrad/komrad-http-collector.yaml
    fake-elastic:
    enable: true
    # Версия Elasticsearch API, имитируемая коллектором.
    version: v8
    # Включает опциональную аутентификацию при помощи пары "пользователь:пароль"
    # в стандарте HTTP Basic Auth. Потребуется указать username и password.
    basic-auth: true
    # При включённой опции basic-auth позволяет указать имя пользователя для аутентификации
    # подключений HTTP клиентов. Потребуется также указать пароль в password.
    username: elastic
    # При включённой опции basic-auth позволяет указать пароль для аутентификации
    # подключений HTTP клиентов. Потребуется также указать имя пользователя в username.
    password: pass
    # Позволяет задать IP адрес для сервера HTTP в случаях если в системе присутствует
    # несколько сетевых интерфейсов. По умолчанию 0.0.0.0.
    listen-address: 0.0.0.0
    # Внешний порт для HTTP сервера. По умолчанию 9200.
    listen-port: 9200
    tls:
    disable: true
    ServerName: komrad-collector-http-elasticsearch
    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
    примечание

    Если необходимо включение tls, изменить параметр:

    tls: disable: false

    version - версия имитируемого API Elasticsearch, может принимать значения "v6", "v7" и "v8" версии Beats 8.* совместимы с API версии 8 версии Beats 7.* совместимы с API версии 7 версии Beats 6.* совместимы с API версии 6 Выбирать параметр нужно, отталкиваясь от тестируемой версии beats

    Basic Auth - если указано в yaml, необходимо указывать в конфиге бита

  7. Сохранить файл (Ctrl+O, Ctrl+X)

  8. Перезагрузить http-коллектор:

    sudo systemctl restart komrad-http-collector
  9. В KOMRAD перейти во вкладку "Администрирование" ⇒ "Настройки коллекторов" ⇒ выбрать http-коллектор в левом меню

  10. Включить http-коллектор через переключатель.