Защита терминального сервера от подбора пароля

06.09.19

Администрирование - Пароли

Да, не все терминальные сервера есть возможность спрятать за ВПН. Но и смена порта подключения (стандартный 3389) тоже не решает все проблемы. Написал скрипт на PowerShell, который блокирует или не блокирует соединения.

Скачать файлы

Наименование Файл Версия Размер
Защита терминального сервера от подбора пароля:
.ps1 14,07Kb
8
.ps1 5.2 14,07Kb 8 Скачать

Итак, что мы имеем:

  • терминальный сервер на Windows 2008R2
  • реальный IP адрес сервера
  • нет возможность всех клиентов заставить работать по VPN
  • события о подборе пароля в журнале безопасности.

Трудности в том, что:

  • при включенной NLA (Network Level Authentication) в логах отсутствует IP адрес источника;
  • в отличии от Windows Server 2012 r2 в журнале Microsoft-Windows-TerminalServices-RemoteConnectionManager/Operational есть только запись "Прослушиватель RDP-Tcp получил соединение" но нет IP адреса источника.

Что делаем:

Вариант 1: отключить NLA (в конфигурации сервера узла удалённых рабочих столов, с свойствах подключения убрать галоску "Разрешить подключаться только с компьютеров, на которых работает удалённый рабочий стол с проверкой подлинности на уровне сети"), после чего можно будет использовать DRPDefender - но это не наш метод.

Вариант 2: При успешном подключении (код события 4624 в журнале безопасности) выполняется запись айпишника в "белый лист". На всякий случай, чтоб его случайно не заблокировать. Так как некоторые терминальные клиенты (с MacOS и Linux) при подключенном состоянии к серверу но не работы на самом терминальном сервере (т.е. работе на локальном компьютере) пытаются переподключиться к серверу, создавая события 261 из Microsoft-Windows-TerminalServices-RemoteConnectionManager/Operational , и рискуют попасть в бан.

При создании нового события с кодом 261 из Microsoft-Windows-TerminalServices-RemoteConnectionManager/Operational  выполняем скрипт. Который берёт айпиадреса которые сейчас активны на порту нашего терминального сервера (net stat с фильтрами), сравнивает их с IP адресами с которых за последние 7дней были успешные подключения по RDP, если с адреса были успешные подключения - тогда не трогаем его (скрипт закрывается). Если за 7 дней с этого IP адреса небыло успешных подключений - тогда "берём его на карандаш" а точнее записываем его в отдельный файлик (отдельный файлик для каждого адреса). Если в файлике более 20 строк (было 20 попыток подключиться) тогда добавляем этот адрес в правило фаервола (виндового) и создаётся отдельное задание (само, автоматически) на разблокировку через 15 минут.

P.S. 1: Для блокировки нужно в виндовом фаерволе создать запрещающее правило с названием BlockAttackers

P.S. 2: Задание в шедуллере должно иметь право на чтение виндовых журналов. По идеи должно хватать роли "Читатели журнала событий".

P.S. 3: Задание в шедуллере должно иметь право на изменение правил фаервола. Запускаю от имени системы.

UPD 1:

Собрал оба скрипта в один файл. вынес ключевые параметры в переменные в начале файла

Инструкция по установке:

1. создаём правило в Брандмауере с названием "BlockAttackers":

  • действие "блокировать";
  • тип протокола - любой (ну или можно указать только порт RDP подключения, настроенный в виндовой службе);
  • область - Удалённый IP адрес - указанные IP-адреса - добавьте адрес к примеру 1.1.1.1 (вероятность подключения вашего сотрудника с такого IP близится к нулю);
  • профиль безопасности - все.

 

2. создаём задание в виндовом шедуллере, выполнять от имени "система" к примеру, при возникновении события с кодом 261 в журнале Microsoft-Windows-TerminalServices-RemoteConnectionManager/Operational выполняем действие "запуск программы" powershell.exe с аргументом

C:\Windows\system32\Fail2Ban.ps1 ban

3. создаём задание в виндовом шедуллере, выполнять от имени "система" к примеру, при возникновении события с кодом 4624 в журнале "безопасность" источник "Microsoft Windows security auditing."  выполняем действие "запуск программы" powershell.exe с аргументом

C:\Windows\system32\Fail2Ban.ps1 addgoodip

4. создаём задание в виндовом шедуллере, выполнять от имени "система" к примеру, по расписанию в полночь (или около того) выполняем действие "запуск программы" powershell.exe с аргументом

c:\Windows\System32\Fail2Ban.ps1 midnite

 

По итогу в папке Temp создаются файлики с айпишниками успешных и неуспешных подключений.

 

UPD 2

- Добавил ключ устаонвки

- Подправил некоторые моменты относящиеся к описанию внутри кода.

 

UPD 3

- опитимизирован процесс установки в зависимости от версии ОС.

брутфорс RDP fail2ban терминальный сервер Windows server 2008R2 powershell

См. также

Подключение по RDP из 1С с автоматическим вводом пароля

Удаленное управление Пароли Платформа 1С v8.3 1С:ERP Управление предприятием 2 Абонемент ($m)

Как дать доступ сотруднику к удаленному рабочему столу (RDP), но при этом не давать пароль доступа?

2 стартмани

25.03.2024    3252    2    dungeonkeeper    1    

9

Сохранение учетных данных от Webkassa, Розница для Казахстана, ред 2.3

