- UltraVNC как замена TeamViewer
- Как это работает
- Установка UltraVNC репитера
- Установка и настройка UltraVNC сервера
- Генерация уникального ID
- Установка и настройка UltraVNC Viewer
- Замечания по использованию
- Увидимся в следующих сериях
- UltraVnc Repeater
- UltraVNC Repeater Mode I
- How does it work
- Usage
- Repeater settings
- Extra options boxes
- Syntax for allow/refuse
- UltraVNC Repeater Mode II
- Server settings
- Viewer settings
- Repeater settings
- Repeater logging
- BSD License
UltraVNC как замена TeamViewer
Предупреждение: все прилетевшие тапочки будут проданы, помидоры – съедены, яйца – пожарены, испорченные – выброшены. Те, кто думают, что мы маемся фигней – вы угадали, возьмите с полки пирожок. Автор не призывает бросать мешки грудью на амбразуры. Он вообще ни к чему не призывает – он же не политик и не гражданин с активной гражданской позицией. А вот желающих подискутировать – милости просим. Сегодня я буду рассказывать вам занимательную историю о замене Teamviewer на UltraVNC.
Зачем вообще нужны такие заморочки, ведь Teamviewer такой офигенный? В моем случае это обусловлено несколькими причинами. В работе была нужна система удаленного управления серверами и рабочими станциями пользователей, а их у нас на поддержке >1000. Teamviewer контролируется сторонней компанией и неизвестно, что она делает с трафиком. Teamviewer не пользуется доверием у некоторых наших клиентов. Нам нужны были уникальные ID для всех пользователей. Ну и его стоимость для достаточно большой инфраструктуры очень приличная, что тоже повлияло на решение. При этом у нас достаточно широкие каналы связи и нет жестких требований к скорости отклика, что нивелировало основной недостаток UltraVNC, а именно — более низкую скорость работы.
Как это работает
Исходная архитектура VNC протокола слабо предназначена для работы через глобальные сети. Для этого есть несколько причин.
- Отсутствие шифрования передаваемых данных.
- Короткие пароли (8 символов в современном мире? Вы серьезно?)
- Отсутствие сквозной нумерации серверов, подключение по IP.
- Невозможность работы из-за NAT.
Я, конечно, перечислил не все. Но это основные недостатки, которые мешали нам рассматривать данное решение всерьез. В итоге, все они были тем или иным образом преодолены. Текущая схема работы выглядит примерно так:
Клиентский UltraVNC сервер подключается к нашему репитеру, который одним своим портом (нестандартным) смотрит в интернет и принимает подключения. А мы подключаемся к этому же серверу по внутреннему адресу изнутри и уже оттуда — к клиенту. Соединения шифруются RSA2048/AES256. Так как серверы и клиенты цепляются на разные порты, можно гибко ограничить, у кого и откуда есть право подключения, не трогая возможность UltraVNC-серверов подключаться к репитеру.
Установка UltraVNC репитера
Так как репитер будет единственным публичным сервисом, его настройке надо уделить максимум внимания. Использовать нестандартные порты, блокировать подозрительную активность, например сканирование портов и жестко определять, откуда можно будет подключаться Viewer-ам. Но начнем с самого простого – установки и настройки. Сервер настраивается во втором режиме, третий (через SSL) требует специальных сборок просмотрщиков и серверов, поэтому его решили не использовать.
Итак, заходим на сервер, которому предначертано стать будущим репитером и начинаем колдунство. Установка будет описана для Ubuntu 16.04. Ставим необходимые зависимости.
Создаем пользователя для запуска репитера.
Скачиваем исходники репитера.
Распаковываем репитер и заходим внутрь папки.
Устанавливаем репитер в систему.
У нас все готово к успешному запуску, но надо немного изменить файл настроек. Поэтому открываем в любимом редакторе /etc/uvnc/uvncrepeater.ini и приводим настройки к следующему виду:
По странной прихоти автора номер порта отличается от стандартного. У себя нестандартный порт мы выставим на файрволе.
Немного повышаем уровень логирования, чтобы видеть информацию о бинде портов и подключениях в логе.
Запрещаем оба режима, оставляем только 2, потому что первый работает по другому принципу и может создавать для нас уязвимость.
Отключаем отправку сообщений. Пока мы никому ничего отправлять не будем. Может быть потом…
Сохраняем файл и тестируем корректность его настроек.
Все в порядке, можно запускать как стандартную службу. Останавливаем репитер с помощью Ctrl+C и запускаем уже как сервис.
Проверяем, что служба запустилась.
Файл лога можно посмотреть по адресу /var/log/uvncrepeater.log.
Установка и настройка UltraVNC сервера
Итак, первое препятствие между нами и нирваной рухнуло с треском. Теперь мы можем подключаться к клиентам за NAT. На очереди два следующих – отсутствие сквозной нумерации и шифрования. Настраиваем тестовый UltraVNC-сервер. Так как у нас основной парк управляемых машин – это Windows, установка сервера и клиента будет расписана для них.
Скачиваем необходимые компоненты по ссылкам. Компоненты должны иметь архитектуру (x86 и x64), соответствующую архитектуре компьютера, на который происходит установка сервера.
- UltraVNC Server
- SecureVNC Plugin:
- x86
- x64
- Mirror Driver
Запускаем установщик UltraVNC сервер. Принимаем условия соглашения и нажимаем Next >.
Вчитываемся с интересом и Next >.
Выбираем папку для установки. Не рекомендуется менять без особой необходимости. Что жать, думаю, и так понятно.
Выбираем установку только UltraVNC Server и нажимаем Next >.
Жмем Next > и никаких гвоздей.
Ставим указанные галочки, чтобы установить UltraVNC сервер как системную службу и запустить его сразу после установки. Жмем Next >.
Смотрим на этот экран с умным видом, потом нажимаем Install.
Здесь есть только одна кнопка для нажима. Жмем на нее.
Снимаем галочку, чтобы не смотреть какие-то последние версии, и жмем Finish.
Кнопконажимательная часть миссии закончена. Теперь надо доустановить необходимые компоненты и настроить сервер. Копируем плагин безопасности в папку UltraVNC.
Распаковываем папку с драйвером.
Заходим в папку с соответствующим драйвером и устанавливаем его путем запуска install.bat.
Внимание! Установку драйвера надо производить с административными правами. Причем запустить от имени администратора только install.bat не получится, потому что он запускает еще одну программу и она будет работать уже не от администратора. Поэтому запускаете консоль от администратора, идете в папку установки драйвера и запускаете install.bat оттуда.
Я выполнял тестовую сборку по XP с правами администратора, потому мне это не потребовалось.
Запускаем настройки VNC сервера – uvnc_settings.exe.
Переходим на вкладку Security.
- В разделе Authentication выставляем два пароля. Пароли должны быть одинаковыми, состоять из цифр и больших и малых латинских букв, не более 8 символов длиной.
- В разделе Encryption ставим галочку Use, выбираем из выпадающего списка наш плагин, и жмем на кнопку Configuration.
Галочки должны стоять так, как показано на скриншоте. Если все правильно, закрываем окно нажатием кнопки Close.
Переходим на вкладку Connection.
- В разделе Multiple connections выбираем Keep existing connections.
- В разделе Disconnect выбираем Do Nothing.
Переходим на вкладку Screen Capture.
- В разделе Advanced выбираем Use system hookdll, Use mirror driver, Remove Aero while connected и Remove wallpaper while connected.
Переходим на вкладку Misc/logging.
- В поле Service command line вбиваем самую главную строку. Эта строка содержит ID и адрес и данные репитера для подключения. Выглядит она так:
-autoreconnect ID:XXXXXXXX -connect :
ID получается с помощью скрипта по методике приведенной ниже.
После всех проделанных действий нажимаем ОК для сохранения настроек. Потом запускаете настройки еще раз и переходите на вкладку Service. На ней нажатием соответствующих кнопок сначала останавливаете, потом запускаете сервис.
Генерация уникального ID
Скрипт получения 8-значного номера ID. Написан на php, потому что это было проще всего. В качестве источника вдохновения использовались комментарии вот к этому вопросу. Как работает, думаю, пояснять не надо. Почему именно скрипт генерации и почему именно по MAC? Потому что репитер не даст подключиться двум серверам с одинаковым ID, а вести журналы со списками ID было предельно лень. А так как MAC-адреса и так уникальны, то почти гарантированно получаем уникальный номер с достаточно низкой вероятностью коллизии.
Важно помнить, что коллизию можно обнаружить только по соответствующим логам репитера. Сервис будет стартовать, как ни в чем не бывало. Поэтому при добавлении номера лучше все-таки посматривать за логами.
Установка и настройка UltraVNC Viewer
Скачиваем необходимые компоненты по ссылкам. Компоненты должны иметь архитектуру (x86 и x64), соответствующую архитектуре компьютера, на который происходит установка Viewer.
Внимательно читаем странное и нажимаем Next >.
Выбираем папку установки и нажимаем Next >.
Выбираем только компонент UltraVNC Viewer и нажимаем Next >.
Оставляем здесь все как есть и просто нажимаем Next >.
Выставляем галочки так, как вам будет удобно и нажимаем Next >.
Отключаем просмотр последних версий снятием галочки и нажимаем кнопку Finish.
Теперь скачиваем файл плагина по ссылке выше и перемещаем его в папку программы. После этого запускаем Viewer.
Устанавливаем все настройки так же, как и на скрине. ID сервера для подключения вводится именно в таком формате, то есть ID:XXXXXXXX. IP и порт репитера вводятся такими, какими были назначены при установке репитера.
Все, можно подключаться и радоваться жизни.
Замечания по использованию
Увидимся в следующих сериях
Да, UltraVNC, это вам не это. В смысле, по функциональности проще, имеет все отличительные признаки бесплатного ПО, да и вообще, где это видано… Но я считаю, что как инструмент оно вполне имеет право на жизнь, если удовлетворяет требованиям по безопасности и предоставляемому сервису. В дальнейшем хотелось бы прикрутить к нему Single Click, но пока хватает и этого.
Источник
UltraVnc Repeater
UltraVNC Repeater is an UltraVNC addon
There are two modes available with the UltraVNC repeater: mode I and mode II
While mode I is used for UltraVNC Server and Viewer both in normal mode, mode II works with the server in listening mode.
UltraVNC Repeater Mode I
How does it work
Usage
Viewer can be behind Nat router or directly connected to the internet.
Instead of forwarding several ports, you only need to forward 1 port
If the PC that runs the Repeater has access to the local DNS server, you can use your local DNS names instead of 10.10.10.12 .
This could be handy when you have a dynamic DHCP server allocating ip addresses for your PC.
To connect the the server running on 10.10.10.11 Port 5900
To connect to the server running on 10.10.10.12 Port 5902
Repeater settings
Extra options boxes
Syntax for allow/refuse
Address allow/refuse have to be ip addresses. You cannot use DNS names in those fields.
UltraVNC Repeater Mode II
In mode II both server and viewer initiate an outgoing connection.
- Viewer (normal mode)
- Server (invers connection)
- Repeater have to run on a machine that can be accessed from server and viewer PC.
-
- Open on the internet (DMZ zone)
- Internal, but with 2 ports forward by the Nat router
Situation is indicated by the lower image of the repeater settings window.
Server settings
Viewer settings
Repeater settings
Repeater logging
In real life, replace localhost by the ip_address of the server running the Repeater
For localhost test, remember to select allow loopback in WinVNC Server properties
Accept = port the viewer connect
Listen = port server connect (outgoing connection)
Restricts Ports : need to be 0;
Allow and deny : leave unchecked, can not be used in mode II
BSD License
UltraVNC repeater is released under the following license:
Источник