CrowdSec это современный open-source движок, написанный на Go, который часто называют более современной альтернативой Fail2Ban. CrowdSec позволяет анализировать логи сервера, различных запущенных служб и веб-приложений, детектировать подозрительную активности (перебор паролей, сканирование портов) и автоматически блокировать подозрительные IP адреса в файерволе. Изначально CrowdSec разрабатывался под Linux, но сейчас доступен и для Windows платформы. Из коробки CrowdSec для Windows позволят детектировать и блокировать атаки перебора паролей через SMB и RDP. С небольшой настройкой позволяет блокировать сканирование сетевых портов, атаки на SQL Server, Exchange и на веб- приложения IIS.
В этой статье мы рассмотрим простой сценарий с развертыванием CrowdSec на отдельностоящем хосте с Windows Server 2025, когда все компоненты (сборщик логов, API-сервер и блокировщик) располагаются на локальной машине. Затем покажем, как CrowdSec можно использовать для обнаружения и блокировки брутфорс атаки (перебор паролей) на через RDP.
Установка компонентов CrowdSec в Windows
Подготовка Windows к установке CrowdSec:
- Установите .NET 6.0 Desktop Runtime:
winget install Microsoft.DotNet.DesktopRuntime.6Здесь и далее мы используем менеджер пакетов WinGet для установки программ. Если у вас он отсутствует, вы можете скачать соответствующие пакеты вручную с сайта Microsoft или репозитория CrowdSec в GitHub. - По умолчанию локальный API CrowdSec (LAPI) использует порт TCP:8080. Проверьте, что он это порт свободен и не используется другими сервисами:
Get-Process -Id (Get-NetTCPConnection -LocalPort 8080).OwningProcess - Если вы хотите, чтобы CrowSec блокировал IP адреса, с которых выполняются попытки перебора паролей к учетным записям (в том числе при RDP подключении), нужно включить политику аудита входа в Windows (по умолчанию отключена). Откройте
secpol.msc-> Advanced Audit Policy Configuration -> Audit Policies -> Logon/Logoff. Откройте параметр Audit Logon и включите опцию Отказ (Failure).
Теперь при неудачной попытке аутентификации удаленного пользователя в журнале Event Viewer -> Security будет фиксироваться событие. 
- По умолчанию в конфигурационных файл CrowdSec используется
localhost, что может разрешаться в Windows в IPv6 адрес[::1]и вызвать проблемы при взаимодействии локальных компонентов LAPI, CLI и баунсеров(по умолчанию протокол IPv6 имеет более высокий приоритет, чем IPv4). Поэтому возможно придется поменять localhost в конфигурационных YAML файлах на127.0.0.1
Теперь можно установить, собственно, сам движок CrowdSec Security Engine (включает как агента/парсер логов, так и серверную часть Local API с базой блокировок):
winget install -e --id CrowdSecurity.CrowdSec

