Конфигурация Syslog-коллектора

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

sudo nano /etc/echelon/komrad/komrad-syslog-collector.yaml
tenant_id: 75 (1)
setup_id: komrad-local (2)
sl: 715 (3)
messenger: (4)
    bus-url: nats://localhost:3490 (5)
    cluster-name: polygon (6)
    request-timeout: 50000000000 (7)
    reconnect-timeout: 1000000000 (8)
    wal-flush-timeout: 1000000000 (9)
restart-timeout: 1000000000 (10)
1 идентификатор предприятия;
2 идентификатор установки;
3 метка безопасности, аналог Oracle Security Label;
4 настройка связи с интеграционной шиной;
5 адрес интеграционной шины КОМРАД;
6 имя кластера КОМРАД;
7 таймаут запросов конфигурации в центральном сервере КОМРАД;
8 таймаут перед повторными попытками соединиться с центральным сервером Комрад;
9 таймаут перед выгрузкой накопленных событий в WAL;
10 таймаут между попытками рестарта коллектора во время неустойство сети с центральным сервером КОМРАД;

Настройка пакетного сбора данных

Накопление событий в пакеты для оптимизации скорости передачи информации.

batching:
    timeout: 1000000000 (1)
    limit: 100 (2)
1 предельный интервал времени накопления пакетов, по умолчанию 1 секунда;
2 предельный лимит событий в пакете, по умолчанию - 100;

Настройка write-ahead-log (WAL)

Механизм записи на диск событий в случае разрыва соединения с сетью. События пишутся на диск в сжатом виде, в случае восстановления соединения с сетью сжатые пакеты событий направляются в шину событий КОМРАД. Рекомендуется контролировать объём свободного дискового пространства на узле с коллектором/агентом.

wal:
    path: /var/lib/echelon/komrad/.wal (1)
    no-copy: true (2)
    segment-size: 4MB (3)
    max-length: 0 (4)
1 путь до папки в которой будет храниться конфигурационная информация коллектора/агента. Конфигурация хранится в сжатом, зашифрованном виде. Если путь не указан, будет выбрана папка по умолчанию:
  • для Windows: C:\Program Files\Echelon\komrad\<name>-collector\.wal

  • для Linux: /var/lib/echelon/komrad/<name>-collector/.wal

  • в случае установки нескольких одинаковых коллекторов на один хост необходимо устанавливать раздельные пути до хранилища каждого коллектора, путь к хранилищу одного коллектора не должен быть вложенным в путь до хранилища другого коллектора;

2 true: включает режим оптимизации работы с памятью;
3 размер одного сегмента WAL, по умолчанию 4 Кб;
4 максимальная длина WAL, если равна 0 длина не ограничена;

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

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

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

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

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: старые файлы с логами не удаляются, необходимо производить мониторинг использования диска.

Windowseventlog:

Не рекомендуется включать levels (info, warn, debug, error), это может крайне негативно сказаться на быстродействии и доступности узла.

log:
- filename: windowseventlog
  format: json
  levels:  [panic, fatal]

Настройка дискового хранилища

Конфигурационная информация коллектора/агента

storage:
    path: /var/lib/echelon/komrad/syslog-collector/.storage (1)
    compress: false (2)
    verify-value-checksum: true (3)
    verify-value-checksum-strict: true (4)
    index-cache-size: 0 (5)
    block-cache-size: 0 (6)
    sync-writes: false (7)
1 путь до папки в которой будет храниться конфигурационная информация коллектора/агента. Конфигурация хранится в сжатом, зашифрованном виде. Если путь не указан, будет выбрана папка по умолчанию:
  • для Windows: C:\Program Files\Echelon\komrad\<name>-collector\.wal

  • для Linux: /var/lib/echelon/komrad/<name>-collector/.wal

  • в случае установки нескольких одинаковых коллекторов на один хост необходимо устанавливать раздельные пути до хранилища каждого коллектора, путь к хранилищу одного коллектора не должен быть вложенным в путь до хранилища другого коллектора;

