Защита от атак¶
Что такое атака и из чего состоит?¶
Атака — один или несколько хитов, сгруппированных по следующим признакам:
-
По одинаковому типу атаки, параметру с вредоносным пэйлоадом и адресу, на который отправлены хиты. При этом хиты могут быть отправлены как с одного IP‑адреса, так и с разных IP‑адресов, а также иметь разные значения вредоносных пэйлоадов в рамках одного типа атаки.
Это основной способ группировки хитов в атаку, применяется всегда.
-
По одинаковому IP‑адресу источника, если настроен соответствующий триггер. При этом значения других параметров хитов могут быть разными.
К хитам типа Brute force, Forced browsing, Resource overlimit, Data bomb и Virtual patch этот способ группировки не применяется.
Если хиты сгруппированы этим способом, для атаки недоступны кнопка Отметить атаку как ложную и опция активной проверки.
Перечисленные способы группировки хитов в атаку не исключают друг друга. Если хиты попадают под обе категории, все они группируются в одну атаку.
Хит — сериализованный вредоносный запрос (исходный вредоносный запрос + метаданные, добавленные нодой Вебмониторэкс). При этом если в запросе обнаружено несколько пэйлоадов разных типов, Вебмониторэкс записывает несколько хитов, в каждом сохраняются пэйлоады одного типа.
Вредоносный пэйлоад — компонент оригинального запроса, включающий в себя следующие элементы:
-
Признак атаки (штамп), обнаруженный в запросе. Если в запросе обнаружено несколько штампов одного типа атаки, в пэйлоад записывается только первый обнаруженный штамп.
-
Контекст, в котором отправлен штамп. Под контекстом подразумевается набор символов, который предшествует штампу и завершает его. В некоторых случаях контекст может быть опущен, так как значение пэйлоада имеет ограниченную длину.
Если запрос является частью поведенческой атаки, в нем нет пэйлоада, так как для обнаружения такой атаки не используются штампы.
Типы атак¶
Все атаки, которые обнаруживает Вебмониторэкс WAF, делятся на группы:
-
Атаки на проверку входных данных
-
Поведенческие атаки
Способ обнаружения атаки зависит от группы, в которую входит атака. Для обнаружения поведенческих атак необходима дополнительная настройка Вебмониторэкс WAF.
Атаки на проверку входных данных¶
К атакам на проверку входных данных относятся такие атаки, как: SQL‑инъекции, межсайтовый скриптинг, удаленное выполнение кода, Path Traversal и другие. Каждому типу атаки характерны определенные комбинации символов, переданные в запросах. Для определения таких атак выполняется синтаксический анализ запросов — синтаксический разбор запросов с целью обнаружения определенных комбинаций символов.
Атаки на проверку входных данных определяет нода Вебмониторэкс с использованием перечисленных инструментов.
Обнаружение атак на проверку входных данных включено по умолчанию для всех клиентов.
Поведенческие атаки¶
К поведенческим атакам относятся разновидности брутфорс атак: перебор паролей, перебор идентификаторов сессии, принудительный просмотр ресурсов веб‑приложения, подстановка учетных данных. Такие атаки характеризуются большим количеством запросов, отправленных на типовой URL за определенный временной промежуток. При этом в запросах передаются разные значения параметров, по которым осуществляется перебор.
Например, на URL для аутентификации пользователей может быть отправлено множество подобных запросов с разными значением password
при переборе пароля:
https://example.com/login/?username=admin&password=123456
Для определения поведенческих атак необходимо не только проанализировать синтаксис запросов, но также провести корреляционый анализ количества запросов и промежутков между запросами. Корреляционный анализ проводится при превышении порога для количества запросов, отправленных на URL директории с файлами ресурса или URL для аутентификации или активации пользователей. Порог определяется, чтобы снизить риск блокировки легитимных запросов (например, когда пользователь несколько раз вводит некорректный пароль от своего аккаунта).
-
Подсчет количества полученных запросов выполняется модулем постаналитики.
-
Сравнение количества полученных запросов и порога для этого значения, а также блокировка запросов выполняются в Вычислительном кластере Вебмониторэкс.
При обнаружении подобных атак блокируется источник запросов (IP‑адрес или IP‑адреса, с которых отправлены запросы, добавляются в черный список).
Для защиты ресурса от поведенческих атак, необходимо настроить порог для срабатывания корреляционного анализа и URL, подверженный поведенческим атакам.
Инструкция для настройки защиты от брутфорса →
Ограничения в обнаружении брутфорса
Вебмониторэкс WAF ищет признаки брутфорс атак только в следующих запросах:
- Запросы, отправленные по протоколу HTTP.
- Запросы, в которых не обнаружены признаки других типов атак. Например, запросы не считаются брутфорс атакой, если:
- В этих запросах обнаружены признаки атак на проверку данных.
- Эти запросы попадают под регулярное выражение, заданное в правиле Создать признак атаки на основе регулярного выражения.
Типы защищаемых ресурсов¶
Вебмониторэкс WAF анализирует как HTTP‑трафик, так и WebSocket‑трафик, который поступает на защищаемый ресурс:
-
Анализ HTTP‑трафика включен по умолчанию.
Вебмониторэкс WAF анализирует HTTP‑трафик как на атаки на проверку входных данных, так и на поведенческие атаки.
-
Анализ WebSocket‑трафика включается дополнительно, с помощью директивы
wallarm_parse_websocket
.Вебмониторэкс WAF анализирует WebSocket‑трафик только на атаки на проверку входных данных.
API защищаемого ресурса может быть спроектирован на основе следующих принципов и протоколов:
-
GraphQL
-
gRPC
-
WebSocket
-
REST API
-
SOAP
-
XML-RPC
-
WebDAV
-
JSON-RPC
Процесс обнаружения атаки¶
Вебмониторэкс WAF использует следующий процесс для обнаружения атаки:
-
Определение формата запроса и парсинг каждой части запроса, как описано в документе по парсингу.
-
Определение эндпоинта, на который отправлен запрос.
-
Применение индивидуальных правил обработки запроса.
-
Принятие решения о признаках атаки в запросе на основе стандартных и индивидуальных правил.
Инструменты для обнаружения атак¶
Для выявления вредоносных запросов, Вебмониторэкс WAF анализирует все запросы к защищаемому ресурсу с помощью следующих инструментов:
- Библиотека libproton
-
Библиотека libdetection
-
Индивидуальные правила обработки запросов
Библиотека libproton¶
Библиотека libproton — основной инструмент для выявления вредоносных запросов. Библиотека использует компонент proton.db, в котором описаны признаки разных типов атак в формате последовательности из токенов (например, union select
для атаки типа SQL‑инъекция). Если в запросе обнаружена последовательность токенов, описанная в proton.db, запрос считается атакой соответствующего типа.
Мы регулярно обновляем proton.db: добавляем последовательности токенов для новых типов атак и актуализируем набор последовательностей токенов для описанных типов атак.
Библиотека libdetection¶
Обзор библиотеки libdetection¶
Библиотека libdetection выполняет дополнительную валидацию атак, обнаруженных с помощью библиотеки libproton:
-
Если признаки атаки подтверждаются, атака блокируется (если нода Вебмониторэкс работает в режиме
block
) и выгружается в Вычислительный кластер Вебмониторэкс. -
Если признаки атаки не подтверждаются, запрос считается легитимным, атака не выгружается в Вычислительный кластер Вебмониторэкс и не блокируется (если нода Вебмониторэкс работает в режиме
block
).
Такой подход реализует двойное обнаружение атак и снижает количество ложных срабатываний.
Типы атак, которые валидирует библиотека libdetection
На данный момент библиотека libdetection валидирует только атаки типа SQL‑инъекций.
Как работает libdetection¶
Особенность библиотеки libdetection заключается в анализе запроса не только по токенам, которые идентифицируют атаку, но и по контексту, в котором отправлен токен.
Библиотека содержит набор цепочек из символов синтаксиса разных типов атак (на данный момент: SQL‑инъекции). Одна цепочка называется контекст. Пример контекста атаки типа SQL‑инъекция:
SELECT example FROM table WHERE id=
Библиотека выполняет синтаксический анализ атаки на соответствие контекстам. Если атака не соответствует контекстам, запрос не считается вредоносным и не блокируется (если нода Вебмониторэкс работает в режиме block
).
Включение libdetection¶
По умолчанию анализ запросов с помощью libdetection отключен. Чтобы снизить количество ложных срабатываний, мы рекомендуем включить анализ.
Чтобы включить анализ:
- Добавьте директиву
wallarm_enable_libdetection on
в блокhttp
,server
илиlocation
конфигурационного файла NGINX. - Добавьте директиву
proxy_request_buffering on
в блокhttp
,server
илиlocation
конфигурационного файла NGINX для корректного анализа тела запросов.
Увеличение в количестве потребляемой памяти
При анализе атак с помощью библиотеки libdetection возможно увеличение объема памяти, потребляемой процессами NGINX и Вебмониторэкс, примерно на 10%.
Тестирование libdetection¶
Для проверки работы библиотеки libdetection вы можете отправить на защищенный ресурс следующий легитимный запрос:
curl "http://localhost/?id=1' UNION SELECT"
-
Анализ запроса с помощью библиотеки libproton определит
UNION SELECT
как признак SQL‑инъекции. Это срабатывание является ложным, так какUNION SELECT
без дополнительных операторов не является признаком атаки. -
Если анализ с помощью библиотеки libdetection включен, признак SQL‑инъекции в запросе не подтвердится, атака не выгрузится в Вычислительный кластер Вебмониторэкс и не заблокируется (если нода Вебмониторэкс работает в режиме
block
).
Индивидуальные правила обработки запросов¶
Клиенты Вебмониторэкс могут задать индивидуальные правила обработки запросов исходя из особенностей защищаемых приложений. Индивидуальные правила могут быть следующих типов:
Индивидуальные правила обработки запросов применяются при анализе запросов вместе со стандартными правилами, описанными в proton.db.
Режим мониторинга и блокировки атак¶
Вы можете использовать Вебмониторэкс WAF в нескольких режимах фильтрации трафика:
-
Режим мониторинга: обнаруживать, но не блокировать атаки.
-
Режим мягкой блокировки: обнаруживать все атаки и блокировать только те, которые отправлены с IP‑адресов из серого списка. Легитимные запросы, отправленные с IP‑адресов из серого списка, блокироваться не будут.
-
Режим блокировки: обнаруживать и блокировать все атаки.
Вебмониторэкс WAF качественно анализирует все запросы и обеспечивает минимальное количество ложных срабатываний. Но каждое защищаемое приложение имеет особенности, поэтому мы рекомендуем проанализировать работу Вебмониторэкс WAF в режиме мониторинга перед включением режима блокировки.
Для управления режимом фильтрации используется директива wallarm_mode
. Более подробное описание настройки режима фильтрации приведено в инструкции по ссылке.
Режим обработки поведенческих атак настраивается отдельно, с помощью специального триггера.
Ложные срабатывания¶
Ложное срабатывание — обнаружение признаков атаки в легитимном запросе или определение легитимной сущности как уязвимости (подробнее о ложных срабатываниях на уязвимости →).
Для обнаружения атак Вебмониторэкс WAF использует стандартный набор правил, который обеспечивает оптимальную защиту приложений с минимальным количеством ложных срабатываний. Но каждое защищаемое приложение имеет особенности, поэтому в легитимных запросах к некоторым приложениям могут быть ошибочно обнаружены признаки атаки. Например: среди запросов к форуму администраторов баз данных может быть обнаружена атака типа SQL‑инъекция, если пользователь добавляет пост с описанием вредоносного SQL‑запроса.
В таких случаях необходимо адаптировать стандартные правила под особенности защищаемого приложения. Для этого вы можете использовать следующие методы:
-
Анализировать атаки, которые потенциально могут быть ложными срабатываниями (ввести в поисковой строке тег
!known
). Если срабатывание действительно ложное, добавить соответствующую отметку для хита или атаки. Вебмониторэкс автоматически создаст правило, которое отключит анализ таких же запросов на обнаруженные признаки атаки. -
Отключить обнаружение определенных типов атак в запросах к приложению или части приложения.
-
Отключить обнаружение признаков атак, характерных только для бинарных данных.
-
Отключить парсеры, которые нода ошибочно применяет к запросам.
Идентификация и обработка ложных срабатываний являются частью тонкой настройки Вебмониторэкс WAF для защиты ваших приложений. Поэтому мы рекомендуем развернуть первую ноду Вебмониторэкс в режиме мониторинга и провести анализ атак, обнаруженных в трафике. Если среди атак будут ложные срабатывания, необходимо адаптировать стандартные правила обнаружения атак под особенности приложения и после этого переключить ноду в режим блокировки.
Управление обнаруженными атаками¶
Все обнаруженные атаки отображаются в Консоли управления Вебмониторэкс → секция События по фильтру attacks
. Вы можете управлять атаками через интерфейс следующим образом:
-
Просматривать и анализировать атаки
-
Повышать приоритет атаки в очереди на активную проверку
-
Отмечать атаки или отдельные хиты как ложные срабатывания
-
Создавать правила для специальной обработки отдельных хитов
Более подробная информация об управлении атаками приведена в инструкции по работе с атаками.
Уведомления об атаках, хитах и вредоносных пэйлоадах¶
Вебмониторэкс позволяет настроить уведомления о попытках атаковать вашу систему. Используя уведомления, вы можете вести мониторинг вредоносного трафика, обнаруженного нодой Вебмониторэкс. Например: оперативно отмечать ложные срабатывания, добавлять в белый список IP‑адреса источников легитимных запросов и блокировать IP‑адреса источников атак.
Чтобы настроить уведомления:
-
Настройте нативные интеграции с системами, в которые необходимо отправлять уведомления. Например: PagerDuty, Opsgenie, Splunk, Telegram или другими.
-
Задайте условия для отправки уведомлений:
-
Чтобы получать уведомления о каждом обнаруженном хите, задайте соответствующее условие в настройках интеграции.
Пример уведомления о хите в формате JSON
[ { "summary": "[Вебмониторэкс] Обнаружен новый хит", "details": { "client_name": "TestCompany", "cloud": "RU", "notification_type": "new_hits", "hit": { "domain": "www.example.com", "heur_distance": 0.01111, "method": "POST", "parameter": "SOME_value", "path": "/news/some_path", "payloads": [ "say ni" ], "point": [ "post" ], "probability": 0.01, "remote_country": "PL", "remote_port": 0, "remote_addr4": "8.8.8.8", "remote_addr6": "", "tor": "none", "request_time": 1603834606, "create_time": 1603834608, "response_len": 14, "response_status": 200, "response_time": 5, "stamps": [ 1111 ], "regex": [], "stamps_hash": -22222, "regex_hash": -33333, "type": "sqli", "block_status": "monitored", "id": [ "hits_production_999_202010_v_1", "c2dd33831a13be0d_AC9" ], "object_type": "hit", "anomaly": 0 } } } ]
-
Чтобы задать порог для количества атак, хитов или вредоносных пэйлоадов и получать уведомления о превышении порога, настройте соответствующие триггеры.
-