Mini HOWTO: Использование Term для обхода Интернет-Firewall
Уважаемые посетители! Поздравляем вас с наступающим 2007 годом! В честь нового года мы дарим всем нашим клиентам специальный сертификат на скидку в 7% при заказе любых товаров на сайте! Для того чтобы воспользоваться скидкой введите в поле "сертификат":
xxxxxx и нажмите кнопку "пересчитать".
Обращаем ваше внимание, что до 11 января мы работаем только на прием заказов.
-->
| Mini HOWTO: Использование Term для обхода Интернет-Firewall |
| | |
Здесь приведены инструкции, как, с помощью "term", делать с сетью через
TCP-firewall то, что вы делать, в принципе, не должны.
[Barak Pearlmutter (bap@cs.unm.edu).
Перевод Михаил Корепанов (kmic@asplinux.ru)]
Использование Term для обхода Интернет-Firewall
Barak Pearlmutter
bap@cs.unm.edu
Перевод: Михаил Корепанов,
ASPLinux
Аннотация
|
|
Здесь приведены инструкции, как, с помощью "term", делать с сетью через
TCP-firewall то, что вы делать, в принципе, не должны.
|
Содержание
Отказ от ответственности
Copyright
Авторские права
Введение
Суть идеи
Детальное руководство
Множество сокетов term
Файл инициализации /.term/termrc.telnet
Руководство
Безопасность
Режим Telnet
Ошибки и список пожеланий для term
Приемы, которые, кажется, не работают
Дополнительные ресурсы
Благодарности
Отказ от ответственности
!!! ВАЖНО !!!
Этим я слагаю с себя любую ответственность за прямые или косвенные
последствия использования приведенной здесь информации. Если ее
использование каким-то образом отразится на вас, то это не моя вина. Если
вы не можете оценить ту степень риска, которую влечет за собой выполнение инструкций,
представленных в этом документе,
не делайте того, что здесь описано. Если же вы используете наши советы, и это
поможет хакерам взломать систему вашей компании, что будет стоить вам
работы, а компании - миллионы долларов, что ж - вам не повезло! Не
приходите ко мне со слезами, мне нечем будет вас утешить.
Copyright
Unless otherwise stated, Linux HOWTO documents are copyrighted by their
respective authors. Linux HOWTO documents may be reproduced and distributed
in whole or in part, in any medium physical or electronic, as long as
this copyright notice is retained on all copies. Commercial redistribution
is allowed and encouraged; however, the author would like to be notified of
any such distributions.
All translations, derivative works, or aggregate works incorporating
any Linux HOWTO documents must be covered under this copyright notice.
That is, you may not produce a derivative work from a HOWTO and impose
additional restrictions on its distribution. Exceptions to these rules
may be granted under certain conditions; please contact the Linux HOWTO
coordinator at the address given below.
In short, we wish to promote dissemination of this information through as
many channels as possible. However, we do wish to retain copyright on the
HOWTO documents, and would like to be notified of any plans to redistribute
the HOWTOs.
If you have questions, please contact Tim Bynum, the Linux HOWTO
coordinator, at linux-howto@sunsite.unc.edu via email.
Авторские права
Авторские права на русский перевод этого текста принадлежат © 2000 ASPLinux
Все права зарезервированы.
Этот документ является частью проекта Linux HOWTO.
Авторские права на документы Linux HOWTO принадлежат их авторам, если явно
не указано иное. Документы Linux HOWTO, а также их переводы, могут
быть воспроизведены и распространены полностью или частично на любом
носителе, физическом или электронном, при условии сохранения этой заметки об
авторских правах на всех копиях. Коммерческое распространение разрешается и
поощряется; но, так или иначе, автор текста и автор перевода желали бы знать о
таких дистрибутивах.
Все переводы и производные работы, выполненные по документам Linux HOWTO,
должны сопровождаться этой заметкой об авторских правах. Это делается в
целях предотвращения случаев наложения дополнительных ограничений на
распространение документов HOWTO. Исключения могут составить случаи
получения специального разрешения у координатора Linux HOWTO, с которым
можно связаться по адресу приведенному ниже.
Мы бы хотели распространить эту информацию по всем возможным каналам. Но
при этом сохранить авторские права и быть уведомленными о всех планах
распространения HOWTO. Если у вас возникли вопросы, пожалуйста, обратитесь
к координатору проекта Linux HOWTO по электронной почте:
<linux-howto@metalab.unc.edu> или к координатору русского
перевода Linux HOWTO компании ASPLinux по адресу
<linux-howto@asplinux.ru>
Введение
Программа "term" обычно используется модемными и/или другими
последовательными линиями, для создания простого соединения между машинами.
Иногда надо бывает создать term-соединение между двумя машинами
"общающимися" через telnet. Самый интересный случай возникает, когда эти
машины разделены сетевым firewall или сервером SOCKS. Такие firewall
обеспечивают соединение telnet, через себя при помощи протокола SOCKS, и
позволяют внутренней машине подсоединиться к внешней, а внешним
пользователям соединиться, при помощи telnet, сначала к шлюзу, а затем,
после введения одного пароля, соединиться с внутренней машиной. Такие
firewall не позволяют, например, внутренней машине с Х клиентом соединиться с
внешним Х сервером. Но при использовании term-соединения это
ограничение легко обходится.
Суть идеи
Процедура установления term-соединения состоит из двух этапов. Сначала вам
надо, при помощи telnet, установить telnet-соединение и зайти в систему. Затем
клиент telnet останавливается, а управление сообщением передается term.
Детальное руководство
Теперь более подробно.
Сначала с внутренней машины соединитесь с внешней (здесь и далее внутренняя и внешняя относительно firewall) и войдите в систему.
Так как вы используете linux, вы будете использовать файловую систему proc
(смотрите далее), удостоверьтесь, что shell - это shell типа sh (bash,
zsh и т.д.) . Например, если у вас csh, то установите связь telnet следующей
командой:
(setenv SHELL /bin/sh; telnet machine.outside)
|
После вхождения в систему внешней машины, выполните команду
теперь выйдите в командную строку telnet на внутренней машине, используя
^] (или как у вас настроено), и, при
помощи команды !, запустите term,
telnet> ! term -n on telnet >&3 <&3
|
Получилось!!!
(Если у вас нестандартная версия telnet, то вам надо использовать другой
дескриптор файла (у меня он 3); его можно легко определить при помощи strace. Но
тройка, по-моему, работает на всех bsd-совместимых telnet клиентах, я
пробовал на SunOS 4.x и обычных дистрибутивах linux.)
Некоторые клиенты telnet не имеют команды "!", которая запускает внешнюю
команду оболочки. Например, telnet-клиент в дистрибутиве Slackware 3.0
именно такой. Исходники (не уверен на 100%) этого клиента лежат на
ftp://ftp.cdrom.com:/pub/linux/slackware-3.0/source/n/tcpip/NetKit-B-0.05.tar.gz
|
в них есть эта команда. Напрашивается решение - скачать и перекомпилировать
их. Но, к сожалению, я не смог этого сделать. и в добавок если у вас
используется SOCKS firewall, то вам понадобиться клиент telnet
поддерживающий SOCKS. В этом случае я не оплошал и собрал такой клиент,
используя
ftp://ftp.nec.com/pub/security/socks.cstc/socks.cstc.4.2.tar.gz
|
или, если вы находитесь за пределами США ,
ftp://ftp.nec.com/pub/security/socks.cstc/export.socks.cstc.4.2.tar.gz
|
Если у вас ядро до 1.2.13, вы можете приостановить telnet командой ^]^z, затем выяснить его идентификатор процесса и
дать команду
term -n on -v /proc/<telnetpid>/fd/3 telnet
|
Это не работает с ядрами выше 1.3.x , у которых, из соображений безопасности,
закрыт доступ к этим дескрипторам файлов (fd) для всех пользователей, кроме
одного.
Множество сокетов term
Хорошая идея - дать сокету term явное имя. Это имя - "telnet" - параметр
при вызове term. Если вы не имеете переменную среды TERMSERVER с
установленным значением "telnet", вызывайте term клиент с ключом -t,
например "trsh -t telnet".
Файл инициализации /.term/termrc.telnet
Я проверил качество линии, при помощи утилиты linecheck. Я думал, что она
будет полностью прозрачна, но я ошибся. Однако, проблемы возникли только
с символом 255. Поэтому я написал в файле ˜/.term/termrc.telnet (.telnet -
это имя term-сокета, см.предыдущую главу) следующее:
baudrate off
escape 255
ignore 255
timeout 600
|
Наверно, после более точной настройки, скорость повысится, но у меня
пропускная способность этой системы составляет около 30 тысяч cps
(достаточно дальнее соединение и медленный firewall). По ftp скорость
немного выше - около 100 тысяч cps. На самом деле пропускная способность
может зависит от времен задержки.
Руководство
Очевидно, что если вы находитесь за пределами firewall и входите в систему
при помощи карты SecureID или ей подобной, то вам может понадобиться смена
ролей, описанных выше локального и удаленного серверов. (Если вы не
понимаете, что это такое - значит вы не настолько знакомы с term, чтобы
правильно использовать хитрость, описанную здесь))
Безопасность
В этом не больше уязвимости, чем в возможности наличия telnet подключения
на необезопасенной машине. Дополнительный риск исходит от людей, способных
использовать сокет term, который вы устанавливаете, а вы можете этого
узнать. Так будьте внимательными. (Лично, я делаю это с внешней машиной,
которую я знаю, а именно это портативный компьютер с linux, который я
обслуживаю и который не принимаает никаких внешних соединений).
Другая возможность - добавить "socket off" в удаленном файле
˜/.term/termrc.telnet, или
add "-u off" при обращении к term. Это
предотвращает сокет от нападения с удаленной машины, лишь с небольшой
потерей функциональности.
Режим Telnet
Убедитесь, что удаленный telnetd не работает в противном семибитном режиме.
Если это не так, вы должны сообщить term об этом, когда вы вызываете его,
добавив ключ -a. (Я иногда использую
"^] telnet> set outbin", или "set bin" или вызываю telnet с ключом -8, для перевода в восьмибитный режим).
Ошибки и список пожеланий для term
Программа linecheck иногда имеет некоторые проблемы при проверке telnet
соединения. Это происходит иногда, потому что она не проверяет код возврата
функции read(). Для сетевых соединений вызов read() может возвращать коды
ошибок -1, EINTR (прервано) или EAGAIN (попытаться снова). Очевидно, это
должно проверяться.
Имеется множество особенностей, которые могут облегчить использование term
через telnet. Они прежде всего касаются предположения, которое повлияло на
разработку term, а именно, когда подключение идет на линиях с низкой
пропускной способностью, малой надежностью и некоторой зашумленностью.
Telnet соединение в общем проходит с высокой пропускной способностью,
надежностью и без ошибок. Это означает, что подключение может быть лучше,
если (а) максимальный размер буфера увеличен, намного больше предела
установленного term - N_PACKETS/2=16, (б) выключена проверка контрольной
суммы пакета и (в) разрешены большие пакеты.
Также, чтобы увеличить безопасность, было бы хорошо иметь опцию term, чтобы регистрировать все соединения через сокет, выводить сообщения в журнал, в поток stderr или в оба. Это позволило бы увидеть, не разрушают ли term соединение хакеры на вашей машине.
Приемы, которые, кажется, не работают
Некоторые клиенты и серверы telnet согласны передавать друг другу
зашифрованные данные, чтобы обеспечить их безопасность. К сожалению, хак,
используемый выше (использование сетевого подключения, которое установил
клиент telnet, пока он простаивает) не будет работать в этом случае. Вместо
этого, необходимо проверить клиент telnet непосредственно, на наличие
функции шифрования. Добавьте команду, которая выполнит процесс с его вводом
и выводом.
Дополнительные ресурсы
Подробно, включая патчи к SOCKS, можно получить от Steven Danz <danz@wv.mentorg.com>.
Благодарности
Благодарю за ценные предложения:
Gary Flake <flake@scr.siemens.com>
Bill Riemers <bcr@physics.purdue.edu>
Greg Louis <glouis@dynamicro.on.ca>
"Extra copy of IMPORTANT DISCLAIMER --- BELIEVE IT!!!"
"I hereby disclaim all responsibility for this hack. If it backfires
on you in any way whatsoever, thats the breaks. Not my fault. If
you dont understand the risks inherent in doing this, dont do it.
If you use this hack and it allows vicious hackers to break into your
companys computers and costs you your job and your company millions
of dollars, well thats just tough nuggies. Dont come crying to me."
[Источник: www.linuxdoc.ru]
www.linuxcenter.ru
Строим сеть грамотно 12-01-2007 Мини-HOWTO: Корневой NFS 24-03-2008 Строим сеть грамотно Мини-HOWTO: Корневой NFSAndreas Kostyrkaandreas@ag.or.at Перевод: Станислав Рогин, ASPLinux АннотацияВ этом документе дается объяснение того, как настроить "бездисковую" рабочуюстанцию на Linux, корневая файловая система которой подключена через NFS.Новую версия этого Мини-Howto можно найти по адресуftp://sunsite.unc.edu/pub/Linux/docs/HOWTO/mini/NFS-Root или на любом егозеркале РЯДО...
LINUX PLIP MINI-HOWTO 24-03-2008 Строим сеть грамотно LINUX PLIP MINI-HOWTOAndrea Controzzicontrozz@cli.di.unipi.it Перевод: Денис Дементьев, ASPLinux АннотацияИспользование информации этого HOWTO позволит вам настроить и использовать протокол параллельного интерфейса (Parallel Line Interface Protocol).СодержаниеВступление: что такое PLIP, и для чего он нужен?Аппаратное обе...
Как бороться со сменой IP адресов клиентами локальной сети? 24-03-2008 Строим сеть грамотно Keywords: arp mac ethernet ifconfig freebsd limit securityFrom: Alexander V. NaumochkinNewsgroups: http://www.unixfaq.ruDate: Mon, 17 May 2004 18:21:07 +0000 (UTC)Subject: Как бороться со сменой IP адресов клиентами локальной сетиОригинал: http://www.unixfaq.ru/index.pl?req=qs&id=169 Как бороться со сменой IP адресов клиентами локальной сети? Оглавление Статический ARPСтатический ARP + NOARPPort SecurityТуннелировани...
Использование бездисковых Linux-станций с загрузкой по сети 24-03-2008 Строим сеть грамотно Использование бездисковых Linux-станций с загрузкой по сетиВпервые опубликованно в журнале "Системный администратор" N11/2004Постановка задачиРабота сотрудника отдела автоматизации – это постоянная борьба спроблемами и решение задач, которые попеременно подкидываютпользователи, разработчики эксплуатируемого программного обеспечения ируководство организации. И если два первых направления работы – этопросто «борьба за живучесть кора...
Опыт внедрения OpenVPN 24-03-2008 Строим сеть грамотно Опыт внедрения OpenVPNПочему OpenVPN?На ключевое слово vpn Google откликнулся 17 000 000 ссылок. Это приятно удивило. Немного сузив поиск наткнулся на сайтopenvpn.sourceforge.net. Вводная статья обещала простоту инсталяции и конфигурирования,а главное,- возможность созданиятунеля для большинства наиболее распрастранённых операционных систем, включая Linux,SUN Solaris,*BSD, Mac OS X, w2k, w2k3.Это то что мне нужно... Внешний... |