Защита от атак¶
Что такое атака и из чего состоит?¶
Атака — один или несколько хитов, которые объединены по типу атаки, параметру с атакующим вектором и адресу, на который они отправлены. При этом хиты могут быть отправлены как с одного IP‑адреса, так и с разных IP‑адресов, а также иметь разные значения атакующих векторов в рамках одного типа атаки.
Хит — сериализованный вредоносный запрос (исходный вредоносный запрос + метаданные, добавленные WAF-нодой).
Атакующий вектор (вектор атаки) — часть запроса, в которой обнаружен признак атаки.
Типы атак¶
Все атаки, которые обнаруживает Валарм WAF, делятся на группы:
-
Атаки на проверку входных данных
-
Поведенческие атаки
Способ обнаружения атаки зависит от группы, в которую входит атака. Для обнаружения поведенческих атак необходима дополнительная настройка Валарм WAF.
Атаки на проверку входных данных¶
К атакам на проверку входных данных относятся такие атаки, как: SQL‑инъекции, межсайтовый скриптинг, удаленное выполнение кода, Path Traversal и другие. Каждому типу атаки характерны определенные комбинации символов (токенов), переданные в запросах. Для определения таких атак выполняется синтаксический анализ запросов — синтаксический разбор запросов с целью обнаружения определенных комбинаций символов.
Атаки на проверку входных данных определяет WAF‑нода с использованием перечисленных инструментов.
Обнаружение атак на проверку входных данных включено по умолчанию для всех клиентов.
Поведенческие атаки¶
К поведенческим атакам относятся разновидности брутфорс атак: перебор паролей, перебор идентификаторов сессии, принудительный просмотр ресурсов веб‑приложения (дирбаст), подстановка учетных данных. Такие атаки характеризуются большим количеством запросов, отправленных на типовой URL за определенный временной промежуток. При этом в запросах передаются разные значения параметров, по которым осуществляется перебор.
Например, на URL для аутентификации пользователей может быть отправлено множество подобных запросов с разными значением password
при переборе пароля:
https://example.com/login/?username=admin&password=123456
Для определения поведенческих атак необходимо не только проанализировать синтаксис запросов, но также провести корреляционый анализ количества запросов и промежутков между запросами. Корреляционный анализ проводится при превышении порога для количества запросов, отправленных на URL директории с файлами ресурса или URL для аутентификации или активации пользователей. Порог определяется, чтобы снизить риск блокировки легитимных запросов (например, когда пользователь несколько раз вводит некорректный пароль от своего аккаунта).
-
Подсчет количества полученных запросов выполняется модулем постаналитики.
-
Сравнение количества полученных запросов и порога для этого значения, а также блокировка запросов выполняется в Облаке Валарм.
При обнаружении подобных атак блокируется источник запросов (IP‑адрес или IP‑адреса, с которых отправлены запросы, добавляются в черный список).
Для защиты ресурса от поведенческих атак, необходимо настроить порог для срабатывания корреляционного анализа и URL, подверженный поведенческим атакам.
Инструкция для настройки защиты от брутфорса →
Типы защищаемых ресурсов¶
Валарм WAF анализирует как HTTP‑трафик, так и WebSocket‑трафик, который поступает на защищаемый ресурс:
-
Анализ HTTP‑трафика включен по умолчанию.
Валарм WAF анализирует HTTP‑трафик как на атаки на проверку входных данных, так и на поведенческие атаки.
-
Анализ WebSocket‑трафика включается дополнительно, с помощью директивы
wallarm_parse_websocket
.Валарм WAF анализирует WebSocket‑трафик только на атаки на проверку входных данных.
API защищаемого ресурса может быть спроектирован на основе технологий и принципов REST, gRPC или GraphQL.
Процесс обнаружения атаки¶
В Валарм WAF используется следующий процесс обнаружения атаки:
-
Определение формата запроса и парсинг каждой части запроса, как описано в документе по парсингу запросов.
-
Определение эндпоинта, на который отправлен запрос.
-
Применение индивидуальных правил обработки запроса, описаннных в файле ЛОМ.
-
Принятие решения о признаках атаки в запросе на основе правил, описанных в proton.db и ЛОМ.
Инструменты для обнаружения атак¶
Для выявления вредоносных запросов, Валарм WAF анализирует все запросы к защищаемому ресурсу с помощью следующих инструментов:
- Библиотека libproton
-
Библиотека libdetection
-
Пользовательские правила детекта
Библиотека libproton¶
Библиотека libproton — основной инструмент для выявления вредоносных запросов. Библиотека использует компонент proton.db, в котором описаны признаки разных типов атак в формате последовательности из токенов (например, union select
для атаки типа SQL‑инъекция). Если в запросе обнаружена последовательность токенов, описанная в proton.db, запрос считается атакой соответствующего типа.
Мы регулярно обновляем proton.db: добавляем последовательности токенов для новых типов атак и актуализируем набор последовательностей токенов для описанных типов атак.
Библиотека libdetection¶
Библиотека libdetection выполняет дополнительную валидацию атак, обнаруженных с помощью библиотеки libproton. Такой подход реализует двойное обнаружение атак и снижает количество ложных срабатываний.
Особеннность библиотеки libdetection заключается в анализе запроса не только по токенам, которые идентифицируют атаку, но и по контексту, в котором отправлен токен. Библиотека содержит набор цепочек из символов синтаксиса разных типов атак (на данный момент: SQL‑инъекции, Удаленное выполнение команд, Path Traversal). Одна цепочка называется контекст. Пример контекста атаки типа SQL‑инъекция: SELECT example FROM table WHERE id=
.
Библиотека выполняет синтаксический анализ атаки на соответствие контекстам. Если атака не соответствует контекстам, запрос не считается вредоносным и не блокируется (если WAF‑нода работает в режиме block
).
По умолчанию библиотека libdetection отключена. Чтобы включить библиотеку, необходимо использовать директиву wallarm_enable_libdetection
.
Увеличение в количестве потребляемой памяти
При анализе атак с помощью библиотеки libdetection возможно увеличение в количестве памяти, потребляемой процессами NGINX и Валарм, примерно на 10%.
Индивидуальные правила обнаружения атак¶
Клиенты Валарм могут настраивать индивидуальные правила обнаружения атак исходя из особенностей защищаемых приложений. Индивидуальные правила обнаружения атак могут быть следующих типов:
-
Игнорировать токены. Позволяет отключить обнаружение указанных признаков атаки (токенов) в определенных запросах. Создается автоматически при добавлении отметки о ложном срабатывании и не отображается в Консоли управления Валарм.
Индивидуальные правила обнаружения атак и другие правила собираются в Локальное Обучающее Множество (ЛОМ) и применяются при анализе запросов вместе со стандартаными правилами, описанными в proton.db. Подробнее о сборке ЛОМа →
Режим мониторинга и блокировки атак¶
Вы можете использовать Валарм WAF в нескольких режимах фильтрации трафика:
-
Режим мониторинга: для обнаружения атак и отображения информации об атаках в Консоли управления Валарм.
-
Режим блокировки: для обнаружения, блокировки атак и отображения информации об атаках в Консоли управления Валарм.
Валарм WAF качественно анализирует все запросы и обеспечивает минимальное количество ложных срабатываний. Но каждое защищаемое приложение имеет особенности, поэтому мы рекомендуем проанализировать работу Валарм WAF в режиме мониторинга перед включением режима блокировки.
Для управления режимом фильтрации используется директива wallarm_mode
. Более подробное описание настройки режима фильтрации приведено в инструкции по ссылке.
Режим обработки поведенческих атак настраивается отдельно, с помощью специального триггера.
Ложные срабатывания¶
Ложное срабатывание — обнаружение признаков атаки в легитимном запросе или определение легитимной сущности как уязвимости (подробнее о ложных срабатываниях на уязвимости →).
Для обнаружения атак Валарм WAF использует стандартный набор правил, который обеспечивает оптимальную защиту приложений с минимальным количеством ложных срабатываний. Но каждое защищаемое приложение имеет особенности, поэтому в легитимных запросах к некоторым приложениям могут быть ошибочно обнаружены признаки атаки. Например: среди запросов к форуму администраторов баз данных может быть обнаружена атака типа SQL‑инъекция, если пользователь добавляет пост с описанием вредоносного SQL‑запроса.
В таких случаях необходимо адаптировать стандартные правила под особенности защищаемого приложения: отключить обнаружение определенных признаков атаки в запросах с определенным адресом, параметром или другими элементами. Тип действия таких правил — Игнорировать токены. Правило Игнорировать токены создается автоматически, когда атака или хит отмечены как ложные срабатывания в Консоли управления Валарм. Подробнее об управлении ложными срабатываниями через Консоль управления Валарм →
Идентификация и обработка ложных срабатываний являются частью тонкой настройки Валарм WAF для защиты ваших приложений. Поэтому мы рекомендуем развернуть первую WAF‑ноду в режиме мониторинга и провести анализ атак, обнаруженных в трафике. Если среди атак будут ложные срабатывания, необходимо проставить для них соответствующие отметки и после этого переключить WAF‑ноду в режим блокировки.
Управление обнаруженными атаками¶
Все обнаруженные атаки отображаются в Консоли управления Валарм → секция События по фильтру attacks
. Вы можете управлять атаками через интерфейс следующим образом:
-
Просматривать и анализировать атаки
-
Повышать приоритет атаки в очереди на перепроверку
-
Отмечать атаки или отдельные хиты как ложные срабатывания
-
Создавать правила для специальной обработки отдельных хитов
Более подробная информация об управлении атаками приведена в инструкции по работе с атаками.