Далее нужно установить компонент crowdsec-firewall-bouncer (https://github.com/crowdsecurity/cs-windows-firewall-bouncer/releases).
Сам CrowdSec только обнаруживает атаки, но не блокирует их. Для автоматической блокировки адресов используется Windows Firewall Bouncer. Он будет забирать IP адреса для блокировки из локального API CrowdSec и добавлять их в правилах брандмауэра Windows.
winget install -e --id CrowdSecurity.CrowdSecWindowsFirewallBouncer

После установки проверьте, и запустите две службы:
Get-Service Crowdsec, cs-windows-firewall-bouncer| Start-service -verbose
Перезапустите консоль PowerShell и проверьте, что firewall-bouncer успешно добавлен и зарегистрирован в списке доступных исполнителей:
cscli bouncers list

При установке CrowdSec в Windows, он проверяет установленные службы и устанавливает для них наборы коллекций. Коллекция в CrowdSec это набор сценариев для защиты определенной службы. Включают в себя парсеры и сценарии (логику) обнаружения атаки.
Выведите список установленных коллекций:
cscli collections list

В списке можно посмотреть имя коллекции, активна ли она и где находится ее конфигурационный yaml файл. Например, коллекция crowdsecurity/windows содержит базовый аналитический пакет IDS для Windows. В том числе позволяет блокировать атаки перебора паролей по RDP и SMB.
Если эта коллекция отсутствует, установите ее:
cscli collections install crowdsecurity/windows
Затем выведите установленные сценарии обнаружения атак:
cscli scenarios list
Проверьте, что в списках есть активный сценарий обнаружения брутфорса паролей в Windows (crowdsecurity/windows-bf). Если нужно установить этот сценарий, выполните:
cscli scenarios install crowdsecurity/windows-bf

После добавления, удаления коллекций/сценариев или изменения настроек CrowdSec через конфигурационные файлы, нужно перезапускать службу:
Restart-Service crowdsec
Для вывода текущего статуса агента CrowdSec используется команда:
cscli metrics
Блокировка перебора паролей в Windows с помощью CrowdSec
При дефолтной установке движка CrowdSec в Windows уже будут активны сценарии обнаружения перебора паролей по событиям аудита в журнале Security. Проверить текущие настройке детектирования можно в конфиг файле
C:\ProgramData\CrowdSec\config\acquis.yaml
. 
Здесь видно, что активно правило CrowdSec, который отслеживает появление событий ошибок аутентификации (4625 и 4623) в журнале событий Event Viewer.
Попробуйте несколько раз подключиться к этому хосту по RDP, вводя неправильные данные учетной записи. Через несколько неудачных подключений IP, адрес этого компьютера будет заблокирован в файерволе.
Вывести список обнаруженных аномалий и принятых решений на основе парсинга логов (активные баны):
cscli decisions list
Видим, что IP адрес был заблокирован (ban) на 4 часа согласно паттернам атаки, определенным в сценарии
crowdsecurity/windows-bf
.

Историю банов можно вывести так:
cscli alerts list
Служба CrowdSec Windows Firewall Bouncer создает в файерволе правило брандмауэра crowdsec-blocklistID, в котором блокируется доступ к хосту IP, с которого заподозрена попытка атаки.

Указанный IP будет автоматически разблокирован после истечении времени бана (4 часао по умодчанию). Либо вы можете разблокировать IP вручную:
cscli decisions delete --ip 192.168.158.1
Чтобы сбросить все активные баны:
cscli decisions delete --all
Можно заблокировать определенный IP вручную:
cscli decisions add --ip 192.168.158.1 --reason "My test BAN"

Get-Content C:\ProgramData\CrowdSec\log\crowdsec.log -Wait -Tail 20

Настройки параметров детектирования попыток брутфорса и условия срабатывания (количество неудачных попыток) настраиваются в файле сценария. В нашем случае это C:\ProgramData\CrowdSec\config\scenarios\windows-bf.yaml
Здесь можно изменить:
- Количество неудачных попыток входа, превышение которого активирует защитный сценарий:
capacity: 5 - Через сколько секунд сбрасываются (забываются) неудачные попытки:
leakspeed: 10s

Время блокировки по умолчанию задается в файле C:\ProgramData\CrowdSec\config\profiles.yaml:
Duration: 4h
Чтобы добавить некоторые IP адреса или подсети в белый список, которые никогда не будут блокироваться правилами CrowdSec, создайте файл whitelists.yaml и добавьте в него следующую конфигурацию:
notepad "C:\ProgramData\CrowdSec\config\parsers\s02-enrich\whitelists.yaml"
name: crowdsecurity/whitelists description: "Whitelist my office IPs" whitelist: reason: "My trusted IP addresses" ip: - "192.168.158.1" # конкретный IP cidr: - "192.168.10.0/24" # подсеть

Перезапустите службу:
Restart-Service crowdsec
Проверьте, что модуль whitelists активен:
cscli parsers list

crowdsecurity/geoip-enrich
можно настроить блокировку доступа из определенных стран или, наоборот, разрешить доступ к серверу только из определенных стран (потребуется бесплатная регистрация и ключ для GeoIP-базы данных из сервиса MaxMind.Вы можете настроить отправку уведомлений о срабатывании правил CrowdSec на почту, в Slack, Splunk или на HTTP (для отправки уведомлений в мессенджер, например Telegram). Для этого в файле C:\ProgramData\CrowdSec\config\profiles.yaml нужно включить нужные способы уведомлений и настроить параметры подключения к сервисам в соответствующем YAML файле из директориии
C:\ProgramData\CrowdSec\config\notifications
.

В дефолтный пакет для Windows (коллекция
crowdsecurity/windows
) кроме сценария для обнаружения попыток подбора паролей, входит сценарий
crowdsecurity/iptables-scan-multi_ports
, который позволяет обнаруживать и блокировать сканирование портов (потребует включение текстовых логов Windows Firewall, которые будут использоваться для анализа сетевой активности).
Встроенные коллекции crowdsecurity/iis-logs и crowdsecurity/http-logs позволяют анализировать логи веб-сервера IIS и блокировать подозрительную активность (ранее мы показывали, как использовать IPBan для защиты от DDoS и брутфорс атак на веб сервер IIS в Windows).
В community редакции CrowdSec возможно использовать публичный веб-интерфейс (CrowdSec Cloud Console). Для этого нужно зарегистрироваться на сайте app.crowdsec.net, подключить свой агент, чтобы получать глобальную статистику, подключать глобальные списки блокировок и управлять блокировками через веб-интерфейс
CrowdSec сочетает современную модульную архитектору, простоту настройки, высокую производительность. Его можно внедрить как простую IPS/IDS систему как для отдельного хоста Windows, так и группы серверов с централлизованной обрабокой логов и управления блокировками на удаленных машинах.

