Выбери свой туннель

Докучаев Дмитрий aka Forb

Xakep, номер #061, стр. 061-056-3


После сборки приступаем к созданию туннеля. Сервер поднимается командой stunnel -s 995 -r mail.host.ru:110. При этом открывается туннель между 995 и 110 портами машины.

Теперь скачиваем клиент Stunnel под Win32, а также все необходимые библиотеки (libeay32.dll и libssl32.dll). Набросаем небольшой конфиг-файл, который будет прослушивать локальный 110 порт и перенаправлять весь трафик на удаленную машину с сервером Stunnel. На всякий случай я включил логирование обмена данными (для быстрого нахождения ошибок).

Если все выполнено верно, то можно запускать клиент Stunnel. Программа молча загружается и тухнет в трее. Поздравляю, туннель готов. Можно приступать к тестированию: настраивай почтовик на локальный хост и порт 995. Попытайся проверить почту. В случае, когда почтовик будет исправно стягивать сообщения, знай – туннель работает, и ты в полной безопасности :). Иначе ищи ошибку в лог-файле (в моем случае - stunnel.log).

Игры с фаерволом

Иногда появляется необходимость перенаправлять данные с одного порта (либо IP-адреса) на другой. В этом тебе поможет твой друг и товарищ – фаервол iptables. Если ты регулярно читаешь Хакер, то уже знаком со всеми прелестями этого чудесного брандмауэра (10.03). Сейчас мы поговорим о NAT’инге – одной особенности фаервола, при помощи которой можно без проблем управлять своим трафиком.

Рассмотрим тривиальную задачу: имеются порты 31337 и 31338. Необходимо все запросы с первого порта перекидывать на второй. Кроме того, редирект осуществляется лишь в случае обращения с определенного хоста. Вот как решается эта задача:

# iptables -A PREROUTING -s адрес -t nat -p tcp --dport 31337 -j REDIRECT --to-port 31338.

Это правило выполняет редирект всех данных с порта A на порт B. Обычно это требуется при завороте данных с 80 порта на порт прокси-сервера.

Редирект применим лишь в пределах одного сервера. Если требуется заворачивать весь трафик с хоста A на хост B, необходимо использовать DNAT (Destination Network Address Translation). Правило вписывается в ту же цепочку PREROUTING, правда, немного с другими параметрами:

# iptables –A PREROUTING –s адрес –t nat –p tcp –-dport порт –j DNAT –to-destination 192.168.0.1

Я неспроста указал локальный адрес. Обычно DNAT используется, если необходимо обратиться к локальному серверу из внешней сети. Задача фаервола при этом заменить destination-адрес в заголовке пакета на заданный.

Прикладные программы

И, наконец, настало время рассказать об отдельных программах, способных туннелировать трафик. Для *nix-like систем я бы мог выделить софтину Datapipe. Она представляет собой обычный C-файл (впоследствии превращенный в бинарник). Функции программы – перекидывать весь приходящий трафик на определенный порт другому адресу. К примеру, нам нужно перебросить данные с порта 3000 хоста www.net1.ru на порт 3001 хоста www.net2.ru. Для этого надо лишь запустить программу на первой машине со следующими параметрами:

Назад на стр. 061-056-2  Содержание  Вперед на стр. 061-056-4