Skip to content

nginx — алерт когда rate-limit-zone забивается

Атакующий упёрся в `limit_req_zone` — все легитимные запросы тоже начали получать 429. Логи показывают это, но никто не следит.

Рецепт

bash
#!/usr/bin/env bash
# Counts 429s in the last minute against a rolling threshold.
LOG="${ACCESS_LOG:-/var/log/nginx/access.log}"
THRESHOLD="${THRESHOLD:-50}"

CNT=$(awk -v from="$(date -d '1 min ago' '+%d/%b/%Y:%H:%M')" '
  $0 ~ from && $9 == 429 { c++ } END { print c+0 }
' "$LOG")

[ "$CNT" -ge "$THRESHOLD" ] && echo "high $CNT/min" || echo "ok $CNT/min"

То же самое в Enterno.io

Endpoint + Enterno HTTP-монитор с keyword "ok" покажет атаку через 60 сек. Параллельно Security Scanner подскажет, не зашит ли rate-limit слишком жёстко.

Настроить HTTP monitor → ← Все рецепты

Похожие рецепты

Stripe, GitHub, Twilio возвращают X-RateLimit-Remaining в заголовках. Если бэкенд не отслеживает порог — внезапно пойдёт 429, биллинг встанет.