К содержанию

Wiki · Вредоносные технологии

WAF (Web Application Firewall)

WAF (Web Application Firewall, межсетевой экран для веб-приложений) – это фильтр, который стоит между посетителями и сайтом и проверяет каждый HTTP-запрос. Запросы, похожие на атаку, он блокирует до того, как их обработает код сайта.

Запросы к любому сайту шлют и люди, и программы. Боты круглые сутки перебирают пароли к админке, подставляют в параметры служебные слова SQL и проверяют известные уязвимости CMS. Большая часть этих попыток бьёт мимо. Но достаточно одной дыры в модуле, который давно не обновляли. WAF отсекает типовые атаки на входе и даёт время исправить код.

Что WAF проверяет в каждом запросе

WAF читает запрос целиком: адрес, параметры, заголовки, cookies, тело формы. Затем сверяет его с правилами и решает, пропустить запрос, заблокировать или только записать в журнал.

  • Сигнатуры: шаблоны известных атак, например служебные конструкции SQL в параметре или тег скрипта в поле формы.
  • Оценка аномалий: каждое подозрительное совпадение добавляет баллы, и запрос блокируется, когда сумма превышает порог. Так устроен популярный набор правил OWASP Core Rule Set.
  • Белый список: для отдельных страниц описывают, какие параметры и значения допустимы, всё остальное отклоняется.
  • Лимиты: слишком частые запросы с одного адреса блокируются на время.

Обычно в ответ на заблокированный запрос WAF отдаёт код 403. Посетитель видит страницу «доступ запрещён», а в журнале остаётся запись с причиной.

Схема работы WAF: обычный запрос посетителя проходит к сайту, запрос с признаками SQL-инъекции блокируется с ответом 403
Где стоит WAF и что он делает

Чем WAF отличается от файрвола и защиты от DDoS

ИнструментЧто проверяетОт чего защищает
Сетевой файрволадреса, порты, протоколызакрывает лишние порты сервера, например доступ к базе снаружи
Защита от DDoSобъём и характер трафикаот потока запросов, который перегружает канал и сервер
WAFсодержимое HTTP-запросовот SQL-инъекций, XSS, перебора паролей, эксплойтов к CMS

Эти инструменты дополняют друг друга. Облачные сервисы защиты часто продают их вместе, но внутри это разные механизмы.

Какие бывают WAF

  • Облачный. Трафик сайта направляют через сеть провайдера, обычно сменой DNS-записей. Ничего не нужно ставить на сервер, но придётся доверить провайдеру расшифровку HTTPS.
  • На сервере. Модуль веб-сервера, например ModSecurity с правилами OWASP Core Rule Set. Полный контроль, но настройка и обновление правил на вас или на хостинге. Без свежих правил WAF не знает о новых уязвимостях CMS.
  • Встроенный в CMS. В 1С-Битрикс это «Проактивный фильтр» модуля «Проактивная защита». Он умеет обезвреживать опасные данные, удалять их или добавлять адрес атакующего в стоп-лист.
Схема видов WAF: облачный через сеть провайдера, на сервере как модуль веб-сервера, встроенный в CMS как Проактивный фильтр 1С-Битрикс
Какие бывают WAF

Как внедрить WAF и ничего не сломать

Главный риск WAF – ложные срабатывания. Правило, которое ловит атаки, может заблокировать менеджера, вставившего в редактор HTML-код, или обмен с 1С, где в данных встречаются похожие конструкции. Поэтому WAF включают по шагам:

  1. Запустите в режиме наблюдения: WAF только пишет в журнал и ничего не блокирует.
  2. Через неделю-две разберите журнал. Отделите реальные атаки от ложных срабатываний.
  3. Добавьте исключения для админки, обмена с 1С, платёжных уведомлений. В «Проактивном фильтре» Битрикса для этого есть маски исключений. Исключение делают на одно правило и одну страницу, а не на весь сайт или всю админку.
  4. Включите блокировку, не оставляя режим наблюдения навсегда, и проверьте основные сценарии: заявку, заказ, оплату, вход в личный кабинет.
  5. Проверьте, что роботы поисковиков получают страницы с кодом 200, а не 403. В Яндекс Вебмастере для этого есть инструмент проверки ответа сервера.

В ModSecurity режим наблюдения включается одной директивой (пример на условных данных):

# сначала только запись в журнал
SecRuleEngine DetectionOnly
# после разбора ложных срабатываний
# SecRuleEngine On
Пять шагов внедрения WAF: режим наблюдения, разбор журнала, исключения, включение блокировки, проверка доступа поисковых роботов
Как внедрить WAF без поломок

Чего WAF не умеет

WAF ловит известные шаблоны. Ошибку в логике сайта, например доступ к чужому заказу по номеру в адресе, он не увидит: запрос выглядит совершенно нормально. Опытный атакующий может переписать запрос так, чтобы обойти правила. Поэтому WAF не заменяет исправления кода, а прикрывает сайт, пока уязвимость не закрыли. Такой приём называют виртуальным патчем.

