иCode:dropbear -p 443
http://wl500g.info/showthread.php?t=12833
подскажите можно ли чем либо строить тунель используя ssl на машинку?
Это надо на случай если есть доступ в инет только по 80 443 портам через прокси, есть необходимость зацепица за роутер и дальше ходить уже куда хочешь
иCode:dropbear -p 443
http://wl500g.info/showthread.php?t=12833
Или
PHP Code:
$ ipkg list | grep stunnel
stunnel - 4.25-3 - SSL encryption wrapper for all kinds of servers
openvpn на 433 порту решает.
я так и сделал. На рутере запущен socks-сервер (srelay) слушающий на localhost, а к нему прицеплен stunnel-сервер, запущенный на 443 порту. С работы запускается stunnel-клиент, и таким образом socks-сервер оказывается на рабочей машине.
Вариант с dropbear -p 443 не работал, потому что ssh handshake отлавливался bluecoat'ом и сессия рвалась. SSL полностью они запретить не могут, потому что тогда никто не сможет ходить по https.
--
sun0s
А можно по-подробнее рассказать о настройке stunnel
Нарушаем запреты с помощью Stunnel и 3proxy.
В этой статье речь пойдет о возможности обхода некоторых ограничений в виде блокирования нежелательных портов и нежелательного трафика,
встречающихся в основном во внутрикорпоративной среде. Сразу предупрежу, что статья написана, как ознакомление, а не призыв к действию и
если вы решите «провернуть» все на практике, то по «шапке» получать именно вам, а не мне, я за ниже изложенное ответственности не несу.
Для реализации нашей идеи нужно установить и настроить Stunnel и 3proxy.
Серверная часть stunnel будет ждать подключение на 443 порту «доверенной зоны» и перенаправлять расшифрованный трафик на интерфейс «петли»
на котором запущен и ждет подключений 3proxy. Клиентская часть stunnel подключается к серверной и гонит весь трафик по защищенному каналу до
3proxy, который, в свою очередь, при успешной аутентификации распределяет этот трафик в нужном нам направлении. Думаю схема понятна.
Серверную часть stunnel я буду устанавливать на беспроводной роутер ASUS WL-500gp v1, прошитый прошивкой «Олега» с подключенной флешкой,
смонтированной в каталог /opt.
Вот подробно - Настройка stunnel и 3proxy
Last edited by Omega; 03-11-2014 at 13:13. Reason: fixed
Установка stunnel.
Начнем с установки пакета stunnel. Подключаемся через ssh к консоли роутера и выполняем команды:
В процессе установки будет создан файл с сертификатом и ключом, будем следовать рекомендациям с оффсайта и сгенерируем свой.Code:# ipkg update # ipkg upgrade # ipkg install stunnel
Переходим в каталог «/opt/etc/stunnel/» и удаляем файл сертификата, созданный по умолчанию:It is a bad idea to use the stunnel.pem file shipped with stunnel except for testing
Настройка stunnel.Code:# rm -f stunnel.pem
Теперь правим файл конфигурации, который нам понадобится при генерации файла с новым ключом и сертификатом:
В этом файле нужно поправить следующие параметры:Code:# nano stunnel-cert.conf
Особое внимание следует уделить «Common Name (FQDN)» в этом параметре следует указатьQuestion
Country name
State or Province name
Locality
Organization Name
Organizational Unit Name
Common Name (FQDN)
полное доменное имя сервера, если таковое имеется, на котором запущен stunnel.
Генерируем файл с ключом и сертификатом:
Удаляем временный файл:Code:openssl req -new -x509 -days 365 -nodes -config stunnel-cert.conf -out stunnel.pem -keyout stunnel.pem
Выставляем владельца и права доступа на каталог и файлы:Code:# rm -f stunnel.rnd
Разберем параметры, что мы задали:Code:# 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, то сертификат с ключом можно сгенерировать прямоCode:# openssl x509 -subject -dates -fingerprint -in stunnel.pem
на сайте stunnel.org через веб-интерфейс, перейдя по ссылке: http://www.stunnel.org/pem/
Отредактируем конфигурационный файл stunnel, изменив несколько параметров:
У меня получился вот такой файл конфигурации:Code:# nano stunnel.conf
Кратко пробежимся по конфигурационному файлу:Code: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:
Проверяем запустился ли stunnel:Code:# cd /opt/etc/init.d/ # ls # ./68Stunnel restart
Если все хорошо и сервер работает, то переходим к установке 3proxy.Code:# netstat -an | grep LISTEN
Настройка stunnel и 3proxy
Last edited by Omega; 03-11-2014 at 13:16. Reason: fixed
Установка и настройка 3proxy.
Процесс установки достаточно подробно описан на форуме wl500g.info:
http://wl500g.info/showpost.php?p=159638&postcount=88
Для работы на роутере должны быть установлены следующие пакеты:
ipkg-opt, tar, wget, make, optware-devel, buildroot, nano, net-tools, procps.
Переходим в каталог /opt:
Скачиваем исходники 3proxy:Code:# cd /opt
Разархивируем:Code:# wget http://3proxy.ru/0.6/3proxy-0.6.tgz
Собираем:Code:# tar zxvf 3proxy-0.6.tgz
После компиляции 3proxy, создадим файл конфигурации и разместим его по следующему пути:Code:# cd /opt/3proxy-0.6/ # make -f Makefile.Linux
/opt/3proxy-0.6/src/config.cfg.
У меня файл конфигурации получился следующего содержания:
Объясню некоторые значения и что они означают в конфигурационном файле, остальное затруднений не вызовет:Code:daemon nserver 172.22.0.1 timeouts 1 5 30 60 180 1800 15 60 users "alexey:CR:$1$fgfgfg$qUNgjW8Go0emlW16OWsUc." log /opt/var/log/3proxy.log D logformat "%d-%m-%Y %H:%M:%S %U %C:%c %R:%r %O %I %T" external 0.0.0.0 internal 127.0.0.1 auth strong proxy -p3128 -n setgid 99 setuid 99
- users - пользователь, которому разрешено пользоваться 3proxy, в данном случае вместо пароля
указан его хэш, рассчитанный с помощью утилиты «mycrypt». Кавычки обязательны, если в строке
встречается знак «$», используемый в 3proxy для подключения файлов конфигурации.- External - интерфейс, от имени которого будут уходить запросы от 3proxy.
- Internal - интерфейс, на котором будет ждать соединений прокси сервер, в нашем случае
это интерфейс «петли», потому что, соединения устанавливать с прокси stunnel будет локально.- auth - режим аутентификации, в нашем случае это «strong» — принудительно по логину и паролю.
- proxy -p3128 -n - прокси работает на порту 3128 с отключенной NTLM авторизацией.
- Setgid, setuid - идентификатор пользователя и группы от имени которого работает процесс прокси,
в нашем случае это nobody (посмотреть id пользователя можно командой «id nobody»).
Иногда, в плане безопасности, бывает не лишним заводить для каждой службы, работающей с сетью, отдельного
пользователя с ограниченными правами, с отключенной оболочкой и возможностью интерактивного входа в систему.
Далее нам понадобится утилита mycrypt, берем ее из приаттаченного архива и кладем по следующему пути:
/opt/bin/, выставляем для нее права 777. Так как в конфигурационном файле пароли пользователей завели
не в открытом, а хэшированном варианте, эта утилита выполняет роль создания хэша и проверки пароля.
mycrypt - http://wl500g.info/attachment.php?at...1&d=1235101521Code:# mycrypt <sailt> <password>
Ну что, когда все настроено, позволим прокси загружаться вместе с роутером,
для этого в файл «/usr/local/sbin/post-mount» вставляем следующий код:
Для разрешения входящих соединений на порт прослушиваемый stunnel, добавляемCode:#!/bin/sh cd /opt/3proxy-0.6/src/ ./3proxy config.cfg
разрешающее правило для iptables в файл /usr/local/sbin/post-firewall:
В вашем случае вместо vlan1 указываем тот интерфейс, на котором вы хотите, чтобы stunnelCode:iptables -I INPUT -p tcp --dport 443 -j ACCEPT iptables -t nat -A PREROUTING -i vlan1 -p tcp --dport 443 -j DNAT --to-destination "$4":443
принимал запросы на подключение. Сохраняем изменения и перезагружаем роутер:
Проверим все ли работает:Code:# flashfs save && flashfs commit && flashfs enable && reboot
Если в выводе первой команды в процессах значится 3proxy, а в результате вывода второй слушающий порт 3128 наCode:# ps aux | grep 3proxy # netstat -na | grep 3128
интерфейсе 127.0.0.1, значит мы все сделали верно и можно переходить к конфигурации клиентской части stunnel.
Настройка stunnel и 3proxy
Last edited by Omega; 03-11-2014 at 13:17. Reason: fixed
Установка Stunnel в качестве клиента.
Установка stunnel в качестве клиента достаточно тривиальна, все действия те же как и
при установке сервера, различия лишь в нескольких строках конфигурационного файла:
Для примера, файл конфигурации взят от платформы win32.Code:cafile = stunnel.pem cert = stunnel.pem ocket = l:TCP_NODELAY=1 socket = r:TCP_NODELAY=1 client = yes debug = 7 output = stunnel.log [3proxy] accept = 127.0.0.1:3333 connect = 192.168.1.1:443
Ключевые и разнящиеся с серверным файлом конфигурации параметры:
И еще нужно проследить, если вы будете копировать и редактировать конфигурационный файл с сервераCode:client = yes accept = 127.0.0.1:3333 connect = 192.168.1.1:443
другой платформы, нежели клиент, чтобы не было параметров не относящихся к клиентской платформе,
например: pid, setuid, setgiud в случае клиента под win32.
Теперь, чтобы проверить нашу работу, открываем «проблемное» ПО на стороне клиента, то есть ту программу,
доступ которой был ограничен, переходим в настройки соединения данной программы, и выставляем в качестве
proxy адрес и порт в соответствии с указанными нами параметрами в конфигурации клиента:
stunnel (accept = 127.0.0.1:3333), а именно — адрес 127.0.0.1, порт 3333, логин и пароль.
Применяем настройки, запускаем клиент stunnel и пробуем соединение. Сейчас должно все работать.
На этом статью можно считать завершенной, до встречи.
Настройка stunnel и 3proxy
Last edited by Omega; 03-11-2014 at 13:18. Reason: fixed
Установил stunnel согласно инструкции, выполняю ps aux | grep stunnel
Как видно в памяти висит аж 6 процессов stunnel что настораживает.root 229 0.0 1.3 1492 420 pts/2 D+ 22:13 0:00 \_ grep stunnel
nobody 142 0.0 4.7 3164 1432 ? S 21:41 0:00 /opt/sbin/stunnel
nobody 143 0.0 4.7 3164 1432 ? S 21:41 0:00 /opt/sbin/stunnel
nobody 144 0.0 4.7 3164 1432 ? S 21:41 0:00 /opt/sbin/stunnel
nobody 145 0.0 4.7 3164 1432 ? S 21:41 0:00 /opt/sbin/stunnel
nobody 146 0.0 4.7 3164 1432 ? S 21:41 0:00 /opt/sbin/stunnel
nobody 149 0.0 4.8 3164 1456 ? Ss 21:41 0:00 /opt/sbin/stunnel
Делаю netstat -an | grep LISTEN
и не вижу строки с stunnel.tcp 0 0 0.0.0.0:51777 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:1026 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:5000 0.0.0.0:* LISTEN
tcp 0 0 192.168.1.1:139 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:53 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:23 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN
unix 2 [ ACC ] STREAM LISTENING 863 /tmp/php-fcgi.sock-0
unix 2 [ ACC ] STREAM LISTENING 894 /tmp/screens/S-p2p/177.rtorrent
Подскажите так и должно быть или где-то нахомутал?
Прикрутил stunnel и 3proxy - в процессах есть, порты открыты. Остался главный вопрос как заставить SSL-клиент поднять туннель с локального компа имеющего доступ в инет только через корпоративный HTTP (HTTPS) прокси.