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

20.01.14

Разработка - Инструментарий разработчика

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

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

Наименование Файл Версия Размер
Скрипт
.vbs 3,47Kb
50
.vbs 3,47Kb 50 Скачать

При открытии терминального сервера "наружу" неизбежно придет время, когда вы обнаружите в логах системы большое количество попыток подбора логина и пароля, которые, при большом потоке данных, могут банально за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:\Windows\System32\cscript.exe>
  47.       <Arguments>C:\Users\dmitry\BLOCK\RDP.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("\\betta\jabber\audit_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 гость  

сервер терминалов защита

См. также

Infostart Toolkit: Инструменты разработчика 1С 8.3 на управляемых формах

Инструментарий разработчика Роли и права Запросы СКД Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Конфигурации 1cv8 Платные (руб)

Набор инструментов программиста и специалиста 1С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Все функции, Подписки на события и др. Редактор запросов и кода с раскраской и контекстной подсказкой. Доработанный конструктор запросов тонкого клиента. Продукт хорошо оптимизирован и обладает самым широким функционалом среди всех инструментов, представленных на рынке.

13000 руб.

02.09.2020    119976    656    389    

701

Infostart PrintWizard

Пакетная печать Печатные формы Инструментарий разработчика Платформа 1С v8.3 Запросы 1С:Зарплата и кадры бюджетного учреждения 1С:Конвертация данных 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Платные (руб)

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

18000 руб.

06.10.2023    7020    20    6    

37

Infostart УДиФ: Управление данными и формами

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

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

10000 руб.

10.11.2023    3256    10    1    

31

SALE! 30%

PowerTools

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

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

3600 2520 руб.

14.01.2013    177362    1071    0    

846

Многопоточность. Универсальный «Менеджер потоков» 2.1

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Восстановление партий или взаиморасчетов, расчет зарплаты, пакетное формирование документов или отчетов - теперь все это стало доступнее. * Есть желание повысить скорость работы медленных алгоритмов! Но... * Нет времени думать о реализации многопоточности? * о запуске и остановке потоков? * о поддержании потоков в рабочем состоянии? * о передаче данных в потоки и как получить ответ из потока? * об организации последовательности? Тогда ЭТО - то что надо!!!

5000 руб.

07.02.2018    99208    239    97    

296

[ЕХТ] Фреймворк для Расширений 1С

Инструментарий разработчика Платформа 1С v8.3 Управляемые формы Платные (руб)

"Фреймворк для Расширений 1С" это универсальное и многофункциональное решение, упрощающее разработку и поддержку создаваемых Расширений. Поставляется в виде комплекта из нескольких Расширений с открытым исходным кодом. Работает в любых Конфигурациях в режиме Управляемого приложения с режимом совместимости 8.3.12 и выше без необходимости внесения изменений в Конфигурацию.

3000 руб.

27.08.2019    17922    6    8    

38

1С HTML Шаблоны / HTML Templates

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Быстрая и удобная обработка для работы с шаблонами HTML. Позволяет легко и быстро формировать код HTML.

2040 руб.

27.12.2017    27952    3    10    

14

Выполнение произвольного кода или запроса с параметрами через Web-сервис (замена COM-подключений)

Инструментарий разработчика Обмен между базами 1C Платформа 1С v8.3 Платные (руб)

В процессе работы в 1С часто возникает потребность получить данные из другой базы.  Обычно это делается через COM-соединение, и время выполнения запроса при этом оставляет желать лучшего. В данной публикации представлено универсальное решение, позволяющее практически моментально выполнить произвольный код или запрос с параметрами в другой информационной базе через Web-сервис.

2400 руб.

24.09.2019    23494    15    15    

31
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. iov 406 03.12.13 21:07 Сейчас в теме
как нарисовать сову.
рисуем два кружка и дорисовываем все остальное- сова готова.

это я к чему.

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

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

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

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

как-то так.
2. Dimasik2007 430 03.12.13 22:15 Сейчас в теме
(1) iov,
человек в ВЫДЕЛЕННЫМ ip 
Сведения о сети: 
Имя рабочей станции:	OWNEROR-PRS**** 
Сетевой адрес источника:	- 
Порт источника:	 - 
и таких 90% 


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

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


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


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

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

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


Выполните скрипт из консоли, через cscript.exe, передав ему путь к скрипту и два параметра, могут быть ошибки.
типа cscript.exe rdp.vbs 'pupkin' '8.8.8.8'
3. Dimasik2007 430 03.12.13 22:17 Сейчас в теме
Что то цитаты аццки распухли, сорри.
4. iov 406 03.12.13 23:04 Сейчас в теме
так це яж про тоже. Тут для тех кто в курсе все просто просто. Но тутаж программисты 1с. Короче не жеваное не едет. стоило бы скриптик выложить для создания базы с нужными полями. имена параметров вынести отдельно с комментариями и пр. плюсов бы поболе насобирал и смысл архив качать был бы. Цеж не упрек а рекомендации.
5. Dimasik2007 430 03.12.13 23:23 Сейчас в теме
Ну, думаю, кто реально это будет использовать, то сделает без проблем.
Да, скриптег по созданию базы тут http://notepad.cc/share/c185kLi1jI
Адрес только файликов базы поменяйте.
6. asved.ru 36 04.12.13 06:48 Сейчас в теме
Недостаток решения в том, что злоумышленник блокируется по факту, в отличие от VPN, когда все злоумышленники блокируются превентивно.

Год или два назад обнаружилась юзабельная дырка в RDP, как следствие, появился червяк. Так у меня IPS фиксировал порядка 3000 атак в сутки на протяжении нескольких месяцев, с абсолютно разных хостов.
Боюсь, при таких масштабах сервер с приведенным решением упадет совершенно самостоятельно, не дожидаясь, пока его взломают.
8. Dimasik2007 430 04.12.13 09:30 Сейчас в теме
(6) Так речь идет о том, что это дополнительная защита, а не основная. VPN не всегда можно использовать, да и нормальные ОСи тоже. Понятное дело, если сервер высовывать наружу без нормального файера будет печально. Например, на моем шлюзе (pfSense) в правилах pfBlocker чуть не целые страны закрывает, Snort постоянно атаки обнаруживаем и т.д. и т.п., но все равно идут атаки, то с площадки вебстудии в Самаре, то с ноутбука менеджера, который сам не знал про зловреда. Поэтому подключению я даю 4 попытки и рублю. Мне так лучше, чем дикие логи в журнале безопасности.

Правила всегда можно очистить, или написать запросец и экспортнуть их в файрволл выше.
9. asved.ru 36 04.12.13 10:37 Сейчас в теме
(8)
Правила всегда можно очистить, или написать запросец и экспортнуть их в файрволл выше.


Или банить по маске /8, kekeke)
7. mikmike 8 04.12.13 07:20 Сейчас в теме
Можно эти правила периодически сбрасывать, т.е. при обнаружении атака блокируется, но через некоторое время адрес опять становится открытым.
10. karakozov 04.12.13 10:50 Сейчас в теме
Полезная и занимательная статейка, спасибо автору за инициацию проблемы и решение.
11. Trotter_NN 04.12.13 11:23 Сейчас в теме
А почему бы просто не использовать роутер сервер на линухе ?
16. Dimasik2007 430 04.12.13 18:41 Сейчас в теме
(11) Trotter_NN, это дополнительная защита. Роутер не спасет, если порт открыт.
Единственное, что можно настроить, это количество коннектов до блока на внешнем firewall'е, но это не всегда возможно. Также весьма трудно настроить блокировку на внешнем шлюзе в автоматическом режиме, я не гуру скриптов под линукс.

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

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

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

