Настроить логирование через Application Load Balancer
Этот способ записывает HTTP-запросы, которые обрабатывает L7-балансировщик, включая результат проверки Smart Web Security. Для подробного анализа сработавших правил и отбора логов по типам правил и вердиктам используйте логирование через Smart Web Security.
Для записи логов Smart Web Security используются сервисы:
- Monium Logs — для логов профилей безопасности. Логи содержат информацию об HTTP-запросах и сработавших правилах, включая WAF и ARL, и сохраняются в проектах Monium.
- Cloud Logging — для логов прокси-серверов и L7-балансировщиков Application Load Balancer. Логи сохраняются в лог-группах.
- Audit Trails — для сбора аудитных событий Smart Web Security. Это записи о событиях безопасности и действиях с ресурсами.
Логи аудита
В Audit Trails есть два типа событий:
- Уровня конфигурации — действия, связанные с конфигурированием ресурсов Yandex Cloud. Например, создание или удаление профиля безопасности.
- Уровня сервисов — действия, которые происходят с ресурсами внутри сервисов Yandex Cloud. Например, срабатывание правила из профиля WAF.
Записывать события можно в бакет Object Storage, проект Monium или поток данных Data Streams.
Логи HTTP-запросов и применения правил
Логи проверки запросов можно записывать через профиль безопасности Smart Web Security в Monium Logs или через L7-балансировщик Application Load Balancer в Cloud Logging. Логирование через профиль безопасности предоставляет больше возможностей для анализа.
Логи профиля безопасности поступают в проект Monium folder__<идентификатор_каталога>, где указан идентификатор каталога с профилем. Логи можно просматривать в интерфейсе Smart Web Security или Monium.
Логи прокси-серверов и L7-балансировщиков поступают в выбранную лог-группу Cloud Logging. Логи прокси-сервера также доступны в интерфейсе Smart Web Security, а балансировщика — в интерфейсе Application Load Balancer.
Анализ логов позволяет настраивать и отслеживать работу Smart Web Security:
- Тестировать работу правил безопасности, WAF и ARL в режиме Только логирование (dry run). В этом режиме запросы пользователей не блокируются, но в логи записывается информация о срабатывании правил.
- Просматривать количество заблокированных и пропущенных запросов, оценивать и корректировать работу правил.
- Просматривать подробную информацию о запросе, выявлять ложноположительные срабатывания.
В некоторых случаях сервис может блокировать трафик при атаках. В логах для таких блокировок будет указана отметка сервисного правила: sws_service_rule.
Работа с логами
Чтобы начать работать с логами Smart Web Security:
Включить логирование
Примечание
Для управления логированием в L7-балансировщике нужны роли:
- alb.editor на каталог с балансировщиком;
- logging.writer на лог-группу, в которую передаются логи.
Для просмотра логов нужна роль logging.viewer на лог-группу.
-
В консоли управления
выберите каталог с балансировщиком. -
Перейдите
в сервис Application Load Balancer. -
В списке выберите балансировщик, к которому привязан профиль безопасности.
-
Нажмите
и выберите Редактировать. -
В блоке Настройки логов:
- Включите опцию Запись логов.
- Выберите лог-группу Cloud Logging, в которую будут записываться логи балансировщика, или создайте новую.
- (Опционально) Чтобы уменьшить объем логов, нажмите Добавить правило и настройте правило отбрасывания.
-
Нажмите Сохранить.
Другие способы включения логов описаны в разделе Настроить запись логов L7-балансировщика.
Настройте запись событий Smart Web Security в бакет Object Storage. Перед созданием трейла подготовьте бакет и сервисный аккаунт.
- В консоли управления
выберите каталог, в котором находится профиль Smart Web Security. - Перейдите
в сервис Audit Trails. - Нажмите Создать трейл.
- В поле Приёмник логов выберите Object Storage.
- В поле Бакет выберите подготовленный бакет.
- Отключите Сбор логов с управляющего слоя.
- В блоке Сбор логов со слоя данных очистите список и выберите сервис Smart Web Security.
- В блоке Сервисный аккаунт выберите подготовленный аккаунт с ролями storage.uploader на бакет и audit-trails.viewer на каталог с профилем безопасности.
- В блоке Общая информация введите имя трейла, например
trail-sws. - Нажмите Создать.
Будут записываться все события Smart Web Security уровня сервисов в текущем каталоге. События уровня конфигурации записываться не будут.
Другие способы включения записи событий описаны в разделе Создание трейла для загрузки аудитных логов.
Просмотреть логи
-
В консоли управления
выберите каталог с лог-группой. -
Перейдите
в сервис Cloud Logging. -
На вкладке Группы выберите лог-группу, в которую передаются логи балансировщика.
-
Перейдите на вкладку Логи.
-
Задайте период поиска логов.
-
Введите фильтр на языке фильтрующих выражений и нажмите Enter. Например, чтобы отобрать логи конкретного балансировщика:
resource_type = "alb.loadBalancer" and resource_id = "<идентификатор_балансировщика>" -
Чтобы посмотреть содержимое записи, разверните ее.
Логи также можно просмотреть в интерфейсе Application Load Balancer.
Примеры фильтрации логов
Одна запись соответствует одному HTTP-запросу к L7-балансировщику. Результат проверки Smart Web Security находится в блоке json_payload.smartwebsecurity. Описание полей приведено в справочнике логов Application Load Balancer.
Условия ниже можно объединить с фильтром по балансировщику с помощью and.
Фильтры для активных правил
Чтобы отобрать запросы по результату проверки, используйте условия:
-
Запросы, заблокированные базовыми правилами:
json_payload.smartwebsecurity.matched_rule.rule_type = RULE_CONDITION and json_payload.smartwebsecurity.matched_rule.verdict = DENY -
Запросы, направленные правилами Smart Protection на капчу:
json_payload.smartwebsecurity.matched_rule.rule_type = SMART_PROTECTION and json_payload.smartwebsecurity.matched_rule.verdict = CAPTCHA -
Запросы, заблокированные Cloud WAF:
json_payload.smartwebsecurity.matched_rule.rule_type = WAF and json_payload.smartwebsecurity.matched_rule.verdict = DENY -
Запросы, заблокированные ARL:
json_payload.smartwebsecurity.advanced_rate_limiter.verdict = DENY -
Запросы, заблокированные конкретным правилом ARL, например
arl-rule-1:json_payload.smartwebsecurity.advanced_rate_limiter.verdict = DENY and json_payload.smartwebsecurity.advanced_rate_limiter.applied_quota_name = "arl-rule-1"
Фильтры для правил в режиме логирования
Для правил в режиме Только логирование используйте следующие условия:
-
Запросы, которые правила Smart Protection направили бы на капчу:
json_payload.smartwebsecurity.dry_run_matched_rule.rule_type = SMART_PROTECTION and json_payload.smartwebsecurity.dry_run_matched_rule.verdict = CAPTCHA -
Для ARL проверьте поле
json_payload.smartwebsecurity.advanced_rate_limiter.dry_run_exceeded_quota_names— список правил, лимиты которых превышены. Найдите нужное имя правила в этом списке.
В режиме Только логирование правила ARL не блокируют запросы, поэтому вердикт DENY не подходит для их поиска. Если список dry_run_exceeded_quota_names пуст, лимиты правил в этом режиме не превышены.
Для просмотра логов нужна роль storage.viewer на бакет.
- В консоли управления
выберите каталог с бакетом. - Перейдите
в сервис Object Storage. - Выберите бакет, указанный в настройках трейла.
- На вкладке Объекты найдите файлы за нужную дату. Путь к файлу содержит идентификатор трейла и дату записи.
- Скачайте нужный JSON-файл и откройте его в текстовом редакторе.
Каждый файл содержит массив событий. Чтобы найти определенное событие Smart Web Security, ищите значение поля event_type в формате yandex.cloud.audit.smartwebsecurity.<имя_события>.