Open-source IDS/IPS с коллаборативной базой IP-репутации. Анализирует логи, обнаруживает атаки, блокирует IP, обменивается данными с сообществом. Написан на Go.
Почему не Cloudflare
Cloudflare де-факто не работает в РФ с 2025 года (троттлинг до 16 КБ/соединение). CrowdSec — self-hosted альтернатива для IP-репутации и bot protection.
Архитектура
Nginx логи → CrowdSec Engine (парсит, ищет паттерны)
↓
Local API (хранит decisions: ban/captcha/throttle)
↓
Bouncer (применяет decisions)
↓
Central API (обмен IP-репутацией с сообществом)
Bouncer
Bouncer — компонент, который исполняет решения Engine. Варианты:
| Bouncer | Как работает | Сложность |
|---|---|---|
| Firewall (iptables/nftables) | Блокирует на уровне ОС. Не трогает nginx | Минимальная |
| Nginx (Lua) | access_by_lua_block в nginx. Требует OpenResty | Средняя |
| Traefik, HAProxy | Плагины для соответствующих прокси | Средняя |
Для малого проекта: firewall bouncer — самый простой путь, не нужно менять nginx.
Коллаборативная IP-репутация
- Engine обнаруживает атаку, банит IP
- На Central API отправляется: timestamp + scenario + IP (без payload)
- Central API курирует: honeypots, canary-списки, cross-validation
- Обратно приходит персонализированный Community Blocklist
Условие: бесплатные пользователи получают blocklist только при регулярной контрибуции (quid pro quo).
Anti-scraping
Из коробки: brute-force, сканеры (по 404/403 ответам, User-Agent). Для скрейпинга — кастомный YAML-сценарий (leaky bucket на количество запросов с IP).
Чего нет: browser fingerprinting, JS challenges, CAPTCHA. Основная сила — IP-репутация и поведенческий анализ логов.
Docker-деплой
services:
crowdsec:
image: crowdsecurity/crowdsec:latest
volumes:
- ./crowdsec/acquis.yaml:/etc/crowdsec/acquis.yaml
- nginx-logs:/var/log/nginx:ro
- crowdsec-db:/var/lib/crowdsec/data
- crowdsec-config:/etc/crowdsec
environment:
COLLECTIONS: "crowdsecurity/nginx crowdsecurity/base-http-scenarios"
BOUNCER_KEY_nginx: "your-bouncer-api-key"
mem_limit: 256m
cpus: "0.5"Ресурсы: ~100-256 MB RAM. Один контейнер + bouncer на хосте.
Metabase dashboard
Опциональный dashboard потребляет 1-2 GB RAM. Для маленького VPS не ставить — использовать
cscliCLI.
Free vs Paid
| Возможность | Free | Paid (от $200/мес) |
|---|---|---|
| Engine + все scenarios | Да | Да |
| Community Blocklist | До 3 списков | Больше |
| Web Console (базовая) | Да | Да |
| Premium Blocklists | Нет | Да |
| CTI API | Нет | Да |
Для малого проекта бесплатного тарифа достаточно.
Связанные заметки
- Защита API от скрейпинга — общая стратегия
- Поведенческий анализ трафика — self-built альтернатива для L7-анализа
- 00 Nginx