1. Как работает CrowdSec
CrowdSec — это open-source система защиты серверов с коллективным интеллектом. Архитектура состоит из трёх уровней:
🔍 Security Engine
Читает логи (auth.log, nginx, syslog), обнаруживает аномалии по сценариям. Принимает решения о блокировке.
🚧 Bouncer
Применяет решения. Firewall bouncer — блокирует IP в nftables. Nginx bouncer — возвращает 403. Можно оба сразу.
🌐 Central API
Связывает ваш сервер с сообществом. Получает blocklist от 60 000+ серверов мира. Отправляет ваши находки.
Ключевая идея — разделение обнаружения и блокировки. Security Engine только анализирует и решает. Bouncer только блокирует. Это позволяет, например, обнаруживать на одном сервере, а блокировать на нескольких.
Проактивная защита в действии
Допустим, ботнет начинает атаку brute-force на SSH-серверы по всему миру. Первый же сервер с CrowdSec обнаруживает атаку и отправляет сигнал в Central API. Через несколько минут все остальные серверы сообщества получают блокировку этих IP — до того, как атака дошла до них.
2. CrowdSec vs Fail2Ban
| Параметр | Fail2Ban | CrowdSec |
|---|---|---|
| Подход | Реактивный — блокирует после N неудачных попыток | Проактивный + реактивный — блокирует до атаки по базе сообщества |
| Коллективный интеллект | Нет — только локальные логи | Да — blocklist от 60 000+ серверов мира |
| Firewall-правила | Отдельное правило на каждый IP (медленно при 1000+ правил) | nftables/ipsets — эффективно для миллионов IP |
| Архитектура | Монолит — один процесс на все действия | Модульная — engine + bouncers, масштабируется |
| Уязвимости | Подвержен race condition и log injection | Устойчив — парсинг структурированных событий |
| Настройка | Regex в конфигах — сложно отлаживать | YAML-сценарии, тысячи готовых в Hub |
| Потребление RAM | ~20 МБ | ~50–80 МБ |
| Лицензия | GPLv2 | MIT (open-source) |
Когда оставить Fail2Ban
Если у вас уже настроен Fail2Ban и он справляется — можно не менять. CrowdSec сложнее в первоначальной настройке. Но если сервер атакуют регулярно, или вы настраиваете новый VPS с нуля — CrowdSec предпочтительнее.
3. Установка Security Engine
Официальный способ — скрипт установки, который добавляет репозиторий и устанавливает пакет. Поддерживается Ubuntu 20.04, 22.04, 24.04 и Debian.
Шаг 1: добавить репозиторий и установить
curl -s https://install.crowdsec.net | sudo sh
sudo apt install -y crowdsecСкрипт добавит GPG-ключ и apt-репозиторий. После установки CrowdSec запустится автоматически. Проверить статус:
sudo systemctl status crowdsecШаг 2: убедиться что сервис работает
sudo cscli version
sudo cscli hub listКоманда cscli hub list покажет установленные коллекции, парсеры и сценарии. При первой установке уже будут базовые парсеры для Linux.
Если уже стоит Fail2Ban
Они не конфликтуют при установке, но оба будут добавлять firewall-правила. После того как убедитесь что CrowdSec работает корректно:
sudo systemctl stop fail2ban
sudo systemctl disable fail2ban4. Коллекции: SSH и Nginx
Коллекция — набор парсеров и сценариев для конкретного сервиса. CrowdSec Hub содержит 300+ готовых коллекций. Установите те, что соответствуют сервисам на вашем VPS.
Базовые коллекции
# Базовая защита Linux (syslog, sudo, и т.д.)
sudo cscli collections install crowdsecurity/linux
# Защита SSH от brute-force
sudo cscli collections install crowdsecurity/sshd
# Защита Nginx (сканирование, brute-force, SQL injection)
sudo cscli collections install crowdsecurity/nginx
# Применить изменения
sudo systemctl reload crowdsecЕсли у вас запущено что-то ещё — добавьте соответствующие коллекции:
| Сервис | Команда установки |
|---|---|
| Apache | sudo cscli collections install crowdsecurity/apache2 |
| WordPress | sudo cscli collections install crowdsecurity/wordpress |
| PostgreSQL | sudo cscli collections install crowdsecurity/postgresql |
| MySQL | sudo cscli collections install crowdsecurity/mysql |
| Postfix | sudo cscli collections install crowdsecurity/postfix |
| HAProxy | sudo cscli collections install crowdsecurity/haproxy |
Как CrowdSec читает логи Nginx
После установки коллекции crowdsecurity/nginx CrowdSec автоматически находит лог-файлы Nginx в стандартных путях (/var/log/nginx/access.log, /var/log/nginx/error.log). Если логи в нестандартном месте — добавьте в конфиг:
filenames:
- /var/log/nginx/*.log
labels:
type: nginx5. Firewall Bouncer
Firewall bouncer блокирует IP на сетевом уровне — через nftables (Ubuntu 22.04+) или iptables. Это самый эффективный тип блокировки: пакет от заблокированного IP отбрасывается ядром ещё до Nginx.
Установка (nftables — Ubuntu 22.04+)
sudo apt install -y crowdsec-firewall-bouncer-nftables
sudo systemctl enable crowdsec-firewall-bouncer
sudo systemctl start crowdsec-firewall-bouncerДля Ubuntu 20.04 или систем с iptables используйте пакет crowdsec-firewall-bouncer-iptables.
Проверка
sudo cscli bouncers listВ списке должен появиться bouncer с типом crowdsec-firewall-bouncer и статусом valid. Пример вывода:
Name IP Address Valid Last API pull Type
cs-firewall-bouncer-linux 127.0.0.1 true 2026-03-12T10:00:00Z crowdsec-firewall-bouncerКак работает блокировка через nftables
Bouncer создаёт nftables set (множество IP-адресов) и одно правило, которое запрещает трафик от IP из этого множества. Добавить 100 000 IP в set занимает миллисекунды — в отличие от Fail2Ban, который создаёт отдельное правило на каждый IP.
6. Nginx Bouncer
Nginx bouncer работает на уровне веб-приложения: он встраивается в Nginx и проверяет каждый HTTP-запрос против базы CrowdSec. Заблокированные IP получают ответ 403 Forbidden или капчу. Дополняет firewall bouncer — можно использовать оба.
Установка
sudo apt install -y crowdsec-nginx-bouncerУстановщик автоматически добавит конфиг в Nginx. Проверьте что появился файл:
ls /etc/nginx/conf.d/crowdsec*.confПодключить к виртуальным хостам
Добавьте строку include в каждый server-блок Nginx, который нужно защитить:
server {
listen 443 ssl;
server_name ваш-сайт.ru;
# Подключить защиту CrowdSec
include /etc/nginx/conf.d/crowdsec_nginx.conf;
# ... остальной конфиг ...
}sudo nginx -t && sudo systemctl reload nginxПроверить что bouncer работает
sudo cscli bouncers listДолжны отображаться оба bouncer-а — firewall и nginx — со статусом valid.
Firewall bouncer vs Nginx bouncer
| Параметр | Firewall bouncer | Nginx bouncer |
|---|---|---|
| Уровень блокировки | Сетевой (ядро Linux) | Приложение (HTTP) |
| Нагрузка на сервер | Минимальная | Небольшая (1 запрос = 1 проверка) |
| Блокирует TCP/UDP | Да | Только HTTP/HTTPS |
| Капча вместо бана | Нет | Да (с Premium) |
| Рекомендация | Ставить всегда | Дополнительно к firewall |
7. Мониторинг и управление
Всё управление через утилиту cscli. Вот основные команды, которые нужны в ежедневной работе:
sudo cscli decisions listsudo cscli alerts listsudo cscli metricssudo cscli hub listsudo cscli hub update && sudo cscli hub upgradesudo cscli bouncers listРучное управление блокировками
sudo cscli decisions add --ip 1.2.3.4sudo cscli decisions add --ip 1.2.3.4 --duration 24hsudo cscli decisions delete --ip 1.2.3.4# Редактировать файл вайтлиста
sudo nano /etc/crowdsec/parsers/s02-enrich/whitelists.yamlВ файл вайтлиста добавьте свои IP-адреса (например, домашний) под ключ ip:
name: crowdsecurity/whitelists
description: "Whitelist trusted IPs"
whitelist:
reason: "trusted IPs"
ip:
- "ВАШ_ДОМАШНИЙ_IP"
- "IP_ОФИСА"sudo systemctl reload crowdsecОбновление CrowdSec
# Обновить сам пакет
sudo apt update && sudo apt upgrade crowdsec
# Обновить Hub (сценарии и парсеры)
sudo cscli hub update && sudo cscli hub upgrade
sudo systemctl reload crowdsec8. Онлайн-дашборд
CrowdSec предлагает бесплатный онлайн-дашборд на app.crowdsec.net — карта атак, статистика по сценариям, история алертов и метрики в удобном интерфейсе. Регистрация занимает минуту.
Подключить сервер к дашборду
- 1Зарегистрируйтесь на app.crowdsec.net (бесплатно).
- 2В личном кабинете нажмите Add Security Engine.
- 3Скопируйте команду регистрации — она выглядит так:
sudo cscli console enroll ВАШИ_КЛЮЧ_ИЗ_КАБИНЕТА
sudo systemctl restart crowdsecЧерез несколько минут сервер появится в дашборде. Там будет видно: сколько атак обнаружено, какие сценарии сработали, карта географии атакующих и статистика по типам угроз.
Дашборд не обязателен
CrowdSec полностью работает без регистрации и дашборда. Все данные доступны через cscli локально. Дашборд нужен только если хотите красивую визуализацию или управляете несколькими серверами.