Установка и настройка CrowdSec для защиты от bruteforce

Установка и настройка CrowdSec для защиты от bruteforce

Проблема

Bruteforce-атаки на SSH, веб-формы и панели администрирования остаются одним из самых распространённых векторов вторжения. Классический Fail2Ban, установленный почти на каждом Linux-сервере, отлично блокирует одиночные IP-адреса после нескольких неудачных попыток, но не способен противостоять распределённым атакам, когда злоумышленник меняет IP-адреса или ведёт наступление через ботнет. Кроме того, Fail2Ban изолирован: каждый сервер ведёт свою локальную базу заблокированных адресов, не обмениваясь информацией с соседними узлами. Для более эффективной защиты нужна система, которая коллективно анализирует атаки и распространяет решения по всей инфраструктуре. CrowdSec решает именно эту задачу, превращая защиту от bruteforce из разрозненного набора локальных правил в централизованную, обновляемую в реальном времени систему безопасности с открытым исходным кодом.

Решение

CrowdSec это современный фреймворк для обнаружения и предотвращения вторжений, состоящий из двух основных компонентов. Лёгкий агент (демон) читает логи сервисов (SSH, Nginx, Apache и десятков других), анализирует их с помощью сценариев (collections) и при обнаружении атаки выносит решение: временно или перманентно заблокировать IP-адрес через bouncer (например, iptables, nftables или Cloudflare). Главное отличие от Fail2Ban наличие центрального API crowdsec, куда агенты (опционально) отправляют сигналы об атаках. Эти сигналы анализируются, и всем участникам сети рассылаются обновлённые списки вредоносных адресов. Таким образом, если на одном сервере зафиксирована атака, все остальные серверы в вашей инфраструктуре (и в сообществе) получают информацию о ней в течение минуты.

Официальная документация доступна на CrowdSec Documentation, руководство по установке в разделе Getting Started, описание архитектуры на Architecture Overview. Установка выполняется через официальный репозиторий, поддерживаются Debian, Ubuntu, RHEL и другие дистрибутивы.

Пошаговая инструкция

Шаг 1. Установка CrowdSec Security Engine (агента)

Добавьте официальный репозиторий CrowdSec и установите пакет crowdsec. Пример для Debian/Ubuntu:

bash

curl -s https://packagecloud.io/install/repositories/crowdsec/crowdsec/script.deb.sh | sudo bash
sudo apt update
sudo apt install crowdsec -y

После установки служба запустится автоматически. Проверьте её статус:

bash

sudo systemctl status crowdsec

Агент начнёт мониторинг стандартных логов: /var/log/auth.log (SSH), /var/log/syslog/var/log/nginx/access.log и других. Убедиться, какие коллекции активны, можно командой:

bash

sudo cscli collections list

Шаг 2. Установка bouncer для блокировки атак

Чтобы crowdsec не только обнаруживал, но и блокировал IP-адреса, установите bouncer. Самый распространённый  crowdsec-firewall-bouncer-iptables, который добавляет правила в iptables/nftables.

bash

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

Bouncer автоматически подписывается на решения агента и применяет их: временно блокирует IP при множественных неудачных попытках (по умолчанию на 4 часа) и перманентно при неоднократном попадании в бан.

Проверьте статус bouncer:

bash

sudo systemctl status crowdsec-firewall-bouncer

Документация по bouncer: CrowdSec Bouncers.

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

По умолчанию crowdsec мониторит SSH. Проведите тестовую атаку (с другого хоста) несколько раз введите неверный пароль при подключении по SSH. Затем выполните на защищаемом сервере:

bash

sudo cscli decisions list

Вы увидите принятые решения: IP-адрес, причина (например, crowdsecurity/ssh-bf), тип (ban), длительность. Проверьте, что адрес заблокирован на уровне файрвола:

bash

sudo iptables -L -n | grep <IP-адрес>

Bouncer добавляет правила в цепочку CROWDSEC_CHAIN.

Шаг 4. Расширение мониторинга: Nginx, WordPress и другие сервисы

С помощью cscli можно установить дополнительные коллекции для защиты веб-приложений, баз данных, FTP и многого другого.

  1. Просмотрите доступные коллекции на CrowdSec Hub:

bash

sudo cscli collections list -a
  1. Установите коллекцию, например, для защиты WordPress:

bash

sudo cscli collections install crowdsecurity/wordpress
  1. Чтобы crowdsec начал читать лог конкретного сервиса, в сценарии коллекции уже прописан путь. Если лог лежит в нестандартном месте, можно создать файл ассоциации в /etc/crowdsec/acquis.yaml (основной файл конфигурации источников логов). Пример для пользовательского пути:

yaml

filenames:
  - /var/log/myapp/access.log
labels:
  type: nginx

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

bash

sudo systemctl restart crowdsec

Документация по acquis.yamlAcquisition Configuration.

Шаг 5. Подключение к Central API и использование Blocklists

CrowdSec предлагает бесплатный Central API для подписки на глобальные блок-листы и обмена информацией об атаках. Подключение опционально, но крайне полезно.

  1. Зарегистрируйте экземпляр:

bash

sudo cscli capi register
  1. Подпишитесь на один или несколько блок-листов (например, список известных брутфорс-IP). Просмотр доступных:

bash

sudo cscli blocklists list
  1. Подпишитесь:

bash

sudo cscli blocklists install crowdsecurity/bruteforce

Теперь ваш сервер будет автоматически получать обновления вредоносных IP-адресов, обнаруженных другими участниками сети crowdsec.

Официальная документация по Central API: CrowdSec CAPI.

Устранение распространённых проблем

СимптомВероятная причинаРешение
Агент запущен, но решения не принимаютсяКоллекция не установлена или неверно указан путь к логамПроверьте sudo cscli collections list. Убедитесь, что лог-файл существует и читаем (sudo -u crowdsec cat /var/log/auth.log).
Bouncer не добавляет правила в iptablesПакет iptables не установлен или используется nftables без обратной совместимостиУстановите iptables или выберите bouncer для nftables (crowdsec-firewall-bouncer-nftables).
Ошибка «connection refused» при регистрации CAPIСервер не может достучаться до api.crowdsec.net (порт 443)Проверьте сетевой доступ: curl https://api.crowdsec.net. Откройте порт 443 исходящий.
Решение ban активно слишком долгоНастройки длительности по умолчанию (4 часа) подходят не всемИзмените профили длительности в /etc/crowdsec/profiles.yaml. Подробнее в Profile Configuration.
Не устанавливаются коллекции из HubУстаревшая версия cscli или отсутствие интернетаОбновите crowdsecsudo apt update && sudo apt upgrade crowdsec. Если интернета нет, рассмотрите локальное зеркало или ручную установку коллекций.

CrowdSec выводит защиту серверов от bruteforce на принципиально новый уровень. В отличие от Fail2Ban, который работает локально и изолированно, crowdsec объединяет серверы в единую сеть обмена информацией об угрозах, что особенно ценно в распределённой инфраструктуре. Настройка занимает не более получаса, после чего вы получаете автоматически обновляемый щит, блокирующий как локальные атаки, так и адреса, замеченные на других узлах сообщества. Для большинства стандартных сценариев (SSH, веб-сервер) достаточно установки агента и bouncer, а для более сложных достаточно активировать дополнительные коллекции из официального хаба.

0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest
0 комментариев
Популярные
Новые Старые

0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x
Menu