Для организации управления внешней рабочей станцией из корпоративной сети, защищенной Microsoft ISA, можно поднять HTTP-туннель, при помощи которого можно установить TCP-соединение, несмотря на использование HTTP-прокси и жестких политик ограничения доступа на межсетевом экране.Использовать классический пакет GNU HTTPtunnel (http://www.gnu.org/software/httptunnel/) в такой ситуации мешает отсутствие поддержки в данной программе NTLM-аутентифиукации, как правило используемой при организации выхода пользователей в сеть через Microsoft ISA. Выходом в данной ситуации является использование программы BoutDuTunnel (http://boutdutunnel.net/), совместимой с большинством HTTP-прокси, поддерживающей NTLM-аутентифиукацию, способной работать даже при блокировании HTTPS и метода "Connect", содержащей в себе встроенный HTTP-сервер и поддерживающей работу поверх Socks.
BoutDuTunnel поддерживает работу из Linux и Windows, при запуске из Linux достаточно установить пакет mono и загрузить готовый исполняемый файл bdtunnel
(http://sourceforge.net/projects/bdtunnel/files/).
После установки правим на стороне удаленного сервера файл BdtServerCfg.cfg в директории BdtServer, приведя его примерно в такой вид:
<service
name = "BdtServer"
protocol = "Bdt.Shared.Protocol.TcpRemoting"
port = "80"
/>
<users>
<имя_пользователя
enabled = "true"
password = "пароль"
admin = "false"
stimeout = "12"
ctimeout = "1"
/>
</users>
, где name - имя туннеля (должно быть одинаковым на обоих концах туннеля), protocol - тип туннельного протокола, port - номер серверного порта для формирования туннеля. Секция "users" определяет параметры авторизации для создания туннеля и таймауты для сброса неактивных сессий и соединений.
После настройки запускаем на стороне удаленного сервера (привилегии суперпользователя нужны для организации приема соединений на 80 порту):
sudo mono BdtServer.exe
На стороне клиента, находящегося в локальной сети за прокси-сервером, правим файл BdtClientCfg.xml в директории BdtGuiClient, приведя его к виду:
<service
name="BdtServer"
protocol="Bdt.Shared.Protocol.TcpRemoting"
address="адрес удаленного сервера"
port="80"
username="имя пользователя"
password="пароль"
culture=""
/>
<port22
enabled="true"
shared="false"
address="адрес удаленного сервера"
port="22"
/>
Секция port22 определяет проброс 22 порта на удаленный сервер, что позволит использовать протокол SSH или работающие поверх него сервисы, например, rsync, git, NX Client.
Запускаем BdtGuiClient.exe, после чего при соединении к localhost по 22 порту будет автоматически произведен переброс на 22 порт удаленного сервера, при этом с точки зрения прокси будет установленно классическое HTTP-соединение, так как на удаленном конце BoutDuTunnel выступает в роли HTTP-сервера, а не использует HTTPS-метод "Connect".
Для противников Mono вместо BoutDuTunnel можно рекомендовать имеющийся в стандартных репозиториях Debian/Ubuntu пакет proxytunnel (http://proxytunnel.sourceforge.net/), который также поддерживает NTLM-аутентификацию, но может работать только на Unix-совместимых системах и требует включения метода connect на прокси.
Для проброса 22 порта поверх HTTP-прокси при использовании proxytunnel достаточно прописать в файл конфигурации OpenSSH ~/.ssh/config:
ProtocolKeepAlives 30
ProxyCommand /usr/bin/proxytunnel --ntlm -p хост_прокси:порт_прокси -u логин -s пароль -d удаленный_сервер:443
URL: http://www.brighthub.com/hubfolio/matthew-casperson/articles...
Обсуждается: http://www.opennet.dev/tips/info/2404.shtml