2 сжимать ли сохраняемые данные, по умолчанию нет;
3 проверять ли контрольные суммы на каждом чтении параметра, по умолчанию отключено;
4 проверять ли контрольные суммы на каждой операции, по умолчанию отключено;
5 устанавливает жёсткий лимит для кэша ключей, в инсталляции с ограниченным объёмом памяти можно устанавливать это значение в байтах;
6 размер кэша для блоков в байтах, рекомендуется устанавливать если включена компрессия данных (флаг compression);
7 включить режим синхронной записи каждого результата на диск, по умолчанию отключено;

Параметры защищённых соединений с источниками событий

auth:
    tls: (1)
        disable: true
        server-name: "" (2)
        trusted-ca: "" (3)
        cert: "" (4)
        cert-key: "" (5)
    ssh:
        private-key: "" (6)
        passphrase: "" (7)
        allow-insecure: false (8)
        timeout: 10 (9)
    vault: (10)
        addr: null (11)
        token: null (12)
        tls: null
1 TLS для создания защищённого соединения с источниками событий;
2 имя сервера;
3 корневой сертификат Центра Сертификации;
4 сертификат TLS;
5 приватный ключ сертификата TLS;
6 путь до файла с приватным ключом сертификата;
7 парольная фраза для авторизации по SSH с помощью сертификата при включённой опции использования парольной фразы. Используется для установки SSH соединения с использованием сертификатов;
8 включение данного флага позволяет игнорировать предупреждения безопасности о незащищённом SSH соединении;
9 таймаут SSH соединения, в секундах, по умолчанию 10;
10 настройки для получения секретов и сертификатов из Hashicorp Vault (в komrad-vault);
11 адрес vault;
12 токен доступа к vault;

Путь к базе данных GeoIP

geo-ip:
  path: /home/user/echelon/polygon/komrad/build/syslog-collector/db.mmdb
disable-raw-field: false (1)
offline: false (2)
1 отключить запись исходного текста событий в поле Raw. Большинство регуляторов требуют сохранять текст исходного события. Сохранения исходного текста события влияет на размер БД для хранения событий, возможно повышение требований в разы. Коллекторы WMI, SQL, SNMP, xFLOW всё, что получают от протоколов источников сбора сохраняют в нормализованные поля события. Поля Raw заполняется синтетическими данными - нормализованные поля в формате JSON. Рекомендуется установить disable-raw-field: true для коллекторов типа WMI, SQL, SNMP, xFLOW. Коллекторы Syslog и File имеют доступ к исходному тексту события, отключать запись в Raw для этих коллекторов невозможно;
2 использовать при работе только в локальном автономном режиме;
collector:
    type: syslog
    value:
        ip-filter: (1)
            action: block (2)
            ranges: "" (3)
        parsers: (4)
        - cef
        - rfc3164
        - rfc5424
        line-delimiter: "\\n" (5)
        framing: delimiter (6)
        unix:
            path: /home/user/echelon/polygon/komrad/build/syslog-collector/komrad-syslog.sock (7)
            group: null (8)
            mode: "0755" (9)
            max-message-size: 20971520 (10)
            timeout: 300000000000 (11)
            max-connection: null (12)
            line-delimiter: "\\n" (13)
            framing: delimiter (14)
            socket-type: stream (15)
        udp:
            timeout: 1200000000000 (16)
            max-message-size: 20971520 (17)
            read-buffer: 512 (18)
        tcp:
            timeout: 1200000000000 (19)
            max-message-size: 20971520 (20)
            max-connections: 0 (21)
            tls: (22)
                enabled: false
                certificate-authorities:
                - /var/lib/echelon/komrad/certs/ca.pem (23)
                certificate:
                    certificate: /var/lib/echelon/komrad/syslog-collector/certs/server.pem (24)
                    key: /var/lib/echelon/komrad/certs/server-key.pem (25)
                    key-passphrase: null (26)
                verification-mode: strict (27)
                supported-protocols: (28)
                - TLSv1.2
                - TLSv1.3
                cipher-suites: (29)
                - ECDHE-ECDSA-CHACHA20-POLY1305
                curve-types: (30)
                - P256
                - P384
                - P521
                - X25519
                client-authentication: none (31)
                ca-sha256: null (32)
