Как стать автором
Обновить

Комментарии 63

стабильные дисконнекты каждые 5-10 минут

А причём здесь DDNS? Что мешало поставить клиент другого DDNS сервиса на ПК?

Если провайдер выдает по DHCP "белый IP" , то проще все же DNS сервис настроить, почти все они имеют утилиту, которую можно прямо на комп поставить, если роутер не поддерживает. Сейчас просто многие провайдеры дают IP из приватного диапазона и тогда поможет только TeamViewer и иже с ними.

" Как бы не хвалили этот сервис, я получил стабильные дисконнекты каждые 5-10 минут. " - не очень понятно, как такое поведение может быть связано с DNS сервисом, вы получаете IP по доменному имени и все, далее DNS сервис в процессе никак не участвует.

тогда поможет только TeamViewer и иже с ними

Либо ZeroTier / Tailscale.

И удобство, и безопасность!

а автор смело выставляет RDP своего компа в мир на стандартном порту...

обычно так делают до первой попытки взлома :)

Простой аналог fail2ban решает проблему брута. Регулярно поосматриваю securelab. Последняя дата уязвимости rdp-СЕРВЕРА с возможностью хоть какого-то доступа датирована 2007тгодом и относилась к rdp 7.0 (кажись).

Дополню, что под эти цели уже есть софт.
Так что велосипед повторно можно не изобретать.
image

Remote Desktop Gateway

Это лишний сервер на винде нужен. Не у всех есть.
Есть, конечно, rdpgw, но там думать надо. :)

В дополнении к автоматической блокировке IP-адресов можно использовать 2FA по TOTP. Для этого есть софт с открытым кодом, который легко настраивается через командную строку.

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

Ввод одноразового пароля
Ввод одноразового пароля

Как-то у меня подобрали пароль. В логе было раз в 2 минуты подключение бота, которое разрывалось через 30 секунд неактивности.

Я для наглядности оставил в статье стандартный порт)

Нестандартный порт помогает буквально на несколько минут.
А банить по IP тоже бесполезно, так как брутят через ботнеты и каждая попытка идёт с нового адреса.

По моему опыту (ssh на нескольких серверах) помогает на срок от месяца до полугода.
После смены порта изредка кто-то тыркается. Потом в какой-то момент начинается прямо натуральный брутфорс, с мегабайтными логами попыток. Плюс один к номеру порта, и снова наслаждаемся чистыми логами какое-то время.
Поначалу пробовал банить адреса, потом подсети, потом их стало слишком дофига из разных локаций.

А если доступ только по сертификату, запрет на пароли?

Парольный доступ не делаю уже много лет. Но их это не останавливает :)

Они и без паролей вообще пытаются ломиться, с одним юзернеймом.

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

Рекомендую не следовать данному гайду. Да и вообще, как-то сложно.

Могу порекомендовать для таких случаев сервис ZeroTier - это локалка через интернет без сложных конфигураций... И будет достаточно надёжно.

Также, могу порекомендовать сервис облачного dns от микротика - там все эти плюшки из коробки (раздел ip-->cloud)

Ещё, если очень хочется именно открывать порт наружу, читать инструкции по "port knocking"

А вот открытые порты на маршрутизаторе - закрывайте ?

С "облачным dns" от mikrotik советую быть предельно осторожным. Он любит отваливаться из-за нагрузки на их сервера, и тогда к серверу вы не подключитесь. Концнепция сама по себе мне нравится и даже сам иногда пользуюсь, но лучше для резерва подключить тот же no-ip либо другого провайдера DDNS. А вот port knocking советую всем, жаль что не все хотят пошевелить пальцами и извилинами 10 минут. Но справедливости ради, оно не всегда удобно и нужно таскать всегда с собой скрипт или клиент.

Делал у себя простейший кнокинг: при пакете TCP по порту 338 открывается доступ к 3389. Скрипт не нужен, просто сначала стучимся по адресу с первым портом, потом с нужным прям из окна подключения. За все время ни один злоумышленник не разгадал, да и не пытался наверное.

Выставлять голый RDP на статическом IP в сеть — это безумие. Да и на динамическом тоже.

А если серый IP от CGNAT будет — вообще работать будет невозможно.

