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

06.09.19

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

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

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Защита терминального сервера от подбора пароля:
.ps1 14,07Kb ver:5.2
8
8 Скачать (1 SM) Купить за 1 850 руб.

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

  • терминальный сервер на 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

См. также

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

Создал простое расширение, которое проставит галку Запомнить пароль. Должно работать на всех версиях БСП, т.к. простое.

2 стартмани

19.11.2024    108    0    slavok123    0    

1

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

Расширение добавляет возможность настроить обновление пароля пользователем через заданный промежуток времени в днях (1-99 дней). Также добавлен контроль: новый пароль не должен совпадать с предыдущим.

1 стартмани

11.11.2024    195    1    KonorArgent    0    

1

Информационная безопасность Пароли Программист Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Простой пример формирования одноразового секрета (пароля, сообщения и т.п. информации) через указания ключа.

16.07.2024    722    maksa2005    0    

1

Инструменты администратора БД Пароли Системный администратор Программист Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Обработка для массового изменения элементов внутреннего справочника "Пользователи информационной базы". Можно использовать для аудита пользователей информационной базы, массового изменения основных свойств пользователей, создания паролей, рассылки логинов/паролей.

1 стартмани

13.06.2024    786    15    alexey.kutya    2    

3

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

В очередной раз пришлось поменять пароль пользователя sa в базе данных MS SQL, и поскольку эту процедуру приходится делать нечасто, решил записать последовательность действий для памяти. Коротко. Июнь 2024 г.

03.06.2024    4878    2ncom    9    

15

Информационная безопасность Пароли Платформа 1С v8.3 Бесплатно (free)

Все еще храните пароли в базе? Тогда мы идем к вам! Безопасное и надежное хранение секретов. JWT авторизация. Удобный интерфейс. Демо конфигурация. Бесплатно.

30.05.2024    6209    kamisov    17    

60

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

Обработка для массовой генерации и изменения паролей для любого количества пользователей в 1С. Сложность паролей: длина 8, латинские буквы, цифры и некоторые символы. Может быть полезна в администрировании баз любых конфигураций 1С 8 на управляемых формах с большим количеством пользователей.

1 стартмани

15.05.2024    702    2    Лев    1    

1

Инструменты администратора БД Роли и права Пароли Системный администратор Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Обработка предназначена для переноса пользователей между разными базами 1С. Позволяет выгрузить выбранных (или всех) пользователей базы-источника со всеми настройками, включая разделение данных, в файл. И с помощью этой же обработки загрузить выгруженных пользователей из файла в базу-приёмник. Может быть полезна тем, кто хочет перенести пользователей между базами, у которых включено разделение данных.

1 стартмани

02.05.2024    678    5    METAL    2    

5
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
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 (в смысле зарегистрируюсь) - то можно будет там публиковать... А тут не бесплатно потому-что и себе иногда нужна местная валюта для скачивания чего-то срочно нужного.
Оставьте свое сообщение