PowerShell 5.1+ Windows Server 2016+ license

IPBanManager

Защита RDP от подбора паролей на Windows-сервере — IPBan ставится, обновляется и настраивается из одного меню, без ручной правки XML.

PS> irm https://imiron.ru/IPBanManager/ipban.txt | iex

Вставить в PowerShell, запущенный от имени администратора. Сам IPBan ставится только по пункту «Установить».

Как начать Исходный код на GitHub
Администратор: Windows PowerShell
IPBan Manager   [установлен 4.1.0]

    1) Установить
    2) Обновить
    3) Удалить
  > 4) Настройки        
    5) Состояние
    ─────────────
    6) Забаненные адреса
    7) Разбанить IP
    0) Выход

  ↑↓ — выбор, Enter — выполнить, цифра — сразу пункт, Esc — назад
Почему не просто IPBan

IPBan отличный, но настраивать его неудобно

IPBan от DigitalRuby следит за неудачными входами и банит адреса брандмауэром Windows. Всё управление — правка XML-конфига руками, и несколько типовых ловушек легко пропустить.

Вручную

  • Аудит неудачных входов выключен — IPBan молча ничего не видит
  • Путь службы без кавычек — уязвимость unquoted service path
  • Белый список — длинная строка через запятую в XML
  • Непонятно, что изменится, пока не перезапустишь службу
  • Забаненные адреса — копаться в правилах брандмауэра

С менеджером

  • Аудит включается при установке, путь службы чинится сам
  • Настройки хранятся отдельно и переживают обновление IPBan
  • Белый список по источникам, с доменами и проверкой ввода
  • Изменения показываются заранее; отказались — ничего не сохранено
  • Забаненные и разбан — прямо в главном меню
Возможности

Что умеет

⤓

Установка в один пункт

Официальный установщик DigitalRuby, аудит входов, кавычки в пути службы, проверка конкурентов — RdpGuard, EvlWatcher, wail2ban и др.

↻

Обновление без потерь

Конфиг копируется перед обновлением, а настройки менеджера накатываются на новый конфиг после.

⊘

Забаненные и разбан

Список колонками по порядку. Разбан нескольких адресов с ожиданием, пока служба действительно снимет бан.

✓

Белый список

Частные сети сервера, активные RDP-сессии, свои IP, подсети, домены и URL списков.

±

Видно до применения

да → нет, + добавится, - уйдёт. Подтверждение перед записью конфига.

⌨

Меню стрелками

↑/↓ и Enter, цифра — сразу пункт, Esc — назад. В ISE и PSSession — ввод номера.

Белый список

Четыре источника — и видно каждый

ИсточникЧто попадает
loopback127.0.0.1, ::1
сетиЧастные подсети сервера (RFC 1918, CGNAT). Публичный адрес — только сам /32, чтобы не открыть соседей по хостингу
RDPКлиенты активных сессий с вошедшим пользователем — чтобы не забанить себя
ручнойIP, подсети, доменные имена, URL текстового списка адресов

Перед применением менеджер показывает, что изменится в конфиге:

Настройки → 9) Сохранить и применить
==> Что изменится в ipban.config:
    Попыток до бана:  5  →  3
    Белый список: сейчас 5, станет 6  (+2 / -1)
      loopback
        = 127.0.0.1   = ::1
      сети интерфейсов
        = 192.168.10.0/24
      RDP-сессии
        + 203.0.113.7 (SRV01\admin)
      ручной список
        = wl.example.ru   + 198.51.100.0/24
      уйдут из списка
        - 192.0.2.44
      + добавится   - уйдёт   = останется
Применить? [y/N]: _

Домен для динамического IP. Заведите, например, wl.example.ru с A-записями на все свои адреса и добавьте имя в список. IPBan сам перечитывает имена и URL раз в 5 минут.

Но помните: белый список IPBan — это разрешающее правило брандмауэра на все порты. Кто может изменить DNS-запись из списка, тот может открыть себе сервер. Закройте DNS-аккаунт 2FA, а постоянный IP добавьте ещё и напрямую.

RDP-адреса берутся только у активных сессий, где пользователь вошёл. Просто открытые соединения на порт RDP не берутся: среди них боты, подбирающие пароль.

Быстрый старт

Первый запуск

  1. Открыть PowerShell от имени администратора на сервере.
  2. Вставить строку запуска сверху страницы — откроется меню.
  3. 1) Установить — поставит IPBan и применит настройки по умолчанию: 5 попыток, бан на сутки.
  4. 4) Настройки → Белый список — добавить свои IP или домен, затем 9) Сохранить и применить.
  5. 5) Состояние — убедиться, что служба работает, брандмауэр включён, а аудит неудачных входов включён.
Без меню

Автоматизация

Для развёртывания на нескольких серверах — сразу нужное действие:

iex "& {$(irm https://imiron.ru/IPBanManager/ipban.txt)} -Action Status"
-ActionЧто делает
InstallУстановить и применить сохранённые настройки
UpdateОбновить до последнего релиза, настройки сохраняются
UninstallУдалить службу, правила брандмауэра, каталог
ApplyПрименить сохранённые настройки и перезапустить службу
StatusВывести состояние
Частые вопросы

Если что-то не так

«Could not create SSL/TLS secure channel» при запуске

Старые системы (Server 2016 / 2012 R2) по умолчанию не включают TLS 1.2. Допишите в начало строки:

[Net.ServicePointManager]::SecurityProtocol=3072; irm https://imiron.ru/IPBanManager/ipban.txt | iex
Кракозябры вместо русского при запуске скачанного файла

Файл хранится в UTF-8 без BOM — иначе не работал бы irm | iex. Windows PowerShell 5.1 читает такие файлы как ANSI, поэтому локально запускайте так:

iex (Get-Content .\IPBan-Manager.ps1 -Raw -Encoding UTF8)
Почему ссылка на .txt, а не на .ps1

GitHub Pages отдаёт .ps1 без кодировки, и Windows PowerShell 5.1 прочитал бы русский текст как Latin-1. .txt приходит с charset=utf-8. Внутри — тот же IPBan-Manager.ps1, сайт собирается из репозитория при каждом изменении скрипта. Запасной вариант — напрямую с GitHub:

irm https://raw.githubusercontent.com/iMironRU/IPBanManager/main/IPBan-Manager.ps1 | iex
Стрелки не работают

В PowerShell ISE и в удалённой сессии Enter-PSSession клавиши не перехватить — там пункт выбирается вводом номера. В обычной консоли и Windows Terminal работают стрелки.

IPBan уже стоит — менеджер что-то сломает?

Нет. Перед первым изменением он импортирует текущие значения как есть, а автоопределение сетей и RDP выключает, чтобы поведение не изменилось. Любое изменение конфига показывается заранее и требует подтверждения.

Где хранятся настройки и копии конфига

Настройки менеджера — %ProgramData%\IPBanManager\settings.json, там же копии конфига перед обновлением и при удалении. Перед каждым изменением рядом с ipban.config делается .bak_*, хранятся последние 5.