Взять кинетик, настроить sstp через их облако (не нужен публичный адрес, не говоря про динамический), просто и относительно безопасно.

Альтернативно универсальный вариант - со своей виртуалкой где-нить в аренде, туннель до неё из дома и с планшета/ноутбука.

А ваш вариант подойдёт в редких случаях когда имеем публичный адрес на оьорудовании, но и да, есть варианты более простые, без велосипеда. Но с открытым рдп наружу как минимум используйте fail2ban решения и нестандартный порт (всё равно будут брутфорсить и проверять на уязвимости:) ). Не лишним будет подумать про MFA на rdp. Но и потом усё равно перейти на впн:)

Чего только не придумают, лишь бы не ставить Tailscale.

Tailscale - самый быстрый вариант c Free-планом. Подробные доки.
Headscale(An open source, self-hosted implementation of the Tailscale control server)
ZeroTier

Дольше скачивать чем запустить RDP через него.

Верно. Дополню еще: комп выключаю. Постоянно включен rasp pi еще первая версия тоже с Tailscale. Через него смотрю камеру и также могу включить комп. Далее уже по rdp можно подключиться к компу с Tailscale, сделать дела, выключить. С телефона тоже удобно.

Некоторое время использовал подобный способ повесим RDP на нестандартный порт. Со временем Виндоус отказался меня авторизировать из-за слишком частых попыток авторизации.
То есть логин/пароль у меня были сохранены и корректны. Но злоумышленники вычислив что на порту слушает rpd-сервер, брутфорсом пытались взломать систему.

Компьютер к которому подключались показывал 30-50% загрузку процессора в момент простоя.

Добавил на роутере правило что подключение происходить только с белого списка IP - и все проблемы ушли.

На самом деле не всегда белый список возможен. Тогда приходится либо городить VPN, либо port knocking. От себя рекомендую и первое и второе. Теперь ваша сеть будет в безопасности а логи чистыми.

upd: если у вас mikrotik то сама судьба говорит что нужно использовать. Если что попрощо - VPN сервер и погнали.

SSH туннель еще можно прокинуть

Кстати да. Если не хочется заморачиваться с полноценным VPN, уж хотя бы прокинуть SSH туннель с сертификатом и уже внутри подключаться по RDP. Но никак не сам RDP порт выставлять публично.

Тем более, что даже на винде можно OpenSSH.Server штатно развернуть. Со всякими C:\Users\user1\.ssh\authorized_keys и т.п.

Статический ip стоит недорого, а решает очень много проблем. Ну и белый список для соединений, конечно.

Какая-то матрешка. Раз уж используем python, что мешало из него же вызвать nslookup и прочитать stdout, чтобы не возиться с временным файлом? Не говоря уже о том что существуют более простые способы получить свой ip, например "curl https://yoip.ru/api/" .

Более 20 лет назад такое на bat файлах для radmin делал)) Классический костыль

Anydesk - отличная замена тимвьера, не жадный.

А что у Anydesk с поддержкой Wayland?

Боже. Почему не VPN/Zerotier/Tailscale? Почему не белый IP? Зачем извращаться? Зачем делать дырку в безопасности? Почему скрипт такой кривой? Зачем статический IP в локалке? Виндузятники..

Вы реализовали тот же самый dyndns, который никак не мог быть источником обрывов.

Он не выполняет функции VPN, а делает то же, что и ваш скрипт - сообщает вашему клиенту RDP IP адрес вашего компьютера с RDP.

А если поставить Hamachi, то два ПК будут в одной сети, причем подойдет любой серый ip от провайдера, ну а дальше уже RDP?

Странно что никто не упомянул Parsec.

Для него нужна нормальная видеокарта, без карты или с затычкой работать не будет.

Лет пятнадцать назад, когда был молодым и не опытным, решал эту проблему скриптом на сайте, который с параметром ?set записывал ip с котороко его вызвали, а с параметром ?get отдавал. Дома прописал в планировщик раз в минуту дергать скрипт на серевере, а когда было нужно заходил смотрел ip

