Гарда WAF
Данное руководство описывает процесс настройки сбора и отправки событий программного комплекса Гарда WAF в R-Vision SIEM.
Об источнике
Гарда WAF — это комплексное решение класса WAAP (Web Application and API Protection), которое включает расширенные инструменты для защиты веб-приложений и API от атак и уязвимостей, выявляет аномалии и угрозы нулевого дня.
Настройка Гарда WAF
Предварительные требования
-
Сетевой доступ к БД Гарда WAF.
-
Учетная запись в СУБД с правами на чтение БД Гарда WAF (Сбор событий из БД).
Настройки СУБД PostgreSQL
События Гарда WAF записываются в базу данных waf
СУБД PostgreSQL.
Для настройки сбора логов из базы данных необходимо к ней подключиться.
Чтобы подключиться к БД, используйте специально созданную сервисную учетную запись (далее — УЗ).
Создание учетной записи в СУБД PostgreSQL
Чтобы создать сервисную УЗ, подключитесь к СУБД с правами администратора. Для этого выполните следующие действия на сервере с установленной СУБД:
-
Выполните следующую команду из-под пользователя postgres:
sudo -u postgres psql
-
Создайте сервисную учетную запись, выполнив следующие команды:
CREATE USER "gwaf_reader"; ALTER ROLE gwaf_reader WITH PASSWORD 'passw0rd';
-
Выдайте права на чтение БД:
GRANT SELECT ON ALL TABLES IN SCHEMA public TO gwaf_reader;
Настройка в R-Vision SIEM
Для сбора событий SIEM необходимо создать конвейер с двумя точками входа — отдельно запрашиваются события аудита и событий безопасности.
Для подключения базы данных PostgreSQL в качестве источника событий в SIEM настройте следующий конвейер:
-
Добавьте на конвейер первую точку входа со следующими параметрами:
-
Тип точки входа: Database.
-
SQL-запрос:
SELECT ilr.id AS ilr_id, ilr.chain_id, ilr.accuracy, ilr.intervention_hostname, ilr.matched_data, ilr.maturity, ilr.message, ilr.passive, ilr.ref, ilr.rev, ilr.rule_id, ilr.severity, ilr.uri AS ilr_uri, ilr.ver, ilt.tags, icr.cluster_id, icr.cluster_name, icr.instance_id, icr.timestamp as timestamp, icr.worker_process_id, icr.worker_thread_id, icr.client_address, icr.hostname AS icr_hostname, icr.request_id, icr.request_id_hash, icr.server_id, icr.is_blocked, icr.status_code, icr.max_severity, icr.min_severity, icr.user_agent, icr.is_passive, rlr.uri AS request_uri, rlr.method as method, inet_server_addr() AS dvc, 'Garda WAF' as product FROM public.intervention_log_record ilr LEFT JOIN ( SELECT log_id, string_agg(name, ', ') AS tags FROM public.intervention_log_record_tag GROUP BY log_id ) ilt ON ilr.id = ilt.log_id JOIN public.interventions_chain_record icr ON ilr.chain_id = icr.id LEFT JOIN public.request_log_record rlr ON icr.request_id = rlr.request_id WHERE icr.timestamp > CAST(? AS BIGINT) ORDER BY icr.timestamp;
-
База данных: PostgreSQL.
-
Интервал запроса: 20.
-
Поле идентификатора:
-
Ключ:
timestamp
. -
Значение:
1742380463
.
-
-
Строка подключения в секрете:
jdbc:postgresql://DBSERVER:5432/waf?user=gwaf_reader&password=passw0rd
Здесь:
-
DBSERVER
— FQDN или IP-адрес сервера СУБД. -
5432
-- порт подключения.
-
-
-
Добавьте на конвейер вторую точку входа со следующими параметрами:
-
Тип точки входа: Database.
-
SQL-запрос:
SELECT ae.event_id as event_id, ae.cluster_id, ae.server_index, ae.timestamp, ae.username, ae.event_type, ae.entity_type, ae.event, ae.service_name, ae.cluster_name, ae.ip_address, scah.allowed_hostnames as server_name, inet_server_addr() AS dvc, 'Garda WAF' as product, 'Audit' as type_event FROM public.audit_event ae LEFT JOIN public.server_configuration_allowed_hostnames scah ON ae.server_index = scah.server_configuration_id WHERE ae.event_id > CAST(? AS BIGINT) ORDER BY ae.event_id ASC LIMIT 10000;
-
База данных: PostgreSQL.
-
Интервал запроса: 60.
-
Поле идентификатора:
-
Ключ:
event_id
. -
Значение:
1
.
-
-
Строка подключения в секрете:
jdbc:postgresql://DBSERVER:5432/waf?user=gwaf_reader&password=passw0rd
Здесь:
-
DBSERVER
— FQDN или IP-адрес сервера СУБД. -
5432
-- порт подключения.
-
-
-
Добавьте на конвейер элемент Нормализатор с правилом
RV-N-144
. Соедините нормализатор с точками входа. -
Добавьте на конвейер элемент Конечная точка типа Хранилище событий. Соедините конечную точку с нормализатором.
-
Установите конфигурацию конвейера.
Пример конфигурации конвейера:
Если настройка выполнена корректно, в хранилище начнут поступать события из PostgreSQL.
Найти события из PostgreSQL в хранилище можно по следующему фильтру:
|
Настройка секрета database в R-Vision SIEM
Чтобы создать секрет подключения к СУБД:
-
В интерфейсе R-Vision SIEM перейдите в раздел Ресурсы → Секреты.
-
Нажмите на кнопку Создать.
-
В открывшемся окне заполните поля:
-
Название — введите название секрета.
-
Описание (опционально) — введите назначение секрета.
-
Тип секрета — выберите вариант Строка подключения.
-
Строка подключения — укажите данные для подключения к СУБД.
-
-
Нажмите на кнопку Создать.
Таблица маппинга
Таблица соответствия полей события для всех рассмотренных типов событий представлена по ссылке.