Настройка интеграции с SIEM системами

Для того чтобы настроить отправку журналов в стороннюю SIEM-систему, необходимо в веб-интерфейсе создать шаблон отправки (вкладка «Приложения» -> «Настройки» -> «Асинхронный экспорт транзакций»

-> «Добавить») (см. снимок экрана 135).

image129

Снимок экрана 135 – Создание шаблона отправки журналов в стороннюю SIEM-систему

Примеры шаблонов:

  1. Шаблон LEEF-формата:

'{{time}} {{host_ip}} LEEF:2.0|iBatyr WAF|1.0|{{req.obj_id}}|src={{req.src_ip}}\tspt={{req.src_port}}\tdst={{req.dst_ip}}\tdpt={{req.dst_port}}\trequest_time={{req.time}}\tresponse_time={{resp.time}}\turl={{req.raw_uri}}\tsev={{severity}}\treq_tree.headers.cookie={{req_tree.tree.headers.cookie}}\trequestMethod={{req.method}}\treq_tree.url.path={{req_tree.tree.url.path}}\tdstBytes={{req_tree.tree.headers["content-length"]}}\tsrcBytes={{resp_tree.tree.headers["content-length"]}}'
  1. Шаблон CEF-формата:

'{{req.time.strftime("%b %d %H:%M:%S")}} localhost CEF:0|iBatyr WAF|1.0|{{req.obj_id}}|HTTP Transaction|{{severity}}|src={{req.src_ip}} scrPort={{req.src_port}} dst={{req.dst_ip}} dstPort={{req.dst_port}} request_time={{time}} response_time={{resp.time}} request={{req.raw_uri}} requestCookies={{req_tree.tree.headers.cookie}} requestMethod={{req.method}} file_path={{req_tree.tree.url.path}} in={{req_tree.tree.headers["content_length"]}} out={{resp_tree.tree.headers["content_length"]}}'

Ниже приведено описание параметров и возможные значения полей для отправки:

  1. Режим:

    • ALL – отправляется журнал обо всех транзакциях.

    • BLOCKED – отправляется журнал только о заблокированных транзакциях.

  2. Интервал дообучения – с какой частотой будет осуществляться выборка транзакций из базы данных и их отправка в SIEM.

  3. Адрес:

    • tcp://siem_ip:514 – отправка по tcp-соединению;

    • udp://siem_ip:514 – отправка по udp-соединению;

    • file:///dev/log – запись журнала в локальную файловую систему на узле WAF.

  4. Допустимые плейсхолдеры:

    • time - временная метка транзакции;

    • host_ip - адрес узла, с которого осуществляется отправка журнала;

    • severity – серьезность события;

    • req – данные о запросе:

      • obj_id – идентификатор транзакции на WAF;

      • src_ip – адрес источника запроса;

      • src_port – порт источника запроса;

      • dst_ip – адрес назначения запроса;

      • dst_port – порт назначения запроса;

      • time – временная метка запроса;

      • raw_uri – адрес запрашиваемой страницы;

      • method – HTTP-метод;

      • protocol – протокол передачи.

    • resp – данные об ответе:

      • time – временная метка ответа.

    • req_tree – данные о разобранном дереве запроса:

      • tree:

        • time – временная метка запроса;

        • src_ip – адрес источника запроса;

        • src_port – порт источника запроса;

        • dst_ip – адрес назначение запроса;

        • dst_port – порт назначения запроса;

        • protocol – протокол передачи;

        • method – HTTP-метод;

        • url – адрес запрашиваемой страницы;

        • headers – заголовки.

  5. Cookie – заголовок Cookie.

  6. … – прочие заголовки.

    • resp_tree – данные о разобранном дереве ответа (по умолчанию разбор дерева ответа отключен):

      • tree:

        • time – временная метка ответа;

        • src_port – порт источника запроса;

        • dst_ip – адрес назначения запроса;

        • dst_port – порт назначения запроса;

        • protocol – протокол передачи;

        • method – HTTP-метод;

        • url – адрес запрашиваемой страницы;

        • headers – заголовки ответа.

  7. Cookie:

    • req_decision – решение WAF (пропустить/заблокировать):

      • decision – решение на запросе;

      • rule – сработавшее на запросе правило:

        • name – наименование правила;

        • obj_id – идентификатор правила.

    • resp_decision – сработавшее на ответе правило:

      • decision – решение на ответе;

      • rule – сработавшее на ответе правило:

        • name – наименование правила;

        • obj_id – идентификатор правила.

    • webapp_id – идентификатор защищаемого приложения на WAF;

    • webapp_name – имя приложения;

    • action_id – идентификатор действия позитивной модели бизнес-логики (подробности см. в руководстве оператора);

    • action_name – имя действия модели бизнес-логики;

    • action_parameters – параметры действия модели бизнес-логики;

    • request_session_id – идентификатор сессии запроса;

    • response_session_id – идентификатор сессии ответа.

Так как в качестве шаблонов используется Jinja, то в шаблонах имеется возможность писать выражения следующего вида.

  1. Шаблон:

block_rule_name={{req_decision.rule_name if req_decision.decision ==
"BLOCK" else resp_decision.rule_name}}

Результат:

block_rule_name=Наименование правила блокировки запроса (если причиной была блокировка запроса), или ответа (если причиной была блокировка ответа)

  1. Шаблон:

{% for rule in req_decision.reason.matching_rules %}
rule={{rule.name}} {% endfor %}

Результат:

rule=Параметр не соответствует модели rule=Внедрение javascript-кода в страницы rule=Прочие сигнатуры