В этой статье речь пойдет о возможности обхода некоторых ограничений в виде блокирования нежелательных портов и нежелательного трафика встречающихся в основном во внутрикорпоративной среде. Сразу предупрежу, что статья написана, как ознакомление, а не призыв к действию и если вы решите «провернуть» все на практике, то по «шапке» получать именно вам, а не мне, я ни за что ниже изложенное ответственности не несу :).
Для реализации нашей идеи нужно установить и настроить Stunnel и 3proxy.
Серверная часть stunnel будет ждать подключение на 443 порту «доверенной зоны» и перенаправлять расшифрованный трафик на интерфейс «петли» на котором запущен и ждет подключений 3proxy. Клиентская часть stunnel подключается к серверной и гонит весь трафик по защищенному каналу до 3proxy, который, в свою очередь, при успешной аутентификации распределяет этот трафик в нужном нам направлении. Думаю схема понятна.
Серверную часть stunnel я буду устанавливать на беспроводной роутер ASUS WL-500gp v1, прошитый прошивкой «» с подключенной флешкой, смонтированной в каталог /opt.
Установка stunnel.
Начнем с установки пакета stunnel. Подключаемся через ssh к консоли роутера и выполняем команды:
# ipkg update # ipkg upgrade # ipkg install stunnel
В процессе установки будет создан файл с сертификатом и ключом, будем следовать рекомендациям с оффсайта и сгенерируем свой.
It is a bad idea to use the stunnel.pem file shipped with stunnel except for testing
Переходим в каталог «/opt/etc/stunnel/» и удаляем файл сертификата, созданный по умолчанию:
# rm -f stunnel.pemНастройка stunnel.
Теперь правим файл конфигурации, который нам понадобится при генерации файла с новым ключом и сертификатом:
# nano stunnel-cert.confВ этом файле нужно поправить следующие параметры:
Question Country name State or Province name Locality Organization Name Organizational Unit Name Common Name (FQDN)
Особое внимание следует уделить «Common Name (FQDN)» в этом параметре следует указать полное доменное имя сервера, если таковое имеется, на котором запущен stunnel.
Генерируем файл с ключом и сертификатом:
openssl req -new -x509 -days 365 -nodes -config stunnel-cert.conf -out stunnel.pem -keyout stunnel.pem
Удаляем временный файл:
# rm -f stunnel.rndВыставляем владельца и права доступа на каталог и файлы:
# chown -R nobody:nobody /opt/etc/stunnel # cd /opt/etc/stunnel # chmod 600 *
Разберем параметры, что мы задали:
openssl req -new создание нового сертификата.
-x509 генерирование самоподписанного сертификата в формате pem.
-days 365 сертификат будет действителен в течении года.
-nodes не ставить пароль на ключ.
-config stunnel-cert.conf конфигурацию берем из файла.
-out stunnel.pem записать сертификат в файл.
-keyout stunnel.pem записать ключ в файл.
Вывести информацию о сертификате на экран можно с помощью команд:
# openssl x509 -subject -dates -fingerprint -in stunnel.pemЕсли вдруг под рукой не окажется openSSL, то сертификат с ключом можно сгенерировать прямо на сайте через веб-интерфейс, перейдя по ссылке:
Отредактируем конфигурационный файл stunnel, изменив несколько параметров:
# nano stunnel.confУ меня получился вот такой файл конфигурации:
CAfile = /opt/etc/stunnel/stunnel.pem cert = /opt/etc/stunnel/stunnel.pem chroot = /opt/var/stunnel/ setuid = nobody setgid = nobody pid = /stunnel.pid socket = l:TCP_NODELAY=1 socket = r:TCP_NODELAY=1 verify = 2 debug = 7 output = stunnel.log [3proxy] accept = 443 connect = 127.0.0.1:3128
Кратко пробежимся по конфигурационному файлу:
CAfile местоположение сертификата, применяемого при проверке.
cert имя pem файла в цепочке сертификатов, всегда требуется указание в режиме сервера, указание на стороне клиента — не является обязательным, но при указании на клиенте будет использован в цепочке сертификатов клиента. Сертификаты должны быть представлены в формате PEM, и должны быть рассортированы, начиная с сертификата на самом высоком уровне (корневого ЦС).
chroot запуск сервера в среде chroot.
setuid имя непривилегированного пользователя от имени которого будет работать сервер.
setgid имя группы от имени которой будет работать сервер.
pid файл идентификатора процесса.
verify достаточно важный параметр определяющий уровень проверки сертификатов у клиентов. 2 — означает разрыв соединения при отсутствии или неизвестном сертификате у клиента.
debug уровень отладки, в последствии, как только сервер будет настроен, можно выставить параметр 2 или совсем отключить, при первичных запусках рекомендуется выставить в 7.
output включение и определение местоположения логов.
accept на каком интерфейсе и порту принимать соединение.
connect куда их перенаправлять.
Сохраняем параметры и перезапускаем серверную часть stunnel:
# cd /opt/etc/init.d/ # ls # ./68Stunnel restart
Проверяем запустился ли stunnel:
# netstat -an | grep LISTENЕсли все хорошо и сервер работает, то переходим к установке 3proxy.
Установка и настройка 3proxy.
Процесс установки достаточно подробно описан на форуме wl500g.info:
Страниц: 1 2
Оставить комментарий или два