UltraVNC – альтернативное средство для удаленного управления

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

Для чего это нужно?

Ситуация, когда вы и ваш сервер находитесь на разных этажах или в разных концах здания – обычное дело. Разумеется, каждый раз бегать к монитору, чтобы настраивать его, никакого здоровья не хватит, да и монитора может вовсе не быть. Выход только в удаленном управлении через сеть. Или, например, вам срочно понадобилось посмотреть что-то на вашем ПК, а до него километры кабеля и доступ только через внешний IP-адрес в Интернете. Тогда у вас в принципе нет вариантов, кроме как удаленное управление. Для консольного доступа можно использовать ssh или в крайнем случае telnet, а вот что использовать для графического, вы узнаете из этой статьи.

Что такое RDP?

Самый известный способ удаленного управления – это Удаленный помощник из Windows. В его основу положен протокол Remote Desktop Protocol (сокращенно RDP), разработанный компанией Microsoft. Впервые RDP появился в 1998 году в составе WindowsNT 4.0 Terminal Server, на момент написания статьи (август 2010-го) последней версией является версия 7, включенная в дистрибутивы Windows Seven. Говоря про RDP, нельзя не упомянуть про его связи с компанией Citrix. В далеких 90-х эта компания специализировалась на многопользовательских системах и технологиях удаленного доступа. После приобретения лицензии на исходные коды WindowsNT 3 в 1995 году она выпустила свою многопользовательскую версию WindowsNT, известную как WinFrame. Через два года CitrixSystems и Microsoft заключили договор, согласно которому многопользовательская среда WindowsNT 4.0 базировалась на технологических разработках Citrix. В свою очередь CitrixSystems отказалась от распространения полноценной операционной системы и получала право на разработку и реализацию расширений для продуктов Microsoft. Вот так за счет определенных финансовых вложений у Microsoft появилась технология удаленного доступа. RDP является протоколом прикладного уровня, то есть самого верхнего из модели OSI. После установки соединения на транспортном уровне (по TCP) инициализируется RDP-сессия, в рамках которой согласуются различные параметры передачи данных. После успешного завершения инициализации сервер терминалов начинает передавать клиенту графический вывод и ожидает входные данные от клавиатуры и мыши. В качестве графического вывода может выступать как точная копия графического экрана, передаваемая как изображение, так и команды на отрисовку графических примитивов (прямоугольник, линия, эллипс, текст и т.д.). RDP-клиент обрабатывает полученные команды и выводит изображения с помощью своей графической подсистемы. Пользовательский ввод по умолчанию передается при помощи скан-кодов клавиатуры. Сигнал нажатия и отпускания клавиши передается отдельно при помощи специального флага. Клиент в Windows 2k/XP/2003/Vista/2008/7 называется mstsc.exe. К особенностям RDP-протокола можно отнести следующие:

1. поддержка 32-битного цвета (в дополнение к 8-, 15-, 16-, и 24-битному в предыдущих версиях);

2. 168-битовое шифрование, используя алгоритм шифрования RC4 (значение безопасности по умолчанию в последней версии, старые клиенты могут использовать более слабое шифрование). Из-за уязвимости «man-in-the-middle vulnerability» в версиях ранее 6.0 во многих случаях трафик может быть расшифрован по пути;

3. звук с удаленного ПК переадресовывается и воспроизводится на локальном компьютере;

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

5. можно обмениваться информацией через буфер обмена.

А с новой версией RDP-ядро стало поддерживать WindowsAero и значительно улучшило работу со звуком. Подробнее узнать можно здесь:
http://www.securitylab.ru/bitrix/exturl.php?goto=http%3A%2F%2Fmsdn.microsoft.com%2Fen-us%2Flibrary%2Fcc240445%28PROT.10%29.aspx.

Главным недостатком RDP и Удаленного помощника является то, что он не поддерживает работу в текущей сессии. То есть чтобы время от времени наблюдать за происходящим на другом экране, нужно запускать все процессы из-под RDP-сессии. Несмотря на то, что существуют RDP-клиенты под Linux и MacOS, этот протокол затачивается именно под Windows. Если вы хотите администрировать компьютер на Linux, могут возникнуть проблемы с приложениями, которые никто, кроме вас, не решит. Поэтому для таких случаев лучше пользоваться open-source протоколами. Они к тому же и бесплатны.

Что такое VNC, или альтернатива RDP

