В этой статье мы рассмотрим, как с помощью утилиты IPBan настроить защиту сервера Windows от атаки по типу отказ в обслуживании (DDoS). Идея заключатся в обнаружении нецелевого/подозрительного трафика по лог файлам (или журналам событий Windows) и блокировки обнаруженных IP адресов в файерволе Windows. Это позволит реализовать простую систему защиты Windows сервера от DDoS атаки без использования дополнительных внешних средств защиты.
Симптомы DDoS атаки на веб сервер Windows
В нашем случае на хосте Windows Server в dmz сети, на котором размещено небольшое веб приложение, обнаружилась аномально высокая загрузка сетевого интерфейса, которая практически целиком забила доступную пропускную способность WAN канала.
С помощью ResMon можно определить, что с хостом Windows одновременно устанавливают HTTP сессии сотни клиентов, что не характерно для типовых исторических нагрузок.
Вывести количество одновременных сетевых подключений к серверу по HTTPS можно, например PowerShell командой:
netstat -ano | findstr :443 |measure
Для блокировки IP адресов ботов мы воспользуемся open-source утилитой IPBan (DigitalRuby.IPBan), которая является аналогом fail2ban для Windows. Изначально утилита разрабатывалась для блокировки брутфорс атак на терминальные RDP сервера, но можно использовать ее и для блокировки DDoS атак и на другие Windows-сервисы.
Установка IPBan в Windows Server
Для разбора текстовых лог файлов веб сервиса (или событий в Event Viewer) мы воспользуемся open-source утилитой IPBan. Эта утилита с помощью регулярных выражения позволяет выполнять анализ текстовых лог файлов или журналов событий (Security/Application логи) на предмет повторяющихся нежелательных событий, извлекать из них IP адреса и после определенного количества неудачных спамных обращений, блокировать их на определенное время правилами Windows Firewall.
Мы будем использовать бесплатную версию IPBan, которую можно получить со страницы проекта на https://github.com/DigitalRuby/IPBan. Бесплатная версия IPBan предполагает возможно работы только в CLI режиме с текстовым файлом конфигурации.
Установить IPBan в Windows можно с помощью готового PowerShell скрипта из GitHub репозитория:
Скрипт скачает файл IPBan на диск в папку C:Program FilesIPBan и создаст в Windows новую службу
Для настройки IPBan используется конфигурационный файл ipban.config.
Файл конфигурации ipban.config представляет собой XML файл, содержащий следующие верхнеуровневые секций:
LogFilesToParse – правила, в который определяются текстовые лог файлы, которые нужно парсить, регулярные выражения извлечения из них информации, паттерны детектирования нежелательных событий
ExpressionsToBlock – паттерны и регулярные выражения для извлечения подозрительных событий и IP адресов из журналов событий Windows для блокировки в файерволе
ExpressionsToNotify – аналогично предыдущему, но только для уведомлений (без немедленной блокировки)
appSettings – секция с базовыми настройками службы IPBan
По умолчанию в файле ipban.config уже включены несколько правил отслеживания неудачных попыток входа. Например:
В секции LogFiles включен парсинг логов следующих сервисов: SSH, IPBanCustom (используется в качестве шаблона для парсинга любых текстовых логов), логов аутентификации Exchange, логов SmarterMail, MailEnable, Apache, логов входа в RDWeb
Удалите правила для всех неиспользуемых сервисов из ipban.config, или воспользуйтесь пустым файлом ipban.override.config в качестве шаблона для вашей конфигурации ipban.
В секции appSettings я настроил следующие параметры:
BanTime – время блокировки IP адреса в файерволе (после истечения которой IP адрес разблокируется). Я блокирую адреса на 1 сутки ( value="01:00:00:00"/
)
Whitelist – белый список IP адресов и подсетей, которые никогда не должны быть заблокированы (диапазоны вашего провайдера, подсети клиентов, и т.д.). Формат списка белых IP: value="12.11.128.0/17,72.19.328.0/18,29.140.16.0/20"
Блокируем спамные IP адреса в Windows Firewall по логам IIS
В нашем случае DDoS выполнятся против небольшого веб сайта IIS, который запущен на Windows Server и опубликован в Интернете. Кроме того, на сервере развернута роль шлюза доступа RD Gateway для подключения удаленных пользователей.
Наличие активной DOS атаки на IIS подтверждалось огромными файлами логов IIS в каталоге C:inetpublogsLogFilesW3SVC1
(по несколько Гб). Чтобы IPBan было проще разбирать лог файлы IIS, мы в консоли IIS Manager ( inetmgr
) изменили формат логов с формата новый лог каждый день (по умолчанию) на новый лог при достижении указанного размера файла (мы указали тут 95 Мб): IIS -> Web Site -> Ведение журнала -> переход на новый файл журнала -> при достижении максимального размера файла.
Далее вам нужно определить по логам IIS каким типом обращений перегружен ваш сайт. В моем случае в логе оказалось десятки тысяч запросов с разных IP с HTTP кодом ошибки 405 (Method Not Allowed).
PathAndMask – путь к логам (обратите внимание, что слеши в пути должны быть инвертированы)
FailedLoginRegex – regexp выражение для поиска событий с кодом ответа 405 и извлечением из них IP адреса
FailedLoginThreshold – порог неудачных попыток входа перед блокировкой IP
В вашем случае может быть другой regexp. Для его тестирования можно воспользоваться PowerShell. Скопируйте строку из лога IIS и проверьте ее через вашу регулярку:
$logLine = " 2025-12-08 19:37:39 192.168.0.100 POST / - 443 - 95.128.157.17 Mozilla/5.0+(Macintosh;+Intel+Mac+OS+X+10.15;+rv:128.0)+Gecko/20100101+Firefox/128.0 https://123 405 0 1 172 " $regex = '^(?d{4}-d{2}-d{2}s+d{2}:d{2}:d{2})s+S+s+S+s+S+s-sd+s-s(?S+).*?s405s+d+s+d+s+d+$' if ($logLine -match $regex) { Write-Host "✓ Совпадение: нежелательный IP: $($Matches.ipaddress)" -ForegroundColor Green } else { Write-Host "✗ NO MATCH!" -ForegroundColor Red }
Перезапустите службу IPBan, чтобы перечитать правила:
Restart-Service ipban
Информацию о всех своих действиях и срабатываниях IPBan пишет в файл logfile.txt.
+
В нашем случае большое количество ботов долбилось также на несуществующие страницы, возвращающие 404
ответ. Для их блокировки мы добавили дополнительное правило:
Для полной блокировки IP адресов, для которых превышен порог срабатывания, IPBan создает правила Windows Firewall с именем IPBan_Block_0
, IPBan_Block_1000
и т.д. (из-за ограниченного максимального размера правила файервола, каждая следующая 1000 заблокированных IP адресов добавляется в новое правило).
Список заблокированных IP адресов в правиле IPBan и их количество можно вывести с помощью PowerShell:
В моем случае за неполные сутки работы IPBan было заблокирована почти 5000 IP адресов, с которых осуществлялась DOS атака. После чего, нагрузка на сетевой интерфейс сервера нормализовалась, а количество активных подключений к IIS уменьшилось с нескольких тысяч до сотни.
После истечения времени блокировки, IP адрес удаляется из правила.
Дополнительно можно через IIS Filtering заблокировать явно спамные User-Agent: iismanager -> Фильтрация запросов -> Правила -> заголовок: user-agent
-> запретить строки: добавьте все явно спамные заголовки в соответствии с вашим логом IIS (например, AppleWebKit
, lynx
и прочие).
При обращении агентов с такими заголовками IIS будет возвращать 404 ошибку.
Таким образом, с помощью IPBan мы реализовали простейшую защиту от DDoS атаки на веб-сервер Windows. По аналогии, вы можете анализировать логи или журналы событий других приложений и блокировать IP адрес с подозрительным/спамным трафиком.
Windows Server 2025
Защита Windows от DDoS и брутфор атак с помощью IPBan