Pull to refresh

Обход корпоративного прокси

Reading time 3 min
Views 7.2K
httpTunnelScheme
В определенный момент развития любой компании она приходит к осознанию того, что необходимо контролировать рабочее время своих сотрудников. К сожалению, многие из них выбирают ошибочный метод — закрытие доступов к определенным ресурсам на корпоративном прокси. Это может быть как icq, так и многие другие ресурсы, содержащие «неправильные слова». Но очень часто icq, lj и прочие ресурсы с «неправильными словами» требуются по работе, однако работодатель этого не понимает. У вас осталось множество клиентов, которые связываются с вами только через icq? В поисках ответов на своих вопросы вы натыкаетесь на решение в lj и twitter которые закрыты? Что делать?


Безусловно, существует множество webproxy, которые могут открыть вам закрытую страницу, но что делать с аськой? И можно ли как-нибудь автоматизировать этот процесс? Да, можно.

Для решения проблемы нам понадобится внешний сервер. В его роли может выступить как домашний компьютер под *nix, так и простая vds. К нашему счастью, многие хостеры сейчас предоставляют vds небольших мощностей совсем за копейки. Тем более, для нашей задачи серьезные ресурсы и не потребуются.

Как это будет работать?



Как правило открытыми остаются 80(http) и 443(ssl) порты. Этим мы и воспользуемся. Мы прокинем http туннель до нашей vds(которая не попадает под блэк-лист) через 80 порт. Все наши запросы, маскируясь под видом обычных http запросов, беспрепятственно пройдут через прокси и попадут на нашу vds. На vds туннель будет смотреть в прокси. Таким образом, после всех настроек у нас на рабочем компьютере будет запускаться своего рода прокси, на котором нет ограничений.

Настройка



Все дальнейшие действия актуальны для freebsd. Для других unix-систем различия должны быть только в сборке и установке. Для настройки нам понадобится:

1) VDS или домашний unix компьютер, постоянно подключенный к Интернету.

2) httptunnel(взять тут: nocrew.org/software/httptunnel). Если у вас windows, скачайте версию и для нее. Если сервер на freebsd, то httptunnel есть в портах /usr/ports/www/httptunnel.
3) какой-нибудь маленький proxy(3proxy, zipproxy(этот нам еще и трафик сэкономит), polipo, etc).

Я решил взять себе polipo, в принципе только потому, что в портах он первый попался мне на глаза. Больше, чем за год использования на туннелировании и применении на работе в бизнесс процессах он меня не подводил. Тем, кто будет устанавливать это не под freebsd, взять polipo можно тут(http://www.pps.jussieu.fr/~jch/software/polipo/)

Начем со сборки и установки:

$cd /usr/ports/www/httptunnel && make install && make clean
$cd /usr/ports/www/polipo && make install && make clean

Добавляем в /etc/rc.conf:
polipo_enable="YES"

Если vds, которую мы купили(или взяли уже существующую), решаем использовать только для туннелирования, то просто отключаем apache(или любой другой веб-сервер), и тем самым освобождаем нужный нам 80 порт. Однако в жизни такое случается редко, на имеющейся vds уже есть сайты, а на новой мы бы не прочь разместить новые. Для этого случая есть второй вариант: нам потребуется купить дополнительный ip(пусть это будет: 2.2.2.2, а основной ip нашей vds: 1.1.1.1), на нем на 80 порту будет туннель, а на основном — веб-сервер. Подключаем дополнительный ip:

ifconfig em0 inet 2.2.2.2 netmask 255.255.255.255 alias

в rc.conf:

ifconfig_em0_alias0="inet 2.2.2.2 netmask 255.255.255.255"

подправляем конфиг apache, чтобы он слушал строго определенный ip:

$vi /usr/local/etc/apache/httpd.conf
Listen 1.1.1.1:80
Listen 1.1.1.1:443

настраиваем конфиг polipo:

$cd /usr/local/etc/polipo && cp ./config.simple ./config && vi ./config

proxyAddress = "2.2.2.2"
allowedClients = "127.0.0.1"
proxyPort = 3128

chunkHighMark = 819200
objectHighMark = 128

— Конфиг настроен, теперь запускаем его:
$/usr/local/etc/rc.d/polipo.sh start

Поднимаем туннель:
hts -F 2.2.2.2:3128 2.2.2.2:80

Проверяем, все ли в порядке и правильно ли они слушают:

$netstat -na||grep tcp
tcp4 0 0 2.2.2.2.80 *.* LISTEN
tcp4 0 0 2.2.2.2.3128 *.* LISTEN

Теперь на локальном компьютере запускаем клиент:

htc -P proxy.company.com:3128 -F 1020 2.2.2.2:80

Осталось исправить параметры вашего браузера, icq или прочих клиентов.
Прописываем использовать прокси у себя с параметрами: server: localhost, port: 1020

Все готово, и если вы все правильно настроили, icq успешно подключится к серверу. В будущем советую закрыть прокси фаерволом. не смотря на то, что мы указали ему получать запросы только с локального ip, на него постоянно будут пытаться подключиться, что несет дополнительную нагрузку.
Tags:
Hubs:
+11
Comments 65
Comments Comments 65

Articles