Конечно, RDP– не единственное решение на рынке для удаленного управления. Существуют как платные альтернативы - широкоизвестный в СНГ RAdmin, так и бесплатные – не менее известный протокол VNC (VirtualNetworkComputing). Особенностью этого протокола является платформонезависимость: VNC- клиент, запущенный на одной ОС, может подключаться к VNC-серверу, работающему на любой другой ОС. Существуют реализации клиентской и серверной части практически для всех операционных систем, в том числе и для Java (включая мобильную платформу J2ME). К одному VNC-серверу одновременно могут подключаться несколько VNC-клиентов. Протокол появился тоже как стартап небольшой компании Olivetti, который был впоследствии перекуплен AT&T. По умолчанию VNC использует диапазон TCP-портов с 5900 до 5906. Каждый порт представляет собой соответствующий экран X-сервера (порты с 5900 по 5906 ассоциированы с экранами с 0 по 6). Для Windows экран по умолчанию — 0, что соответствует порту 5900. Протокол работает по принципу пересылки пиксельных областей с сервера на клиент. Сервер посылает небольшие прямоугольники клиенту. Для снижения нагрузки на канал используются различные методы передачи этих прямоугольников. Клиент и сервер «договариваются» о том, какая кодировка будет использована. Самый простой метод, поддерживаемый всеми клиентами и серверами — raw encoding, при котором пиксели передаются в порядке слева-направо, сверху-вниз, и после передачи первоначального состояния экрана передаются только изменившиеся пиксели. При быстро меняющейся картинке VNC может уступать RDP по расходу трафика (например, здесь подтверждение: http://www.hob-techtalk.com/2010/07/28/vnc-and-rdp-benchmark-test), а может и превосходить: http://www.linux16.net/node/10. Изначально VNC не использует шифрование трафика, однако в процедуре аутентификации пароль не передается в открытом виде, а используется алгоритм «вызов-ответ» с DES-шифрованием (эффективная длина ключа составляет 56 бит). Во многих реализациях существует ограничение в 8 символов на длину пароля, и если его длина превосходит 8 символов, то пароль урезается, а лишние символы игнорируются. Вот здесь можно прочитать о том, как создать RDP или VNC-клиент самому: http://www.vr-online.ru/?q=content/kuem-rdp-i-vnc-klientov- 805. А здесь сравнение платного RAdmin и платного решения на базе VNC: http://www.linux16.net/node/8. Теперь о конкретной реализации VNC с шифрованием.

UltraVNC

Итак, как уже было отмечено выше, VNC – кроссплатформенный протокол, и реализаций у него очень много. Мы с вами рассмотрим один из бесплатных пакетов - UltraVNC. Скачать программу можно отсюда: http://www.uvnc.com/. Плагин для шифрования можно забрать отсюда: http://msrc4plugin.home.comcast.net/~msrc4plugin/. Существует три версии плагина – с алгоритмами MSRC4, ARC4 и AESV2. MSRC4 уже есть в дистрибутиве, по сути, он является аналогом шифрования, которое использует Удаленный помощник. Каждый плагин создает уникальный 128-битный ключ для шифрования трафика и аутентификации. Расширение устанавливается просто копированием в папку Plugins в каталоге программы в ProgramFiles.Также существуют варианты аутентификации на VNC-сервере на основе NTLM и учетных записей пользователей в Active Directory. UltraVNC позволяет передавать файлы между сервером и клиентом в любых направлениях, поддерживает отправку произвольных клавиатурных сочетаний и чат. При установке можно загрузить специальные дополнения для поддержки Vista и Seven. Программа поставляется сразу в двух версиях – клиентской и серверной. Настройка удаленного управления предельно проста. На компьютере, которым мы хотим управлять, запускаем UltraVNCserver. Там указываем пароль для доступа к просмотру (VNCPassword), там же ставим птицу в боксе DSMPlugin, чтобы включить шифрование. Есть еще много настроек, которые могут понадобиться, например, отключение фонового рисунка рабочего стола, отключение трансляции Aero, настройка портов и т.д. Можно настроить VNC-сервер как сервис (с версии 1.0.6.4 полностью поддерживается Windows Vista и UAC). Теперь устанавливаем и запускаем на своем компьютере UltraVNCViewer. Программа сразу же предложит выбрать параметры соединения. Если это локальная сеть – можно смело установить AUTO, если у вас ADSL или, еще хуже, обычное модемное соединение – выбирайте пункт SLOW или MODEM. Клиент уменьшит количество цветов и аккуратность отрисовки. В настройках также можно принудительно выбрать алгоритм кодирования прямоугольников с удаленного экрана, если автоматический выбор вас не устроил. Далее вписываем IP-адрес удаленного компьютера и подключаемся к нему. У вьювера еще есть тулбар, на котором много всего интересного. Например, окно статистики, где отображается текущая скорость и количество переданных мегабайт трафика, окно передачи файлов, окно чата и настроек соединения на лету. На этом, можно сказать, и дело в шляпе.

Заключение

Любителям экстрима могу порекомендовать утилиту NetRemote для управления VNC-сервером с любого браузера. Существует клиент на python для управления с телефона под управлением ОС Symbian. Если нужно удаленно управлять иксами на Linux, в официальных репозиториях есть пакет vnc4server. К нему можно отлично коннектиться с Windows с помощью того же UltraVNC. Пакет UltraVNC полностью решает задачи удаленного управления, поэтому является отличной альтернативой как стандартному RDP, так и коммерческим аналогам – Radmin’у и Dameware. Приятного управления!

Алексей Голованов


Компьютерная газета. Статья была опубликована в номере 31 за 2010 год в рубрике soft

©1997-2024 Компьютерная газета