Пароли Платформа 1С v8.3 1С:Розница 2 Розничная и сетевая торговля (FMCG) Казахстан Абонемент ($m)

Расширение позволяет сохранить данные о логине и пароле для сервиса Webkassa.kz и при каждом входе в РМК не вводить эти данные, что позволяет сократить время при входе в РМК для кассиров.

1 стартмани

12.12.2023    316    1    anuar_medeup    0    

0

Сохранение учетных данных для WebKassa для Казахстана

Пароли Платформа 1С v8.3 Конфигурации 1cv8 Казахстан Абонемент ($m)

Расширение для запоминания в базе логина пароля для авторизации на сервисе WebKassa.

1 стартмани

28.08.2023    585    2    BadMadJohn    0    

2

Массовая генерация и замена паролей пользователей

Пароли Платформа 1С v8.3 Конфигурации 1cv8 1С:Бухгалтерия 3.0 Абонемент ($m)

ДОБАВЛЕНА ГЕНЕРАЦИЯ ПАРОЛЯ! Запускаем обработку, смотрим на список пользователей и делаем свое дело, выделяем нужных или всех сразу и назначаем пароль. Особенно помогает, когда ну очень большая организация. ДОБАВЛЕНА ГЕНЕРАЦИЯ ПАРОЛЯ!

1 стартмани

28.08.2023    711    1    Maxiko    3    

4

Групповая генерация паролей для рассылки отчетов в ЗУП 3

Пароли Платформа 1С v8.3 1С:Зарплата и Управление Персоналом 3.x Россия Абонемент ($m)

Генерирует и устанавливает пароль разной сложности для каждого элемента из выбранной папки справочника Рассылка отчетов. Для генерируемого пароля есть выбор длины и сложности (цифры, большие и маленькие буквы, спецсимволы) . Есть опция установки в качестве пароля номера паспорта сотрудника. После обновления на ЗУП 3.1.27.23 обработка быстро создаст новые пароли взамен созданных до обновления на этот релиз (и после обновления - "исчезнувших"). Об изменениях в хранении паролей для справочника Рассылки отчетов с версии ЗУП 3.1.27.23. Описание и обход ошибки в функции общего модуля ПользователиСлужебный.СоздатьПароль(ПараметрыПароля()).

1 стартмани

10.08.2023    814    3    bugtester    0    

3

Ошибка аутентификации клиента средствами операционной системы: Аутентификационный контекст клиента отсутствует в рабочем процессе

Пароли Платформа 1С v8.3 Бесплатно (free)

Устранение ошибки "Ошибка аутентификации клиента средствами операционной системы: Аутентификационный контекст клиента отсутствует в рабочем процессе", при вызове метода "УстановитьСоединенение()".

05.06.2023    1782    yuryshestakov    0    

6

Скрипт для создания пользователей на сервере

Роли и права Пароли Абонемент ($m)

Скрипт для создания пользователей на Windows сервере. Задача - переложить функцию создания пользователей на сервере на неквалифицированного сотрудника без особых знаний, или автоматизировать свою работу.

1 стартмани

30.05.2023    1824    4    user1093325    6    

6

Чтение / Запись данных в регистр "Безопасное хранилище данных"

Пароли Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Если в проекте 1С используется подсистема БСП, то хранение паролей можно организовать через безопасное хранилище.

1 стартмани

20.01.2023    3303    13    baidinden    0    

4
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. lmnlmn 69 06.09.19 13:19 Сейчас в теме
Это, конечно, лучше чем просто светить портом RDP во всея интернет, но все же как-то страшновато мне.
2. Jokemas 192 06.09.19 14:40 Сейчас в теме
Проблему с защитой особо не решит. Даже не могу представить, в каких случаях нельзя VPN поднять. На крайняк у 1Сного сервера ставится какой нибудь микротик, там создаются VPN пользователи и тоннель, а люди со стандартного. виндового VPN цепляются уже к микротику, который уже отдает трафик серверу. Либо поднимается OpenVPN за 15 минут. Т.е. проблемы как таковой-то и нет. Цена вопроса не большая, даже очень маленькая конторка может выбрать просто подешевле устройство и все. Зачем скриптом решать в этом случае? Это реальный костыль, но за старания поставил плюс. Единственное - не надо пытаться все продать. Я свои PS скрипты прикрепляю, но весь листинг кидаю под спойлер, чтобы люди могли брать, если надо. Никому не навязываю, но все же PS скрипт не бог весть что, чтобы эту мелочь продавать. Да и эти PS скрипты больше нужны сис.админам, чем 1Сникам, а сис.админы редко имеют старт.мани =)).

З.Ы. Все в коммерсов заделались =))). Идея интересная, при желании по описанию можно свой скрипт написать ))
3. KiborG85 26 06.09.19 16:09 Сейчас в теме
(2) На панацею не претендую, но как идея (хотя бы отправная точка) - вполне себе так да.
VPN - поверьте, не всегда есть возможность. К примеру, если это какой-то демонстрационный сервер, доступ к которому должен быть наименее трудозатратный. Чтоб любой бухгалтер мог подключиться без настроек RDG и тем более VPN любого рода (некоторые при попытке подключиться такую дичь творят...)
А по поводу открытости кода - да, он открыт. Как доберусь до GitHub (в смысле зарегистрируюсь) - то можно будет там публиковать... А тут не бесплатно потому-что и себе иногда нужна местная валюта для скачивания чего-то срочно нужного.
Оставьте свое сообщение