Fail2ban для Windows ищут все, кто привык к нему на Linux и получил в хозяйство Windows Server с открытым RDP. Официальной версии нет: fail2ban читает текстовые логи и управляет iptables или nftables, а в Windows неудачные входы попадают в журнал событий, и блокирует IP брандмауэр Windows. Ниже разберём, как устроен аналог fail2ban для Windows, какие готовые программы есть и что делать, когда серверов много и среди них и Windows, и Linux.
Почему fail2ban не работает на Windows
Fail2ban написан на Python и рассчитан на Linux. Он следит за файлами вроде /var/log/auth.log, ищет в них строки по регулярным выражениям и добавляет правило в iptables, nftables или ipset. В Windows всё устроено иначе:
- неудачные входы пишутся не в текстовые файлы, а в журнал событий: RDP и SMB в журнал безопасности (событие 4625), MS SQL в журнал приложений (событие 18456);
- блокировать IP нужно правилом брандмауэра Windows, а не iptables;
- у многих служб, например у IIS и Exchange, свои логи со своим форматом.
Запустить fail2ban через Cygwin или WSL технически можно, но он не увидит журнал событий без дополнительных прослоек и не умеет управлять брандмауэром Windows. Поэтому на практике используют отдельные программы, которые повторяют идею fail2ban.
Как устроен аналог fail2ban для Windows
Любой fail2ban для Windows делает три вещи:
- Читает источники неудачных входов. Главный из них событие 4625 в журнале безопасности, где в поле «Сетевой адрес источника» записан IP. Для RDP с NLA этот адрес часто пустой (
-), и тогда IP берут из журналаRemoteDesktopServices-RdpCoreTS/Operational, событие 140. - Считает попытки. Если с одного адреса пришло больше N неудачных входов за заданное время, адрес считается атакующим.
- Блокирует адрес. Создаёт или дополняет входящее правило брандмауэра Windows с действием «Блокировать», а по истечении срока удаляет адрес из правила.
Самый простой вариант можно собрать скриптом PowerShell и планировщиком задач. Готовый скрипт с разбором ограничений есть в статье о защите RDP от брутфорса.
Готовые аналоги fail2ban для Windows
Есть несколько открытых проектов, которые делают это из коробки:
- IPBan от DigitalRuby. Самый развитый: служба для Windows и Linux, большой набор готовых правил для RDP, MS SQL, MySQL, почтовых серверов, VNC и других служб. Настраивается XML-файлом на каждом сервере.
- EvlWatcher. Служба, которая следит за журналом событий и банит нарушителей правилом брандмауэра, по умолчанию на 2 часа.
- Fail2Ban4Win. Блокирует не отдельные адреса, а целые подсети, если из них пришло достаточно ошибок входа.
- wail2ban. Скрипт PowerShell, повторяющий базовую логику fail2ban.
Для одного-двух серверов это рабочие решения. Все они в первую очередь защищают тот сервер, на котором установлены.
Где аналогов не хватает: несколько серверов
Ботнеты перебирают пароли не к одному серверу, а к целым диапазонам адресов. Если у вас десяток серверов, один и тот же IP по очереди приходит на каждый. Локальный fail2ban для Windows банит его на каждом сервере отдельно, после того как тот уже сделал там свои попытки. Каждый сервер учится сам.
Вторая проблема в смешанном парке. На Linux стоит fail2ban со своими jail, на Windows другая программа со своим конфигом, и общего списка забаненных адресов у них нет. Whitelist, сроки банов и исключения приходится поддерживать в двух местах.
Масштаб хорошо видно по нашим собственным 20 серверам (14 Windows и 6 Linux). С 10 по 25 сентября 2026 года в общий бан-лист попало 9 204 новых IP, в среднем около 500 в сутки. Каждый из этих адресов без общего списка пришлось бы ловить заново на каждом сервере, куда он доберётся.
KIPBan: fail2ban для Windows и Linux с общим бан-листом
KIPBan решает обе проблемы. На каждый сервер ставится агент, а бан-лист у всех серверов общий:
- Windows. Агент читает журнал событий и логи служб по 20 правилам: RDP (события 4625 и журнал RdpCoreTS), RD Web, MS SQL, MySQL, PostgreSQL, SMTP в Exchange, SmarterMail, MailEnable, OpenSSH для Windows, VNC, VPN/RRAS, VisualSVN и другие. По умолчанию IP банится после 3 неудачных попыток подряд, если между ними прошло не больше 5 минут.
- Linux. Агент работает поверх fail2ban и сам подключается ко всем включённым jail. Подробно об этом в статье про fail2ban на нескольких серверах.
- Общий бан-лист. Сервер, поймавший атакующего, сразу отправляет IP в центр. Остальные серверы забирают обновления раз в 5 минут и блокируют адрес ещё до того, как он к ним придёт.
- Блокировка. На Windows агент создаёт входящие правила брандмауэра Windows, до 1000 адресов в правиле, на все порты и протоколы. Брандмауэр Windows должен быть включён.
- Сроки бана растут. Первое нарушение 3 дня, второе 30 дней, дальше навсегда. Лестница настраивается.
- Свои адреса в безопасности. Адреса локальной сети агент на Windows не блокирует никогда. Whitelist поддерживает подсети CIDR и задаётся для всей организации или отдельного сервера.
- Уведомления в Telegram о банах и разбанах. На Windows в уведомлении виден логин, под которым пытались войти.
Агент для Windows собирается на самом сервере из исходников встроенным компилятором .NET Framework 4.x, готовые бинарники не скачиваются. Нужны PowerShell 5 и права администратора. В работе агент проверен на Windows Server 2019, 2022 и 2025.
Установка агента на Windows
После подключения в личном кабинете появляется команда с токеном сервера. Её запускают в PowerShell от имени администратора:
Invoke-WebRequest "https://api.kipban.ru/download_installer.php?token=<ТОКЕН>" -OutFile C:\kipban_install.ps1 -UseBasicParsing
powershell -NoProfile -ExecutionPolicy Bypass -File C:\kipban_install.ps1
Токен единственный ключ сервера. Не публикуйте его и не пересылайте в открытых каналах.
Вопросы про fail2ban для Windows
Есть ли официальный fail2ban для Windows?
Нет. Fail2ban рассчитан на Linux: он читает текстовые логи и управляет iptables или nftables. Для Windows используют отдельные программы с той же идеей, например IPBan, EvlWatcher, Fail2Ban4Win или KIPBan.
Что делать, если в событии 4625 вместо IP стоит прочерк?
Так бывает при подключении по RDP с включённым NLA. В этом случае адрес атакующего нужно брать из журнала RemoteDesktopServices-RdpCoreTS/Operational, событие 140. Агент KIPBan читает оба журнала.
Чем KIPBan отличается от IPBan?
IPBan защищает сервер, на котором установлен, и настраивается на каждом сервере отдельно. KIPBan объединяет серверы Windows и Linux в общую сеть с одной панелью: IP, пойманный на одном сервере, в течение 5 минут блокируется на всех остальных.
Не заблокирует ли агент мой офис или сотрудников?
Адреса локальной сети агент на Windows не блокирует. Внешние адреса офиса и VPN добавьте в whitelist, он поддерживает подсети CIDR. Адрес из whitelist не блокируется, даже если он есть в общем бан-листе.