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

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

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

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

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

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

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

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

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

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


person GreenRover    schedule 29.12.2012    source источник


Ответы (3)


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

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

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

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

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

  • http://www.nocrew.org/software/httptunnel.html (C, без поддержки HTTPS, это, вероятно, дедушка всех HTTP-туннелей)

  • https://github.com/johncant/node-http-tunnel (Node.js), Net :: HTTPTunnel (Perl), nRedir (Python), Corkscrew, htunnel, ...

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

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

person Alex I    schedule 02.01.2013
comment
Спасибо за antswer, у вас есть первый рабочий тест с SuperTunnel. Теперь было бы неплохо запустить серверную часть на веб-сервере apache. Разве у вас не было для меня информации по этой проблеме? - person GreenRover; 04.01.2013
comment
@GreenRover: Вы можете просто запустить серверную часть в Apache Tomcat. Вероятно, вы можете заставить его работать на сервере, но довольно легко прослушивать отдельный порт; с немного большей работой должно быть возможно, чтобы HTTP-запросы также проходили через Tomcat. - person Alex I; 04.01.2013
comment
@GreenRover: Еще одна мысль: вы также можете запускать серверную часть как отдельный процесс и запрашивать прокси-сервер через него, используя простой Apache (что даст вам больше возможностей настройки, и вы можете использовать тот же адрес / порт, что и ваш обычный веб-сервер). - person Alex I; 04.01.2013
comment
если не удалось проверить его с помощью RDP, но простой сеанс tcp telnet работает как шарм. Спасибо за вашу помощь. - person GreenRover; 04.01.2013

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

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

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

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

Например, инструкции по прокладке туннелей с помощью шпатлевки можно найти на нескольких сайтах:

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

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

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

person gkakas    schedule 04.01.2013

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

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

person stu    schedule 28.11.2013
comment
Можете ли вы протестировать ScreenConnect.com. Вы знаете, совпадает ли эта концепция с вашей? - person ; 15.08.2016