1 фильтр входящих соединений коллекторов по IP;
2 действие фильтра: разрешить соединения из интервалов и подсетей (allow) или запретить (block). Можно выбрать лишь одну стратегию фильтра;
3 интервалы IP адресов;
4 включённые парсеры сообщений Syslog;
5 символ, используемый для разделения сообщений;
6 ;
7 путь до сокета Unix из которого коллектор будет ожидать события;
8 группа в которой коллектор будет создавать сокет. По умолчанию это группа под которой запущен syslog-collector. В Windows опция недоступна и игнорируется;
9 режим файла сокета который будет создавать коллектор. Ожидается атрибуты файла либо октет-срока. По умолчанию 0755;
10 максимальный размер сообщения из сокета, по умолчанию 20 Мб;
11 период времени, за который неактивное соединение будет закрыто. По умолчанию 5 минут;
12 максимальное число соединений, которые коллектор сможет создать на выбранном сокете одновременно;
13 символ, используемый для разделения сообщений;
14 указывает на то какой фрейминг использовать для разделения входящих сообщений. Может быть delimiter или rfc6587;
15 тип сокета - stream или datagram;
16 таймаут разрыва неактивного соединения, по умолчанию 20 минут;
17 максимальный размер одного сообщения syslog, по умолчанию 20 Мб;
18 опциональный размер буфера чтения, в килобайтах. При большой нагрузке на коллектор рекомендуется калибровать размер буфера чтения для снижения доли пропущенных пакетов;
19 Таймаут разрыва неактивного соединения, по умолчанию 20 минут;
20 максимальный размер одного сообщения syslog, по умолчанию 20 Мб;
21 ограничение максимального числа установленных соединений, если 0 - неограниченное число;
22 режим работы защищённого соединения с источниками с использованием сертификатов TLS;
23 корневые сертификаты выпущенные внутренним либо внешним доверенным Центром Сертификации;
24 сертификат используемый для аутентификации TLS;
25 приватный ключ сертификата TLS;
26 опциональная парольная фраза для расшифровки приватного ключа сертификата;
27 режим проверки: none, full, strict, certificate;
28 список поддерживаемых протоколов TLS, по умолчанию включены протоколы TLSv1.2 и TLSv1.3;
29 доступные методы шифрования передачи данных между источником и коллектором:
  • ECDHE-ECDSA, ECDHE-ECDSA-AES-128-CBC-SHA, ECDHE-ECDSA-AES-128-CBC-SHA256;

  • ECDHE-ECDSA-AES-128-GCM-SHA256, ECDHE-ECDSA-AES-256-CBC-SHA;

  • ECDHE-ECDSA-AES-256-GCM-SHA384, ECDHE-ECDSA-CHACHA20-POLY1305;

  • ECDHE-ECDSA-RC4-128-SHA, ECDHE-RSA-3DES-CBC3-SHA, ECDHE-RSA-AES-128-CBC-SHA;

  • ECDHE-RSA-AES-128-CBC-SHA256, ECDHE-RSA-AES-128-GCM-SHA256;

  • ECDHE-RSA-AES-256-CBC-SHA, ECDHE-RSA-AES-256-GCM-SHA384;

  • ECDHE-RSA-CHACHA20-POLY1205, ECDHE-RSA-RC4-128-SHA, TLS-CHACHA20-POLY1305-SHA256;

  • RSA-RC4-128-SHA, RSA-3DES-CBC3-SHA, RSA-AES-128-CBC-SHA;

  • RSA-AES-128-CBC-SHA256, RSA-AES-128-GCM-SHA256, RSA-AES-256-CBC-SHA;

  • RSA-AES-256-GCM-SHA384, TLS-AES-128-GCM-SHA256, TLS-AES-256-GCM-SHA384;

