Время на прочтение
5 мин
Количество просмотров 160K
Remote Desktop Protocol — один из самых распространенных протоколов для удаленного управления, потому что он используется для работы с операционными системами Windows, которые часто незаменимы в корпоративной среде. Естественно, самый распространенный способ подключения к удаленной системе — использование средств встроенных в саму систему, но он не единственный и, более того, совершенно неприменимый, если используется другая ОС или сильно устаревшая Windows.
В этой статье я расскажу о нескольких альтернативных решениях, отличных от встроенных в дистрибутивы операционных систем: программу MobaXterm и два сервиса не требующих от пользователя установки приложений и работающих в обычном браузере.
MobaXterm
Эта программа для Windows. Немного неправильно называть MobaXterm RDP-клиентом, потому что это целый комбайн. Список поддерживаемых протоколов впечатляет: SSH, Telnet, Rlogin, RDP, VNC, XDMCP, FTP, SFTP и Serial.
Почему я рекомендую этот клиент? Меня уже давно не радует Putty. Громоздкий и запутанный интерфейс из времен W95, не вызывающий ностальгию, если приходится часто с ним работать, плохая поддержка экранов высокого разрешения, собственный формат ключей, отсутствие поддержки вкладок и прочее. MobaXterm лишен всех этих недостатков, это удобная и современная программа. Портативная версия состоит из одного единственного exe’шника и файла настроек, интерфейс интуитивный, а если нужна помощь, то, в отличии от Putty, в самой программе есть исчерпывающая документация.
Кроме соединения через перечисленные протоколы можно локально поднимать некоторые сервисы для удаленного доступа, такие как: FTP, SSH/SFTP, HTTP и другие. Если вы не любите консольные nano и vi, то в программе есть текстовый редактор с удобным графическим интерфейсом. В терминале есть настраиваемая подсветка синтаксиса и автодополнение.
Сразу после запуска программа нашла ранее используемые мной подключения, импортировала настройки из Putty и обнаружила установленную в системе WSL-Ubuntu:
Нет смысла перечислять все возможности приложения, они очень многочисленны, есть даже инструменты для тестирования сетей. Приложение платное, но портативной бесплатной версии хватит за глаза для подавляющего количества задач системного администратора.
Apache Guacamole
Современные тенденции DevOps предполагают перенос окружения для разработки с локальной машины на сервер компании или к облачному провайдеру. Один из простых примеров ранее описывался в статье: Установка Visual Studio Code в облаке, приложения для удаленного подключения этого тоже не избежали.
Apache Guacamole, это клиентский шлюз для удаленного подключения, работающий на HTML5, позволяет пользоваться протоколами: VNC, Telnet, RDP, Kubernetes и SSH / SFTP — через web-интерфейс. Не требуется установки никаких программ, подписок на сторонние сервисы, все работает прямо в браузере, независимо от того, какой операционной системой пользуется разработчик. Все что требуется: установить и настроить службы на сервере. По сути, это web-интерфейс для FreeRDP — бесплатной реализации протокола RDP, с открытым исходным кодом.
Сценарий работы с этим сервисом типичен для последних тенденций удаленной работы и оптимизации рабочего места. Разработчики подключаются к своему окружению из любой точки земного шара. Им не требуется держать дома мощный десктоп или носить с собой высокопроизводительный ноутбук, забота об этом перекладывается на серверы компании, а работнику достаточно подключения к интернету и любого ноутбука, на котором не будет лагать браузер.
Настройка сервиса подробнейшим образом документирована, мануал впечатляет своими размерами. Установка возможна несколькими способами: из репозиториев, компиляция исходников и разворачивание образа Docker. К счастью, как это часто бывает, один прошаренный DevOps-инженер решил автоматизировать процесс установки с наиболее типичными настройками и выложил готовый скрипт на github: guac-install. Из его кода легко понять, что он пошел по пути установки образа Docker, и все действия сводятся к вводу всего нескольких команд.
Начнем с того, что настроим виртуальный сервер для установки AG. Его характеристики будут зависеть от количества пользователей, но разработчики рекомендуют не меньше 2 гигабайт оперативной памяти. Размещение сервера выберем в Москве, для минимального пинга, что критично для работы с удаленными компьютерами.
В качестве тестовой машины я выбрал такие параметры VPS:
После того, как будет создана виртуальная машина, подключимся к ней (используя MobaXterm, конечно же). Теперь можно приступать к работе.
Сначала надо скачать скрипт установки:
wget https://git.io/fxZq5 -O guac-install.sh
Выдать ему разрешение на исполнение:
chmod +x guac-install.sh
И запустить:
./guac-install.sh
В процессе работы будут установлены нужные образы и задано несколько вопросов о настройке паролей для MySQL. В конце скрипт выдаст сообщение о том, что установка завершена, напишет адрес для подключения к сервису и сообщит пароль/логин, который настоятельно порекомендует потом поменять:
Installation Complete
- Visit: http://localhost:8080/guacamole/
- Default login (username/password): guacadmin/guacadmin
***Be sure to change the password***.
Все готово, надо только заменить localhost на внешний айпи-адрес нашего сервера и ввести пару логин/пароль в форму логина на сайте:
После авторизации открывается доступ к довольно аскетичной панели администрирования, где можно заниматься управлением привилегий пользователей и доступными им подключениями к различным системам.
При первом логине система запросит настройку двухфакторной авторизации, на экране появится QR-код, который надо будет отсканировать с помощью любого удобного приложения. Я воспользовался для этого Google Authenticator на смартфоне. После сканирования приложение сгенерирует шестизначный код, который потребуется ввести в поле на сайте.
В качестве примера подключимся к серверу под управлением Windows по протоколу RDP. Для этого надо зайти в “Настройки” и выбрать опцию “Подключения”. Интерфейс переведен на несколько языков, и сложностей при работе с ним ни у кого не возникнет.
Дальше надо заполнить следующие поля (я перечислю минимально необходимые):
В разделе “РЕДАКТИРОВАНИЕ ПОДКЛЮЧЕНИЯ” заполнить поле “Название” и в поле “Протокол” выбрать “RDP”.
В разделе “СОВМЕСТНОЕ ИСПОЛЬЗОВАНИЕ” поставить требуемые числа в поля “Максимальное число соединений” и “Максимальное число соединений на пользователя”. Любое необходимое, но не меньше 1.
В разделе “НАСТРОЙКИ” и подразделе “Сеть” ввести айпи-адрес удаленного сервера под управлением Windows и “Порт”: 3389.
Далее заполнить поля “Имя пользователя” и “Пароль”. В моем случае еще потребовалось отметить опцию “Игнорировать сертификат сервера”.
Остальное настройки заполняются по необходимости, в зависимости от специфики серверов, к которым требуется подключаться.
В итоге выглядит это примерно так:
В самом низу страницы нажимаем кнопку “СОХРАНИТЬ” и можно подключаться с главной страницы панели управления:
Все работает, мы видим рабочий стол нашего виртуального сервера:
Myrtille
На основе FreeRDP разрабатывается еще один проект: Myrtille, аналогичный Apache Guacamole, но работающий на системе Windows. Его установка — традиционный Windows-way, надо всего лишь скачать файл инсталлятора с GitHub и запустить его. Приложение поддерживает двухфакторную авторизацию и позволяет настроить ее в процессе установки:
В следующем диалоговом окне можно настроить работу с Active Directory:
А затем порты для подключения:
Далее следует диалог с выбором опций для установки сертификата, драйвера для PDF-принтера и разрешения множественных подключений:
Потом выбирается директория, куда будет устанавливаться программа и запускается процесс установки. На этом все, сервисом можно пользоваться, перейдя по ссылке: https://ip-address/Myrtille/, где вместо ip-address надо подставить адрес сервера и web-клиент готов к подключению:
Надо заметить, что он не позволяет управлять группами пользователей и подключениями как AG и довольно аскетичен в настройках. Меню сервиса хоть и не блещет красотой, но вполне функционально:
Вот таким образом, можно отказаться от еще одного локального инструмента для работы и пользоваться обычным браузером, который есть на любом компьютере.
RDP over SSH (клиент SSH + RDP).
Клиент подключается к RDP через SSH туннель. Принцип работы построен на функционале ssh. Интересный материал на эту тему: https://habr.com/ru/post/331348/#t5
Реализация клиент серверной версии. Разделено на две части клиентскую и серверную.
Серверная часть работает с API керио и готовит файл или бд (mongo BD) с данными пользователей.
Клиетская часть подключается к серверу соединений производит поиск по ключевому полю запрошенную информацию. Определяет параметры подключения. Устанавливает соединение с конечным узлом.
ВНИМАНИЕ:
1. Не используйте ключи авторизации ssh, выложеные в проекте. они исключительно для ознакомления. Мануалов по генерации ключа в сети полно, например, тут https://habr.com/ru/post/122445/.
2. Текущая реализация предполагает наличие SSH сервера(с встроенным sftp), доступного из сети Интернет, ( опционально Kerio Control с авторизацией пользователей через MAC/IP адрес.)
В проекте используются библиотеки json, sshtunnel, PyQt5, threading и api Kerio Control доступный по ссылке https://manuals.gfi.com/en/kerio/api/control/reference/index.html,а также в качестве готовых python библиотек: pykerio, python-kerio-api
Принцип работы:
1.1 Приложение подключается к SSH серверу, доступному из сети Интернет и запрашивает данные для ip для подключения к RDP (Варианты расположения ssh могут быть самые разные. Вариант на схеме: проброшенный порт фаервола на SSH сервер предприятия. Сам файервол может выступать в роли SSH сервера. Вторым сервером с белым ip и ip локальной сети.).
1.2 Запрашивает в бд или json файле информацию о пользователе.
1.3 Определяет локальный IP и устанавливает соединение с пк в локальной сети по ssh с пробросом на порт RDP(3389).
1.4 Добавляет в систему учетные данные для подключения в диспетчер учетных записей пользователя.
1.5 Создается новый процесс с вызовом mstsc и передачей параметров подключения.
1.6 После успешного подключения учетные данные удаляются.
Подготовка серверной части:
Сервер SSH с белым IP. Для безопастности с ограниченным пользователем: nologin, песочный bash. Доступ по встроенному sftp или подключение к СУБД. Авторизация по ключу.
Пробросить необходимые порты.
Создать пользователя Kerio Control с ограниченными правами, только для чтения. (опционально, JSON файл можно подготовить в ручную или взял данные из AD или другой системы учета пользователей)
Пример JSON файла:
[
{
"User": {
"login": "Логин 1",
"FullName": "Логин1 Иван,
"ipaddress": {
"ip": [
"192.168.0.2"
]
}
}
},
{
"User": {
"login": "Логин2",
"FullName": "Логин2 Степан Борисович",
"ipaddress": {
"ip": [
"192.168.0.3"
]
}
}
},
...
]
Настройка:
Основной файл запуска программы remotecli.py
Файл настроек подключений sshconnect.py
Файл дизайна для python desing.py
Файл графических ресурсов res.py
В каталоге kerio находится серверная часть для парсинга учетных записей с kerio api.
Основной файл настройки подключения sshconnect.py
publicipadress = ('Public_IP', PORT) # Публичный IP адрес и порт ssh сервера
...
...
def sshtunconnect(address):
"""
Функция установки ssh соединения с найденным ip.
"""
server = open_tunnel (
publicipadress,
ssh_username="ssh_login", # логин ssh сервера
# ssh_password="password", # пароль ssh
ssh_pkey="srv.key", # файл ключа ssh
remote_bind_address=address,
local_bind_address=('localhost', 2222) # адрес и порт пробрасываемого порта.
)
server.start ()
print (server.local_bind_port)
...
...
def rdpdataconnection():
"""
Вызов RDP с параметрами.
"""
import subprocess
global login, password
if len(login.split()) > 0:
login = login.split()[0]
print(login)
subprocess.call(
f"cmdkey /add:localhost /user:DOMAIN\{login} /pass:{password}") # Если пользователи не доменные DOMAIN\ убрать
time.sleep(3)
subprocess.call ("mstsc /v:localhost:2222")
time.sleep(15)
delkeyuser()
Получения данных с Kerio Control в JSON вынесено в файл /kerio/keriofunction.py функция main.
Принцип работы простой — получает данные с Kerio и записывает их в JSON файл на sftp сервере.
Файл kerio/kerio.py
username = "kerio_admin_read_access_login" логин от kerio control, достаточно ограниченной учетной записи с правами только для чтения
password = "kerio_admin_read_admin_pass" пароль от kerio control
Планы:
🔲 Делать или не делать вот в чем вопрос?
- Реализация раздела настройки.
- Реализация ручного указания ip на в настройках приложения.
Single-click Remote Desktop forwarding
After connecting to an SSH server using Bitvise SSH Client, clicking the New Remote Desktop button launches a port forwarded Remote Desktop session. The SSH Client will setup all the settings and launch the Windows Remote Desktop client for you.
Accessing Remote Desktop over the SSH Client offers the following advantages:
-
Outside of a domain environment, the Windows Remote Desktop client cannot itself verify the authenticity of the server to which it is connecting. This renders the session vulnerable to a man-in-the-middle attack. When Remote Desktop is port forwarded over SSH, the SSH Client verifies the authenticity of the SSH server using the server’s host key. This prevents a man-in-the-middle attack between the SSH Client and the SSH server.
-
A server firewall can be configured to disallow direct Remote Desktop access, and only permit it through SSH. This allows the use of additional defenses. The SSH user can be required to log in using public key authentication; if password access is not permitted, attackers will not be able to guess a password. If using Bitvise SSH Server and SSH Client, access to the server can be further obscured using SSH protocol obfuscation: this prevents any type of probing by attackers unless they know the obfuscation keyword.
Requirements
The only requirement for single-click Remote Desktop forwarding is that the computer on which the SSH server is running accepts Remote Desktop connections. This is supported in Windows Server editions, and Windows desktop editions including Professional and Enterprise. Linux servers can support Remote Desktop using the Xrdp server.
Note: Windows Home editions do not support accepting Remote Desktop connections.
If the server accepts Remote Desktop connections on the default port (3389), Remote Desktop forwarding will simply work as-is. No configuration or settings changes are needed.
If the server runs an appropriate version of Windows, you can verify that Remote Desktop access is enabled via Control Panel > System and Security > System > Advanced system settings > Remote tab. You can get there from the Start menu directly, by searching for «remote access».
What not to do
Sometimes, Remote Desktop forwarding does not work because users expect it to be difficult. Common pitfalls:
-
If the Remote Desktop server you’re trying to access is on the same computer as the SSH server – which it is in most cases – do not try to alter the Computer setting on the Remote Desktop tab in the SSH Client. Leave that at the default value, 127.0.0.1. This is the localhost address, and will work when the Remote Desktop server is on the same computer as the SSH server.
-
Don’t configure manual port forwarding rules, in either the C2S or S2C direction. To use single-click Remote Desktop forwarding, no manually configured rules are needed. Any rules you configure will most likely not interfere, but will also not help.
Customization
A selection of commonly used Remote Desktop settings can be configured in the SSH Client, on the Remote Desktop tab. You can configure any of these, but do not configure the Computer setting unless the Remote Desktop server is on a different computer than the SSH server.
If the Remote Desktop server is on a different computer than the SSH server, then the Computer setting needs to be configured with the IP address of that computer, reachable from the SSH server. This is usually a private IP address, not a public one.
If the Remote Desktop server runs on a non-default port, other than 3389, you can configure it in the Computer field by appending it to the IP address, separated with a colon. For example, if the port is 12345, configure this field to 127.0.0.1:12345.
You may wish to configure Remote Desktop settings that are not supported in the SSH Client’s Remote Desktop tab. In this case, run the Remote Desktop client (mstsc), configure the setting you want, and save the Remote Desktop profile. You can then configure the path to that profile using the Profile setting.
Решения удаленного доступа (администрирования) обеспечивают непрерывность бизнеса для распределенной команды. Сейчас они актуальны как никогда.
RDP (Remote Desktop Protocol) — наверное, самый распространенный протокол удалённого администрирования; принадлежит Microsoft, поддерживается почти всеми ОС, по умолчанию использует порт 3389. Программы, с помощью которых можно управлять удаленным компьютером по RDP-протоколу через Интернет называют RDP-клиентами (поскольку это программа-клиент, которая связывается с программой-сервером на удаленном ПК).
В профессиональной среде считается, что лучше «родного» встроенного майкрософтовского RDP-клиента ничего нет. Спорить не будем, вот только он не работает под Linux и Unix-подобные ОС, а также под сильно устаревшие версии Windows. Мы решили сделать обзор некоторых других RDP-клиентов, которые хоть и не так хороши, как встроенный в Windows Remote Desktop Connection («Подключение к удалённому рабочему столу»), но хотя бы (по мнению пользователей) не совсем «унылые».
RDP-клиенты бывают бесплатные, платные и дорогие. По способу установки они могут быть:
- встроенными в дистрибутивы самих ОС;
- внешними приложениями, которые надо инсталлировать на компьютер или смартфон;
- веб-приложениями, то есть работать через браузер.
Рассмотрим 14 самых популярных RDP-клиентов. Технические, стоимостные и другие характеристики укажем в начале описания программы. Отдельно напишем преимущества и недостатки по каждому клиенту.
Чтобы каждый раз не писать «удаленный компьютер», мы будем писать «УК».
RemotePC
Для каких ОС: компьютер — Windows, macOS, Linux; мобильный — Android, iOS, Raspberry Pi, Chrome OS, Fire OS.
Способ установки: внешнее приложение.
Цена: $39,50 в год для домашнего использования (2 компьютера), $299,50 для компаний (50 компьютеров), $599,50 в год для энтерпрайза (100 компьютеров); есть другие планы; скидка до 50% в течение первого года.
Пробная версия: 7 дней бесплатный тестовый период, платежная карта не требуется.
Недостатки: можно отобразить только один удаленный монитор в одном рабочем окне, сложная настройка, не отображается курсор на записи.
Преимущества: универсален, простой интерфейс, быстрый, легкая передача файлов, решение для видеоконференцсвязи, много ценовых планов, недорогой.
Считается одним из лучших RDP-клиентов с легким интерфейсом. По словам разработчика RemotePC обеспечивает быстрое и безопасное удаленное соединение для ПК, компьютеров Mac и Linux (включая Raspberry Pi), которое лишено недостатков медленных VPN-соединений или проблем с безопасностью. Можно управлять УК с планшета или смартфона (скачать соответствующее мобильное приложение для Android или iOS), а можно напрямую с веб-сайта RemotePC.
К решению изначально добавлена возможность облачного резервного копирования. Иногда может потребоваться настроить брандмауэр. Не рекомендуется запускать приложение RemotePC Linux на корневом уровне — лучше запустить его на уровне пользователя или использовать ярлык приложения. Есть задержка в 1-2 сек. между началом действия и его дублированием на УК. Есть окно чата и функция рисования на экране. Можно записать сессию, но с существенным недостатком: курсор на записи не отображается. Передача файлов между компьютерами простая — перетаскиванием.
Сеансы между локальным и удаленным компьютерами защищены шифрованием TLS v 1.2 / AES-256. Можно отслеживать свои действия с помощью журналов удаленного доступа и журналов веб-активности. Можно выбрать опцию «Всегда включен удаленный доступ». При ней локальный компьютер сохраняет личный ключ УК и его не надо вводить при каждом входе в систему — УК будет доступен, пока включен. Либо можно не сохранять личный ключ, тогда УК будет его все время менять. Также можно выбрать опцию «Однократный доступ». Есть отдельное высокопроизводительное приложение для просмотра RemotePC ™ Performance Viewer — удобно для просмотра рабочих станций 3D-графики, систем автоматизированного проектирования и игр из любого места. В нем тоже можно и файлы передавать, и рисовать, нельзя только управлять. Подробно функции здесь. Документация здесь.
FreeRDP
Для каких ОС: Linux.
Способ установки: внешнее приложение.
Цена: бесплатно. Коммерческое распространение называется Thincast.
Пробная версия: нет.
Недостатки: не очень удобен для новичка, не умеет автомасштабироваться.
Преимущества: активно разрабатывается и поддерживает все новшества RDP-протокола.
Бесплатная реализация протокола RDP для Linux с открытым исходным кодом и лицензией Apache. Поставляется с собственным клиентом командной строки xfreerdp, который поддерживает RDP 6 и который считается современной заменой rdesktop — другого некогда популярного RDP-клиента (консольная утилита), который не поддерживает новую авторизацию последних версий Windows (NLA), но может использоваться для RDP 4.0, используемого в версиях Windows NT 4.0 Terminal Server Edition и Windows 2000 Server. Бывает включен в некоторые дистрибутивы Linux.
FreeRDP — терминальный (консольный) клиент, поэтому все настройки для подключения вводятся одной командой (интерфейс командной строки с полным синтаксисом здесь). Серверы RDP с открытым исходным кодом в Unix включают FreeRDP, ogon project и xrdp. Для подключения к такому серверу можно использовать родной RDP-клиент Windows. Чтобы не вводить команду заново при каждом новом подключении, можно создать ярлык подключения с нужными параметрами. FreeRDP можно использовать «в чистом виде» или с разными интерфейсными оболочками (и немного разным функционалом), это, например, Remmina, Apache Guacamole. Есть переключение между полноэкранным и оконным режимом, есть возможность вывода на другой монитор (можно выбрать из списка мониторов). С удалённым рабочим столом, подключённым по RDP, можно иметь совместные папки.
Документация здесь.
Remmina
Для каких ОС: Linux.
Способ установки: внешнее GTK-приложение.
Цена: бесплатно.
Пробная версия: нет.
Недостатки: не передает звук.
Преимущества: удобный графический интерфейс, поддержка других протоколов, множество удобных функций, новые версии выходят раз в несколько месяцев.
Один из лучших Linux RDP-клиентов, который часто используют крупные компании для удаленного администрирования Windows-серверов. Вернее, это даже не сам клиент, а графический менеджер подключений к удаленным рабочим столам, который разрабатывается (и довольно активно с частыми обновлениями) в рамках проекта FreeRDP с использованием библиотеки GTK. Идет под лицензией GNU GPL и имеет открытый исходный код. Поддерживает также протоколы VNC, NX, XDMCP, SPICE и SSH, которые идут как отдельные плагины. Есть порт на Qt. Есть вкладки, профили подключения, автоматическое переподключение и поддержка функций безопасности (например, CredSSP, шлюзы и смарт-карты). Разработчики быстро реагируют на запросы.
Как правило Remmina уже есть в дистрибутивах Ubuntu, но версия может быть устаревшей, поэтому лучше обновить ее (через терминал). Поддерживаются соединения с Linux, Windows или macOS. Установка соединения простая — достаточно знать IP-адрес машины, с которой устанавливается подключение, имя пользователя и пароль. После конфигурации нового подключения можно либо нажать Connect для подключения, либо сохранить и установить его в качестве подключения по умолчанию. Сохранив текущую конфигурацию, вы сможете соединиться с УК буквально в два клика. Можно создавать ярлыки подключения с настройками. Есть возможность управлять соединениями, копируя, редактируя и удаляя их прямо из основного окна. Есть функция «Ignore certificate», чтобы не возникали проблемы при новом соединении с Windows, когда ОС создает новый сертификат.
Документация здесь.
Apache Guacamole
Для каких ОС: любых.
Способ установки: веб-приложение.
Цена: бесплатно, но есть коммерческая поддержка для компаний.
Пробная версия: нет.
Недостатки: надо повозиться с настройками.
Преимущества: максимально прост в использовании, работает через браузер, есть автоматизация установки разными способами на сервер, подробная документация, поддерживает разные протоколы.
Это бесклиентский шлюз для удаленного подключения, как его называют разработчики. По сути, это web-интерфейс для FreeRDP. Работает на HTML5, то есть из браузера, вне зависимости от того, какой ОС вы пользуетесь. Позволяет пользоваться протоколами VNC, Telnet, RDP, Kubernetes и SSH / SFTP. Может быть предустановлен в некоторых Linux Debian и Debian-based дистрибутивах.
Если вы разработчик на удаленке, то для работы через этот клиент вам не потребуется высокопроизводительный компьютер (это забота перекладывается на серверы компании-работодателя) — достаточно ноутбука с интернетом, на котором не лагает браузер. Но придется немного повозиться с настройками. Во-первых, надо установить и настроить службы на сервере, если это не будет делать работодатель. Установка на удаленный сервер возможна несколькими способами: из репозиториев, методом компиляции исходников и разворачиванием образа Docker. Автоматизация процесса установки с наиболее типичными настройками есть в готовом скрипте на github. После установки Apache Guacamole автоматически применяет минимально необходимые для запуска настройки.
Далее, поскольку Apache Guacamole — серверный клиент, требуется установить Tomcat Server на вашу машину, после чего программа установки попросит его перезапустить. По умолчанию Apache Guacamole устанавливается с поддержкой только протокола VNC, поэтому для того, чтобы и подключаться по RDP или SSH, надо установить дополнительно клиент для желаемого протокола. Настройка очень подробно изложена в документации.
MobaXterm
Для каких ОС:
Способ установки: внешнее приложение.
Цена: портативная версия бесплатная; профессиональная версия — $69 за пользователя, есть оптовые скидки (пожизненное использование).
Пробная версия: нет.
Недостатки: При подключении по VNC на удаленных машинах не дает вводить русский текст. Не дружит с автозаполнением из KeePass, а встроенный менеджер паролей не решает сложность подключения к одной из нескольких сотен учетных записей. Некоторые пользователи отмечают неудобство от крупной рамки в полноэкранном режиме RDP, которая не позволяет работать нативно (как на локальном десктопе) на удаленной машине или локальной ВМ.
Преимущества: высокая скорость работы,поддерживает разные протоколы и способы подключения, интуитивный интерфейс, простая установка, множество функций.
Программа требует установки, но она довольно простая, а портативная версия и вовсе состоит из одного EXE’шника и файла настроек. У клиента интуитивный интерфейс и понятная документация на сайте и в самой программе. Есть текстовый редактор с удобным графическим интерфейсом. Есть браузер файлов, встроенный XServer для управления графическим интерфейсом на удаленном компьютере, много инструментов (плагинов).
Помимо RDP MobaXterm поддерживает множество протоколов: SSH, Serial, Telnet, Rlogin, VNC, XDMCP, FTP, SFTP. Позволяет также локально поднимать некоторые сервисы для удаленного доступа: FTP, SSH/SFTP, HTTP и другие. Доступ ко всем X-серверам и сетевым клиентам можно получить через вкладку на основном терминале. Там же есть настраиваемая подсветка синтаксиса и автодополнение.
Может импортировать настройки подключения из ранее используемых клиентов удаленного администрирования. Присутствуют все основные инструменты Unix (полноценный набор UNIX-команд). Если вам нужен инструмент, которого нет в базовом файле MobaXterm, можно скачать бесплатные плагины. Есть инструмент Multi-execution, который позволяет выполнять одни и те же команды на нескольких разных серверах одновременно. Многие параметры конфигурации RDP доступны в диспетчере сеансов. Пользователи MobaXterm отмечают «адекватную поддержку, которая из 3х запросов улучшений выполнила все 3».
GNOME Connections (бывший Vinagre)
Для каких ОС: Linux, Windows
Способ установки: стороннее приложение
Цена: бесплатно.
Пробная версия: нет.
Недостатки: нет других функций и настроек.
Преимущества: очень простое приложение, имеет современный интерфейс и соответствует рекомендациям по человеческому интерфейсу GNOME (HIG), его легче поддерживать.
GNOME — акроним от английского GNU Network Object Model Environment («среда сетевой объектной модели GNU»). Connections — утилита, выпущенная в 2020 году специально для Gnome и предназначенная для управления удаленными подключениями через современный интерфейс, соответствующий HIG. Поддерживаются протоколы RDP и VNC. Настроек в утилите нет, единственное — можно указать адрес и порт УК и включить или отключить масштабирование. Можно подключать к ряду различных операционных систем, в том числе к рабочим столам Linux и Windows, а также к виртуальным машинам.
Клиенту GNOME Connections предшествовал Vinagre, который позиционировался, как программа по умолчанию для управления удаленными соединениями в Gnome и который имел больше функций. Vinagre включен в дистрибутив Linux с окружением Gnome, его установка не потребуется, но с выходом Connections его прекращают поддерживать и скоро он будет удален. Connections же пока находится на ранней стадии разработки и разные продвинутые функции будут в нем появляться постепенно. GNOME Connections использует элементы интерфейса из GNOME Boxes, одного из лучших приложений для виртуализации. «Он в основном имеет ту же кодовую базу, что и GNOME Boxes для кода протокола / дисплея, поэтому вы, вероятно, получите тот же опыт, что и с удаленными подключениями в Boxes сегодня», — сказал разработчик Фелипе Борхес.
Документация здесь.
Krdc
Для каких ОС: Linux.
Способ установки: стороннее приложение.
Цена: бесплатно.
Пробная версия: нет.
Недостатки: низкая отзывчивость (время отклика) при работе с Krfb, искажение фоновых изображений.
Преимущества: простое приложение, высокая эффективность на клиентской стороне.
RDP клиент с открытым исходным кодом, идущий под лицензией GPL-2.0 + и являющийся официальным проектом окружения KDE для удаленного доступа. Поддерживает два протокола подключения — VNC (работает в Linux, Macintosh, Windows) и RDP. Серверная программа, обслуживающая клиента — Krfb, таким образом Krdc и Krfb представляют собой пару программ-компаньонов KDE для удаленного подключения. Однако замечено при тестах, что Krdc работал гораздо лучше со стандартным VNC-сервером и с X11VNC, чем с Krfb.
Параметров настройки подключения всего три: можно настроить высокую, среднюю или низкую скорости подключения, а программа сама подбирает оптимальные настройки для каждого режима. Можно переключать полноэкранный и масштабируемый режимы просмотра. Есть вкладки для одновременного отображения нескольких подключений и боковая панель, отображающая закладки, недавние подключения и обнаруженные в локальной сети серверы. В рамках GSoC разработчики проекта помогли скомпилировать Libvncserver на платформах Windows, что позволило KRDC иметь порт для Windows.
Документация здесь.
Parallels Access
Для каких ОС: Windows, macOS, iOS и Android.
Способ установки: стороннее, мобильное и веб-приложения.
Цена: персональный план 649 р/год, для бизнеса 1623 р/год.
Пробная версия: есть.
Недостатки: Мало функций в десктопной версии.
Преимущества: поддерживает удаленный доступ к ПК с мобильных устройств, удобная работа с текстом с мобильного, поддерживает многозадачность
позволяет передавать файлы.
Приложение было разработано для подключения к УК в пути, то есть с мобильного устройства, но есть и другое приложение для ПК. То есть имеет две версии: десктопные приложения — агенты, которые необходимо установить, чтобы получить доступ к компьютеру и мобильные приложения — клиенты для удалённого доступа. Также есть возможность подключения ПК к УК из безопасной учетной записи Parallels в браузере (кстати, входить в учетку надо будет при любой форме подключения). Благодаря функции Lock’n’Go — удобная работа с текстом с мобильного. Подключение к УК в один клик. Универсальный файловый менеджер Parallels Access позволяет просматривать файлы в облаке, на удаленном компьютере или локальном устройстве и управлять ими. Есть полноэкранный режим.
TeamViewer
Для каких ОС: Windows, Linux (обертка Wine), macOS, Android, iOS, Blackberry, ChromeOS.
Способ установки: внешнее приложение.
Цена: годовая подписка для частного использования на неограниченный доступ к трем компьютерам 1099 руб/мес. Бизнес-версия есть в разных планах — от 2 299 руб. (200 управляемых устройств) до 7 699 руб/мес (500 управляемых устройств), оплата только за год.
Пробная версия: есть бесплатная версия с базовым функционалом для частного использования.
Недостатки: закрытый исходный код и широкий охват пользователей.
Преимущества: Мультиплатформенная поддержка и доступ через мобильные устройства. Есть чат, передача файлов, IP-телефония, работает с аудио, поддерживает мониторы 4K, IoT совместимость.
Популярный клиент, использующий проприетарный протокол, который организует подключение к клиенту через управляющий центральный сервер. Поддерживает Windows и Mac, доступ через мобильные устройства, IoT. Позволяет просматривать удаленную систему практически отовсюду, даже на заблокированных системах, в которых недоступно SSH-подключение или на машинах с активными корпоративными фаерволами. Может работать с аудио-потоком, включает чат, функцию передачи данных и даже сервис IP-телефонии. Подключение из браузера возможно для владельцев некоторых лицензий. Команда разработчиков постоянно работает над улучшением решения, в частности производительности и качеством графики во время локального подключения.
Zoho Assist
Для каких ОС:
Способ установки: внешнее облачное приложение + браузерная консоль.
Цена: план удаленная поддержка от 10 до 24 $/мес, план автоматический доступ 10 и 15 $/мес.
Пробная версия: есть.
Недостатки: высокая стоимость.
Преимущества: простой интерфейс, много клиентоориентированных функций. Передача файлов, мгновенный чат, навигация по нескольким мониторам.
Позиционируют себя как «лучшую альтернативу TeamViewer». Сервис позволяет запланировать сеанс удаленной поддержки. Содержит встроенные инструменты для диагностики УК. Браузерный просмотрщик на выбор работает через Flash, Java или ActiveX. Онлайн сессию можно транслировать на сайте с помощью виджета. Поддержка SSL, передача файлов, видеочат, навигация по нескольким мониторам, возможность ребрендинга. 2FA, SSL и 256-битное шифрование AES и встроенная интеграция безопасности для конфиденциальных данных.
Можно выбирать между планами удаленной поддержки и автоматического доступа в зависимости от ваших требований и не платить за услуги, которыми вы в конечном итоге не воспользуетесь.
LogMeIn Pro
Для каких ОС: Windows, macOS, Android, iOS.
Способ установки: стороннее приложение и веб-приложение.
Цена: доступ к двум компьютерам 30 $/мес, к пяти — 70 $/мес, к десяти — 129 $/мес
при оплате за год.
Пробная версия: есть.
Недостатки: высокая стоимость.
Преимущества: многофункциональный сервис. 1-ТБ облачное хранилище. Потоковая передача HD-видео и звука.
Популярный у корпоративных пользователей кроссплатформенный клиент. Быстрый и удобный доступ к ПК и Mac при помощи веб-браузера, а также приложений для компьютеров, iOS и Android. Вывод изображения с нескольких мониторов, облачное хранилище для файлов в 1-ТБ, удаленная печать, неограниченное количество пользователей, 256-битное шифрование AES. Существуют средства контроля доступа для системных администраторов. Есть потоковая передача HD-видео и звука, совместный доступ к файлам. Есть интеграция с популярными облачными сервисами, включая Cubby, Dropbox и Google Drive. Можно настроить мышь и экран; изменить цвет дисплея, разрешение и скорость сети. Есть лупа и ползунок для масштабирования изображения. Возможна совместная работа с файлами. Работает круглосуточная realtime-поддержка.
Splashtop
Для каких ОС: Windows, macOS, Linux, Android, iOS, CentOS, RHEL, Fedora.
Способ установки: стороннее приложение и веб-консоль.
Цена: множество стекируемых лицензий от бесплатной до 399 $/год, отдельные тарифы для учителей.
Пробная версия: есть.
Недостатки: не все функции доступны на разных платформах. Для нормальной работы в локальной сети также нужен доступ к интернету.
Преимущества: удобный и интуитивно понятный интерфейс. Много функций, включая интересную функцию «Удаленная камера».
У этого RDP-клиента достаточно быстрое соединение. Есть интеграция с Active Directory, запись удаленного сеанса, передача файлов, удаленная печать. Повышенная безопасность благодаря полному шифрованию удаленных соединений по протоколу SSL с 256-битным шифром AES. Поддерживает VPN. Есть подробная наглядная инструкция по управлению. Есть полноэкранный режим. Возможен просмотр статуса компьютера, времени бездействия, версии стримера. Два члена команды могут удаленно работать на одной машине со своих отдельных учетных записей.
Можно многое настроить для УК: автозапуск Splashtop Streamer, условия вывода звука, параметры электропитания системы (чтобы компьютер не уснул во время удаленного подключения), пароль при запуске, защитный код и другие параметры. Если к компьютеру подключена веб-камера, то можно получать с нее realtime-видео. В бесплатной версии управлять устройствами и получать к ним доступ можно только в пределах одной сети (когда все они подключены к одному роутеру), а максимальное количество устройств не должно превышать пяти.
Remote Utilities
Для каких ОС: MacOS, iOS, Android, Linux.
Способ установки: стороннее приложение.
Цена: одноразовая покупка лицензии от 29$ до 12 000$.
Пробная версия: бесплатное использование при поддержке до 10 пользователей.
Недостатки: сложная первоначальная настройка.
Преимущества: множество функций, доступность.
Помимо полноценного использования удаленного рабочего стола, в этом клиенте предлагается несколько режимов подключения или программных модулей (например, модуль «Просмотрщик»). Также есть режим передачи файлов, удаленный диспетчер устройств, средство просмотра реестра, удаленный доступ к веб-камере и режим терминала для работы с командной строкой. Повышенная безопасность через двухфакторную аутентификацию. Поддерживает Active Directory. Есть встроенный конфигуратор MSI. Можно создавать учетные записи, задавать им пароли и указывать разные разрешения для каждой учетки. Есть удаленное управление питанием.
Myrtille
Для каких ОС: Windows.
Способ установки: веб-приложение.
Цена:
Пробная версия:
Недостатки: не позволяет управлять группами пользователей и подключениями.
Преимущества: быстрый, простотой, функциональный. Доступ из любого веб-браузера без каких-либо плагинов или расширений.
Это решение с открытым исходным кодом разрабатывается аналогично Apache Guacamole на основе FreeRDP. Однако в отличие от Guacamole работает только на системе Windows, но совместим со всеми устройствами и операционными системами на той стороне. Разработчик называет его «HTML5 шлюзом удаленного доступа». Помимо RDP есть также протокол SSH. Для установки надо скачать файл инсталлятора с GitHub и запустить его. В процессе установки можно настроить множество опций и разрешений, включая работу с Active Directory. SSL / TLS, многофакторная аутентификация. Есть потоковая передача изображения и звука. Возможно прямое подключение к Hyper-V, отслеживание последовательности запуска / выключения виртуальной машины, есть сеанс консоли.
В заключении немного про безопасность RDP-протокола
Из-за резко появившейся в нашей жизни массовой удаленке стремительно растет число корпоративных серверов, доступных для кибератак. Одной из причин называют использование незащищенного протокола удаленного доступа RDP, который по умолчанию использует порт 3389. Количество устройств, доступных из интернета по протоколу RDP за эти два пандемийные года выросло многократно.
Удаленный доступ к рабочему месту — тренд, но к сожалению в спешке многие компании не уделяют внимания его защите, а это несет множество угроз. Например, часто бывает, что удаленный сервер доступен и виден из сети Интернет, и любой желающий может попробовать подключиться к нему. Несмотря на необходимость аутентификации и идентификации, злоумышленники могут подменять сертификаты безопасности или брутфорсить пароли с помощью «словарной атаки», которая многократно ускоряет процесс взлома, при условии, что установлены простые пароли. К тому же существует немало известных уязвимостей, позволяющих получить доступ к удаленному серверу даже без прохождения процедуры проверки подлинности.
Решением здесь будет, конечно, не скупиться работодателям на повышенную безопасность, чтобы потом не платить сторицей. Но также вполне рабочие, на наш взгляд, решения описаны ниже.
- Использовать нестандартные, длинные, сложные пароли.
- Использовать ограничение прав учётных записей.
- Устанавливать защиту на самом сервере стандартными антивирусными практиками.
- Сменить порт.
- Использовать фронтальную проверку подлинности, то есть аутентификацию на уровне сети (Network Level Authentication, NLA), которая требует от подключающегося пользователя аутентификации перед установкой сеанса на сервере (в некоторых Windows включена по умолчанию, следует убедиться, что в вашем случае это так).
- Использовать шифрование. Причем сделать так, чтобы применялись только стойкие алгоритмы шифрования, а не DES 56-bit или RC2. Например, настроить максимальный уровень шифрования, который обеспечивается стандартом FIPS 140-1 (в Windows это параметр «Системная криптография: использовать FIPS-совместимые алгоритмы для шифрования, хэширования и подписывания»). В завершении настроек шифрования обязательно надо включить параметр «Требовать безопасное RPC-подключение» в Службах удаленных рабочих столов/Безопасность.
- В Windows проверить, что параметр «Учетные записи: разрешать использование пустых паролей только при консольном входе» включен.
Надеемся, обзор был вам полезен. Если вы довольны использованием какого-то RDP-клиента, которого нет в списке, то, пожалуйста, напишите о нем в комментарии. Также напишите, что думаете насчет способов обезопасить подключение по RDP-протоколу.
Вы можете использовать встроенный OpenSSH сервер в Windows для проброса портов через SSH-туннель (SSH туннелирования). Перенаправление портов в SSH позволяет туннелировать (пробрасывать) порты приложений с локального компьютера на удаленный сервер и наоборот. Проброс портов через SSH туннель широко используется в среде Linux/Unix, а теперь вы можете воспользоваться этим возможностями и в Windows. В этом примере мы покажем, как пробросить RDP подключение через OpenSSH на хосте Windows Server.
Содержание:
- Для чего нужны SSH-туннели?
- Защищенный доступ к RDP через SSH туннель (local TCP forwarding)
- SSH туннель в Windows с помощью Putty
- Переброс удаленного порта на локальную машину (Remote TCP forwarding)
Для чего нужны SSH-туннели?
SSH-туннель обеспечивает защищенное шифрованный TCP соединение локальных хостом и удалённым сервером SSH. SSH Port Forwarding позволяет туннелировать поверх SSH подключение к локальному порту на локальном компьютере к любому TCP порту на удаленном сервере (или наоборот)
Порт форвардинг в SSH-туннелях применяются для:
- Обхода межсетевых экранов;
- Открытия бэкдоров в частные сети;
- Организации простых VPN/прокси сценариев для безопасного удаленного подключения;
- Защиты трафика устаревших приложений (протоколов), которые передают данные в открытом тексте (без шифрования).
Вы можете перенаправить в SSH туннель только TCP трафик/порт (UDP и ICMP протоколы не поддерживаются).
Проброс портов через SSH туннель можно использовать в сценариях, когда нужно подключиться к удаленному компьютеру, который защищен межсетевым экраном. Например, у вас имеется сервер c Windows, на котором наружу открыт только SSH порт (TCP 22). Все остальные порты блокируются аппаратным межсетевым экраном или Windows Defender Firewall Windows. Ваша задача подключиться к рабочему столу этого Windows сервера с помощью клиента RDP. Казалось бы, невозможная задача, т.к. порт RDP 3389 блокируется брандмауэром. Однако вы можете получить доступ к любому открытому порты на удаленном хосте через SSH-тунель.
Чаще всего используются следующие сценарии проброса через SSH:
- Local TCP forwarding — проброс локального порта на удаленный сервер;
- Remote TCP forwarding — проброс удаленного порта на локальный компьютер;
- Двойной SSH туннель – позволяет соединить между собой через SSH сервер компьютеры без выделенных белых IP адресов или находящиеся за NAT (если не подходит решение с OpenVPN)
Защищенный доступ к RDP через SSH туннель (local TCP forwarding)
В этом режиме вы создаете на своем компьютере локальный TCP порт, подключения к которому перенаправляются через SSH туннель на указанный порт удаленного сервера. В этом примере мы создадим локальный порт 8888, при подключении к которому выполняется перенаправление на RDP порт 3389 на удаленном компьютере. Общая схема подключения выглядит так:
Для проброса портов нам потребуется SSH клиент. Можно использовать сторонний клиент (например, Putty), но я буду использовать встроенный SSH клиент в Windows. Чтобы установить клиенте OpenSSH, выполните в консоли PowerShell команду:
Get-WindowsCapability -Online | ? Name -like 'OpenSSH.Client*'
Чтобы создать SSH туннель с удаленным компьютером 192.168.1.90, выполните команду:
ssh -L 8888:192.168.1.90:3389 [email protected]
В этом примере используется формат
LOCAL_PORT:DESTINATION:DESTINATION_PORT
и
USER@DEST_SERVER_IP
(имя пользователя и адрес удаленного SSH сервера)
Чтобы SSH туннель работал в фоновом режиме, нужно добавит параметр –f.
Теперь, чтобы подключится к удаленному компьютеру по RDP через SSH туннель, вам запустить RDP-клиент (mstsc.exe) и подключиться на локальный порт 8888 своего компьютера:
127.0.0.1:8888
Выполните аутентификацию на удаленном компьютере и можете спокойно работать в RDP-сессии. С помощью команды Get-NetTCPConnection или утилиты TCPView вы можете убедиться, что RDP подключение установлено локально (RDP подключение инициировано запущенным локально SSH сервером):
Get-NetTCPConnection -State Established|where {$_.localport -eq "3389"}|fl
При этом порт TCP/3389 на сервере не доступен с удаленного компьютера. Вы можете проверить доступность порта с помощью командлета Test-NetConnection:
Test-NetConnection 192.168.1.90 -port 3389
TcpTestSucceeded : False
Обратите внимание, что если вы перенаправляете таким образом незашифрованный трафик приложения, то по сети он передается в зашифрованном виде. Трафик шифруется на одном конце SSH соединения и расшифровывается на другом.
Другие компьютеры в вашей локальной сети смогут одновременно подключиться к удаленному RDP серверу Windows, даже если у них полностью заблокирован прямой доступ к удаленному серверу (как по SSH, так и по RDP). Для этого, они должны подключиться RDP клиентом к порту 8888 на компьютере, на котором создан SSH туннель:
mstsc.exe /v 10.10.1.220:8888
Защита RDP подключения с помощью SSH туннеля может быть хорошей альтернативой VPN для доступа к публичным Windows хостам в Интернете. В этом случае вам не нужно открывать прямой доступ к порту RDP/3389 из Интернета к хосту Windows. Достаточно открыть только порт SSH/22, что защитит вас от атак подбора пароля по RDP и эксплуатации 0-day RDP уязвимостей.
Для автоматического ввода пароля для подключения к SSH можно использовать утилиту sshpass. Ее можно запустить через подсистему WSL2 для Windows.
Установите sshpass в Ubuntu WSL:
$ sudo apt-get -y install ssphass
Запустите клиент Remote Desktop Connection (mstsc.exe) и сохраните в Windows RDP файл с настройками подключения:
Computer : localhost:8888 User name : remoteusername
Для автоматического подключения к удаленном RDP хосту с сохранённым паролем SSH, используйте такой bat файл:
start /min wsl sshpass -p "password" ssh -L 8888:192.168.31.90:3389 [email protected]
powershell sleep 5
start mstsc C:\rdp\localhost-33389.rdp
Или (предпочтительно) настройте SSH аутентификацию по ключам.
SSH туннель в Windows с помощью Putty
Рассмотрим, как настроить SSH туннель в Windows с помощью популярного SSH клиента Putty.
- Запустите PuTTY и перейдите в раздел Connection -> SSH -> Tunnels;
- В поле Source port укажите локального порта (в нашем примере это 8888);
- Укажите IP адрес сервера SSH и порт на удаленном хосте, на который нужно выполнить переадресацию:
192.168.31.90:3389
- Выберите Local в качестве Destination и нажмите Add;
- Чтобы не открывать shell удаленного хоста при подключении через туннель, включите опцию Don’t start a shell or command at all в разделе SSH;
- Вернитесь на вкладку Session, укажите имя или IP адрес удаленного SSH хоста и порт подключения (по умолчанию порт 22). Чтобы сохранить настройки подключения, укажите имя сессии в поле Saved Session и нажмите Save;
- Теперь вы можете запустить сохраненный SSH туннель в Putty прямо и панели задач Windows.
Переброс удаленного порта на локальную машину (Remote TCP forwarding)
Есть еще один вариант применения SSH туннеля – remote TCP forwarding. Через SSH туннель вы можете открыть доступ удаленному серверу к локальному порту на вашем компьютере или порту на другом компьютере в вашей локальной сети. Например, вы хотите, чтобы внешний сервер (192.168.1.90) получил доступ к вашему Интранет сайту (не опубликованному в Интернете). Для создания обратного туннеля, используйте такую команду:
ssh -R 8080:internalwebsever:80 [email protected]
Теперь, чтобы на удаленном SSH сервер получить доступ к веб серверу internalwebsever достаточно в браузере набрать адрес
http://localhost:8080
.
С помощью SSH туннелей вы можете строить целые цепочки для форвардинга портов. Включить или отключить SSH туннелирование можно в конфигурационном файле OpenSSH (sshd_config) с помощью директив:
AllowStreamLocalForwarding yes
AllowTcpForwarding remote
PermitTunnel no
Данные опции неприменимы для текущей версии OpenSSH в Windows.