ПРИКЛАДНОЕ ТУННЕЛИРОВАНИЕ httpTunnel для win32 Спецвыпуск Xakep, номер #024, стр. 024-070-2 hts -F irc.haxorz.com:7000 80 Начнем разборку нестандартно - с конца :). Последним параметром всегда идет номер порта, используемого для соединения клиента и сервера. Так как мы маскируемся под НТТР, пусть порт будет 80 - стандартный для этого протокола. В параметре -F указываются сервер и порт для редиректа, это, думаю, понятно без разъяснений. Другие возможные варианты перенаправления: "-d название_устройства", когда трафик кидается на другой сетевой интерфейс, или "-s" - когда для перенаправления используются стандартные stdin-stdout (правда, для этого сервер нужно будет запускать не демоном, а обычным процессом). КЛИЕНТ Теперь займемся клиентом. Если ты еще помнишь, он должен обволакивать мирковый траф и отправлять его серверу. Для этого на своем компе тебе придется запустить такой процесс: htc -F 6666 shell.server.com:80 Здесь все с точностью до наоборот: в параметре "-F" указывается порт, трафик с которого пойдет к серверу, а последний параметр отвечает за адрес и порт этого злосчастного сервака. Разумеется, замена на "-d" и "-s" тоже остается в силе. Другое дело, если корпоративный файрволл не просто просматривает трафик, а заодно отрабатывает программу проксика. В этом случае количество промежуточных соединений возрастает (прога -> клиент httpTunnel -> прокси -> сервер httpTunnel -> ирковый сервер). Для того чтобы наш туннель без проблем пролезал через прокси, командную строку клиента нужно проапгрейдить до следующего вида: htc -P proxy.company.ru:80 -F 6666 shell.server.com:80 И все! Админы натянуты, траф ползет без препятствий. ФИЧИ Для любителей поизвращаться у ttpTunnel есть туча параметров, которые стоит выставить при неидеальных условиях для туннелинга. Краткий их обзор: для клиента: -A USER:PASSWORD пользователь и пароль для не анонимных проксиков (при условии, что прокси уже указан в -Р); -z FILE та же фигня, только для авторизации используется файл; -B BYTES размер буфера прокси в байтах (понимает цифры типа 56К и 1М); -c BYTES выставляет content-length для запросов; -M SECONDS максимальное время соединения; -T SECONDS выставляет тайм-аут для соединения; -U STRING задает строку user-agent (если админ решит пропускать только ИЕ); для обоих: -k SECONDS посылает keepalive-запросы раз в SECONDS (по дефолту 5); -s прописывать content-length во все пакеты; -w не уходить в бэкграунд после запуска. ФИНИТА Туннель помогает пройти сквозь корпоративный, но не сквозь персональный файрволл. Однако при тестировании выяснилось, что персональники видят соединения клиента, но не предпринимают никаких действий к их завершению (игнорируют, проще говоря). Так что у сказочки может быть не просто счастливый, а гиперсчастливый КОНЕЦ! |