Syslog
Конфигурация
### schema: komrad/komrad-syslog-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-syslog-collector/.wal
# no-copy -- когда равен true включается режим оптимизации работы с памятью,
# изменять значение стоит лишь при рекомендации Службы Поддержки.
no-copy: true
# segment-size -- размер одного сегмента WAL, по умолчанию 4 Кб,
# изменять значение стоит лишь при рекомендации Службы Поддержки.
segment-size: 4MB
# max-length - максимальная длина WAL, если равно 0 длина не ограничена.
max-length: 0
collector:
type: syslog
value:
tcp-port: 49000
udp-port: 49050
# Фильтр входящих соединений коллекторов по 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: ""
# включённые парсеры сообщений Syslog
parsers:
- cef
- rfc3164
- rfc5424
# Символ, используемый для разделения сообщений
line-delimiter: "\\n"
# Стратегия извлечения строк из потока данных - разделитель `delimiter` или
# фреймы по RFC 6587 `rfc6587` (https://datatracker.ietf.org/doc/html/rfc6587)
# `delimiter` использует символы, указанные в `line-delimiter` для разделения входящих событий.
# `rfc6587` использует подсчёт октетов и непрозрачный фрейминг согласно RFC 6587
# (https://datatracker.ietf.org/doc/html/rfc6587), при этом для разделения событий
# в непрозрачном фрейминге также используется `line-delimiter`.
framing: delimiter
unix:
# Путь до сокета Unix из которого коллектор будет ожидать события
path: /var/lib/echelon/komrad/komrad-syslog-collector/komrad-syslog.sock
# Группа в которой коллектор будет создавать сокет.
# По-умолчанию это группа под которой запущен syslog-collector.
# В Windows опция недоступна и игнорируется.
group: null
# Режим файла сокета который будет создавать коллектор.
# Ожидаются атрибуты файла либо октет-срока. По-умолчанию 0755.
mode: "0755"
# Максимальный размер сообщения из сокета, по умолчанию 20 Мб
max-message-size: 20971520
# Период времени, за который неактивное соединение будет закрыто. По-умолчанию
# 5 минут
timeout: 30m
# Максимальное число соединений, которые коллектор сможет создать на
# выбранном сокете одновременно.
max-connections: null
# Символ, используемый для разделения сообщений
line-delimiter: "\\n"
# Указывает на то какой фрейминг использовать для разделения входящих сообщений.
# Может быть `delimiter` или `rfc6587`.
framing: delimiter
# Тип сокета - stream или datagram
socket-type: stream
udp:
# Таймаут разрыва неактивного соединения, по умолчанию 20 минут
timeout: 3m
# Максимальный размер одного сообщения syslog, по умолчанию 20 Мб
max-message-size: 20971520
# Опциональный размер буфера чтения, в килобайтах
# При большой нагрузке на коллектор рекомендуется калибровать размер буфера чтения для
# снижения доли пропущенных пакетов.
read-buffer: 512
tcp:
# Таймаут разрыва неактивного соединения, по умолчанию 20 минут
timeout: 3m
# Максимальный размер одного сообщения syslog, по умолчанию 20 Мб
max-message-size: 20971520
# Ограничение максимального числа установленных соединений, если 0 - неограниченное число
max-connections: 0
# Режим работы защищённого соединения с источниками с использованием сертификатов TLS
tls:
enabled: false
# Корневые сертификаты выпущенные внутренним либо внешним доверенным Центром Сертификации
certificate-authorities:
- /var/lib/echelon/komrad/komrad-server/certs/ca.pem
certificate:
# Сертификат, используемый для аутентификации TLS.
certificate: /var/lib/echelon/komrad/komrad-syslog-collector/certs/server.pem
# Приватный ключ сертификата TLS
key: /var/lib/echelon/komrad/komrad-syslog-collector/certs/server-key.pem
# Опциональная парольная фраза для расшифровки приватного ключа сертификата
key-passphrase: null
# Режим проверки -- 'none', 'full', 'strict', 'certificate'
verification-mode: strict
# Список поддерживаемых протоколов TLS, по умолчанию включены протоколы TLSv1.2 и TLSv1.3
supported-protocols:
- TLSv1.2
- TLSv1.3
# Методы шифрования передачи данных между источником и коллектором; доступны:
# 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
cipher-suites: []
# Типы кривых для ECDHE шифров
curve-types: []
# Аутентификация клиента -- `none`, `optional` or `required`
# Когда установлен `certificate_authorities` -- будет по-умолчанию `required`, иначе
# по умолчанию будет `none`.
client-authentication: none
# Список SHA-256 отпечатков сертификатов в формате base64 строки.
# Включает дополнительную валидацию проверенной цепи сертификатов -- коллектор будет проверять,
# что конкретный сертификат использован в цепи доверия.
ca-sha256: null
# Настройки вывода логов приложения.
# Сервис может отправлять логи сразу в несколько целей -- файл, системный журнал ОС, консоль, 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-syslog-collector/.storage
compress: false
# Включить режим синхронной записи каждого результата на диск, по-умолчанию отключено
sync-writes: false
# Путь к базе данных GeoIP
geo-ip:
path: /var/lib/echelon/komrad/komrad-syslog-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: ""
Подключение нового Syslog-коллектора
Предварительные условия:
- Источник событий ИБ поддерживает передачу событий по протоколу Syslog
- Наличие лицензии (разрешения) на использование Syslog-коллектора (см. Обзор пользовательского интерфейса ⇒ О программе ⇒ Информация о программе)
- Отсутствуют какие-либо ограничения на передачу трафика по выбранному порту между источником событий ИБ и сервером KOMRAD
Для установки Syslog-коллектора на определенный узел, необходимо:
-
На узле создать директорию, в которую необходимо переместить deb-пакет
komrad-syslog-collector*.deb
из дистрибутива KOMRAD -
Установить из папки
syslog-collector
командой:sudo apt install ./komrad-syslog-collector*.deb
-
Открыть файл
komrad-syslog-collector.yaml
командой:sudo nano /etc/echelon/komrad/komrad-syslog-collector.yaml
-
Отредактировать параметр
bus-url
, задав IP-адрес сервера KOMRAD:bus:
servers:
- nats://IP_ KOMRAD:3490 -
Сохранить файл и перезагрузить
syslog-collector
командой:sudo systemctl restart komrad-syslog-collector.service
-
Новый Syslog-коллектор отобразится в списке коллекторов в веб-интерфейсе
Syslog-коллектор может принимать изображения в форматах gif / jpeg / png. Они попадут в поле Blob.Image
Для подключения источника нет необходимости устанавливать коллектор на источник, подробнее о подключении источников см. ниже
Подключение новых источников событий
Предварительные условия:
- убедиться, что существует возможность сетевого взаимодействия между KOMRAD Enterprise SIEM и источником событий
Настройка Syslog-коллектора
-
manage ⇒ Настройки коллекторов ⇒ Коллекторы ⇒ Syslog
-
Нажать иконку «Редактировать» ⇒ Настраиваем коллектор:
- При необходимости можно изменить имя коллектора
- Выбрать активные парсеры (также необходимо проверить совместимость)
- Указать необходимые порты
- Указать диапазоны сбора с указанием действия, применяемого к событиям с данных адресов
- При необходимости указать ограничение числа одновременных соединений (0 — не ограничено) и размера входящих сообщений (0 — не ограничено), а также выбрать временную зону и ввести разделитель строки
Для настройки с TLS необходимо переустановить коллектор и выполнить настройки TLS до запуска коллектора
Определение страны или города у syslog-коллектора
У Syslog-коллектора есть возможность определять страну/город из полученного события. Вы можете использовать свой файл со списком соответствия адресов или использовать предоставленный АО "НПО" Эшелон".
Откройте файл komrad-syslog-collector.yaml
командой:
sudo nano /etc/echelon/komrad/komrad-syslog-collector.yaml
Отредактируйте путь к файлу:
# Путь к базе данных GeoIP
geo-ip:
path: /var/lib/echelon/komrad/komrad-syslog-collector/geoip/db.mmdb
Уже заполненные файлы со списком соответствия адресов (для мира и отдельно для России) доступны по ссылке.
После перезапуска коллектора у событий, в которых будут определятся поля IP.Destination
и другие, также будут появляться и дополнительные поля ECS.City
или ECS.Country
.
Для проверки базы maxmind db
необходимо установить
sudo apt install libmaxminddb0 libmaxminddb-dev mmdb-bin
Проверить IP:
mmdblookup --file /usr/share/GeoIP/GeoIP2-Country.mmdb --ip 8.8.8.8
Результат:
{
"country":
{
"geoname_id":
6252001 <uint32>
"iso_code":
"US" <utf8_string>
"names":
{
"de":
"USA" <utf8_string>
"en":
"United States" <utf8_string>
}
}
}
Изменение порта Syslog-коллектора
Решение состоит в том, чтобы добавить в службу следующее (например, запустив systemctl edit inspircd.service
):
[Обслуживание]
AmbientCapabilities=CAP_NET_BIND_SERVICE
Для систем со старой версией systemd возможно лучше пользоваться setcap:
setcap cap_net_bind_service=+ep
Ещё можно посмотреть на:
sudo sysctl -a | grep "net.ipv4.ip_unprivileged_port_start"
По умолчанию там 1024
Можно сделать
sudo sh -c "echo 442 > /proc/sys/net/ipv4/ip_unprivileged_port_start"
Автономный режим работы
У syslog-коллектора есть возможность работы в оффлайн режиме.
Конфигурация возможна через стандартный файл yaml.
Включение оффлайн режима производится изменением параметра offline: true
в файле конфигурации.
По умолчанию все собранные события будут выводиться в консоль вперемешку с собственными логами коллектора.
Возможно настроить вывод событий в файл.
Поддерживается два типа файлов:
JSON разделённый переводами строк, активируется если расширение файла .ndjson если расширение файла любое отличное от ndjson будет записываться нативный бинарный формат пакетов событий КОМРАД
Имя файла задаётся в параметре:
# раскомментировать для записи в формате JSON
#events_file: "local_events.ndjson"
# при записи в бинарный файл рекомендуется указывать путь в формате "папка-файл", тогда коллектор будет писать файлы в выбранную папку, на каждый батч создаётся один файл, поэтому регулировать интенсивность создания новых файлов можно регулированием параметра batching
events_file: "collected/local_events.zst"
Если параметр events_file не указать либо указать пустым - вывод событий будет производиться в консоль.
Конфигурация коллектора:
Возможно включать один плагин либо любой набор плагинов коллектора:
plugins:
- name: regex plugin
id: 1
items:
- body: regex:.*
- body: |
processors:
- module: grok
from: Raw
patterns:
HTTP_ANSWER: "%{IP:ECS.Client.IP} - - %{GREEDYDATA}"
- module: deny
when:
cel:
- "event[\"ECS.Client.IP\"] == \"127.0.0.1\""
- module: grok
from: Raw
patterns:
HTTP_ANSWER: "%{GREEDYDATA} %{WORD:ECS.HTTP.RequestMethod}"
- body: json:all
mapping:
foo:
eventfieldname: ECS.Foo
valuetype: string
Для коллектора потребуются небольшие правки конфигураций.
Так, для syslog-collector необходимо указать адреса портов:
# Использовать при работе только в локальном автономном режиме
collector:
type: syslog
value:
tcp-port: 49000
udp-port: 49050
После запуска коллектора возможно на него отправлять события.
После остановки коллектора записанные бинарные файлы можно перенаправить в SIEM на локальном узле либо на другом узле.
Загрузка собранных файлов в SIEM возможна:
-
Из нативного формата утилитой
komrad-cli
Порядок загрузки файлов в нативном формате в KOMRAD:
for filename in collected/*; do cat ${filename} | komrad-cli nats --tlscert /var/lib/echelon/komrad/certs/client.pem --tlskey /var/lib/echelon/komrad/certs/client-key.pem --tlsca /var/lib/echelon/komrad/certs/ca.pem --user komrad --password pass -s nats://komrad.ru:3490 pub events.all --force-stdin; done
-
Из формата
ndjson
файловым коллектором либо перенаправлением содержимого файла на syslog-collector:
- Перенесите файл на хост с установленным файловым коллектором.
- В настройках файлового коллектора добавьте в качестве источника перенесённый файл.
Удаление
Удалить Syslog-коллектор можно с помощью команды:
sudo dpkg -P komrad-syslog-collector