Гарда WAF

Данное руководство описывает процесс настройки сбора и отправки событий программного комплекса Гарда WAF в R-Vision SIEM.

Об источнике

Гарда WAF — это комплексное решение класса WAAP (Web Application and API Protection), которое включает расширенные инструменты для защиты веб-приложений и API от атак и уязвимостей, выявляет аномалии и угрозы нулевого дня.

Настройка Гарда WAF

Предварительные требования

  • Сетевой доступ к БД Гарда WAF.

  • Учетная запись в СУБД с правами на чтение БД Гарда WAF (Сбор событий из БД).

Настройки СУБД PostgreSQL

События Гарда WAF записываются в базу данных waf СУБД PostgreSQL. Для настройки сбора логов из базы данных необходимо к ней подключиться. Чтобы подключиться к БД, используйте специально созданную сервисную учетную запись (далее — УЗ).

Создание учетной записи в СУБД PostgreSQL

Чтобы создать сервисную УЗ, подключитесь к СУБД с правами администратора. Для этого выполните следующие действия на сервере с установленной СУБД:

  1. Выполните следующую команду из-под пользователя postgres:

    sudo -u postgres psql
  2. Создайте сервисную учетную запись, выполнив следующие команды:

    CREATE USER "gwaf_reader";
    ALTER ROLE gwaf_reader WITH PASSWORD 'passw0rd';
  3. Выдайте права на чтение БД:

    GRANT SELECT ON ALL TABLES IN SCHEMA public TO gwaf_reader;

Настройка в R-Vision SIEM

Для сбора событий SIEM необходимо создать конвейер с двумя точками входа — отдельно запрашиваются события аудита и событий безопасности.

Для подключения базы данных PostgreSQL в качестве источника событий в SIEM настройте следующий конвейер:

  1. Добавьте на конвейер первую точку входа со следующими параметрами:

    • Тип точки входа: 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-- порт подключения.

  2. Добавьте на конвейер вторую точку входа со следующими параметрами:

    • Тип точки входа: 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-- порт подключения.

  3. Добавьте на конвейер элемент Нормализатор с правилом RV-N-144. Соедините нормализатор с точками входа.

  4. Добавьте на конвейер элемент Конечная точка типа Хранилище событий. Соедините конечную точку с нормализатором.

  5. Установите конфигурацию конвейера.

Пример конфигурации конвейера:

garda waf pipeline Если настройка выполнена корректно, в хранилище начнут поступать события из PostgreSQL.

Найти события из PostgreSQL в хранилище можно по следующему фильтру:

dproduct = Garda WAF

garda waf events

Настройка секрета database в R-Vision SIEM

Чтобы создать секрет подключения к СУБД:

  1. В интерфейсе R-Vision SIEM перейдите в раздел Ресурсы → Секреты.

  2. Нажмите на кнопку Создать.

  3. В открывшемся окне заполните поля:

    • Название — введите название секрета.

    • Описание (опционально) — введите назначение секрета.

    • Тип секрета — выберите вариант Строка подключения.

    • Строка подключения — укажите данные для подключения к СУБД.

  4. Нажмите на кнопку Создать.

    garda waf secret

Таблица маппинга

Таблица соответствия полей события для всех рассмотренных типов событий представлена по ссылке.