(15) Не сталкивался, так что сказать ничего не могу.
17. shakmaev 347 04.12.13 19:19 Сейчас в теме
(16) рекомендую обратить на него внимание. RDPG использует протокол удаленных рабочих столов(в том числе и RemoteApp) через HTTPS(443).
18. Dimasik2007 430 04.12.13 21:09 Сейчас в теме
(17) Попробуем, почему бы и нет.
Собственно статья появилась даже не от того, что брутфорс полез, а просто нашел на просторах интернета способ "выковырять" данные из XML события и передать их в качестве параметров, и подумал "О! Куда бы запилить?". Ну и не знал, что так просто с консоли правило добавить в брандмауэр. Собственно, последний обычно везде выпиливаю, чтобы не мешал, а тут пригодился. :)
12. alex_art 14 04.12.13 11:31 Сейчас в теме
Полезная статья, у нас сегодня есть такая проблема с атаками на сервер смотрящий "наружу". Будем решать по схеме, описанной в данной статье.
13. q_i 577 04.12.13 12:06 Сейчас в теме
За статью +, но вот использование скуля для данной задачи лично мне кажется "пушкой по воробьям". Банальные файлы с именами = ip-адресу наверняка и дали бы прирост в скорости и повысили бы надёжность решения. Впрочем, это лишь имхо.
shakmaev; +1 Ответить
14. Kalam 105 04.12.13 12:12 Сейчас в теме
Дурацкое решение ставить винду наружу изначально.
Кроме РДП может быть еще куча служб успешно атаковано, где на них скрипты?
15. shakmaev 347 04.12.13 16:50 Сейчас в теме
А что RDP Gateway уже не актуален? Проще и безопаснее не придумаешь.
19. Dimasik2007 430 04.12.13 21:14 Сейчас в теме
Удобно сидеть и попивать кофеек, и смотреть в сообщениях от робота в чате
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'*
20. LineykaSBK 5 05.12.13 06:26 Сейчас в теме
Согласен с тем, что пушкой по воробьям, у меня так настроено:
1: Новый сотрудник обязуется иметь интернет с выделенным IP, хотя он уже у большинства провайдеров по умолчанию.
2. Если человек с планшетника и ежи подобных, то тоже можно прикрутить через IP, благо айпишники сейчас выдаются сотовыми операторами белыми или арендуются на длительный срок., ресурсов много как определить простому юзеру свой ip. На инструктаже получает всю это информацию при приеме.
3. Настраивается на Циске (роутере или прокси сервере) правила доступа с фильтрацией по ip.
4. Закрываем с глаз долой свой внешний IP для всякого рода сканеров и сниферов на внешнем канале.
5. Разрешаем заходить только определенному списку IP, предварительно настроив правило с проксятника на терминалку.
6. Остальной на блок.
Смотрим лог файл, и не видим ни каких попыток подключения и перебора пароля, способ действует для всех приложений, не только для SQL портов и ежи подобных.
21. alsen 230 05.12.13 11:29 Сейчас в теме
Я в своё время тоже озаботился безопасностью и стал ставить всем OpenVPN на входе.

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

К тому же при его использовании можно будет напрямую подключиться и к другим компьютерам той же подсети.
user833961; KEV8383; NoRazum; Dolly_EV; speshuric; +5 Ответить
38. user833961 28.09.17 07:24 Сейчас в теме
(21) подскажите как настроить?
(21) читал в интернете что и VPN ломается
22. Yimaida 37 07.12.13 00:40 Сейчас в теме
Если в наличии только сервак без навороченного сетевого оборудования, то руководствуюсь следующим. Для перебора пароля надо знать не только пароль но и логин. Поэтому учетную запись админа на серваке надо переименовывать. Гостей отключать. Даже обычных юзеров лучше называть как то оригинальнее чем user1 и т.п. Пользоваться только стойкими паролями. В политиках безопасности в политике блокировок учетных записей ставим время блокировки учетки и количество неверных попыток. 100% защиты не будет, но от шальных взломщиков в самый раз.
23. lalexrus 22.12.13 22:21 Сейчас в теме
это дополнительная защита. Роутер не спасет, если порт открыт
если вы сисадмин а не 1сник то покурите в сторону роутеров mikrotik (не панацея! особенно в плохих руках) - оно и стоит относительно недорого, с кучей функционала в т.ч. vpn. Ну а вообще - вы просто обязаны в какой-то мере иметь политику в области безопасности (раз у вас рдп то и людей работает не 2 человека), пусть сильно упрощенную, но базовые вещи - логины/пароли/доступ снаружи и т.п. в ней необходимо отразить и утвердить у руководства. А то вы и дальше будете к скулю прикручивать ненужные вещи.

PS кстати про сертификаты. вполне себе работает аутентификация по сертификатам в винде (правда придется разворачивать центр сертификации и т.п.) - можно к примеру на етокене с простым паролем держать сертификат и логиниться на виндовый терминал. Это кстати достойный ответ подбиральщикам паролей :) пусть попробуют ага.
arttemko; +1 Ответить
24. Dimasik2007 430 23.12.13 00:03 Сейчас в теме
(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 & """")
25. stepan_shock 112 09.01.14 11:22 Сейчас в теме
из элементарных решений могу еще добавить такое как смена порта на роутере
то есть к примеру открываешь порт 11000 и мапишь его на 3389 по нужному айпи
меня избавило от флудеров
26. zveruga56 152 20.01.14 13:56 Сейчас в теме
Плюс однозначно!
А к 2003R2 можно прикрутить?
27. Dimasik2007 430 20.01.14 14:26 Сейчас в теме
(26) Оперативно не получится, тут вся соль в триггере Windows на новую запись в журнале безопасности, насколько знаю он только в 2008+ версии появился. Да и брандмауэр нужно смотреть в 2003, если там такие же команды консольные и т.п.

Журналы безопасности я Zabbix'ом анализирую, правда для других нужд, можно там прикрутить еще и анализ аудита + действия, но под рукой рабочей системы с 2003 нету уже, так что проверить не смогу.
28. Dimasik2007 430 16.06.14 23:21 Сейчас в теме
Полгода работы скрипта - полет нормальный. В день в среднем блокируется 8-10 IP адресов, и логи аудита короче стали :)
29. kiv8008 25.03.16 09:35 Сейчас в теме
Хорошая статья, но под свой сервер пришлось все скрипты переписывать, часть представленного вверху неработоспособно, пришлось менять xml и vbs файлы, так как выдавали кучу ошибок, также не передавались параметры в планировщике в vbs и при большой сети нужно исключить свой диапазон ИП адресов, иначе перебаниться всё :) Впрочем это мелочи, при нужных навыках, всё поправимо. Также блочу не только порт 3389, поставил Any (все). И всё неплохо заработало, просто недавно один из моих удаленных серверов сделали дедиком, там конечно был однозначно мой косяк, дал буху полный доступ и забыл про это, а у неё простой пароль, который быстро подобрали. В общем от всей вирусной дряни избавился, запустил этот метод и всё норм, все адреса хацкеров баняться при подборе на любые порты, так как в силу регулярного удаленного доступа, открыто много различных портов.
30. Dimasik2007 430 25.03.16 22:02 Сейчас в теме
(29) Скрипт отработал (отразил) успешно январскую атаку на сервер клиента, за 21 день было заблокировано 51 000 адресов.
Самое интересное, недавно изучал аналоги на рынке, есть коммерческая программа https://rdpguard.com/ принцип работы которой тот же)
31. sergey_twin 29.10.16 10:41 Сейчас в теме
братцы, откуда взяться внешнему ip взломщика в логах безопасности, когда rdp за натом? разжуйте пожалуйста, может что то не понимаю
32. Dimasik2007 430 07.11.16 20:11 Сейчас в теме
(31) Нат же у вас проброшен, коннект идет на внешний адрес + порт.
33. Tarlich 115 02.04.17 22:38 Сейчас в теме
не получается импортировать 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>SERVER\Tarlich</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>SERVER\Tarlich</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:\Windows\System32\cscript.exe</Command>
<Arguments>C:\blok\RDP_Block.vbs '$(TargetUserName)' '$(IpAddress)'>
</Exec>
</Actions>
</Task>
34. antont 13 04.04.17 19:45 Сейчас в теме
Все гораздо банальнее.

1) Меняем порт RDP (на самом сервере или НАТе)
2) Разрешаем подключение только с проверкой подлинности
3) В политиках включить NLA

Вот полезная (хоть и старая) статья: https://www.atraining.ru/windows-rdp-tuning/
35. Dimasik2007 430 05.04.17 23:13 Сейчас в теме
(34) 1) Смена порта ничего не даст, (2,3) Актуально, если все клиенты поддерживают NLA. На момент времени, когда писалась статья - freerdp под linux в NLA не умел, RDClient на IOS не умел, да и сейчас вроде не может.
Да, это может быть костылище, но работает.
37. SuhoffGV 04.09.17 20:34 Сейчас в теме
(34) Клиенты под XP и android смогут подключаться после выполнения рекомендаций?
Под IOS, как я понял не смогут?

Скрипт в теме мне не поможет так как в логах win нет ip источника. Видны только события отказы и имена под которыми пытаются подрубится.
36. vodorosl 71 22.05.17 17:28 Сейчас в теме
Идея понятна а рабочего примера нету?
Оставьте свое сообщение