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 МБайт]

Выпущена вторая линейка.

Сайт с новой версией: https://null.la/

Категория: 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 в этой системе.

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

  1. Soneks:

    Надо пробовать vpn поднимать наверное….

  2. Soneks:

    Выздоравливайте, здоровья Вам.
    Антивирусы и брендмауэры для такого тестирования я всегда отключаю.
    Насчет галочки в настройках… На разных пк программа в этом смысле ведёт себя по-разному: где сворачиваетсяя, где нет. А настройки default я не менял.
    Если я сам запущу TightVNC Viewer, то какой id мне вставлять, откуда его взять? Тот что я завел клиенту? Я завел 23000, но TightVNC Viewer говорит, что такого нет…

  3. ZeroChaos:

    Если соединение не удалось (не удалось построить туннель) — вываливается вот эта ошибка:

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

    Вообще Вам надо сделать так, чтобы после нажатия «запустить» программа не убиралась сама в трей. Это дико неудобно, потому что непонятно, получилось ей подключиться, или нет. И именно после ухода в трей появляется это окно.

    Для этого есть галочка в настройках, посмотрите внимательнее.

    Напомню, эти свистопляски при подключении к клиенту, который в теле2. Кстати, оператор, который сидит на теле2, также не может подключится к ssh и настроить туннель.

    Печально, но это вопросы к Tele2.

    Вот теперь вопрос? А как управлять-то удалённым компьютером? Никаких окон с рабочим столом на компе оператора не открылось…

    Должен открываться TightVNC Viewer. Антивирус ничего не заблокировал? Антивирусы могут распознавать софт для удаленного администрирования как Riskware категорию.

    Почему-то мой большой комментарий ожидал проверки перед размещением на вашем сайте и пропал куда-то. Можно его восстановить?

    Он ждал одобрения.

  4. Soneks:

    Почему-то мой большой комментарий ожидал проверки перед размещением на вашем сайте и пропал куда-то. Можно его восстановить?

  5. Soneks:

    Если соединение не удалось (не удалось построить туннель) — вываливается вот эта ошибка: https://photos.google.com/share/AF1QipMQtGr_dxOGRqMDScy2AD-V5CAjIHrFkSPaw7yMFJsZtpBVCGMSHcKXrPRdmm8Jjw/photo/AF1QipMViWmIU2tFlPlI71m6lsTxqVQyjdte71xJ6P6q?key=MXBnbjM0dHdaeEl1SzhCMC01RDROVHNyUlgtandn
    Вообще Вам надо сделать так, чтобы после нажатия «запустить» программа не убиралась сама в трей. Это дико неудобно, потому что непонятно, получилось ей подключиться, или нет. И именно после ухода в трей появляется это окно. Напомню, эти свистопляски при подключении к клиенту, который в теле2. Кстати, оператор, который сидит на теле2, также не может подключится к ssh и настроить туннель.

  6. Soneks:

    Спасибо за разъяснения.
    Итоги.
    КОМП1: Запущен openSSH на сервере (win2003, проводный инет, белый IP).
    КОМП2: Запущен zeroviewer «клиента» (winXP, проводный инет билайн, динамический IP) . Он успешно прицепился к SSH.
    КОМП3: Запущен Zeroviewer в режиме оператора (winXP, проводный инет билайн, динамический IP.
    Все операции организации туннеля прошли положительно.
    Вот логи:
    КОМП1:——-лог freeSSHd——————————————
    08-28-2019 17:14:17 HOST 95-27-137-53.broadband.corbina.ru SSH connection attempt.
    08-28-2019 17:14:17 HOST 95-27-137-53.broadband.corbina.ru SSH КОМП2 successfully logged on using password.
    08-28-2019 17:14:18 Tunneling service granted to user КОМП2.
    08-28-2019 17:14:32 HOST 95-27-137-53.broadband.corbina.ru SSH connection attempt.
    08-28-2019 17:14:32 HOST 95-27-137-53.broadband.corbina.ru SSH КОМП3 successfully logged on using password.
    08-28-2019 17:14:36 Tunneling service granted to user КОМП3.

    ==================================================================================
    КОМП2:————————————————————
    =~=~=~=~=~=~=~=~=~=~=~= Events log 2019.08.28 16:36:05. ZeroViewer (https://null.la). =~=~=~=~=~=~=~=~=~=~=~=
    Event Log: Looking up host «xxxxx.xx» for SSH connection
    Event Log: Connecting to xx.xx.xx.xx port 22
    Event Log: We claim version: SSH-2.0-PuTTY_KiTTY
    Event Log: Remote version: SSH-2.0-WeOnlyDo 2.4.3
    Event Log: Using SSH protocol version 2
    Event Log: No GSSAPI security context available
    Event Log: Doing ECDH key exchange with curve nistp256 and hash SHA-256 (unaccelerated)
    Event Log: Server also has ssh-dss host key, but we don’t know it
    Event Log: Host key fingerprint is:
    Event Log: ssh-rsa 1024 8f:be:97:1e:21:bc:59:b4:5f:63:7c:33:55:ef:ba:1e
    Event Log: Initialised AES-256 SDCTR (unaccelerated) outbound encryption
    Event Log: Initialised HMAC-SHA-256 (unaccelerated) outbound MAC algorithm
    Event Log: Initialised AES-256 SDCTR (unaccelerated) inbound encryption
    Event Log: Initialised HMAC-SHA-256 (unaccelerated) inbound MAC algorithm
    Event Log: Using SSPI from SECUR32.DLL
    Event Log: Trying gssapi-with-mic…
    Event Log: Attempting GSSAPI authentication
    Event Log: GSSAPI authentication request refused
    Event Log: Sent password
    Event Log: Access granted
    Event Log: Requesting remote port :23000 forward to 127.0.0.1:5905
    Event Log: Remote port forwarding from :23000 enabled
    ====================================================================================
    КОМП3:——————————————————————-
    =~=~=~=~=~=~=~=~=~=~=~= Events log 2019.08.28 16:53:14. ZeroViewer (https://null.la). =~=~=~=~=~=~=~=~=~=~=~=
    Event Log: Looking up host «xxxxx.xx» for SSH connection
    Event Log: Connecting to xx.xx.xx.xx port 22
    Event Log: We claim version: SSH-2.0-PuTTY_KiTTY
    Event Log: Remote version: SSH-2.0-WeOnlyDo 2.4.3
    Event Log: Using SSH protocol version 2
    Event Log: No GSSAPI security context available
    Event Log: Doing ECDH key exchange with curve nistp256 and hash SHA-256 (unaccelerated)
    Event Log: Server also has ssh-dss host key, but we don’t know it
    Event Log: Host key fingerprint is:
    Event Log: ssh-rsa 1024 8d:be:97:1f:2f:bc:59:b4:5f:63:7f:33:55:ef:ba:1e
    Event Log: Initialised AES-256 SDCTR (unaccelerated) outbound encryption
    Event Log: Initialised HMAC-SHA-256 (unaccelerated) outbound MAC algorithm
    Event Log: Initialised AES-256 SDCTR (unaccelerated) inbound encryption
    Event Log: Initialised HMAC-SHA-256 (unaccelerated) inbound MAC algorithm
    Event Log: Using SSPI from SECUR32.DLL
    Event Log: Trying gssapi-with-mic…
    Event Log: Attempting GSSAPI authentication
    Event Log: GSSAPI authentication request refused
    Event Log: Sent password
    Event Log: Access granted
    Event Log: Local port :23000 forwarding to 127.0.0.1:23000
    Event Log: Opening connection to 127.0.0.1:23000 for forwarding from 127.0.0.1:3402
    ====================================================================================
    Вот теперь вопрос? А как управлять-то удалённым компьютером? Никаких окон с рабочим столом на компе оператора не открылось…..
    Туннель валится иногда ( зависимость от нагрузки на канал).
    ЗЫ: Если клиент — пользователь Теле2, повторяю, подключиться к клиенту невозможно.
    Извините, за то, что «загрузил».

  7. ZeroChaos:

    Вы скинули логи KiTTY, я могу ориентироваться только на них. Что у вас пишет freeSSHd — я не знаю. Вообще с SSH-серверами под Windows дел не имел. Под Linux никаких проблем нет, настроить учетные записи по моей инструкции на сайте (разделение клиентского и операторского аккаунтов) и можно спокойно пользоваться. Что у вас там делает Tele2 — мне тоже не ведомо, если обычный коннект по SSH проходит, то дело не в операторе, очевидно же. А обычный коннект у вас проходит, судя по вашим словам. Вывод? Неправильно настроен SSH-сервер.

  8. Soneks:

    А разве freeSSHd должен в логах писать про форвардинг? Он этого не пишет.
    Так же и оборудование Теле2 может рвать сессию. И поэтому источником «refused by remote» может быть и оборудование Теле2.

  9. ZeroChaos:

    Ещё раз повторю — форвардинг портов включен в ssh

    В ваших предыдущих сообщениях этого нет. Поэтому я не знаю, что вы еще раз повторяете. Я вижу ваш лог, там четко указано:

    Event Log: Forwarded connection refused by remote: Connect failed []

    Т.е. отлуп от SSH-сервера. При чем здесь двойной NAT? У вас исходящее соединение, плевать какой там NAT. Если провайдер через DPI не блокирует SSH — все будет работать при правильной настройке сервера.

  10. Soneks:

    Ещё раз повторю — форвардинг портов включен в ssh, брендмауэр вообще отключен.
    Я, конечно, попробую и openssh, Но, повторю, пробовались разные варианты. И с теле2 ничего не проходит.

  11. ZeroChaos:

    Настройте правильно SSH-сервер и все у вас заработает. Впечатление, что мое предыдущее сообщение вы не читали. У вас запрещен SSH port forwarding, вот и не работает ретрансляция. Если freeSSHd (судя по логу, вы используете его) не позволяет это настроить, то поднимите нормальный SSH-сервер: https://o7planning.org/ru/11409/installing-openssh-server-on-windows

  12. Soneks:

    К сожалению, ваша программа не может справиться с двойным NAT от сотового оператора.
    Вот сейчас собрал цепочку: оператор (интернет через 3G модем ТЕЛЕ2) — SSH-сервер (проводный инет с белым IP) — клиент (интернет через 3G модем ТЕЛЕ2).
    На месте оператора вообще никакого коннекта с ssh (Адрес, как вы понимаете,я скрыл):
    =~=~=~=~=~=~=~=~=~=~=~= Events log 2019.08.27 02:42:43. ZeroViewer (https://null.la). =~=~=~=~=~=~=~=~=~=~=~=
    Event Log: Looking up host «xx.xx.xx.xx» for SSH connection
    Event Log: Connecting to xx.xx.xx.xx port 22
    Event Log: We claim version: SSH-2.0-PuTTY_KiTTY
    Zeroviewer в своем окне-логе пишет «похоже, неверно указан логин или пароль».

    Предыдущее моё тестирование было в следующей цепочке: оператор (проводный инет билайн, динамический IP) — — SSH-сервер (проводный инет с белым IP) — клиент (интернет через 3G модем ТЕЛЕ2).
    Там хоть какое-то шевеление было:
    =~=~=~=~=~=~=~=~=~=~=~= Events log 2019.08.26 20:09:37. ZeroViewer (https://null.la). =~=~=~=~=~=~=~=~=~=~=~=
    Event Log: Looking up host «xx.xx.xx.xx» for SSH connection
    Event Log: Connecting to xx.xx.xx.xx port 22
    Event Log: We claim version: SSH-2.0-PuTTY_KiTTY
    Event Log: Remote version: SSH-2.0-WeOnlyDo 2.4.3
    Event Log: Using SSH protocol version 2
    Event Log: No GSSAPI security context available
    Event Log: Doing ECDH key exchange with curve nistp256 and hash SHA-256 (unaccelerated)
    Event Log: Server also has ssh-dss host key, but we don’t know it
    Event Log: Host key fingerprint is:
    Event Log: ssh-rsa 1024 8d:be:97:1f:df:bc:dd:b4:5f:44:7c:22:01:ef:ba:1e
    Event Log: Initialised AES-256 SDCTR (unaccelerated) outbound encryption
    Event Log: Initialised HMAC-SHA-256 (unaccelerated) outbound MAC algorithm
    Event Log: Initialised AES-256 SDCTR (unaccelerated) inbound encryption
    Event Log: Initialised HMAC-SHA-256 (unaccelerated) inbound MAC algorithm
    Event Log: Using SSPI from SECUR32.DLL
    Event Log: Trying gssapi-with-mic…
    Event Log: Attempting GSSAPI authentication
    Event Log: GSSAPI authentication request refused
    Event Log: Sent password
    Event Log: Access granted
    Event Log: Local port :25300 forwarding to 127.0.0.1:25300
    Event Log: Opening connection to 127.0.0.1:25300 for forwarding from 127.0.0.1:53468
    Event Log: Forwarded connection refused by remote: Connect failed []
    Вердикт — через двойной NAT не работает.
    Я не первый год пытаюсь найти замену AA и TV, но НИЧЕГО из альтернатив не работает.

  13. Soneks:

    Позволю себе ещё несколько вопросов:
    Т.з.: требуется с ноутбука из любого места мира подключиться к серверу win2008.
    Белого ip у этого сервера (далее буду называть-оператора) нет, подключен к инету через роутер с 3g молемом. Есть другой сервер с белым ip и запущенным ssh сервером. Надо ли ставить ещё какую-либо программу ретранслятор на сервер с ssh?

  14. ZeroChaos:

    Лог ZeroViewer лишь для общей информации. Лог KiTTY дает более подробную информацию, в общем-то, последняя строка все что нужно сообщает:

    Event Log: Forwarded connection refused by remote: Connect failed []

    Разбирайтесь с настройкой своего SSH-сервера. SSH port forwarding на сервере запрещен, по всей видимости.

  15. Soneks:

    На стороне SSH сервера в логах:
    08-26-2019 20:44:53 IP 176.59.50.106 SSH user2 successfully logged on using password.
    08-26-2019 20:44:58 IP 176.59.50.106 SSH user2 disconnected.
    08-26-2019 20:46:27 IP 176.59.50.106 SSH connection attempt.
    Почему разрыв?
    Забыл добавить, на стороне «клиента» провайдер интернет — теле2 через 3g/4g модем и роутер, конечно. Может проброс каких портов делать?

  16. Soneks:

    Доброго времени суток.
    Попробовал эту программу, появилось много вопросов. Не могли бы Вы со мной связаться по e-mail?
    Кратко — установлен SSH сервер на белом IP. Открыт брандмауэр. У «клиента» (это один из моих серверов) настроен zeroviewer на этот ssh, все порты открыты.
    Но при попытке подключиться через zeroviewer получаю (на месте оператора):
    =~=~=~=~=~=~=~=~=~=~=~= Events log 2019.08.26 20:09:37. ZeroViewer (https://null.la). =~=~=~=~=~=~=~=~=~=~=~=
    Event Log: Looking up host «xx.xx.xx.xx» for SSH connection
    Event Log: Connecting to xx.xx.xx.xx port 22
    Event Log: We claim version: SSH-2.0-PuTTY_KiTTY
    Event Log: Remote version: SSH-2.0-WeOnlyDo 2.4.3
    Event Log: Using SSH protocol version 2
    Event Log: No GSSAPI security context available
    Event Log: Doing ECDH key exchange with curve nistp256 and hash SHA-256 (unaccelerated)
    Event Log: Server also has ssh-dss host key, but we don’t know it
    Event Log: Host key fingerprint is:
    Event Log: ssh-rsa 1024 8d:be:97:1f:df:bc:dd:b4:5f:44:7c:22:01:ef:ba:1e
    Event Log: Initialised AES-256 SDCTR (unaccelerated) outbound encryption
    Event Log: Initialised HMAC-SHA-256 (unaccelerated) outbound MAC algorithm
    Event Log: Initialised AES-256 SDCTR (unaccelerated) inbound encryption
    Event Log: Initialised HMAC-SHA-256 (unaccelerated) inbound MAC algorithm
    Event Log: Using SSPI from SECUR32.DLL
    Event Log: Trying gssapi-with-mic…
    Event Log: Attempting GSSAPI authentication
    Event Log: GSSAPI authentication request refused
    Event Log: Sent password
    Event Log: Access granted
    Event Log: Local port :25300 forwarding to 127.0.0.1:25300
    Event Log: Opening connection to 127.0.0.1:25300 for forwarding from 127.0.0.1:53468
    Event Log: Forwarded connection refused by remote: Connect failed []
    А сам zeroviewer пишет про неверный парольдля доступа к ssh. Но заход через Kitty вручную заходит без проблем по этому паролю…

  17. ZeroChaos:

    Не доверяете — не пользуйтесь. Проанализировать исходящий трафик можно и без исходного кода. Потратьте и настройте, напишите аналог с открытым исходным кодом, ничто не мешает вам это сделать. Выкладывать свой код или нет — решать только мне, хватит его уже выпрашивать на каждом шагу. В определенный момент посчитаю нужным его выложить — выложу. Пока не вижу смысла, 99,9% он не нужен.

  18. CodeNull:

    Здравствуйте.

    Можно где-то посмотреть код программы? Github? Большие вопросы вызывает сохранность данных. Если я не могу проект просмотреть и/или самостоятельно собрать, то как я могу доверять ему пароли и ключи?

    Надеюсь те кто пользуются данной программой, понимают все риски? Возможно лучше потратить немного времени и самостоятельно настроить туннель посредсвом plink.

  19. Zarbin:

    Огромнейшее спасибо за ваше программу, давно ждал подобного решения) Но как и комментатор Otto соглашусь, сервер на котором разрешен вход по паролю постоянно атакуется, и такой способ давно отключен. И как сделать автозапуск программы ?

  20. ZeroChaos:

    Выпущена вторая линейка программы. Ссылка в конце поста.

  21. Otto:

    Добрый день!
    А авторизацию по ключу можно как-то сделать?
    Сервер с SSH на белом IP постоянно атакуют боты, с ключом как-то удобнее.

  22. ZeroChaos:

    И что же я нарушил, стесняюсь спросить? GPL лицензия обязывает предоставить исходники по запросу, не более того. Исходники правленной Aspia вы у меня не запрашивали (на сайте есть форма обратной связи), сразу бросились обвинять. TightVNC, plink, plonk идут в неизменном виде. ZeroViewer — мой код, ничьи наработки не использовались, вправе распоряжаться им как мне угодно. Хотели свою грамотность кому-то показать? Что ж, у вас это плохо получилось.

  23. Legion_Pheonix:

    Ай ай ай, как не хорошо нарушать GPL соглашение на основе чужой работы)

  24. no name:

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

  25. neurooctober:

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

  26. ZeroChaos:

    Нет.

  27. Евгений:

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

  28. Maxlinus:

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

  29. ZeroChaos:

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

  30. Maxlinus:

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

  31. ZeroChaos:

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

  32. ZeroChaos:

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

  33. kit42:

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

  34. ZeroChaos:

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

  35. ZeroChaos:

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

  36. ZeroChaos:

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

  37. 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 - лучшее спасибо автору
Количество благодарностей: 38

Разделы