Комментарии 33
Самый лучший вариант – это внедрить двухфакторную авторизацию, например, с паролем через SMS, в результате чего подбор паролей станет бесполезным занятием.А подключение по RDP через VPN только с разрешённых IP проблему не решает?
+1
А подключение по RDP через VPN только с разрешённых IP проблему не решает?
Скорее всего должно решать.
+1
Не всегда применимо. У меня, например, шеф любит путешествовать, но при этом систематически работает в той же 1сАвтоматизации 1.1, у которой веб-морды нормальной нету.
К нему не прикрутишь ИП-блокировку. ВПН — это двойное шифрование, что не руль если канал худой. Ибо RDP 7 и выше на худых каналах относительно нормально живут, а вот ВПН — не очень.
Блокировку по ошибкам тоже опасаюсь, ибо кричит шибко громко :), а ошибаться бывает.
Скрипт объективно спасает.
К нему не прикрутишь ИП-блокировку. ВПН — это двойное шифрование, что не руль если канал худой. Ибо RDP 7 и выше на худых каналах относительно нормально живут, а вот ВПН — не очень.
Блокировку по ошибкам тоже опасаюсь, ибо кричит шибко громко :), а ошибаться бывает.
Скрипт объективно спасает.
+1
в Вашем случае самым адекватным решением будет port knocking (можно сделать один батник, который будет стучаться и запускать рдп-клиент)
0
Прикрутите аутентификацию по сертификатам. Сам сертификат выдайте на смарт-карте.
+1
внедрите RemoteApp и забудьте про VPN/RDP/etc.
ну и после 5 неправильных вводов доменного пароля — поставьте блокировку «пока админ не разбанит», очень помогает :)
ну и после 5 неправильных вводов доменного пароля — поставьте блокировку «пока админ не разбанит», очень помогает :)
0
К.О. предупреждает, что RemoteApp работает ровно по тому же самому RDP и с ним возникают ровно те же самые проблемы с безопасностью ;)
The_Kf выше правильное предлагает: вся аутентификация по смарт карте или usb-токену решает проблему. Самое главное чтобы пароля и логина вообще не было. Сертификат и ключи тоже могут спереть поэтому совсем хорошее решение это аппаратный аутентификатор.
The_Kf выше правильное предлагает: вся аутентификация по смарт карте или usb-токену решает проблему. Самое главное чтобы пароля и логина вообще не было. Сертификат и ключи тоже могут спереть поэтому совсем хорошее решение это аппаратный аутентификатор.
0
… или простой скрипт на powershell, который сообщает о всех фактах авторизации и попытках авторизации. эт в отсутствии централизованной системы контроля доступа.
+1
Если у вас на сервере есть что то к чему можно подключиться используя пароль, значит вам НАДО иметь стойкий пароль и еще желательно другие способы защиты. А их много начиная от ограничения неверных попыток, ограничения IP и т. д.
0
НЛО прилетело и опубликовало эту надпись здесь
Тот же RDP можно настроить на таймауты между попытками и блокировать на час после нескольких неудачных. И никакой брутфорс будет не страшен. Как всегда паника вместо изучения вопроса.
+3
10 минут, думаю, достаточно. При 7-значном пароле с буквами и цифрами и сроком жизни.
0
Мне интересно, как самому подключиться по RDP, если брутфорсят непрерывно? При таком подходе, учетка постоянно в локауте.
0
Как минимум будет известно, что происходит брутфорс — можно принимать дальнейшие меры.
0
Так если брутфорсят, то на сервере RDP(в смысле, только на декстопных win-ах ограничение в одну rdp-сессию) учётки доступны, недоступны они станут, когда под ними залогинятся. Ну а после этого уже и брутфорс прекратится.
0
НЛО прилетело и опубликовало эту надпись здесь
В деталях не помню. Как всегда — в gpedit.msc — Administrative Templates.
0
В политике компьютера (локального или через Group Policy Management Console, если в домене):
Computer Configuration -> Windows Settings -> Security Settings -> Account Policies -> Account Lockout Policies.
Всего три простые политики: кол-во неудачных входов, после которых аккаунт блокируется, продолжительность блокировки плюс время сброса счетчика неудачных входов в систему.
Computer Configuration -> Windows Settings -> Security Settings -> Account Policies -> Account Lockout Policies.
Всего три простые политики: кол-во неудачных входов, после которых аккаунт блокируется, продолжительность блокировки плюс время сброса счетчика неудачных входов в систему.
+1
Имел опыт борьбы с подобными ботами (одна атака была успешной, но вместо крипто запустили скрипт майнинга биткойнов на половину ядер сервера ^^), для начала лечилось банальной сменой порта RDP из вне (3389 на любой другой) и переименованием учеток типа Администратор, admin, user, user1 и тд. на более несловарные.
0
Ну пароли ладно брутят, а как с логинами? или там все под Administrator или Guest работают? И права смотрю у RDP пользователей широкие. Да и можно ограничить по количеству неверных попыток, а потом блочить учетку. Если юзер звонит админу что учетка заблочена а он все выходные бухал, то тут уже есть над чем задуматься админу.
Думаю RDP не стоит ругать, вина не в протоколе. Это как поставить бронированную дверь в квартиру, а ключ класть под коврик.
Думаю RDP не стоит ругать, вина не в протоколе. Это как поставить бронированную дверь в квартиру, а ключ класть под коврик.
+2
порты смените просто) Я фронт энд но пришлось заниматься сервером, в итоге обнаружил что ломились на ssh, ftp на wordpress сайты, перебирали пароли, один раз проворонил сделал плагин для wordpress который пишет 3 лога подряд при ошибочной авторизации в wordpress первый в стандартный sitename.access.log второй в лог fail_ip.sitename.log в папочку logs на ftp можно если что смотреть ситуацию) а потом в syslog но он похоже дублируется ы messages лог и там по мне нужному алгоритму пишется лог (дата, адресс сайта, ip кто авторизовывался, логин с которым авторизовывались и useragent) этого достаточно в принципе, это помогло мне выявить что с 3х ночи до 7 утра сделали 10000 подборов с одного ip на одном из сайтов который на нашем сервере. когда я показал fail2ban общий лог и настроил параметры защиты и подкорректировал поисковик по messages log сразу ситуация изменилась, нагрузка на сервер упала, но второй лог мне помог выявить сверх низкие переборы) примерно с интервалом в 30-45 минут по 2-3 раза с одного ip в итоге настроил fail2ban на 9 одинаковых ip в логе за 5 часов и нормально) Плюс ещё начал собирать уникальные ip так проверить сколько у нас гостей чтоб их потом разом всех в банлист) в итоге ну уже 178 ip адресов есть в базе, сделал после добавления в базу запрос на geoip сервис какой то, чтоб знать из какой страны была авторизация, для того чтоб сразу легитимных отсеять. Мало ли) причём скрипт принимает ip не только с нашего сервера но и второго сервера где так же стоит мой плагин и при брутфосе шлёт мне этот ip на наш сервер. а теперь надо wordpress защищать, пытаюсь это сделать через ngnix потому что htaccess перезаписывается всякими плагинами защиты и кэша и они иногда перетирают друг друга) там есть модуль для ngnix который блокирует такие запросы но я вроде уже конвертирую htaccess параметры в ngnix для всех сайтов разом. Ну что поделать учусь)
0
Это понятно, но ты говоришь по линуха, а он про remote desktop, у мелкомягких там толком нет никакой защиты, кроме как блочить по количеству попыток, ну или привязка к IP.
А так да, я с наружи никогда RDP не делаю на 3389, переставляю на другие порты всегда.
А так да, я с наружи никогда RDP не делаю на 3389, переставляю на другие порты всегда.
0
Я тоже поставил на сервер rdp но там какой то интерфейс вроде gnome и я похоже его сломал) что то ткнул на панели сверху в итоге у меня там при логине пишется «Oops… » ну упс а что дальше делать))) не инструкций ни советов, я вобще поставил его для того чтоб зайти и файл в zip заархивировать там 6 гигабайт примерно было isp manager 5 мне отказался этим заниматься, супер технологии такие) Хочешь не хочешь а из фронт энд я уже похоже в системного администратора превращаюсь а потом что бэк энд? Оптимизация баз данных облачное распределение, разгон хэширования паролей с помощью видео карт на серверах, вот веселуха)
Кстати а почему от брут форса не использовать связку ( ( login || email ) && (pass_1 && pass_2) ) это же будет бессмысленно перебирать пароли когда 2 поля для разных паролей, причём это более секьюрно: ( pass_1 + salt_1 && pass_2 + salt_2 ) = pass hash; я думаю замучаются перебирать если конечно не такая связка (login: admin, pass_1: qwerty, pass_2:123456) а так перебрать варианты будет наверно по труднее.
Кстати а почему от брут форса не использовать связку ( ( login || email ) && (pass_1 && pass_2) ) это же будет бессмысленно перебирать пароли когда 2 поля для разных паролей, причём это более секьюрно: ( pass_1 + salt_1 && pass_2 + salt_2 ) = pass hash; я думаю замучаются перебирать если конечно не такая связка (login: admin, pass_1: qwerty, pass_2:123456) а так перебрать варианты будет наверно по труднее.
0
имя пользователя текущее можно вытащить.
а так эффективный метод защиты рдп — помимо двухфакторной аутентификации, RDS Gateway на сертификатах, VPN и блокирования учётки — fail2ban. есть платные решения, есть бесплатный ts_block и evlwatcher. так же скрипт, блокирующий по айпи на основании аудита отказа пишется на коленке за полчаса-счас.
а так эффективный метод защиты рдп — помимо двухфакторной аутентификации, RDS Gateway на сертификатах, VPN и блокирования учётки — fail2ban. есть платные решения, есть бесплатный ts_block и evlwatcher. так же скрипт, блокирующий по айпи на основании аудита отказа пишется на коленке за полчаса-счас.
0
Разве грамотно настроенные Application Control Policies не предотвратят запуск стороннего программного обеспечения? (в случае, если взломанная учетная запись не обладает правами Администратора)
0
На PS решается подобная проблема в несколько строк.
Создаем правило в брандмауере для блокировки по порту RDP
И прикручиваем скрипт на выполнение при возникновении события 4625
$min = 30 #Проверка за последние 30 минут
$c= 10 #Количество неудачных попыток
$nameRules=«BlockIp» #Имя блокирующего правила брандмауера Windows
$time = (get-date) — (new-timespan -min $min)
$l = Get-EventLog -LogName 'Security' -InstanceId 4625 -After $time | Select-Object @{n='IpAddress';e={$_.ReplacementStrings[-2]} }
$Ip = $l | group-object -property IpAddress | where {$_.Count -gt $c} | Select -property Name, count
$ip % {[string]$z=$z+$_.name+","}
$firewall = New-Object -ComObject hnetcfg.fwpolicy2
$y = $firewall.Rules.Item($nameRules).RemoteAddresses
$z=$z+$y
$firewall.Rules.Item($nameRules).RemoteAddresses = $z
Создаем правило в брандмауере для блокировки по порту RDP
И прикручиваем скрипт на выполнение при возникновении события 4625
$min = 30 #Проверка за последние 30 минут
$c= 10 #Количество неудачных попыток
$nameRules=«BlockIp» #Имя блокирующего правила брандмауера Windows
$time = (get-date) — (new-timespan -min $min)
$l = Get-EventLog -LogName 'Security' -InstanceId 4625 -After $time | Select-Object @{n='IpAddress';e={$_.ReplacementStrings[-2]} }
$Ip = $l | group-object -property IpAddress | where {$_.Count -gt $c} | Select -property Name, count
$ip % {[string]$z=$z+$_.name+","}
$firewall = New-Object -ComObject hnetcfg.fwpolicy2
$y = $firewall.Rules.Item($nameRules).RemoteAddresses
$z=$z+$y
$firewall.Rules.Item($nameRules).RemoteAddresses = $z
0
Доступный из интернета RDP считается дурным тоном последние 20 лет. Именно поэтому.
0
Для защиты от всякой гадости нужно/можно использовать AppLocker.
0
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
«Crysis» во всем мире через RDP-протокол