Knowledge Base
WAF — обнаружение и настройка Web Application Firewall
Web Application Firewall (WAF)
Категория: Web Application Security · Риск: info
Web Application Firewall (WAF)
Что делает WAF
WAF (Web Application Firewall) анализирует HTTP-запросы и блокирует атаки на прикладном уровне:
- SQL-инъекции (`' OR 1=1--`, `UNION SELECT`)
- XSS (`<script>alert(1)</script>`)
- Path Traversal (`../../etc/passwd`)
- Command Injection (`; cat /etc/passwd`)
- Сканирование уязвимостей (паттерны nikto, sqlmap, nmap)
- Rate limiting на уровне правил
Как определить наличие WAF
# Характерные заголовки в ответе
curl -si https://example.com/ | grep -iE "cf-ray|x-sucuri|x-iinfo|x-cdn|server"
# Cloudflare: cf-ray, cf-cache-status, server: cloudflare
# AWS WAF: x-amzn-requestid
# Sucuri: x-sucuri-id, x-sucuri-cache
# Imperva: x-iinfo, x-cdn
# Akamai: x-check-cacheable, x-serial
# ModSecurity: ответ 403 на аномальные запросы
# Инструмент wafw00f
pip install wafw00f
wafw00f https://example.com
Cloudflare WAF (наиболее распространён)
Security → WAF → Managed Rules:
- Cloudflare Managed Ruleset — включить
- OWASP Core Rule Set — включить
- Cloudflare Specials — включить
Security → WAF → Rate Limiting Rules:
- API endpoints: 100 req/min с одного IP
- Login: 5 req/min
ModSecurity + nginx (self-hosted)
# Установка ModSecurity v3
apt install libmodsecurity3 libmodsecurity-dev
# nginx модуль
# Сборка или использование готового docker-образа owasp/modsecurity-crs
# /etc/nginx/modsec/modsecurity.conf
SecRuleEngine On
SecRequestBodyAccess On
SecResponseBodyAccess On
SecAuditLog /var/log/nginx/modsec_audit.log
# OWASP Core Rule Set
Include /etc/nginx/modsec/crs/crs-setup.conf
Include /etc/nginx/modsec/crs/rules/*.conf
Корнволлские правила (базовые custom rules)
# В nginx.conf — базовая защита без ModSecurity
# Блокировать очевидные сканеры
if ($http_user_agent ~* (sqlmap|nikto|masscan|nmap|dirbuster|gobuster)) {
return 403;
}
# Блокировать null bytes
if ($request_uri ~* "%00") {
return 400;
}
Отсутствие WAF — не критично, но важно знать
Сканер фиксирует **отсутствие WAF** как информационное наблюдение. Для небольших сайтов Nginx + правильные заголовки достаточны. WAF критичен для:
- Сайтов с пользовательским вводом (формы, поиск, фильтры)
- API с публичным доступом
- E-commerce и финансовых сервисов
- Любых сайтов с автоматической регистрацией
Связанные проверки
- [Rate Limiting](/kb/web_app_security/rate-limit-abuse-boundaries)
- [Content Security Policy](/kb/http/content-security-policy)
- [DDoS защита](/kb/ddos/passive-ddos-risk-assessment)