Knowledge Base

WAF — обнаружение и настройка Web Application Firewall

Web Application Firewall (WAF)

Категория: Web Application Security · Риск: info

Web Application Firewall (WAF)

Что делает WAF

WAF (Web Application Firewall) анализирует HTTP-запросы и блокирует атаки на прикладном уровне:

Как определить наличие 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 критичен для:

Связанные проверки