· 12 мин чтения

CrowdSec на сервере клиента: коллективная защита вместо fail2ban в 2026

Меня зовут Семёнов Евгений Сергеевич, я директор АйТи Фреш. За полтора года я внедрил CrowdSec на 19 серверах клиентов в Москве — VPS с сайтами, терминальные серверы 1С, почтовые серверы, корпоративные VPN-шлюзы. Расскажу, чем он лучше старого доброго fail2ban и почему я перевожу всех клиентов на эту систему.

Почему fail2ban больше меня не устраивает

10 лет я ставил fail2ban на все Linux-серверы, которые торчат наружу. Простая, надёжная штука: смотрит логи SSH, веб-сервера, почты, считает количество неудачных попыток за единицу времени, банит IP в iptables. Работает.

Но в 2024 году я столкнулся с двумя проблемами, которые fail2ban решить не может.

Первая. Современные ботнеты атакуют с тысяч разных IP по 1–2 попытки с каждого. Fail2ban настроен «5 неудачных попыток за 10 минут — бан». Бот делает 2 попытки и переходит на другой IP — бан не срабатывает, но бот в итоге подбирает пароль за неделю. У клиента в декабре 2024 так подобрали SSH к серверу 1С — пароль был «Server2023!», то самое, что я просил поменять трижды.

Вторая. Сканеры уязвимостей тестируют 500 разных URL подряд (поиск админок, форумов, старых CMS). Каждая попытка возвращает 404, а не 401. Fail2ban на это не реагирует, потому что в логах нет «failed login» — есть просто 404. Сервер тонет в шуме сканеров, а админка остаётся доступной.

CrowdSec решает обе проблемы по-другому: он смотрит не на ваш одинокий лог, а на глобальную базу атак. Если IP вчера сканировал 100 серверов в мире — сегодня он попадает в ваш блоклист до того, как успеет постучаться к вам.

Архитектура CrowdSec: что внутри

CrowdSec состоит из четырёх компонентов:

Логически работает так: агент видит в логах подозрительную активность, парсер вытаскивает IP и контекст, сценарий принимает решение (бан / не бан), решение записывается в базу LAPI, баунсер достаёт его и применяет в iptables / Nginx / любом другом месте. Параллельно алерт отправляется в CAPI, где обогащает глобальный блоклист.

Установка на Debian/Ubuntu

На Debian 12 / Ubuntu 22.04 ставится одной командой:

curl -s https://install.crowdsec.net | sudo sh
apt install crowdsec
apt install crowdsec-firewall-bouncer-iptables

После установки агент автоматически детектит установленные сервисы (sshd, nginx, apache) и подключает соответствующие коллекции парсеров. Проверяем:

cscli collections list
cscli parsers list
cscli scenarios list
cscli bouncers list

Должны увидеть включённые коллекции crowdsecurity/sshd, crowdsecurity/nginx, crowdsecurity/linux. Если что-то не подцепилось — добавляем вручную:

cscli collections install crowdsecurity/postfix
cscli collections install crowdsecurity/wordpress
cscli collections install crowdsecurity/iptables

Базовая настройка для типового сервера

Файл /etc/crowdsec/acquis.yaml описывает, какие логи читать. Для офисного сервера с Nginx и SSH мой стандартный набор:

filenames:
  - /var/log/nginx/access.log
  - /var/log/nginx/error.log
labels:
  type: nginx
---
filenames:
  - /var/log/auth.log
labels:
  type: syslog
---
journalctl_filter:
  - "_SYSTEMD_UNIT=ssh.service"
labels:
  type: syslog

После изменения acquis перезапускаем агент:

systemctl restart crowdsec

Whitelist собственных IP — обязательный шаг

Это первое, что я делаю на свежей инсталляции. Без whitelist я в первый же день забанил себя с домашнего IP при тестировании скриптов. Создаём /etc/crowdsec/parsers/s02-enrich/mywhitelist.yaml:

name: crowdsecurity/whitelists
description: "Whitelist office and admin IPs"
whitelist:
  reason: "trusted networks"
  ip:
    - "127.0.0.1"
    - "::1"
  cidr:
    - "192.168.0.0/16"
    - "10.0.0.0/8"
    - "172.16.0.0/12"
    - "85.142.123.45/32"  # IP офиса клиента
    - "94.130.45.67/32"   # IP АйТи Фреш

Запихиваю сюда сразу: офисные IP клиента, наши IP с АйТи Фреш, IP моего домашнего интернета и резервного 4G. После этого случайные баны самих себя становятся невозможны.

Подключение к Central API

Без подключения к CAPI вы не получаете главного — глобального блоклиста. Регистрируем инсталляцию:

cscli capi register
systemctl restart crowdsec

Теперь раз в час агент скачивает обновлённый блоклист из 70 000+ известных вредоносных IP и обновляет правила в iptables. Через сутки в логах появляется заметное количество дропов от этих IP — реальная польза от коллективного интеллекта.

Подключение console.crowdsec.net — мониторинг через веб

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

cscli console enroll YOUR-ENROLL-KEY

После этого в личном кабинете на console.crowdsec.net появляется ваш сервер с дашбордом. Я подключаю туда все серверы клиентов — одно окно, в котором видно, что происходит на 19 серверах одновременно.

Реальные алерты с серверов клиентов

За первый месяц после установки CrowdSec на VPS интернет-магазина клиента я получил такую статистику атак:

Тип атакиКол-во инцидентовЗаблокировано IP
SSH brute-force2 847419
HTTP bad-paths (поиск админок)15 9321 087
WordPress login brute-force892156
SQL injection попытки23489
Сканирование портов4 121312
ИТОГО за 30 дней24 0262 063

Из этих 2 063 IP примерно 60 % были заблокированы превентивно — на основе CTI от других инсталляций CrowdSec. То есть атакующий ещё не успел даже постучаться к нашему серверу, но уже был в блоклисте.

CrowdSec для Windows: терминальный сервер 1С

В прошлом году выпустили нативную Windows-версию. Я её обкатал на терминальном сервере 1С у клиента в Подольске.

Установка — обычный MSI-инсталлятор. После установки агент сам подцепляется к Event Log Security и Application. Парсеры RDP brute-force и IIS bad-paths включаются командой:

cscli collections install crowdsecurity/windows-auth
cscli collections install crowdsecurity/iis

Баунсер для Windows реализован как Service, который меняет правила Windows Firewall. Работает через WMI, никаких сторонних утилит не нужно.

Эффект: за первый месяц на терминалке заблокировано 78 IP, пытавшихся подобрать RDP. После трёх месяцев количество попыток упало с 200 в час до 5–10 (упали уже на этапе глобального блоклиста).

Сценарии для специфических задач

Иногда нужны не стандартные сценарии. Например, у клиента — интернет-магазин на WooCommerce, и боты подбирают купоны на скидку через cart-страницу. Стандартного сценария «слишком много обращений к /cart» нет, пишу свой:

type: leaky
name: itfresh/coupon-bruteforce
description: "Detect coupon code brute-force"
debug: false
filter: "evt.Meta.log_type == 'http_access-log' && evt.Parsed.request matches '/cart/.*coupon'"
distinct: "evt.Parsed.request"
leakspeed: "10s"
capacity: 5
groupby: "evt.Meta.source_ip"
blackhole: 5m
labels:
  service: http
  type: bruteforce
  remediation: true

Кладу файл в /etc/crowdsec/scenarios/coupon-bruteforce.yaml, перезапускаю агент. Теперь любой IP, который за 50 секунд проверил больше 5 разных купонов — баниться на 5 минут.

Сравнение с fail2ban в реальных цифрах

На сервере одного клиента я месяц гонял CrowdSec и fail2ban параллельно (с разными jails, чтобы не пересекались). Результаты:

Метрикаfail2banCrowdSec
Заблокированных уникальных IP1872 063
Из них превентивно (до атаки)01 247
Ложных банов (whitelist tweets)40
Использование RAM~30 MB~120 MB
Использование CPU~0.5 %~2 %
Время на настройку под клиента2 часа3 часа

CrowdSec потребляет в 4 раза больше RAM и в 4 раза больше CPU. Это плата за бóльшую функциональность. На современных VPS с 2+ GB RAM это не проблема. На старых маломощных VDS на 512 MB — лучше остаться на fail2ban.

Защитим серверы клиентов от современных атак

Я лично провожу аудит вашей серверной инфраструктуры и внедряю CrowdSec под ваши задачи. Бесплатный выезд по Москве и в радиусе 50 км от МКАД, поддержка 24/7 в рамках абонентского обслуживания.

Телефон: +7 903 729-62-41
Telegram: @ITfresh_Boss
Семёнов Евгений Сергеевич, директор АйТи Фреш

FAQ — частые вопросы по CrowdSec

Чем CrowdSec отличается от fail2ban?
Главное отличие — коллективный интеллект. CrowdSec обменивается данными об атаках с глобальным сообществом, поэтому ваш сервер блокирует IP, который атаковал кого-то другого ещё час назад. Fail2ban работает изолированно — учится только на собственных логах.
Бесплатен ли CrowdSec?
Базовая версия Community Edition полностью бесплатна и open source. Платные планы (от 50$ в месяц) дают премиум-блоклисты, multi-server console и SLA на поддержку. Для офисного сервера хватает бесплатной версии.
Сколько ресурсов потребляет CrowdSec?
На типовом VPS с 2 GB RAM и 2 vCPU агент потребляет 100–150 MB RAM и 1–3 % CPU. На пике атак потребление RAM до 250 MB. Лёгкое решение даже для слабых серверов.
Можно ли запустить CrowdSec и fail2ban одновременно?
Технически — да, они не конфликтуют. Практически — не нужно. Fail2ban будет дублировать работу CrowdSec и создавать путаницу в логах. Я рекомендую полностью переходить на CrowdSec.
Поддерживает ли CrowdSec Windows-серверы?
Да, есть нативная Windows-версия с парсерами Event Log. Поддерживается RDP brute-force, IIS-логи, MSSQL. На Windows я её ставил на терминальные серверы 1С — отлично закрывает RDP-атаки.

Подпишитесь на рассылку ITfresh

Раз в неделю — практические гайды для руководителя IT и сисадмина: безопасность, 1С, миграции, резервные копии, лайфхаки из реальных проектов.

Реквизиты оператора персональных данных

ООО «АЙТИ-ФРЕШ», ИНН 7719418495, КПП 771901001. Юридический адрес: 105523, г. Москва, Щёлковское шоссе, д. 92, корп. 7. Контакт: info@itfresh.ru, +7 903 729-62-41. Оператор обрабатывает e-mail подписчика в целях рассылки информационных и рекламных материалов до момента отзыва согласия.