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

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). Включить аудит неудачных входов в Windows в настройках безопасности Теперь при неудачной попытке аутентификации удаленного пользователя в журнале Event Viewer -> Security будет фиксироваться событие. Журнал событий - 4625 - неудачная попытка входа
  • По умолчанию в конфигурационных файл 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

Установка CrowdSecurity.CrowdSec в Windows

Можно вручную скачать MSI установщик CrowdSec здесь https://github.com/crowdsecurity/crowdsec/releases

Далее нужно установить компонент 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

Установка CrowdSecurity.CrowdSecWindowsFirewallBouncer

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

Get-Service Crowdsec, cs-windows-firewall-bouncer| Start-service -verbose

Перезапустите консоль PowerShell и проверьте, что firewall-bouncer успешно добавлен и зарегистрирован в списке доступных исполнителей:

cscli bouncers list

cscli bouncers list - список исполнителей в crowdsec

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

Выведите список установленных коллекций:

cscli collections list

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

crowdsecurity/windows-bf - сценарий обнаружения брутфорс атак для windows

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

Restart-Service crowdsec

Для вывода текущего статуса агента CrowdSec используется команда:

cscli metrics

Блокировка перебора паролей в Windows с помощью CrowdSec

При дефолтной установке движка CrowdSec в Windows уже будут активны сценарии обнаружения перебора паролей по событиям аудита в журнале Security. Проверить текущие настройке детектирования можно в конфиг файле C:\ProgramData\CrowdSec\config\acquis.yaml

. Правило обнаружения подбора паролей в event viewer

Здесь видно, что активно правило CrowdSec, который отслеживает появление событий ошибок аутентификации (4625 и 4623) в журнале событий Event Viewer.

Пример реализации защита RDP сервера от перебора паролей с помощью только встроенных средств и PowerShell скрипта.

Попробуйте несколько раз подключиться к этому хосту по RDP, вводя неправильные данные учетной записи. Через несколько неудачных подключений IP, адрес этого компьютера будет заблокирован в файерволе.

Вывести список обнаруженных аномалий и принятых решений на основе парсинга логов (активные баны):

cscli decisions list

Видим, что IP адрес был заблокирован (ban) на 4 часа согласно паттернам атаки, определенным в сценарии crowdsecurity/windows-bf .

cscli decisions list - список заблокированных IP

Историю банов можно вывести так:

cscli alerts list

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

Правило в Windows Firewall которое блокирует 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"

Разблокировать IP адрес cscli decisions delete

Для просмотра в реальном времени логов срабатывания и блокировки CrowdSec, выполните PowerShell команду:

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

Логи CrowdSec в Windows

Настройки параметров детектирования попыток брутфорса и условия срабатывания (количество неудачных попыток) настраиваются в файле сценария. В нашем случае это C:\ProgramData\CrowdSec\config\scenarios\windows-bf.yaml

Здесь можно изменить:

  • Количество неудачных попыток входа, превышение которого активирует защитный сценарий: capacity: 5
  • Через сколько секунд сбрасываются (забываются) неудачные попытки: leakspeed: 10s

Настройки параметров детектирования подбора паролей

Время блокировки по умолчанию задается в файле C:\ProgramData\CrowdSec\config\profiles.yaml:

Duration: 4h

После изменения конфигурационных файлов не забывайте перезапускать службу crowdsec

Чтобы добавить некоторые 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"  # подсеть

Добавить список белых IP адресов для CrowdSec

Перезапустите службу:

Restart-Service crowdsec

Проверьте, что модуль whitelists активен:

cscli parsers list

модуль whitelists активен

С помощью парсера crowdsecurity/geoip-enrich можно настроить блокировку доступа из определенных стран или, наоборот, разрешить доступ к серверу только из определенных стран (потребуется бесплатная регистрация и ключ для GeoIP-базы данных из сервиса MaxMind.

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

Настройка уведомлений в CrowdSec

В дефолтный пакет для 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, так и группы серверов с централлизованной обрабокой логов и управления блокировками на удаленных машинах.


Предыдущая статья Следующая статья


Комментариев: 0 Оставить комментарий

Оставить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Я не робот( Обязательно отметьте)