Переведена редакция статьи, датированная 24-м ноября 2009-го года, 23:53 (Центральная Европа, Стокгольм, Швеция).
SSH через или за прокси
В сегодняшнем жестоком сетевом мире мы слишком часто оказываемся за проксями компаний, ограничивающих наши возможности по использованию интернета на работе, у заказчика или, в некоторых случаях, даже дома или у друзей.Прокси-сервера не только ограничивают нас в том, что мы можем делать, какие протоколы можем использовать, какие сайты можем посещать и какие TCP порты являются открытыми, они также позволяют вашей компании или друзьям наблюдать и контролировать вас.
Заметьте: даже если вы используете HTTPS через прокси, имя сервера не шифруется, так что логирующий прокси увидит, к каким HTTPS серверам вы подключаетесь.
Я покажу вам некоторые простые способы, позволяющие обойти ограничения большинства проксей, что даст вам больше свободы и не позволит наблюдателям исследовать ваши предпочтения в веб-серфинге!
Что вам нужно
Вам нужен софт, установленный и работающий «снаружи» по отношению к тому месту, где вы находитесь. В этом документе я называю такое место «домом».Место, из которого вы хотите получить доступ, будет называться «работой». На работе вы находитесь за злым прокси-сервером.
Дома
Вам нужен работающий HTTP-прокси, принимающий соединения с localhost'а. У многих людей есть уже работающий Apache, а подгрузить и сконфигурировать mod_proxy очень легко. Конечно же, вы можете использовать любой другой прокси, например, squid. В этом примере будет подразумеваться, что прокси работает на 80-м порту — том же, что и обычный апач.Вы можете включить HTTPS и FTP, а также любой другой протокол в конфиге прокси.
Вам также понадобится sshd, работающий на 443-м порту. Почти у каждого уже есть работающий sshd, вам просто нужно сделать так, чтобы он также слушал порт 443. 443-й часто используется для HTTPS, потому-то мы его и используем — большинство проксей позволяют к нему подключаться, так как компании разрешают своим работникам использовать банки и другие HTTPS сервисы в вебе.
Наверное, этого можно и не говорить, но вы должны убедиться, что ваш Apache или другой httpd не использует 443-й порт для HTTPS.
На работе
Вам нужен SSH клиент, способный посылать CONNECT-запросы через ваш корпоративный HTTP прокси. Под Windows можно использовать Putty — в нём есть встроенная поддержка для туннелирования через HTTP прокси. Под unix/linux (или cygwin), вы можете использовать openssh и corkscrew для того, чтобы через прокси попасть на 443-й порт своего домашнего компьютера.Если вы используете openssh, добавьте в свой
~/.ssh/config
такую строку:ProxyCommand /usr/local/bin/corkscrew proxy.work.com 80 %h %p
Теперь вы должны указать вашему ssh клиенту пробросить локальный порт, скажем, 8080-й, на удалённый localhost:80. После этого вы получаете шифрованный канал к вашему домашнему компьютеру. Естественно, у вас также будет обыкновенный SSH, так что вы можете запускать X-приложения так, чтобы они появлялись на экране вашего рабочего компьютера, а также многое другое.
Команда openssh для подключения и проброса порта через прокси выглядит примерно так:
ssh -L 8080:localhost:80 user@server.at.home -p 443
Сконфигурируйте ваш браузер на работе так, чтобы для всех протоколов, которые вы включили на прокси-сервере дома, использовался прокси по адресу localhost:8080.
Теперь все запросы браузера будут посылаться через SSH-соединение через прокси на ssh сервер дома, а потом — прокси-серверу и в мир.
Без CONNECT
В случае, если подключение к 443-у порту запрещены, вы можете попробовать другой (если CONNECT разрешен хоть где-то); вам может понадобится перенести ваш прокси/веб сервер с 80-го порта, если это единственный приемлемый путь.Если не можете найти подходящий порт или CONNECT запрещены насовсем, вы должны создать туннель с помощью обыкновенного HTTP, используя, например, httptunel. httptunel — это клиент-серверное приложение; вам нужен сервер («hts»), работающий на домашнем компьютере и слушающий 80-й порт, и клиент («htc»), запущенный на вашем рабочем компьютере и создающий тунель.
Дома принимайте входящие соединения на 80-й порт и перенаправляйте их на 22-й (ssh):
hts -F localhost:22 80
На работе подключайтесь к дому через корпоративный прокси и пробрасывайте локальный порт (8022-й, например) на SSH дома:
htc -P proxy.corp.com:80 -F 8022 server.at.home:80
Дополнительные комментарии
С другими протоколами для начала надо просто пробросить больше портов с работы домой. Дальше всё зависит от протокола. Например, если вы хотите настроить работу IRC, вам понадобится «боунсер» (например muh), работающий на вашей домашней машине, так как в противном случае IRC не будет работать правильно.В случае, если на работе вас на самом деле не прячут за прокси, вы все равно можете использовать описанные методы (хотя вы можете пропустить часть, описывающую выполнение CONNECT, а также не обязаны привязывать ssh к 443-му порту) для того, чтобы не дать админам шпионить за вашим сетевым траффиком.
Прим. перводчика: спасибо mrak018 за советы и подсказки!
Копируете статью — поставьте ссылку!
4 комментария:
В наших степях сие актуально, так что спасибо за пост (только что увидел). А о работе scp за проксёй чего добавишь? А то мануалы читать не охота :-)
Гм, а при чём здесь scp? Суть статьи в том, чтобы весь твой траффик шёл через зашифрованное ssh соединение. С помощью scp такой трюк не проделаешь.
я делал вообще без прокси сервера. Цеплялся по ссш на домашнюю тачку с форвардингом портов, например 1080. В броузере прописывал localhost:1080 как сокс прокси
Кстати говоря, я тоже всегда использовал вариант без каких-либо апачей и прочего — точно так же коннектился по ssh с форвардингом и юзал как socks-прокси. Но ведь статья — это перевод, откуда, как и из песни, слов не выбросишь…
Отправить комментарий
Примечание. Отправлять комментарии могут только участники этого блога.