Определение простыми словами
WAF — это прокси, который читает каждый HTTP-запрос целиком и проверяет его на признаки атаки до того, как пропустить к приложению. Если в параметре формы видит UNION SELECT, в URL скрипт <script>alert, в заголовке Cookie подозрительный шаблон — WAF блокирует запрос или показывает капчу.
В отличие от обычного firewall, который работает на L3/L4 по IP и портам, WAF знает синтаксис HTTP, HTML, JSON. Самое известное opensource-решение — ModSecurity с правилами OWASP CRS, защищающими от Top-10 угроз. Коммерческие WAF (Cloudflare, F5, Imperva, AWS WAF) добавляют поведенческий анализ, ML-детект ботов и интеграцию с CDN.
Сравнение
| Тип | Где стоит | Плюсы | Минусы |
|---|---|---|---|
| Network WAF | аппаратный appliance | максимальная скорость | цена от $30k |
| Host-based | модуль в Apache/Nginx | контекст приложения | нагрузка на сервер |
| Cloud (Cloudflare, AWS) | edge-узлы CDN | защита от L7-DDoS | зависимость от провайдера |
| Open-source (ModSecurity) | обратный прокси | бесплатно, гибко | требует настройки |
| RASP | внутри runtime | знает контекст SQL/ORM | интрузивно, привязка к стеку |
Кейсы использования
- Интернет-магазин на Bitrix защищается WAF от типовых SQL-инъекций в формы поиска и фильтров.
- API SaaS-сервиса блокирует автоматизированный парсинг через rate-limit и поведенческий анализ.
- Сайт регистрации избирателей переживает целенаправленную DDoS L7-атаку благодаря Cloudflare WAF.
- Корпоративный портал на 1С-Битрикс ставит WAF перед админкой, ограничивает доступ по геолокации и ASN.
- Негативный сценарий: WAF включили в режим обучения, забыли перевести в блокировку — три месяца атак прошли мимо. Решение — обязательный переход в блок-режим после 1–2 недель обучения с мониторингом ложных срабатываний.
Технические детали
# Установка ModSecurity с OWASP CRS на Nginx
sudo apt install libnginx-mod-http-modsecurity
sudo git clone https://github.com/coreruleset/coreruleset
/etc/nginx/modsec/owasp-crs
sudo cp /etc/nginx/modsec/owasp-crs/crs-setup.conf.example
/etc/nginx/modsec/owasp-crs/crs-setup.conf
# Базовый конфиг modsecurity.conf
echo 'SecRuleEngine On' > /etc/nginx/modsec/main.conf
echo 'Include /etc/nginx/modsec/owasp-crs/crs-setup.conf' >> /etc/nginx/modsec/main.conf
echo 'Include /etc/nginx/modsec/owasp-crs/rules/*.conf' >> /etc/nginx/modsec/main.conf
# Включение в server-блоке Nginx
server {
modsecurity on;
modsecurity_rules_file /etc/nginx/modsec/main.conf;
location / { proxy_pass http://backend; }
}
# Тест блокировки SQL-инъекции
curl 'http://example.com/search?q=1%27%20OR%201=1--'
# WAF должен ответить 403 Forbidden
# Анализ заблокированных запросов
sudo tail -f /var/log/modsec_audit.log | grep -E 'Anomaly Score|Severity'
WAF дополняет защиту от XSS и SQL-инъекций, но не заменяет валидацию на стороне приложения. В связке с защитой от DDoS закрывает большую часть L7-угроз.
🔥 Где это применяется
Частые вопросы
WAF заменяет необходимость валидации в коде?
Нет, это дополнительный слой. WAF ловит известные паттерны атак, но обходится новыми вектoрами. Валидация и параметризованные запросы в приложении остаются обязательными — это эшелонированная защита.
Сильно ли WAF замедляет сайт?
ModSecurity с полным OWASP CRS добавляет 5–15 мс на запрос при средней нагрузке. Cloud-WAF на edge-узлах не замедляет, а часто ускоряет — за счёт того же CDN-кэша. Бенчмарк до и после включения обязателен.
Можно ли защитить WordPress без WAF?
Можно через комбинацию плагинов (Wordfence, Patchstack), сильных паролей, 2FA, ограничения wp-login и регулярных обновлений. Но WAF на edge-узле снимает большую часть автоматизированных атак раньше, чем они доходят до PHP.