// Engineering Log
Защита Linux-сервера: Часть 3 — CrowdSec
Опубликовано 22.09.2026
// Быстрый маршрут
Эта статья относится к теме Серверы и инфраструктура.
Fail2ban защищает каждый сервер по отдельности: он видит только свои журналы и ничего не знает о том, что те же адреса минуту назад атаковали тысячи других машин. CrowdSec решает ту же задачу — обнаружить атаку по журналам и заблокировать адрес, — но добавляет к локальному анализу общий список атакующих адресов, который собирают все его пользователи.
CrowdSec распространяется под лицензией MIT. Актуальная версия — 1.8.1 (03.09.2026).
Как устроен CrowdSec
В документации CrowdSec используются такие понятия:
- Security Engine — сама система обнаружения. Она состоит из обработчика журналов (Log Processor, его часто называют агентом) и локального API.
- Log Processor читает журналы служб и HTTP-запросы, разбирает их парсерами и сопоставляет с сценариями — описаниями вредоносного поведения: подбор паролей, сканирование, поиск уязвимых путей на сайте.
- Local API (LAPI) хранит решения о блокировке и раздаёт их компонентам реагирования. Через него же Security Engine обменивается данными с центральным API CrowdSec.
- Компоненты реагирования (Remediation Components, их называют bouncers) — отдельные программы, которые получают решения от LAPI и выполняют блокировку: в межсетевом экране, в веб-сервере, в обратном прокси.
- Коллекции — готовые наборы парсеров и сценариев для конкретной службы (SSH, Nginx, Postfix и т. д.). Хранятся в каталоге Hub.
- Console — веб-интерфейс для просмотра предупреждений и блокировок со всех подключённых серверов.
Важная деталь, о которой прямо говорит документация: Security Engine сам по себе ничего не блокирует, это только система обнаружения. Без компонента реагирования CrowdSec будет находить атаки, но пропускать атакующих.
Общий список атакующих
Когда ваш сервер обнаруживает атаку, он отправляет сигнал — адрес и сработавший сценарий — в центральный API. Из сигналов тысяч установок CrowdSec собирает Community Blocklist и раздаёт его участникам. Условия зависят от вклада:
- кто регулярно отправляет сигналы, получает полный список — до 15 тысяч адресов, подобранных по сценариям, которые встречаются у вас;
- кто сигналы не отправляет, получает облегчённую версию — до 3 тысяч адресов;
- платные тарифы дают до 60 тысяч адресов.
Так сервер заранее блокирует адреса, которые ещё не атаковали именно его, но уже замечены на других машинах.
Установка на Debian и Ubuntu
curl -s https://install.crowdsec.net | sudo sh
sudo apt install crowdsec
sudo apt install crowdsec-firewall-bouncer-nftables # или -iptablesПервая команда подключает репозиторий CrowdSec, вторая ставит Security Engine, третья — компонент реагирования для межсетевого экрана. При установке CrowdSec пытается определить запущенные службы и сам ставит подходящие парсеры и сценарии. Если какая-то служба не определилась, её журнал добавляют в настройки источников вручную и ставят нужную коллекцию:
sudo cscli collections list
sudo cscli collections install crowdsecurity/nginx
sudo systemctl reload crowdsecПервые команды
sudo cscli metrics # что читается и что срабатывает
sudo cscli alerts list # обнаруженные атаки
sudo cscli decisions list # действующие блокировки
sudo cscli decisions delete --ip 203.0.113.10 # снять блокировку
sudo cscli console enroll <ключ> # подключить сервер к Consolecscli metrics — главная команда диагностики: если в ней не видно строк по нужному журналу, CrowdSec его не читает, и защиты этой службы нет.
Белые списки
До того как включать блокировки в работу, внесите в белый список свои адреса: офис, серверы мониторинга, адреса, с которых работают администраторы. Документация отдельно рекомендует этот шаг — ложное срабатывание на собственный мониторинг заблокирует его так же, как бота.
Чем CrowdSec отличается от Fail2ban
| Fail2ban | CrowdSec | |
|---|---|---|
| Обнаружение | регулярные выражения по журналу | парсеры и сценарии поведения |
| Блокировка | действие внутри Fail2ban | отдельные компоненты реагирования |
| Где блокировать | межсетевой экран сервера | межсетевой экран, веб-сервер, прокси, CDN |
| Знание об атаках на других | нет | общий список атакующих |
| Несколько серверов | каждый сам по себе | один LAPI и Console для всех |
| Ресурсы | минимальные | больше, но умеренные |
Для одного сервера с SSH Fail2ban достаточно. CrowdSec оправдан, когда серверов несколько, когда нужно защищать веб-приложения по поведению, а не только по неудачным входам, и когда хочется блокировать известных атакующих до первой попытки.
Одновременно запускать Fail2ban и CrowdSec для одних и тех же журналов нет смысла: они будут дублировать блокировки, а разобраться, кто заблокировал адрес, станет сложнее. Обычно выбирают одно.
Типичные ошибки
- Установлен только Security Engine без компонента реагирования — атаки видны в
cscli alerts, но никто не блокируется. - Не добавлены в белый список свои адреса и мониторинг.
- Служба пишет журнал в нестандартное место, CrowdSec его не читает, а администратор уверен, что служба защищена. Проверяется через
cscli metrics. - Компонент реагирования выбран не под тот межсетевой экран (iptables вместо nftables).
- Коллекции не обновляются: сценарии в Hub регулярно дополняются, обновление —
cscli hub updateиcscli hub upgrade.
Как встроить CrowdSec в общий порядок защиты нового сервера, описано в статье «Новый сервер — это не чистый лист».
// Похожая задача
Если у вас похожая ситуация
Эта статья относится к одной из рабочих тем. Можно продолжить чтение по теме, перейти на главную, чтобы понять, чем я занимаюсь, или сразу открыть услуги.
Тема статьи
Серверы и инфраструктура
VPS, Linux, веб-стек, миграции, хостинг, базы данных и базовая эксплуатация.
Часто с этим приходят
- Перенести сайт или сервис на новый сервер
- Настроить Linux, Nginx, базу данных и бэкапы
- Разобраться, почему всё работает нестабильно
// Следующий шаг
Если вам нужна не только статья, а помощь по этой теме, удобнее сразу перейти в услугу. Главная и подборка материалов остаются рядом.
Открыть услуги// Contact
Нужна помощь?
Свяжись со мной и я помогу решить проблему
Написать в TelegramОтвечаю в течение рабочего дня (03:00–13:00 GMT)
Или оставьте заявку здесь:
// Related