Классическое размещение WAF в сети — в режиме обратного прокси-сервера, перед защищаемыми веб-cерверами. В зависимости от производителя могут поддерживаться и другие режимы работы — например, прозрачный прокси-сервер, мост или даже пассивный режим, когда продукт работает с репликацией трафика.

Работает WAF по следующим моделям безопасности:

Давайте рассмотрим механизмы работы WAF изнутри. Этапы обработки входящего трафика в большинстве WAF одинаковы. Условно можно выделить пять этапов:

  1. Парсинг HTTP-пакета, который пришел от клиента.
  2. Выбор правил в зависимости от типа входящего параметра.
  3. Нормализация данных до вида, пригодного для анализа.
  4. Применение правила детектирования.
  5. Вынесение решения о вредоносности пакета. На этом этапе WAF либо обрывает соединение, либо пропускает дальше — на уровень приложения.

Все этапы, кроме четвертого, хорошо изучены и в большинстве файрволов одинаковы. О четвертом пункте — правилах детектирования — дальше и пойдет речь. Если проанализировать виды логик обнаружения атак в пятнадцати наиболее популярных WAF, то лидировать будут:

Большинство WAF используют именно механизмы регулярных выражений («регэкспы») для поиска атак. На это есть две причины. Во-первых, так исторически сложилось, ведь именно регулярные выражения использовал первый WAF, написанный в 1997 году. Вторая причина также вполне естественна — это простота подхода, используемого регулярками.

Наиболее популярные техники детекта вредоносной нагрузки в WAF:

Untitled

Напомним, что регулярные выражения выполняют поиск подстроки (в нашем случае — вредоносного паттерна) в тексте (в нашем случае — в HTTP-параметре). Например, вот одна из самых простых регулярок из ModSecurity: