Туннелирование любого вида трафика TCP через HTTP/s

Я ищу программное обеспечение для туннелирования RDP или другого двоичного трафика TCP через туннель HTTPS. Поскольку многим клиентам разрешен только HTTP/S (в брандмауэре открыты только порты 80 и 443).

Но есть необходимость пересылать RDP (и другие протоколы) с машин в DMZ клиентам.

Описание функции7 Просмотреть большое описание функции

Существует ли какое-либо программное обеспечение с открытым исходным кодом или корпоративное программное обеспечение для этой проблемы?

Плохие решения

У таких решений, как F5 big ip, есть проблема, связанная с созданием конфигурации соединения с этим программным обеспечением. Если бы это было возможно сделать с помощью API, это было бы хорошим решением. Но я бы предпочел только получить туннельный компонент, не покупая целое программное обеспечение шлюза. Потому что мне нужно создать туннели (1000ds of) из моего собственного программного обеспечения и необходимо ограничить доступ к туннелю разрешенному пользователю (идентифицируется сессионным cookie)

Хорошие решения

http://http-tunnel.sourceforge.net/

Если возможно, что туннельный клиент будет не выделенным сервером, а Java-апплетом флэш-памяти, работающим в клиентском браузере, это будет соответствовать на 100% моим потребностям.

4 ответа

Решение

Существует огромное количество проектов, которые туннелируют TCP через HTTP(S). Вам придется проделать небольшую работу, чтобы выбрать тот, который лучше всего соответствует вашим потребностям (и, возможно, слегка его изменить).

  • SuperTunnel (Java). Выглядит красиво, похоже, они немного подумали, как бороться с прокси с плохим поведением.

  • JHttpTunnel (Java). Порт GNU httptunnel, я думаю, использует тот же сетевой протокол.

  • Netty HTTP Tunnel (Java, часть Netty, очень хорошая сетевая библиотека; пример кода). Я думаю, что это требует, чтобы и клиент, и сервер использовали Netty, но помимо этого есть замена для обычных сокетов в Netty.

  • ProxyChains (C, Unix, очень популярный)

  • GNU httptunnel (C, поддержка HTTPS отсутствует, вероятно, это дедушка всех http-туннелей)

  • узел-http-туннель (Node.js), Net:: HTTPTunnel (Perl), nRedir (Python), штопор, htunnel,...

Я думаю, что SuperTunnel и JHttpTunnel могут быть включены в собственный апплет или Java-приложение на стороне клиента, они не должны запускаться в качестве автономных прокси.

Netty также сделает это, но (я думаю) это требует, чтобы ваш сервер также использовал Netty: другими словами, он позволяет вам заменить обычный TCP connect() на сервер, используя Netty с TCP-over-HTTP connect(), но не проксирует произвольные соединения с другими серверами (если вы не пишете свой собственный простой прокси).

Если вы находитесь в мире Windows, я настоятельно рекомендую взглянуть на службу Windows 2008/2008R2/2012 SSTP VPN. Он использует порт 443 и может быть размещен совместно с IIS (на 443). В Windows Vista / 7 / 8 это работает как прелесть. Я слышал о решениях для Mac OSX, но пока не слышал.

Однако есть старое доброе решение SSH.

Если на Linux, просто установите openssh-сервер. Если на Windows, получить и установить сервер OpenSSH (например, copSSH из itefix https://www.itefix.no/). Измените порт для использования 443 вместо 22 по умолчанию.

На стороне клиента можно использовать Putty ( http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html) или kitty ( http://kitty.9bis.net/) на Windows или любой другой. вид SSH-клиента в любой ОС для подключения к вашему серверу через порт 443 (где слушает ваш SSH-сервер).

Инструкции по туннелированию через замазку, например, можно найти на нескольких сайтах:

Всегда помните, что вы должны указать на локальный хост, чтобы сделать это.

В Windows также есть MyEnTunnel ( http://nemesis2.qx.net/pages/MyEnTunnel) для упрощения процедуры настройки и обслуживания туннеля.

Эксплуатировать этот туннель в браузере чрезвычайно просто: просто скажите своему браузеру, что у вас есть прокси-сервер socks на локальном порту (например, localhost 8080), который вы только что настроили в своем клиенте (putty, kitty, myentunnel или что-то еще).

Я написал один называется Sshh. http://sourceforge.net/projects/sshh/

Я немного сошел с ума, на самом деле он позволяет вам устанавливать обратные связи через него.

Если вы хотите открыть туннель TCP через WebSocket и браузер в качестве вашей ограниченной среды, и вы просто можете получить доступ к ограниченным веб-сайтам через браузер. Я думаю, что этот туннельный инструмент, который я сделал, может помочь вам решить ваши проблемы.

Кактусовый туннель: https://github.com/jeffreytse/cactus-tunnel

Очаровательный TCP-туннель через WebSocket и браузер.

С его помощью вы можете быстро открыть туннель через браузер и настроить туннель SSH, прокси sock5 и т. д.

Для вашего удобства ниже приведены инструкции по созданию прокси-туннеля SSH socks5 черезcactus-tunnel

  1. Установить инструмент туннеля
      npm i -g cactus-tunnel
  1. Запустить туннельный сервер
      cactus-tunnel server
  1. Запустите туннельный клиент в режиме моста браузера
      cactus-tunnel client -b ws://<your-tunnel-server>:7800 <your-ssh-server>:22
  1. Создайте прокси socks5 на стороне клиента
      ssh -p 7700 -D 1337 -q -C -N <username>@localhost 
  • -p 7700: подключиться к определенному порту SSH7700
  • -D 1337: открыть SOCKS-прокси на локальном порту1337
  • -q: тихий режим, ничего не выводить локально
  • -C: сжимать данные в туннеле, экономить пропускную способность
  • -N: не выполнять удаленные команды, полезно только для перенаправления портов
Другие вопросы по тегам