Knowledge Base
Rate limit для форм входа и защита от брутфорса
Nginx: rate limiting для /login
Категория: Web App Security · Риск: medium
Nginx: rate limiting для /login
# В блоке http:
limit_req_zone $binary_remote_addr zone=login:10m rate=5r/m;
limit_req_zone $binary_remote_addr zone=api:10m rate=30r/m;
limit_conn_zone $binary_remote_addr zone=addr:10m;
# В блоке server, для формы входа:
location = /login {
limit_req zone=login burst=3 nodelay;
limit_conn addr 5;
proxy_pass http://backend;
}
location = /api/auth {
limit_req zone=login burst=2 nodelay;
proxy_pass http://backend;
}
fail2ban: блокировка по логам
# /etc/fail2ban/jail.local
[nginx-req-limit]
enabled = true
filter = nginx-req-limit
action = iptables-multiport[name=ReqLimit, port="http,https", protocol=tcp]
logpath = /var/log/nginx/error.log
findtime = 600
bantime = 3600
maxretry = 10
На уровне приложения
- Блокировка аккаунта на N минут после M неудачных попыток
- CAPTCHA после 3 неудач
- Уведомление владельца на email при подозрительной активности
- Логирование IP, User-Agent, timestamp для анализа
Проверка rate limit
# Отправить 10 запросов быстро — должен получить 429
for i in $(seq 1 10); do curl -sI https://example.com/login | head -1; done