Дополнительная защита терминального сервера под Windows 2008+ или блокируем кулл-хацкеров







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

При открытии терминального сервера «наружу» неизбежно придет время, когда вы обнаружите в логах системы большое количество попыток подбора логина и пароля, которые, при большом потоке данных, могут банально заDDOSить сервер до полной невозможности работы пользователей. Да, есть и VPN, и проверка подлинности на уровне сети, и смена номера порта на роутере и т.д,, но все равно проходят и атаки идут. Так усложним им работу 🙂

Потребуется:

  • Windows 2008+
  • Скрипт
  • База данных (Access файл или MS SQL)
  • Настроенный брэндмауэр Windows (даже если сервер у вас за внешним файрволом)

Идея работы: ловим событие аудита отказа логина, помечаем адрес злоумышленника в базе, считаем сколько раз событие произошло и, при достижении определенного порога, делаем новую блокирующую запись в правилах файрволла.

В 2008+ сервере появилась возможность выполнить задачу при наступлении определенного события, так воспользуеся этим.

Создадим новую задачу по событию аудита отказа входа в систему, которая будет запускать VBS скрипт. 

После создания задачи нужно открыть ее свойства и поставить галку «Выполнять с наивысшими правами».

Теперь нужно определиться, как передать параметры из события, в частности, интересует IP-адрес, с которого идет подбор паролей, и подбираемый логин. В Windows, как всегда, напрямую сделать нельзя, поэтому пойдем через черный ход.

В планировщике заданий находим созданную нами задачу, нажимаем на ней правой кнопкой и выбираем пункт «Экспортировать». Сохраняется файл в формате XML.

Сохранили? Теперь откроем файл в Блокноте и допишем следующие блоки, выделенные желтым цветом. Внимание, верстка немного едет, если что — см. рис 7.

  1. <Task version=«1.2» xmlns=«http://schemas.microsoft.com/windows/2004/02/mit/task»>
  2.   <RegistrationInfo>
  3.     <Date>2013-12-02T22:50:07.3872408>
  4.     <Author>X>
  5.   >
  6.   <Triggers>
  7.     <EventTrigger>
  8.       <Enabled>true>
  9.       <Subscription><QueryList><Query Id=»0″ Path=»Security»><Select Path=»Security»>*[System[Provider[@Name=’Microsoft-Windows-Security-Auditing’] and EventID=4625]]</Select></Query></QueryList>>
  10.  
  11.       <ValueQueries>
  12.    <Value name=«TargetUserName»>Event/EventData/Data[@Name=’TargetUserName’]>
  13.    <Value name=«IpAddress»>Event/EventData/Data[@Name=’IpAddress’]>
  14.      >
  15.  
  16.    >
  17.   >
  18.   <Principals>
  19.     <Principal id=«Author»>
  20.       <UserId>X>
  21.       <LogonType>Password>
  22.       <RunLevel>LeastPrivilege>
  23.     >
  24.   >
  25.   <Settings>
  26.     <MultipleInstancesPolicy>IgnoreNew>
  27.     <DisallowStartIfOnBatteries>true>
  28.     <StopIfGoingOnBatteries>true>
  29.     <AllowHardTerminate>true>
  30.     <StartWhenAvailable>false>
  31.     <RunOnlyIfNetworkAvailable>false>
  32.     <IdleSettings>
  33.       <StopOnIdleEnd>true>
  34.       <RestartOnIdle>false>
  35.     >
  36.     <AllowStartOnDemand>true>
  37.     <Enabled>true>
  38.     <Hidden>false>
  39.     <RunOnlyIfIdle>false>
  40.     <WakeToRun>false>
  41.     <ExecutionTimeLimit>P3D>
  42.     <Priority>7>
  43.   >
  44.   <Actions Context=«Author»>
  45.     <Exec>
  46.       <Command>C:WindowsSystem32cscript.exe>
  47.       <Arguments>C:UsersdmitryBLOCKRDP.vbs ‘$(TargetUserName)’ ‘$(IpAddress)’>
  48.     >
  49.   >
  50. >
 

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

 

