Новости
Новые модели LLM уже доступны в панели управления Serverspace
Serverspace Black Friday
AA
марта 30, 2026
Обновлено апреля 1, 2026

Как установить CrowdSec на Linux: пошаговое руководство

Откройте журнал аутентификации на любом сервере с публичным IP, и вы обнаружите сотни неудачных попыток входа, накопившихся за первый же час. Боты перебирают украденные базы логинов и паролей, сканеры ищут устаревшее ПО, а автоматизированные тулкиты проверяют каждый открытый порт на известные уязвимости.

Долгое время стандартным решением был Fail2Ban: скрипт, который считает неудачные попытки и блокирует нарушителей через файрвол. Инструмент рабочий, но замкнутый сам на себя. Он знает только о тех атаках, которые лично зафиксировал на одном конкретном сервере. IP-адрес, который минуту назад ломился в тысячу других машин, для вашего Fail2Ban будет совершенно незнакомым.

CrowdSec решает эту проблему иначе. Это бесплатный движок безопасности с открытым кодом, который не только следит за логами и блокирует нарушителей локально, но и участвует в глобальной сети обмена данными об угрозах. Когда ваш экземпляр ловит подозрительный IP, информация уходит в общий пул. Взамен вы получаете постоянно обновляемый список адресов, которые уже отметились у других участников. Ваш сервер начинает отклонять известные угрозы ещё до того, как они отправят первый пакет.

В этом руководстве мы разберём полную установку CrowdSec на Ubuntu и Debian: от подключения репозитория до рабочей конфигурации с активной блокировкой через файрвол. Весь процесс занимает около 15 минут.

Что такое CrowdSec и зачем он нужен

CrowdSec появился в 2020 году. Его создатели много лет управляли хостинговым бизнесом, где Fail2Ban был ежедневным инструментом. Они хорошо знали его плюсы, но упёрлись в потолок: отсутствие обмена данными между серверами, медленная работа при высокой нагрузке на логи и негибкая конфигурация на основе регулярных выражений. Было решено выстроить концепцию заново, выбрав Go ради скорости и модульную архитектуру, где обнаружение атак отделено от их блокировки. Проект распространяется под лицензией MIT и набрал более 12 000 звёзд на GitHub.

Чтобы понять, как CrowdSec защищает сервер, разберём конкретную ситуацию. Бот начинает подбирать SSH-пароли к вашей машине. Агент CrowdSec следит за /var/log/auth.log и подхватывает каждую неудачную попытку в момент её появления. Цепочка парсеров извлекает IP источника, имя пользователя и временную метку, а GeoIP-модуль помечает адрес страной и номером автономной системы. Распознанное событие попадает в "дырявое ведро" (leaky bucket), привязанное к сценарию ssh-bf. Когда один и тот же IP наполняет ведро (например, 5 отказов за 30 секунд), срабатывает алерт. Local API (LAPI) принимает его, сверяется с профилем и записывает вердикт в базу: забанить этот адрес на четыре часа. Баунсер файрвола, который опрашивает LAPI раз в несколько секунд, тут же добавляет правило drop для нарушителя в nftables (или iptables). Параллельно LAPI отправляет анонимизированный отчёт (временная метка, IP, название сценария) в центральный API CrowdSec, откуда данные попадают в общий блоклист, доступный всем подключённым экземплярам.

За всем этим стоят три компонента. Security Engine отвечает за чтение логов, их парсинг, оценку поведенческих сценариев и уведомление LAPI о подозрительной активности. LAPI выступает мозговым центром: хранит вердикты, синхронизируется с глобальной сетью и раздаёт решения всем, кто спрашивает. Баунсеры выполняют наказание в конкретной точке инфраструктуры: один управляет nftables-правилами на хосте, другой выдаёт HTTP 403 в Nginx, третий создаёт блокировки на уровне CDN. Благодаря такому разделению можно анализировать логи на одной машине, а блокировать трафик на десятке других.

Сравнение CrowdSec и Fail2Ban

В таблице ниже собраны ключевые отличия, которые помогут определиться с выбором.

Критерий Fail2Ban CrowdSec
Язык Python Go (значительно быстрее при большом объёме логов)
Способ обнаружения Regex-паттерны по строкам лога Поведенческие сценарии на основе leaky bucket
Обмен данными Отсутствует, каждый сервер сам по себе Глобальный блоклист, обновляемый в реальном времени
Архитектура Монолитный процесс Раздельные движок, API и баунсеры
Работа на нескольких серверах Ручное копирование конфигов Встроенный распределённый режим с общим LAPI
IPv6 Частичная поддержка Полная, включая CIDR-решения
WAF Нет Модуль AppSec для проверки HTTP-трафика
Добавление правил Regex-фильтры и jail-файлы YAML-коллекции из Hub одной командой
Потребление ресурсов Минимальное Чуть выше, но комфортно на VPS с 1 ГБ RAM

Предварительные требования

  • Сервер с Ubuntu 22.04/24.04 или Debian 12. Пакеты также доступны для RHEL, CentOS, Fedora и SUSE.
  • Root-доступ или пользователь с правами sudo.
  • Хотя бы один работающий сервис, генерирующий логи (SSH есть по умолчанию на большинстве серверов).

Если сервера пока нет, на Serverspace можно развернуть VPS с Linux за считанные минуты. Ubuntu и Debian доступны как предустановленные образы.

Шаг 1. Обновление системы и подключение репозитория

Обновляем список пакетов и ставим все ожидающие обновления:

sudo apt update && sudo apt upgrade -y

Запускаем скрипт, который добавляет официальный репозиторий CrowdSec и импортирует GPG-ключ:

curl -s https://install.crowdsec.net | sudo sh

sudo apt update

Замечание для Ubuntu Pro/ESM. Штатный репозиторий Ubuntu может предлагать устаревшую версию CrowdSec 1.4.6. Если apt policy crowdsec показывает именно её, создайте файл приоритетов, чтобы система брала пакеты из официального источника:

sudo tee /etc/apt/preferences.d/crowdsec << 'EOF' Package: crowdsec*
Pin: origin packagecloud.io Pin-Priority: 900 EOF

Шаг 2. Установка Security Engine

sudo apt install crowdsec -y

В процессе установки пакет регистрирует машину в LAPI, скачивает базовый набор парсеров и сценариев из Hub и запускает сервис. Включаем автозапуск и проверяем статус:

sudo systemctl enable crowdsec sudo systemctl status crowdsec

На этом этапе CrowdSec уже читает логи и сопоставляет события со сценариями, но пока ничего не блокирует. Представьте камеру наблюдения без охранника у двери. Нам нужен баунсер.

Шаг 3. Установка баунсера файрвола

Баунсер опрашивает LAPI на предмет свежих вердиктов и превращает их в правила файрвола. На Ubuntu 24.04 и Debian 12 по умолчанию используется nftables:

sudo apt install crowdsec-firewall-bouncer-nftables -y

На более ранних системах с iptables:

sudo apt install crowdsec-firewall-bouncer-iptables -y

Включаем и запускаем:

sudo systemctl enable crowdsec-firewall-bouncer sudo systemctl start
crowdsec-firewall-bouncer

Проверяем регистрацию командой sudo cscli bouncers list. В выводе должна появиться одна запись с валидным статусом. С этого момента каждый IP, который переполнит сценарный bucket, автоматически окажется в drop-правиле файрвола.

Конфликт с UFW. UFW и nftables-баунсер управляют одним и тем же бэкендом. Если UFW активен, лучше либо отключить его, либо использовать iptables-вариант баунсера.

Шаг 4. Подключение коллекций для ваших сервисов

Коллекция объединяет парсеры ("как читать этот формат лога") и сценарии ("что считать подозрительным") для конкретного сервиса. Устанавливаем нужные:

sudo cscli collections install crowdsecurity/linux sudo cscli
collections install crowdsecurity/sshd sudo cscli collections install
crowdsecurity/nginx    # если используете Nginx sudo cscli collections
install crowdsecurity/apache2  # если используете Apache

Полный каталог доступных коллекций можно посмотреть командой sudo cscli collections list -a. После установки перезапускаем движок:

sudo systemctl restart crowdsec

Шаг 5. Настройка источников логов

CrowdSec нужно знать, какие файлы читать. Конфигурация хранится в /etc/crowdsec/acquis.yaml и файлах внутри /etc/crowdsec/acquis.d/. Проверяем текущие настройки:

cat /etc/crowdsec/acquis.yaml

Типичная конфигурация для SSH и Nginx:

filenames:   - /var/log/auth.log labels:   type: syslog --- filenames:
- /var/log/nginx/access.log
- /var/log/nginx/error.log labels:   type: nginx

Каждый блок указывает пути к файлам и метку, по которой CrowdSec определяет нужную цепочку парсеров. Если ваш веб-сервер пишет логи в нестандартную директорию, поправьте пути и перезапустите сервис.

Шаг 6. Проверка работы и тестирование

Убеждаемся, что логи обрабатываются:

sudo cscli metrics

Если для какого-то источника накопилось много нераспознанных строк, значит для этого формата не хватает парсера или коллекции. Смотрим алерты и активные баны:

sudo cscli alerts list sudo cscli decisions list

Для проверки сквозной блокировки вручную баним тестовый IP и ищем его в правилах файрвола:

sudo cscli decisions add -i 198.51.100.77 -d 5m -t ban sudo nft list
ruleset | grep 198.51.100.77

После проверки снимаем бан:

sudo cscli decisions delete -i 198.51.100.77

Шаг 7. Подключение консоли и добавление IP в белый список

CrowdSec предоставляет бесплатную веб-панель на app.crowdsec.net. Создайте аккаунт и подключите свой экземпляр:

sudo cscli console enroll sudo cscli console enable context
sudo systemctl reload crowdsec

Прежде чем закрыть терминал, добавьте свой IP в белый список, чтобы случайно не заблокировать себя:

sudo nano /etc/crowdsec/parsers/s02-enrich/my-whitelists.yaml

name: my-whitelists description: "Trusted IPs that should never be
banned" whitelist:   reason: "Admin and monitoring addresses"   ip:
- "YOUR.IP.ADDRESS.HERE"

Перезапускаем CrowdSec для применения:

sudo systemctl restart crowdsec

Частые ошибки и как их избежать

Движок без баунсера. Самая распространённая оплошность. CrowdSec в одиночку только фиксирует алерты, но ничего не блокирует. Всегда ставьте хотя бы один баунсер файрвола.

Забыли про белый список. Пара неверных SSH-паролей при тестировании может привести к блокировке вашего собственного адреса. Внесите доверенные IP в whitelist до начала продуктивной эксплуатации.

Конфликт файрвольных менеджеров. UFW и nftables-баунсер управляют одним и тем же бэкендом. Выберите что-то одно, иначе поведение правил станет непредсказуемым.

Нет коллекции для работающего сервиса. Если sudo cscli metrics показывает тысячи нераспознанных строк, CrowdSec не видит атак в этих логах. Установите соответствующую коллекцию.

Открытый LAPI наружу. На одиночном сервере LAPI слушает только localhost. Но при переходе к распределённой архитектуре ограничьте доступ по IP и подключите TLS.

Устаревшие правила. Новые сценарии и улучшения парсеров появляются регулярно. Команда sudo cscli hub update && sudo cscli hub upgrade раз в пару недель поддерживает набор правил в актуальном состоянии.

Заключение

Весь путь от чистого сервера до полноценной защиты с CrowdSec укладывается в короткую сессию в терминале. Репозиторий, движок, баунсер, коллекции, готово. Как только сервис запущен, он начинает сопоставлять события из логов с известными паттернами атак и отбрасывать нарушителей на уровне файрвола, одновременно обогащая глобальный пул данных об угрозах.

Мы рекомендуем начать с базовой конфигурации из этого руководства: защита SSH плюс баунсер файрвола. По мере освоения можно наращивать уровни: добавить Nginx-баунсер для выдачи CAPTCHA подозрительным посетителям, подключить Cloudflare-баунсер для блокировки на периметре CDN или объединить несколько хостов через общий LAPI, чтобы одно обнаружение защищало все машины сразу. Обновляйте Hub-контент по расписанию, время от времени проверяйте метрики, а остальное система возьмёт на себя.

Оценка:
5 из 5
Аverage rating : 5
Оценок: 1
050000 г. Алматы пр. Сейфуллина, д. 502
+7 (771) 944-45-66
ООО «ИТГЛОБАЛКОМ ЛАБС»