Когда WAF нужен в первую очередь

  • На сайте есть личный кабинет, онлайн-оплата или база клиентов.
  • Ядро CMS или модули нельзя быстро обновить, например из-за старых доработок.
  • На сайте много самописного кода, который никто не проверял на уязвимости.
  • Сайт уже взламывали или в журнале видно много попыток атак.

Для простой визитки без форм и личного кабинета обычно хватает своевременных обновлений и встроенных средств CMS.

Подробнее о самих атаках, от которых защищает WAF, читайте в статьях SQL-инъекция и XSS атака.

Обмен с 1С, режим наблюдения и HTTPS: что уточняют про WAF

Для чего нужен WAF, если сайт регулярно обновляют?

Чтобы закрыть промежуток между появлением уязвимости и её исправлением. Обновление ядра выходит не в тот же день, а самописные модули никто не обновляет вовсе. Фильтр на входе прикрывает сайт, пока разработчик готовит исправление.

Справится ли WAF с DDoS-атакой?

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

Какой WAF выбрать для сайта на 1С-Битрикс?

Начните со встроенного «Проактивного фильтра» из модуля «Проактивная защита»: его достаточно включить и настроить исключения. Облачный или серверный WAF добавляют, когда на сайте появляются личный кабинет, онлайн-оплата или много самописного кода.

Почему после включения WAF перестал работать обмен с 1С?

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

Что видит посетитель, которого заблокировал WAF?

Страницу с отказом в доступе и кодом 403. Если жалуется живой клиент, уточните время и действие, найдите запись в журнале и поправьте правило.

Сколько держать WAF в режиме наблюдения?

Обычно неделю-две: за это время журнал покажет, какие правила срабатывают на обычную работу менеджеров, оплату и обмен с 1С. Затем добавляют исключения и включают блокировку. Пока идёт наблюдение, атаки только записываются, но доходят до сайта.

Как облачный WAF проверяет запросы, если сайт работает по HTTPS?

Он расшифровывает трафик у себя: защищённое соединение посетителя заканчивается на стороне провайдера, а на ваш сервер уходят уже проверенные запросы. Значит, через провайдера проходят данные из форм, включая телефоны и почты. Выбирайте его так же внимательно, как хостинг, и уточните, где стоят его серверы: для 152-ФЗ это важно.

Чем ModSecurity отличается от OWASP Core Rule Set?

ModSecurity – движок, модуль веб-сервера, который читает запросы и применяет к ним правила. Core Rule Set – готовый набор таких правил от OWASP, построенный на оценке аномалий. Движок без правил почти ничего не ловит, а набор правил обновляют отдельно от него.

Кто следит за WAF после настройки?

Тот, кто отвечает за сайт: ваш разработчик или техническая поддержка. Работа регулярная: разобрать журнал, обновить правила, добавить исключения после доработок, которые меняют формы или обмен. Без этого WAF со временем начинает мешать сайту или пропускать новые атаки.

Подобрать и настроить WAF под ваш сайт поможет услуга информационная безопасность сайтов. Следить за журналом и обновлениями возьмётся техническая поддержка.

Документация OWASP, ModSecurity, 1С-Битрикс и Вебмастера

Остались вопросы по теме «WAF (Web Application Firewall)»?

Напишите нам в Telegram или MAX. Ответит специалист, который отвечает за эту тему, или руководитель проектов в рабочее время.

Станислав БарановОтвечает по темеСтанислав БарановРуководитель направления безопасности

Тарифы

Тарифы по теме

Все тарифы →
84 000 ₽/⁠мес

Пакет 20 часов в месяц для работающего сайта: следим за доступностью, делаем копии, восстанавливаем после сбоев и выкладываем контент.

Задачи
Ждем от заказчика
Обновления
Нет
  • Исправление ошибок на сайте
  • Небольшие доработки
  • Размещение контента
  • Учёт часов по каждой задаче
  • Ежемесячный отчёт о задачах
  • Резервная копия перед крупными правками
  • Мониторинг работоспособности сайта
  • Регулярное резервное копирование
164 000 ₽/⁠мес

Пакет 40 часов в месяц: сайт работает стабильно, а команда с дизайнером и разработчиками делает новые функции по вашим задачам.

Задачи
Ждем от заказчика
Обновления
Да
  • Исправление ошибок на сайте
  • Небольшие доработки
  • Размещение контента
  • Учёт часов по каждой задаче
  • Ежемесячный отчёт о задачах
  • Резервная копия перед крупными правками
  • Мониторинг работоспособности сайта
  • Регулярное резервное копирование
320 000 ₽/⁠мес

Пакет 80 часов в месяц для сайтов, через которые идут продажи: защита, обновления Bitrix и PHP, A/B-тесты, а задачи на улучшение предлагаем сами.

Задачи
Ждем от заказчика и предлагаем сами
Обновления
Да
  • Исправление ошибок на сайте
  • Небольшие доработки
  • Размещение контента
  • Учёт часов по каждой задаче
  • Ежемесячный отчёт о задачах
  • Резервная копия перед крупными правками
  • Мониторинг работоспособности сайта
  • Регулярное резервное копирование

Проверим ваш сайт бесплатно

Экспресс-аудит за 24 часа: скорость, индексация, мета-теги, коммерческие факторы и цели Метрики.