Собственно скрипт.

  1. Dim ipAddress, idLogin
  2. Const adOpenStatic = 3
  3. Const adLockOptimistic = 3 
  4. Const toBlock = 4
  5.  
  6. Set objConnection = CreateObject(«ADODB.Connection»
  7. Set objRecordSet = CreateObject(«ADODB.Recordset»
  8. Set objRecordSet2 = CreateObject(«ADODB.Recordset»
  9.  
  10. if wscript.arguments.count > 0 then
  11. idLogin = wscript.arguments.item(0)
  12. ipAddress = wscript.arguments.item(1)
  13.  
  14. else
  15. idLogin = «—«
  16. ipAddress = «—«
  17. end if
  18.  
  19. ‘ настраивам подключение к хранилищу
  20. ‘ в качестве хранилища может использоваться база данных как MS SQL, так и обычная база MS Access
  21. objConnection.Open _ 
  22.     «Provider=SQLOLEDB;Data Source=cloud-sql;» & _ 
  23.         «Trusted_Connection=Yes;Initial Catalog=RDP_BlockIP;» & _ 
  24.              «User ID=RDP_BlockIP;Password=RDP_BlockIP;» 
  25.  
  26. ‘ отметим в базе что была попытка подключения с ipAddress с логином idLogin
  27. objRecordSet.Open «insert into dbo.IP values (GETDATE(), « & ipAddress & «, « & idLogin & «, null)», _ 
  28.         objConnection, adOpenStatic, adLockOptimistic 
  29.  
  30.  
  31. Dim wsh
  32. Set wsh = WScript.CreateObject(«WScript.Shell»)
  33.  
  34. ‘ посчитаем, сколько раз за 24 часа было попыток подключения с указанного адреса
  35. ‘ считается только для адресов, которые не входят в адреса-исключения и не были уже обработаны ранее
  36. objRecordSet.Open «SELECT COUNT(LoginDate) as Attempts FROM [RDP_BlockIP].[dbo].IP WHERE [LoginDate] > GETDATE()-1 and (not [IP] in (select * from [RDP_BlockIP].[dbo].exclude_ip)) and (Done is null) and [IP] = « & ipAddress , _ 
  37.         objConnection, adOpenStatic, adLockOptimistic 
  38.  
  39. objRecordSet.MoveFirst 
  40.  
  41.  
  42. Dim fso, tf
  43.  
  44. ‘ Сделаем событиный файл, который подхватит jabber-робот и пришлет адресату
  45. ‘ Можно убрать или заменить на отправку почты, или что-то еще
  46. Set fso = CreateObject(«Scripting.FileSystemObject»)
  47. Set tf = fso.CreateTextFile(«\bettajabberaudit_rdp.txt»True)
  48. tf.WriteLine(«dmitry@192.168.0.3»)
  49. tf.WriteLine(«********** RDP ALERT src: « & ipAddress & «, usr: « & idLogin & «**********»
  50. tf.WriteBlankLines(3) 
  51. tf.Close
  52. ‘ По этоу строку можно удалять, если не требуется
  53.  
  54.  
  55.  
  56. Do Until objRecordSet.EOF
  57.   ‘ Если попыток подбора больше определенного значения…
  58. if (objRecordSet(«Attempts») >= toBlock) and (Len(ipAddress)>4) Then
  59. ‘ …то добавим в файрволл windows ipAddress с политикой блокировки доступа к порту 3389
  60.     wsh.Run(«netsh advfirewall firewall add rule name=RDP_AUTOBLOCK_» & Replace(ipAddress,«‘»,«») & » dir=in action=block profile=any remoteip=» & Replace(ipAddress,«‘»,«») & » localport=3389 protocol=tcp»)
  61.  
  62. ‘ Тут можно сделать СМС-оповещение, etc
  63.  
  64. Set wsh = Nothing
  65.     ‘ Пометим что для указанного адреса все события обработаны
  66. objRecordSet2.Open «update [RDP_BlockIP].[dbo].IP set [done]=1 where [IP] =» & ipAddress  , _ 
  67.         objConnection, adOpenStatic, adLockOptimistic 
  68. end if
  69. objRecordSet.MoveNext
  70. Loop

 Скрипт работает с базой (в примере с MS SQL), поэтому база должна быть, как и пользователь, с которым производится подключение.

Структура таблиц банальна (см. рис.). Первая таблица накапливает данные по IP-адресам, вторая предназначеня для адресов-исключений.

 

 

Итог работы.

Потираем руки и смотрим, как появляются новый записи при попытках брутфорса:

 

 

Обновление

 Список часто подбираемых логинов, зафиксированных этим скриптом за 2 месяца

@dmin alohasvr denis pos005 test1 Деректор
1 amberpos gateway pos05 test3 Директор
123 amministratore guest pos1 user дом
1234 an home pos2 user1 иванов
12345 angel john pos3 User2 Лена
1234567 aspnet jose pos4 user3 менеджер
333 augusto Justin pos5 user4 Нотариус
666 backup kassa raquel user5 пользователь
777 Boss kasse_1 rdspos user6 пользователь1
a bruno kasse1 reception usertask склад
actuser Buh Marko root zxc123 смирнов
adm buh1 max sales Админ смирнова
admin buhgalter Melissa scan Администратор тест
admin1 caisse micros server Алекс  
admin2 carlos office servr Александр  
administrator comp3 operator sklad Александра  
administrator1 cthsq29 owner support алена  
akapos DataCenter padicheva support_388945a бухгалтер  
aloha01 david pochta sys главбух  
alohaedc debbie pos test гость  

38 Comments

  1. iov

    как нарисовать сову.

    рисуем два кружка и дорисовываем все остальное- сова готова.

    это я к чему.

    аудит отказа.

    человек в ВЫДЕЛЕННЫМ ip

    Сведения о сети:

    Имя рабочей станции: OWNEROR-PRS****

    Сетевой адрес источника: —

    Порт источника: —

    и таких 90%

    остальные либо из-за прокси либо иными путями

    чрез пол года правил будет столько что тормоза видны будут и без ддоса.

    далее в скрипте есть строки для jabbera

    ‘ Сделаем событиный файл, который подхватит jabber-робот и пришлет адресату

    все бы ничего но если кто не умеет и не любит читать вставит — словит ошибку.

    далее не поленился повторил все (я так понял таблицы ручками создаются?) и в результате ничего.

    то есть аудит отказа есть и ничего не происходит.

    то есть создал задачу через привязать задачу к событию — без исправлений — работает

    с изменениями- нет.

    как-то так.

    Reply
  2. Dimasik2007

    (1) iov,

    человек в ВЫДЕЛЕННЫМ ip
    Сведения о сети:
    Имя рабочей станции: OWNEROR-PRS****
    Сетевой адрес источника: —
    Порт источника:  —
    и таких 90% 

    Думаю, там в событии ниже указано «Пакет проверки подлинности: NTLM», когда проверка подлинности идет до подключения к серверу (если говорить простым языком), мой блок срабатывает, когда идет режим Negotiate, соответственно адреса ботов видны. На данный момент такие события попадались только с моей машины и то в ходе тестов. Как такое заблокировать — пока не вкурсе.

    алее в скрипте есть строки для jabbera
    ‘ Сделаем событиный файл, который подхватит jabber-робот и пришлет адресату
    все бы ничего но если кто не умеет и не любит читать вставит — словит ошибку. 

    Не знаю админов, которые запускают незнакомые скрипты, перед этим не посмотрев код. Может там rm -rf / ? А коде указывается — не нужно — выпилите.

    я так понял таблицы ручками создаются

    Це же не сложно.

    далее не поленился повторил все (я так понял таблицы ручками создаются?) и в результате ничего.
    

    Выполните скрипт из консоли, через cscript.exe, передав ему путь к скрипту и два параметра, могут быть ошибки.

    типа cscript.exe rdp.vbs ‘pupkin’ ‘8.8.8.8’

    Reply
  3. Dimasik2007

    Что то цитаты аццки распухли, сорри.

    Reply
  4. iov

    так це яж про тоже. Тут для тех кто в курсе все просто просто. Но тутаж программисты 1с. Короче не жеваное не едет. стоило бы скриптик выложить для создания базы с нужными полями. имена параметров вынести отдельно с комментариями и пр. плюсов бы поболе насобирал и смысл архив качать был бы. Цеж не упрек а рекомендации.

    Reply
  5. Dimasik2007

    Ну, думаю, кто реально это будет использовать, то сделает без проблем.

    Да, скриптег по созданию базы тут http://notepad.cc/share/c185kLi1jI

    Адрес только файликов базы поменяйте.

    Reply
  6. asved.ru

    Недостаток решения в том, что злоумышленник блокируется по факту, в отличие от VPN, когда все злоумышленники блокируются превентивно.

    Год или два назад обнаружилась юзабельная дырка в RDP, как следствие, появился червяк. Так у меня IPS фиксировал порядка 3000 атак в сутки на протяжении нескольких месяцев, с абсолютно разных хостов.

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

    Reply
  7. mikmike

    Можно эти правила периодически сбрасывать, т.е. при обнаружении атака блокируется, но через некоторое время адрес опять становится открытым.

    Reply
  8. Dimasik2007

    (6) Так речь идет о том, что это дополнительная защита, а не основная. VPN не всегда можно использовать, да и нормальные ОСи тоже. Понятное дело, если сервер высовывать наружу без нормального файера будет печально. Например, на моем шлюзе (pfSense) в правилах pfBlocker чуть не целые страны закрывает, Snort постоянно атаки обнаруживаем и т.д. и т.п., но все равно идут атаки, то с площадки вебстудии в Самаре, то с ноутбука менеджера, который сам не знал про зловреда. Поэтому подключению я даю 4 попытки и рублю. Мне так лучше, чем дикие логи в журнале безопасности.

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

    Reply
  9. asved.ru

    (8)

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

    Или банить по маске /8, kekeke)

    Reply
  10. karakozov

    Полезная и занимательная статейка, спасибо автору за инициацию проблемы и решение.

    Reply
  11. Trotter_NN

    А почему бы просто не использовать роутер сервер на линухе ?

    Reply
  12. alex_art

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

    Reply
  13. q_i

    За статью +, но вот использование скуля для данной задачи лично мне кажется «пушкой по воробьям». Банальные файлы с именами = ip-адресу наверняка и дали бы прирост в скорости и повысили бы надёжность решения. Впрочем, это лишь имхо.

    Reply
  14. Kalam

    Дурацкое решение ставить винду наружу изначально.

    Кроме РДП может быть еще куча служб успешно атаковано, где на них скрипты?

    Reply
  15. shakmaev

    А что RDP Gateway уже не актуален? Проще и безопаснее не придумаешь.

    Reply
  16. Dimasik2007

    (11) Trotter_NN, это дополнительная защита. Роутер не спасет, если порт открыт.

    Единственное, что можно настроить, это количество коннектов до блока на внешнем firewall’е, но это не всегда возможно. Также весьма трудно настроить блокировку на внешнем шлюзе в автоматическом режиме, я не гуру скриптов под линукс.

    (13)

    За статью +, но вот использование скуля для данной задачи лично мне кажется «пушкой по воробьям». Банальные файлы с именами = ip-адресу наверняка и дали бы прирост в скорости и повысили бы надёжность решения. Впрочем, это лишь имхо.

    Как бы сервер уже есть (в нем 1С крутится), почему бы не использовать. Можно и базу Access заюзать, можно и файлы — дело уже каждого. Главное — понять, когда впилить новое блокирующее правило.

    (14) По комментам выше и статье понятно, что наружу смотрит только порт RDP, через внешний шлюз-файрволл.

    (15) Не сталкивался, так что сказать ничего не могу.

    Reply
  17. shakmaev

    (16) рекомендую обратить на него внимание. RDPG использует протокол удаленных рабочих столов(в том числе и RemoteApp) через HTTPS(443).

    Reply
  18. Dimasik2007

    (17) Попробуем, почему бы и нет.

    Собственно статья появилась даже не от того, что брутфорс полез, а просто нашел на просторах интернета способ «выковырять» данные из XML события и передать их в качестве параметров, и подумал «О! Куда бы запилить?». Ну и не знал, что так просто с консоли правило добавить в брандмауэр. Собственно, последний обычно везде выпиливаю, чтобы не мешал, а тут пригодился. 🙂

    Reply
  19. Dimasik2007

    Удобно сидеть и попивать кофеек, и смотреть в сообщениях от робота в чате

    19:54 @Робот-Бобот: * RDP ALERT src: ‘75.99.184.131’, usr: ‘Administrator’*

    19:54 @Робот-Бобот: * RDP ALERT src: ‘75.99.184.131’, usr: ‘Administrator’*

    19:54 @Робот-Бобот: * RDP ALERT src: ‘75.99.184.131’, usr: ‘Administrator’*

    19:54 @Робот-Бобот: * [!BLOCKED!] RDP ALERT src: ‘75.99.184.131’, usr: ‘Administrator’*

    Reply
  20. LineykaSBK

    Согласен с тем, что пушкой по воробьям, у меня так настроено:

    1: Новый сотрудник обязуется иметь интернет с выделенным IP, хотя он уже у большинства провайдеров по умолчанию.

    2. Если человек с планшетника и ежи подобных, то тоже можно прикрутить через IP, благо айпишники сейчас выдаются сотовыми операторами белыми или арендуются на длительный срок., ресурсов много как определить простому юзеру свой ip. На инструктаже получает всю это информацию при приеме.

    3. Настраивается на Циске (роутере или прокси сервере) правила доступа с фильтрацией по ip.

    4. Закрываем с глаз долой свой внешний IP для всякого рода сканеров и сниферов на внешнем канале.

    5. Разрешаем заходить только определенному списку IP, предварительно настроив правило с проксятника на терминалку.

    6. Остальной на блок.

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

    Reply
  21. alsen

    Я в своё время тоже озаботился безопасностью и стал ставить всем OpenVPN на входе.

    То есть наружу открыт только 1194. а его ломай не ломай, без сертификата ничего не сделаешь.

    Все остальные подключения уже через VPN соединение.

    К тому же при его использовании можно будет напрямую подключиться и к другим компьютерам той же подсети.

    Reply
  22. Yimaida

    Если в наличии только сервак без навороченного сетевого оборудования, то руководствуюсь следующим. Для перебора пароля надо знать не только пароль но и логин. Поэтому учетную запись админа на серваке надо переименовывать. Гостей отключать. Даже обычных юзеров лучше называть как то оригинальнее чем user1 и т.п. Пользоваться только стойкими паролями. В политиках безопасности в политике блокировок учетных записей ставим время блокировки учетки и количество неверных попыток. 100% защиты не будет, но от шальных взломщиков в самый раз.

    Reply
  23. lalexrus

    это дополнительная защита. Роутер не спасет, если порт открыт

    если вы сисадмин а не 1сник то покурите в сторону роутеров mikrotik (не панацея! особенно в плохих руках) — оно и стоит относительно недорого, с кучей функционала в т.ч. vpn. Ну а вообще — вы просто обязаны в какой-то мере иметь политику в области безопасности (раз у вас рдп то и людей работает не 2 человека), пусть сильно упрощенную, но базовые вещи — логины/пароли/доступ снаружи и т.п. в ней необходимо отразить и утвердить у руководства. А то вы и дальше будете к скулю прикручивать ненужные вещи.

    PS кстати про сертификаты. вполне себе работает аутентификация по сертификатам в винде (правда придется разворачивать центр сертификации и т.п.) — можно к примеру на етокене с простым паролем держать сертификат и логиниться на виндовый терминал. Это кстати достойный ответ подбиральщикам паролей 🙂 пусть попробуют ага.

    Reply
  24. Dimasik2007

    (23) Ей богу, странные вы.

    Ну есть у меня Микротики, все региональные офисы на них подняты (RB2011UAS-2HnD), все завязано в VPN. Изнутри — проблем нет вообще.

    Но покажите мне скрипт под Микротик, который будет банить адреса, с которых идет подбор паролем. Размещу — проверим результативность.

    то вы и дальше будете к скулю прикручивать ненужные вещи.

    Вам — не нужные. Мне — вполне нужные, опыт тем более разный нужен.

    Вот в (15) «товарисчь» указал что есть шлюзы, и их лучше использовать. Так это тоже опыт, все приходит в сравнении. Вот например, сертификаты у себя на планшете в RDClient заюизать не могу, шлюз возможно (но не пробовал).

    Так что, думаю, каждый сам сможет вынести нужную ему пользу как из статьи, так и из комментов.

    ——————-

    Кстати, в скрипте можно использовать отправку смс по событию. (Не реклама: смс.ру дает бесплатно 60 смс/день на свой номер, почему бы и не юзать).

    В примере ниже нужно подставить свой API и номер (см. примеры на оф. сайте).

    wsh.Run(«C:curl.exe «»http://sms.ru/sms/send?api_id=ВАШ_ГУИД&to=ВАШ_НОМЕР&text=BLOCK+» & Replace(ipAddress,»‘»,»») & «/» & idLogin & «»»»)

    Reply
  25. stepan_shock

    из элементарных решений могу еще добавить такое как смена порта на роутере

    то есть к примеру открываешь порт 11000 и мапишь его на 3389 по нужному айпи

    меня избавило от флудеров

    Reply
  26. zveruga56

    Плюс однозначно!

    А к 2003R2 можно прикрутить?

    Reply
  27. Dimasik2007

    (26) Оперативно не получится, тут вся соль в триггере Windows на новую запись в журнале безопасности, насколько знаю он только в 2008+ версии появился. Да и брандмауэр нужно смотреть в 2003, если там такие же команды консольные и т.п.

    Журналы безопасности я Zabbix’ом анализирую, правда для других нужд, можно там прикрутить еще и анализ аудита + действия, но под рукой рабочей системы с 2003 нету уже, так что проверить не смогу.

    Reply
  28. Dimasik2007

    Полгода работы скрипта — полет нормальный. В день в среднем блокируется 8-10 IP адресов, и логи аудита короче стали 🙂

    Reply
  29. kiv1980

    Хорошая статья, но под свой сервер пришлось все скрипты переписывать, часть представленного вверху неработоспособно, пришлось менять xml и vbs файлы, так как выдавали кучу ошибок, также не передавались параметры в планировщике в vbs и при большой сети нужно исключить свой диапазон ИП адресов, иначе перебаниться всё 🙂 Впрочем это мелочи, при нужных навыках, всё поправимо. Также блочу не только порт 3389, поставил Any (все). И всё неплохо заработало, просто недавно один из моих удаленных серверов сделали дедиком, там конечно был однозначно мой косяк, дал буху полный доступ и забыл про это, а у неё простой пароль, который быстро подобрали. В общем от всей вирусной дряни избавился, запустил этот метод и всё норм, все адреса хацкеров баняться при подборе на любые порты, так как в силу регулярного удаленного доступа, открыто много различных портов.

    Reply
  30. Dimasik2007

    (29) Скрипт отработал (отразил) успешно январскую атаку на сервер клиента, за 21 день было заблокировано 51 000 адресов.

    Самое интересное, недавно изучал аналоги на рынке, есть коммерческая программа https://rdpguard.com/ принцип работы которой тот же)

    Reply
  31. sergey_twin

    братцы, откуда взяться внешнему ip взломщика в логах безопасности, когда rdp за натом? разжуйте пожалуйста, может что то не понимаю

    Reply
  32. Dimasik2007

    (31) Нат же у вас проброшен, коннект идет на внешний адрес + порт.

    Reply
  33. Tarlich

    не получается импортировать XML — прошу пример

    мой :

    <?xml version=»1.0″ encoding=»UTF-16″?>

    <Task version=»1.2″ xmlns=»http://schemas.microsoft.com/windows/2004/02/mit/task»>

    <RegistrationInfo>

    <Date>2017-04-02T22:17:14.2790261</Date>

    <Author>SERVERTarlich</Author>

    </RegistrationInfo>

    <Triggers>

    <EventTrigger>

    <Enabled>true</Enabled>

    <Subscription><QueryList><Query Id=»0″ Path=»Security»><Select Path=»Security»>*[System[Provider[@Name=’Microsoft-Windows-Security-Auditing’] and EventID=4625]]</Select></Query></QueryList></Subscription>

    </EventTrigger>

    <ValueQueries>

    <Value name=»TargetUserName»>Event/EventData/Data[@Name=’TargetUserName’]>

    <Value name=»IpAddress»>Event/EventData/Data[@Name=’IpAddress’]>

    >

    </Triggers>

    <Principals>

    <Principal id=»Author»>

    <UserId>SERVERTarlich</UserId>

    <LogonType>InteractiveToken</LogonType>

    <RunLevel>HighestAvailable</RunLevel>

    </Principal>

    </Principals>

    <Settings>

    <MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy>­

    <DisallowStartIfOnBatteries>true</DisallowStartIfOnBatteries­>

    <StopIfGoingOnBatteries>true</StopIfGoingOnBatteries>

    <AllowHardTerminate>true</AllowHardTerminate>

    <StartWhenAvailable>false</StartWhenAvailable>

    <RunOnlyIfNetworkAvailable>false</RunOnlyIfNetworkAvailable>­

    <IdleSettings>

    <StopOnIdleEnd>true</StopOnIdleEnd>

    <RestartOnIdle>false</RestartOnIdle>

    </IdleSettings>

    <AllowStartOnDemand>true</AllowStartOnDemand>

    <Enabled>true</Enabled>

    <Hidden>false</Hidden>

    <RunOnlyIfIdle>false</RunOnlyIfIdle>

    <WakeToRun>false</WakeToRun>

    <ExecutionTimeLimit>P3D</ExecutionTimeLimit>

    <Priority>7</Priority>

    </Settings>

    <Actions Context=»Author»>

    <Exec>

    <Command>C:WindowsSystem32cscript.exe</Command>

    <Arguments>C:lokRDP_Block.vbs ‘$(TargetUserName)’ ‘$(IpAddress)’>

    </Exec>

    </Actions>

    </Task>

    Reply
  34. antont

    Все гораздо банальнее.

    1) Меняем порт RDP (на самом сервере или НАТе)

    2) Разрешаем подключение только с проверкой подлинности

    3) В политиках включить NLA

    Вот полезная (хоть и старая) статья: https://www.atraining.ru/windows-rdp-tuning/

    Reply
  35. Dimasik2007

    (34) 1) Смена порта ничего не даст, (2,3) Актуально, если все клиенты поддерживают NLA. На момент времени, когда писалась статья — freerdp под linux в NLA не умел, RDClient на IOS не умел, да и сейчас вроде не может.

    Да, это может быть костылище, но работает.

    Reply
  36. forsagforsag

    Идея понятна а рабочего примера нету?

    Reply
  37. SuhoffGV

    (34) Клиенты под XP и android смогут подключаться после выполнения рекомендаций?

    Под IOS, как я понял не смогут?

    Скрипт в теме мне не поможет так как в логах win нет ip источника. Видны только события отказы и имена под которыми пытаются подрубится.

    Reply
  38. user833961

    (21) подскажите как настроить?

    (21) читал в интернете что и VPN ломается

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *