· 12 мин чтения

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

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

Привет! Семёнов Евгений Сергеевич, директор ITFresh. За полтора года мы внедрили CrowdSec на целых 19 серверов наших клиентов в Москве. Это были самые разные системы, от обычных VPS с сайтами до терминальных серверов 1С, почтовых систем и даже корпоративных VPN-шлюзов. Хотите узнать, почему, по моему убеждению, CrowdSec на голову превосходит наш старый, добрый fail2ban? И почему мы активно переводим на него абсолютно всех, подчеркиваю, всех наших клиентов?

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

Десять лет я ставил 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 уже в вашем блоклисте. Ещё до того, как он вообще успеет хоть разок к вам постучаться!

Архитектура 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

А знаете, что самое крутое? Из этих 2063 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-пароли. Что дальше? Через три месяца количество таких попыток упало просто колоссально — с двух сотен в час до каких-то 5–10! Причём большая часть отсеивалась уже на уровне глобального блоклиста.

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

Бывает, что стандартные сценарии не дотягивают. Например, у нас был клиент — владелец интернет-магазина на WooCommerce. Там боты, представляете, нагло подбирали купоны на скидку прямо через страницу корзины! Но вот беда: готового сценария, который отследил бы «слишком много запросов к /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, конечно, прожорливее. Он съедает в четыре раза больше оперативной памяти и столько же CPU. Ну, это, по сути, наша плата за расширенный функционал. На современных VPS-ках с двумя и более гигабайтами оперативки это вообще не вопрос. Но если у вас старенький, маломощный VDS на 512 мегабайт, тогда, пожалуй, разумнее будет остаться на 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 подписчика в целях рассылки информационных и рекламных материалов до момента отзыва согласия.