ZeroLab.NeT Viewer — Аналог TeamViewer

Удаленная поддержка пользователей за NAT, но не через чужие неконтролируемые сервера, а через свой. Если вас, как и меня, посещала когда-либо подобная идея, то у меня для вас хорошая новость.

Для реализации реверсивного туннеля будет использоваться SSH, ведь он идет чуть ли не из коробки практически в любом Linux дистрибутиве. В наше время найти очень дешевый VPS на Linux вообще не проблема. SSH-сервера есть и под Windows, при желании можете настроить и на нем. Самое важное, чтобы наш сервер ретрансляции имел прямой доступ в Интернет, будет использоваться диапазон портов 20000-60000.

Если SSH-сервер у вас не предустановлен, устанавливаем на примере Debian GNU/Linux:

1
apt-get install openssh-server

Добавляем в конфигурацию ‘/etc/ssh/sshd_config’ в конце файла:

1
2
3
4
5
# ssh reverse tunnel bind to all interfaces
GatewayPorts yes
TCPKeepAlive yes
ClientAliveInterval 5
ClientAliveCountMax 2

Перезапускаем SSH-сервер:

1
service ssh restart

И добавляем служебного пользователя, к примеру ‘helper’, без доступа к консоли:

1
2
useradd -M -s /bin/false helper
passwd helper

Если вы настраивали iptables, то откройте диапазон портов 20000-60000:

1
iptables -A INPUT -p TCP --dport 20000:60000 -j ACCEPT

На этом настройка SSH-сервера завершена. В качестве бонуса так же опционально реализована работа с обфусцированным SSH-сервером, для зарегулированных правительством пользователей под контролируемыми DPI каналами связи. Программа хранит свои настройки в ini-файле для простой переносимости, пароли не хранятся в открытом виде. Работает без прав администратора.

Для реализации удаленного доступа я решил воспользоваться открытым проектом Aspia. Скорость, качество отрисовки, ресурсопотребление и простота настройки которого очень напоминают Radmin. Файл с базой пользователей и правами доступа находится в папке с программой ‘bin\userlist.dat’. По умолчанию выставлен пользователь ‘1’ с паролем ‘123456’ и минимальными правами лишь на удаленное управление. Вызов окна редактирования прав доступа можно и необходимо выполнять из моего приложения.

Для большей универсальности в качестве опции было принято решение добавить VNC сервер — TightVNC. При запуске автоматически устанавливаются оптимальные настройки, реализована установка VNC пароля на доступ из моего приложения.

Преднастраиваете сервер, отправляете пользователю, он жмет пару кнопок и диктует вам ID/порт, вы в клиенте вводите адрес своего сервера ретрансляции и ID/порт, подключаетесь к пользователю. Вот и все, приятного пользования!

Скачать zeroviewer-1.8.9.1-ZeroLab.NeT (версия 1.8.9.1, обновлено: 04.07.2018 — 21:52)[~3.3 МБайт]

Категория: Programming

Теги: , , , , , ,

Оставить комментарий

XHTML: Вы можете использовать следующие теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>
Аватары обслуживаются системой Gravatar. При публикации сообщения, Вы можете указать свой e-mail в этой системе.

комментариев 14

  1. no name:

    Приветствую, отличная идея и реализация, хотелось бы задать несколько вопросов
    Во-первых интересует можно ли добавить возможность генерировать и загружать профиль putty для plink вместо обычного подключения? насколько я знаю это даёт весомое преимущество в виде keepalive.
    Кроме того непонятно обрабатывается ли сейчас как то отвал туннеля? просто в 85% случаев plink при обрыве падает, а в оставшихся остаётся висеть как ни в чём ни бывало.
    Ещё можно принимать ключи сервера, например так: cmd.exe /c echo y | plink.exe bla bla bla…
    И как я понял вы самостоятельно собираете aspia. Можно ли добавить сохранение имени пользователя и пароля?

  2. neurooctober:

    Если уж используете открытый проект Aspia, то и исходники вашего проекта откройте. Так сказать, для полной гармонии.

  3. ZeroChaos:

    Нет.

  4. Евгений:

    А как службу можно запустить данный сервер?

  5. Maxlinus:

    привет
    один из вариантов не выставлять такое количество портов на ружу, чтобы всё работало только через один порт

  6. ZeroChaos:

    В чем практический смысл? Не могу понять. SSH-сервер размещаем на сервере с выделенным IP и с открытым наружу диапазоном портов 20000-60000. В этих условиях не нужно находиться с SSH-сервером в одной сети. Распишите подробно, что вы в итоге хотите получить, чтобы я увидел в этом практический смысл.

  7. Maxlinus:

    будет ли клиент с ssh частью, если скажем я нахожусь не в одной сети с сервером ssh.

  8. ZeroChaos:

    Для тех, кто успел скачать версию 1.9.0, — это был тестовый билд. Я не рекомендую его к использованию. Была попытка немного переделать архитектуру, в итоге приведшая в тупик. Тем не менее, в ней были удачные находки, сделал их бэкпорт в версию 1.8.9. Это выверенная и оптимизированная версия, рекомендуется к окончательному использованию. В принципе, разработка завершена.

  9. ZeroChaos:

    Таких планов пока нет.

  10. kit42:

    Скажите, а планируется ли версия для macOS?

  11. ZeroChaos:

    Еще более тесная интеграция, теперь права доступа для ‘Aspia’ сохраняются и читаются из папки с программой (‘bin\’). Вызов на редактирование прямо из приложения.

  12. ZeroChaos:

    Большое обновление. Работа без прав администратора, опциональная фиксация ID/порта, немного косметики. Рекомендовано к обновлению.

  13. ZeroChaos:

    Через полторы недели для большей универсальности в качестве опции было принято решение добавить VNC сервер — TightVNC. Обновляемся.

  14. ZeroChaos:

    Выложена новая версия, рекомендовано к обновлению всем, пересобран Aspia, решена проблема работы на Windows 10 April 2018 Update (version 1803). Думаю, это окончательная сборка.

Donate

Яндекс.Деньги:

VISA/MasterCard:

PayPal:
PayPal USD
PayPal RUB
WMZ WMZ: Z375880088307
WMR WMR: R883546545943
YAD YAD: 4100170884493

Donate - лучшее спасибо автору
Количество благодарностей: 34

Разделы

Последние комментарии