Я что-то не понял- вся эта возня для того, чтобы предоставить доступ к своему компьютеру? Или таки к клиентскому? Если к своему, то это не сработает в сетях сотовых и большинства наземных провайдеров, ибо те и те предоставляют доступ через NAT и все dinDNS курят в сторонке. Самый простой способ, как говорили выше, тайлскейл. Если для клиентов, то там то же самое, так что легче дать им ссылку на клиента, развернув у себя что-то вроде Mesh и не мучится больше.
Читая статью, я думал вот нашелся парень, который запросто без танцев с бубуном умеет пробрасывать RDP до любого клиента, а оно вон чего оказывается.

А что у вас за серые провайдеры наземные?

В смысле? Два крупных прова в городе дают клиентам адреса 10.*.*.*, тут dinDNS не поможет. РТ давал аналогично из 172 сети, сейчас не знаю. ОПСОСы аналогично дают только за NAT, белые только юрикам.

Домашний Билайн. Статический IP белый, коннектился к дом. сети из мобильной сети Йоты.

Как в tailscale выглядит процедура "подключения"? Действительно достаточно дать ссылку на клиента?

В свое время у меня сложилось впечатление, что на клиенте нужно ввести пароль от аккаунта, что меня категорически не устраивало для "подключить друга". Я про бесплатную версию, конечно, в энтерпрайзах понятно что хоть SSO делай.

В обшем, по этой причине я выбрал ZeroTier, где достаточно передать номер сети, а финально подтверждаешь подключение сам, в своей админке.

Как сейчас? Так-то Wireguard мне очень нравится. (Еще бы не ругался периодически на винде, что не может создать адаптер, совсем было бы хорошо)

Относительно tailscale я имел в виду именно для себя, для объединения своих ресурсов в одну сеть. Для клиентов конечно это не подходит именно из-за авторизации в аккаунте. Да для клиентов, по большому счету, и не надо их в одну сеть объединять,слишком заморочисто с точки зрения безопасности. Однако Meshcentral поддерживает маршрутизацию RDP до клиента, не без костыля, но реально.

Тулза и тулса я ещё понимаю коверканное от английского слова tools... утилиты. Но "тула" Карл... это что...? И ещё "джоба"? Почему задача называется джобой... Почему планировщиком не управляете через командную строку? ведь все очень просто!

Автор можно я сокращу твой мануал до нескольких строк.

1 пробрасываем порты на роутере и резервирует ip внутри сети, разрешаем rdp

2 настраиваем dyndns (или что там у вас за сервис) вышеупомянутый вам даже почта не нужна, достаточно знать dns имя.

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

4 при подключении используем тот ip что выдал нам ping. Порт который вы указали при настройке роутера.

Работает при наличии белого IP.

Открытый порт в публичной сети? Крайне небезопасно.

Лучше использовать впн для локальных сетей, например Tailscale.

Раз тут все накидывают варианты с vpn, я тоже вклинюсь)

Для решения подобной проблемы (безопасный доступ к устройству в другой сети за NAT) сделал свой peer to peer vpn, opensource, есть удобные графические клиенты под windows, linux, android. По функционалу не так богато как tailscale, но зато полностью открытое решение, не нужны никакие аккаунты, не нужно поднимать сервер, настройка за пару минут

https://github.com/anywherelan/awl

Кто-то до сих пор выдаёт IP, что могут смениться по истечении лизы? У нас даже те регионы, что сидят на "серых" и те управляются региональными рутерами с местными DHCP серверами на борту, имея жесткую привязку по МАС. Чтобы всем клиентам в карту был вписан его IP для удобства поиска и бана за неуплату

Арендовать копеечный VPS со статикой и настроить VPN - все.

VDS с ВПН (wireguard, например, нужна же хоть какая нибудь безопасность), я нашел не дорогой за 150 рос.руб., проблема только в оплате была, так как сам в Беларуси. Это столько, сколько у нас IPшник арендовать, а в добавок сервис в интернете, можно несколько устройств соединить)))

Арендовать vps, развернуть mikrotik chr или softether VPN, с домашней машины подключение к VPN в автозагрузке. Безопасно и надёжно.

Zerotier комп-комп

Это самое простое

Посложнее - Mikrotik или любой OpenWRT - на нем Zerotier в локалку = плюсы - всегда есть доступ на маршрутизатор. Всегда можно разбудить свой комп (wol), попасть на него.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации