SQL
Предварительные условия:
- на узле-источнике сервис-источник записывает журналы в одну из следующих СУБД:
- PostgreSQL
- MySQL
- SQLite
- ClickHouse
- Oracle
- отсутствуют какие-либо ограничения по подключению к выбранной СУБД на узле-источнике событий ИБ с сервера KOMRAD
- имеется информация о структуре базы данных и таблице, в которую записываются события, а также имеется подготовленный пользователь с необходимыми правами.
Конфигурация
### schema: komrad/komrad-sql-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-sql-collector/.wal
# no-copy -- когда равен true включается режим оптимизации работы с памятью,
# изменять значение стоит лишь при рекомендации Службы Поддержки.
no-copy: true
# segment-size -- размер одного сегмента WAL, по умолчанию 4 Кб,
# изменять значение стоит лишь при рекомендации Службы Поддержки.
segment-size: 4MB
# max-length - максимальная длина WAL, если равно 0 длина не ограничена.
max-length: 0
# Настройки вывода логов приложения.
# Сервис может отправлять логи сразу в несколько целей -- файл, системный журнал ОС, консоль, 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-sql-collector/.storage
compress: false
# Включить режим синхронной записи каждого результата на диск, по-умолчанию отключено
sync-writes: false
# Путь к базе данных GeoIP
geo-ip:
path: /var/lib/echelon/komrad/komrad-sql-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: ""
Подключение нового SQL-коллектора
Предварительные условия:
- Наличие лицензии (разрешения) на использование SQL-коллектора (см. Обзор пользовательского интерфейса ⇒ О программе ⇒ Информация о программе)
- Отсутствуют какие-либо ограничения на передачу трафика по выбранному порту между источником событий ИБ и сервером KOMRAD
Для установки SQL-коллектора на определенный узел, необходимо:
-
На узле создать директорию, в которую необходимо переместить deb-пакет
komrad-sql-collector*.deb
из дистрибутива KOMRAD -
Установить из папки
komrad-sql-collector
командой:sudo dpkg -i ./komrad-sql-collector*.deb
-
Открыть файл
komrad-sql-collector.yaml
командой:sudo nano /etc/echelon/komrad/komrad-sql-collector.yaml
-
Отредактировать параметр
bus-url
, задав IP-адрес сервера KOMRAD:bus-url: nats://IP_ KOMRAD:3490
-
Сохранить файл и перезагрузить
sql-collector
командой:sudo systemctl restart komrad-sql-collector.service
-
Новый SQL-коллектор отобразится в списке коллекторов в веб-интерфейсе
Подключение новых источников событий
Предварительные условия:
- Необходимо узнать IP-адрес, порт, а также имя пользователя и пароль к базе данных, с которой будет проводиться сбор событий
- Отсутствуют какие-либо ограничения на передачу трафика по выбранному порту между источником событий ИБ и сервером KOMRAD
Расположение: manage ⇒ Настройки коллекторов ⇒ Коллекторы ⇒ SQL
Действия:
- Кликнуть по SQL-коллектору
- При необходимости задать имя коллектору c помощью кнопки «Редактировать» и сохранить изменения
- На вкладке «Источники» нажать на кнопку «Добавить». Справа появится форма для создания нового источника для SQL-коллектора
- Выбрать «Шаблон» из доступных
- Заполнить поле «Название»
- Отредактировать «Строка подключения» для вашего источника (данные для заполнения указаны в предварительных условиях, см. выше)
- Выбрать тип базы данных
- При необходимости можно изменить инициализирующий и регулярный запросы
- Записать название поля-счётчика, по которому будет производится проверка появления новых записей в БД
- Выбрать необходимую частоту запросов к БД (crontab time format)
- Включить коллектор, если он был выключен или перезагрузите, если он был включен
- Нажать на «Проверить», если проверка прошла успешно, т.е. в графическом интерфейсе отобразилось событие информационной безопасности, то нажать на кнопку «Сохранить»
Добавление шаблона
В настройках SQL-коллектора есть возможность добавлять шаблоны в базу данных.
Для этого необходимо выполнить следующие действия:
-
Подключиться к PostgreSQL
sudo su - postgres
-
Выбрать нужную базу
psql komrad-preferences
-
Вставить свой шаблон
INSERT INTO preferences.sql_templates
("name", "version", vendor, dialect, connection_string, initial_query, regular_query, counter)
VALUES('Oracle - свой', 'v4.5.1-alpha.64', 'Oracle', 'Oracle', 'sqlserver://oracle:pass@localhost?database=mine',
'SELECT MY_ID
FROM
(select *
from KOMRAD_ORACLE
order by MY_ID desc)
WHERE ROWNUM = 1',
'SELECT MY_ID,
EVENT
FROM KOMRAD_ORACLE
WHERE MY_ID > :1
ORDER BY MY_ID', 'MY_ID');(
VALUES
в запросе можно менять на валидные данные) -
Перейти в KOMRAD на вкладку "Администрирование" ⇒ "Настройки коллекторов" ⇒ "SQL" ⇒ В настройки SQL-коллектора
-
Во вкладке "Источники" нажать
Добавить
-
В поле "Тип БД" выбрать "Oracle"
Удаление
Удалить sql-коллектор можно с помощью команды:
sudo dpkg -P komrad-sql-collector
Вызов PREPARE запросов в SQL-коллекторе
На примере PostgreSQL 11 Astra
Вручную запустить в БД PREPARE
PREPARE au1 as (
select * from audit.logged_actions where event_id > $1 limit 100
);
Инициализирующий, получаем значение счётчика для последней записи:
select * from audit.logged_actions ORDER BY event_id DESC limit 1;
Регулярный:
Запускается PREPARED
, подставляется значение счётчика, который коллектор запоминает после каждого успешного запуска execute au1($1)