30 типы кривых для ECDHE шифров;
31 аутентификация клиента: none, optional, required. Когда установлен certificate_authorities, тогда будет по умолчанию required, иначе по умолчанию будет none;
32 список SHA-256 отпечатков сертификатов в формате base64 строки. Включает дополнительную валидацию проверенной цепи сертификатов - коллектор будет проверять, что конкретный сертификат использован в цепи доверия;
        http-endpoint:
            basic-auth: true (1)
            username: komrad (2)
            password: komrad (3)
            response-code: 200 (4)
            reponse-body: "{\"message\": \"success\"}" (5)
            listen-address: 127.0.0.1 (6)
            listen-port: 48000 (7)
            listen-protocol: tcp4 (8)
            url: / (9)
            prefix: json (10)
            content-type: application/json
            secret-header: ""
            secret-value: ""
            hmac-header: ""
            hmac-key: ""
            hmac-type: ""
            hmac-prefix: ""
            preserve-original-event: true (11)
            include-headers: [] (12)
            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:
                concurrency: 0 (13)
                read-buffer-size: 0 (14)
                read-timeout: 15s (15)
                write-timeout: 15s (16)
                idle-timeout: 15s (17)
                max-conns-per-ip: 1000 (18)
                max-requests-per-conn: 0 (19)
                max-request-body-size: 8192 (20)
                request-timeout: 15s
                keepalive-period: 5m
                disable-keepalive: false (21)
                reduce-memory-usage: false (22)
                sleep-when-concurrency-limits-exceeded: 1m (23)
events_file: ""
1 включает опциональную аутентификацию при помощи пары "пользователь: пароль" в стандарте HTTP Basic Auth. Потребуется указать username и password;
2 при включённой опции basic-auth позволяет указать имя пользователя для аутентификации подключенний HTTP клиентов. Потребуется также указать пароль в password;
3 при включённой опции basic-auth позволяет указать пароль пользователя для аутентификации подключенний HTTP клиентов. Потребуется также указать имя пользователя в username;
4 код ответа который будет возвращать HTTP сервер в случае успеха. Стандарты рекомендуют коды ответа в интервале от 200 до 299. По умолчанию 200 ОК;
5 код ответа который будет возвращать HTTP сервер в случае успеха. Стандарты рекуомендуют коды ответа в интервале от 200 до 299. По умолчанию 200 ОК;
6 позволяет задать IP адрес для сервера HTTP в случаях если в системе присутствует несколько сетевых интерфейсов. По умолчанию 127.0.0.1;
7 внешний порт для HTTP сервера. По умолчанию 48000;
8 протокол сервера - TCP IPv4, TCP IPv6. Значения: tcp, tcp4, tcp6;
9 указать путь REST сервера для приёма запросов. По умолчанию: localhost:4800/;
10 префикс под которым будут сохраняться поля в событии в случае если отключен парсинг события с помощью плагинов. По умолчанию JSON;
11 сохранять исходный текст запроса HTTP в поле Raw события ИБ;
12 Списки заголовков HTTP, которые парсер будет извлекать и сохранять в полях собатия. Например, ["content-type"]. Имена заголовков нормализуются автоматически до ["Content-Type"];
13 максимальное число запросов которые сервер может обрабатывать параллельно, по умолчанию 256*1024 = 262 144;
14 размер буфера для каждого HTTP соединения. Рекомендуется изменять в редких случаях когда входящие запросы содержат очень большие заголовки или cookie;
15 максимальное время ожидания окончания чтения входящего HTTP запроса. По умолчанию 5 секунд;
16 максимальное время ожидания окончания записи ответа на HTTP запрос. По умолчанию 5 секунд;
17 максимальное время ожидания окончания следующего запроса в установленном keep-alive HTTP соединении. Если равно 0 будет использоваться значение read-timeout. По умолчанию 5 секунд;
18 максимальное число параллельных клиентских соединений с одного IP адреса. По умолчанию 1000 соединений может быть установлена с одного IP адреса;
19 максимальное число параллельных запросов в одном соединении. В случае превышения лимита соединение будет закрыто после последнего завершённого запроса. В последний запрос добавлен HTTP заголовок ответа "Connection=close". По умолчанию 8 KB;
20 Максимальный размер тела HTTP запроса. Сервер будет отклонять запросы с размером тела больше установленного лимита. По умолчанию 8 KB (8192);
21 Отключить режим keep-alive для активных соединений. Если true - сервер будет закрывать соединения сразу после отправки ответа клиенту;
22 включить режим агрессивного снижения потребления памяти за счёт повышенного потребления процессорного времени. Режим может снизить объём потребляемой памяти на 50% и более. По умолчанию отключено;
23 продолжительность времени, в течение которого сервер погружается в сон и не принимает соединения после достижения ограничения числа соединений;

Проверка работоспособности коллектора Syslog

Проверить работу Syslog-коллектора можно с помощью утилиты netcat:

nc localhost 49000
test message