Stunnel что это за программа
Stunnel
Содержание
Stunnel это программная обертка, позволяющая спрятать в шифрованный ssl-туннель произвольный трафик.
HTTPS протокол имеет встроенный механизм ssl-туннелирования.
Особенность stunnel в том, что позволяет «обернуть» в ssl-туннель трафик совершенно любого сервиса, который не имеет встроенных средств шифрования (однако и шифрованный трафик тоже можно передать через stunnel для того, что бы замаскировать его, допустим, под обмен по https протоколу). За счет чего же достигается возможность туннелировать сетевой трафик изначально не предполагавший ни шифрования ни туннелирования? А дело в том, что на любом компьютере, где реализован TCP/IP стек протоколов, есть такая (часто неприметная и порой забываемая вовсе) вещь как localhost. Механизм туннелирования заключается в том, что stunnel:
При этом клиент свой запрос отправляет не на удаленный сервер, а на тот самый порт localhost-а, на котором слушает stunnel. Сервер же слушает (ждет запроса клиента) не на внешнем порту, а на локальном порту на который транслирует передачу stunnel. Посмотрите на схему (чтобы было понятнее):
Если возникает вопрос «как же осуществляется обратный трафик?» то нужно понимать, что каждое клиентское приложение в каждом TCP-подключении открывает для передачи произвольный порт (из тех что имеют большие номера, например 50000+) и именно на этот порт stunnel возвращает расшифрованные данные клиента. На клиенте stunnel открывает для передачи на удаленный сервер еще один порт и между ним и портом s2_port собственно и устанавливается шифрованный канал. На сервере же, stunnel выступает в роли клиента и сам открывает произвольный порт (из старших номеров) для получения обратного трафика от приложения-сервера (который он шифрует перед отправкой на клиентский компьютер).
Все эти обратные порты открываются только для связи с другим портом (netstat такие порты отмечает статусом ESTABLISHED) и они не являются слушающими (LISTEN статус в выводе netstat) соединение (исходящие) от такого порта файерволом не блокируется.
И так, с механизмом встраивания stunnel в работу клиент-серверного приложения мы разобрались. Посмотрим теперь как он устанавливается и настраивается.
Установка Stunnel
Несмотря на то что настройки stunnel для сервера и клиента различаются, но устанавливается он и на сервер и на клиент одинаково:
Настройка Stunnel
Настройка Stunnel на сервере
Создадим новый конфигурационный файл:
В нем нам нужно указать настройки самого stunell:
В принципе, этого вполне достаточно.
Дополнительно можно указать сжатие: бывает полезно кроме шифрования еще и сжать трафик, но это не обязательно если оригинальный трафик и так уже сжат.
Можно еще указать путь куда будут записываться логи сервиса stunnel
Теперь опишем наш сервис по следующему:
В этом шаблоне нужно будет указать реальные порты приложения сервера ( ) и порт на котором будет принимать соединения stunnel для этого сервиса ( ). Имя хоста или внешний IP адрес сервера ( ) можно и не указывать (пропустить), тогда stunnel будет слушать этот порт на всех адресах сервера. Пример для сервиса telnet будет выглядеть примерно так (stunnel будет ждать установки соединения с клиентской стороны на порту 8023)
Созданный файл конфигурации закрываем и сохраняем.
Кроме настройки конфигурационных файлов, нужно еще разрешить запуск stunnel. Для этого в файле /etc/default/stunnel нужно заменить
Теперь создадим сертификат:
Созданный сертификат нужно также передать (по защищенным каналам) на клиентскую машину.
Настроенный stunnel запускаем:
Настройка Stunnel на клиенте
Настройка на клиентской машине не сильно отличается от настройки на серверной машине.
Общие настройки (минимальный вариант):
И настройки сервиса по шаблону:
Для telnet такая конфигурация будет выглядеть так:
Настроенный stunnel разрешаем (так же как и на сервере, редактируя /etc/default/stunnel) и запускаем:
Команда telnet соединения с внешним сервером по ssl-туннелированному протоколу будет выглядеть так:
Соединиться по нешифрованному каналу с telnet сервером можно было бы командой
Но этого делать не стоит, и особенно не стоит telnet сервис выставлять в интернет (крайне вероятно что ваш сервер очень скоро взломают хакеры).
Особенности настроек приложений при работе через stunnel
Нужно понимать, что указание в строке подключения клиента localhost вместо IP адреса или имени сервера может оказать влияние на работу сервиса.
К примеру, вы решили обернуть трафик OpenVPN в stunnel (довольно популярное решение при маскировке openVPN соединения под https трафик, для обмана умных файерволов). Для этого, в конфигурационном файле OpenVPN, строку с указанием адреса и порта сервера
заменяем на соединение с localhost:
Но это приведет к тому, что в маршрутизацию клиента (ip route), при установлении соединения с OpenVPN сервером, будет записан маршрут не на внешний сервер, а на localhost (ведь соединение было с localhost, а не с удаленным сервером), что приведет к практически полной неработоспособности сети на клиенте (из за возникшего цикла в правилах маршрутизации).
Stunnel на сервере и клиенте
Задача
Обеспечить доступ из «везде где есть интернет» к некоему ПО. Шифровать траффик между клиентской и серверной частью приложения, которое не умеет работать через SSL. Так же нужно иметь возможность ограничивать доступ некоторым пользователям при необходимости. По различным причинам основные реализации VPN отпали. В процессе поиска решения наткнулся на Stunnel, который идеально подошел. В данной статье постараюсь детально описать процесс настройки.
Статья по большей части составлена из рабочих заметок в довесок с претензиями на туториал, поэтому прошу спокойно относится к капитанству вида — «Первое, что мы сделаем — обновим систему».
Общее представление схемы работы:
ПО клиент (windows) > Stunnel > Интернет > Stunnel > ПО Сервер (linux)
Система: свежеустановленная ubuntu server 14.04 x64.
Приложение трафик которого нужно шифровать я называть не буду. Вместо него буду указывать ssh. Для теста подходит идеально, на мой взгляд.
Приступим
Первое, что мы сделаем — обновим систему:
Настроим и включим ufw:
Проведем некоторые подготовительные мероприятия.
Разрешим автозапуск. В файле /etc/default/stunnel4 заменим ENABLED=0 на ENABLED=1:
Создадим папки для клиентских сертификатов. certs — разрешенные, crls — запрещенные (отозванные). О самих сертификатах чуть позже.
Создадим лог-файл и сменим владельца.
Я не считаю размещение логов в месте отличном от /var/log хорошей идеей, но заставить stunnel писать логи за пределы окружения мне не удалось.
Я буду использовать свой конфиг, но если он вам не подходит можно взять пример в /usr/share/doc/stunnel4/examples
Создадим конфигурационный файл:
Со следующим содержимым:
Ключи и сертификаты
Не большое отступление. В нашем случае stunnel проверяет только корректность пары сертификат/ключ и наличие сертификата в разрешенных или запрещенных. Самоподписанного сертификата более чем достаточно, и с технической стороны (stunnel) и со стороны поставленной задачи. Нет никакого смысла заморачиваться с собственным CA или с присутствием корневого сертификата в списке доверенных на клиенте или сервере.
Нам нужны пары сертификат/ключ для сервера и каждого клиента.
C помощью openssl создадим пару для сервера:
Отвечаем на вопросы:
И переместим их по назначению:
Как и где хранить клиентские сертификаты с ключами (за исключением каталогов certs и crls созданных ранее) решать вам. Я просто создам каталог clients в домашней директории своего пользователя и буду хранить их там на первых порах.
Создадим каталог и перейдем в него:
Создадим пару для клиента:
Как и при создании сертификата для сервера отвечаем на вопросы. Common Name будет другим например client.
Создадим еще одну пару:
Предположим, что clientcert.pem сертификат клиента которому доступ разрешен, а dnclientcert.pem сертификат клиента которому доступ запрещен. Скопируем сертификаты по нужным директориям.
Для каждого сертификата нужно создать хэш-ссылки (Возможно «хэш-ссылка» не корректное название, но оно очень точно передает суть). Это можно сделать с помощью утилиты c_rehash из пакета openssl. Мы же создадим небольшой скрипт для этих целей.
Со следующим содержимым:
Возможно будет более целесообразным разместить certlink.sh где нибудь в /usr/bin. Я пока не стал этого делать. Но выбор за вами.
Дадим права:
В результате в каталогах у нас должны появится ссылки вида 7469493f.0.
Stunnel на клиенте
На клиенте будем использовать версию stunnel аналогичную серверной. На сервере у нас 4.53. Забираем с одного из зеркал.
Если прямая ссылка перестанет работать, найти нужную версию можно так:
Редактируем файл stunnel.conf. У меня он имеет следующий вид:
Здесь debug = 7 только на момент отладки, потом можно понизить до 3 или 4. Также есть опции для «тихого режима» и сокрытия значка в трее все есть в man’e.
Запускаем stunnel.exe, и пробуем с помощью putty подключится к 127.0.0.1. Тестируем. Можно попробовать подключится с запрещенным сертификатом.
Полезные материалы
Приведенные здесь инструкции полностью работоспособны. Проверено 26.12.2014 ubuntu 14.04.01, stunnel 4.53.
В данный момент работаю над парсингом логов stunnel с выводом отчетов и автоматизацией создания/управления сертификатами. Так как в последнее время мне интересен golang, реализовано будет с помощью него. Если материал на эту тему интересен — дайте знать.
Шифрование TLS-трафика по алгоритмам ГОСТ-2012 c Stunnel
В этой статье я хочу показать, как настроить Stunnel на использование российских криптографических алгоритмов в протоколе TLS. В качестве бонуса покажу, как шифровать TLS-канал, используя алгоритмы ГОСТ, реализованные в криптоядре Рутокен ЭЦП 2.0.
Но для начала давайте вообще разберёмся для чего нужен Stunnel. В двух словах — это программа, на которую можно переложить всю логику шифрования трафика между сервером и клиентом. Делается это следующем образом: допустим у вас есть клиент и сервер, которые общаются между собой без использования шифрования, аутентификации и проверки целостности. Вы могли бы переписать клиент и сервер так, чтобы все исходящие и входящие сообщения передавались между собой с учётом всех этих моментов, но для чего такие сложности, если можно это просто переложить на плечи другому приложения? Для решения такой задачи как раз подойдёт Stunnel.
Вам нужно просто настроить клиент таким образом, чтобы весь свой трафик он передавал на клиентский Stunnel, в свою очередь, он устанавливает безопасное соединение с сервером, отправляя данные на серверный Stunnel. Stunnel на сервере расшифровывает пришедший трафик и перенаправляет данные на вход серверу. Вышесказанное проще осознать глядя на эту диаграмму
Стоит заметить, что на сервере не обязательно должен стоять именно Stunnel, для работы с криптографическими алгоритмами. Здорово, что есть готовые демонстрационные стенды, которые поддерживают российскую криптографию, список которых есть в презентации с РусКрипто’2019.
Нам нужны стабильно работающие серверы, осуществляющие двухстороннюю аутентификацию.
Мы выбрали серверы КриптоПро как наиболее надёжные с полной реализацией стандарта ГОСТ TLS. Спасибо им за это 🙂
Звучит достаточно просто, давайте попробуем организовать этот процесс.
Подготовительный шаг
OpenSSL для Windows можно взять отсюда, а для пользователей линукса — из репозиториев или собрать самому, скачав свежую версию отсюда. Также его можно взять из Rutoken SDK, из директории openssl\openssl-tool-1.1, этот архив нам будет полезен и дальше, т.к. в нём находится интересующий нас rtengine. Stunnel можно найти здесь. Для работы необходима версия >= 5.56.
Скачать rtengine можно из Rutoken SDK, он лежит в директории openssl\rtengine\bin. Закинуть его нужно туда, где хранятся все движки openssl. Узнать путь до них можно с помощью
Но просто переместить движок в нужную папку — мало, нужно ещё сконфигурировать сам openssl для работы с ним. Узнаём где лежит файл с конфигурацией openssl.cnf с помощью той же команды, что указана выше (под виндой stunnel идёт с собственной версией openssl, поэтому файл с конфигурацией лежит в path\to\stunnel\config\openssl.cnf
Давайте проверим, что rtengine подключился, для этого подключим токен и выведем список всех алгоритмов шифрования:
Напомню, что в Windows нужно проверять на openssl, который лежит рядом с stunnel
Если среди них будут присутствовать наши ГОСТы, значит всё настроено верно.
Настало время самого интересного: проверка установки соединения по ГОСТу с тестовыми серверами КриптоПро. Список данных серверов описан здесь (https://www.cryptopro.ru/products/csp/tc26tls). Каждый из этих серверов работает со своими алгоритмами для аутентификации и шифрования. Более того на портах 443, 1443, 2443,… запущены сервисы, которые воспринимают только определённые парамсеты. Так, например, по адресу http://tlsgost-256auth.cryptopro.ru происходит шифрование с аутентификацией с использованием алгоритмов GOST2012-GOST8912-GOST8912 и 256-битным ключом. Так же на порту 443 используется XchA-ParamSet, на порту 1443 — XchB-ParamSet, на порту 2443 — A-ParamSet и т.д.
Теперь, когда мы знаем, какой ключ нам нужен, давайте получим корневой сертификат от тестового сервера, выработаем ключи для работы и подпишем запрос на наш сертификат.
Простой способ (работает под Windows и Linux)
Через командную строку
Для того, чтобы получить корневой сертификат, зайдём на сайт тестового УЦ ООО «КРИПТО-ПРО». И нажмём на кнопку для получения сертификата. Отобразится новая вкладка, в которой нужно будет выбрать метод шифрования Base64 и нажать на кнопку «Загрузка сертификата ЦС». Полученный файл certnew.cer сохраняем.
Теперь генерируем ключи.
Стоит заметить, что сгенерированные на токене ключи не могут быть скопированы с токена. В этом состоит одно из основных преимуществ их использования.
Создадим запрос на сертификат:
Опять открываем сайт тестового УЦ, но на этот раз нажимаем на кнопку «Отправить готовый запрос PKCS#10 или PKCS#7 в кодировке Base64». Вставляем в поле содержимое нашего запроса, нажимаем на кнопку Выдать и загружаем сертификат user.crt в формате Base64. Полученный файл сохраняем
Остался последний вопрос: Для чего всё это. Зачем мы получали все эти сертификаты, ключи и запросы?
Дело в том, что они нужны протоколу TLS для двусторонней аутентификации. Работает это очень просто.
У нас есть сертификат сервера, и мы считаем его доверенным.
Наш клиент проверяет, что сервер, с которым мы работаем имеет аналогичный сертификат.
Сервер же хочет убедиться, что работает с пользователем, который ему известен. Для этого мы и создавали запрос на сертификат для работы через наши ключи.
Мы отправили этот запрос и сервер подписал её своей ЭЦП. Теперь мы можем каждый раз предъявлять этот сертификат, подписанный корневым УЦ, тем самым подтверждая, что мы — это мы.
Конфигурирование Stunnel
Осталось только правильно настроить наш туннель. Для этого создадим файл stunnel.conf с настройками Stunnel по умолчанию и напишем туда следующее:
Теперь, если всё сделано правильно, можно запустить Stunnel с нашей конфигурацией и подключиться к серверу:
Откроем браузер и зайдём по адресу localhost:8080. Если всё верно, то отобразится следующее:
Если же нет, то смотрим логи и используем отладчик, чтобы понять в чём же всё-таки проблема.
Если у вас остались какие-то вопросы, то милости просим в комментарии 🙂
Твой тайный туннель. Детальный гайд по настройке OpenVPN и stunnel для создания защищенного канала
Содержание статьи
О сервисах и блокировках
Существует бесчисленное множество сервисов, которые предоставляют VPN, в том числе и бесплатные. Вот несколько причин, почему бесплатный VPN — это плохая идея.
С платными сервисами дела обстоят лучше: можно ожидать какого-то гарантированного качества и наличия настроек. Но ты все еще не можешь знать наверняка, хранятся твои логи непосредственно на сервере или нет. К тому же твоего провайдера могут заблокировать.
Великий китайский файрвол, к примеру, научили определять и блокировать трафик OpenVPN при помощи техники Deep packet inspection (DPI). На какой бы порт ты его ни прятал, будь то UDP 53 или TCP 443, в Китае просто так OpenVPN не попользуешься. Дело в том, что в режиме TLS трафик OpenVPN отличается от обычного трафика HTTPS. Если под рукой есть сниффер, в этом несложно убедиться.
А вот как выглядит обычный HTTPS.
Некоторые популярные платные VPN предоставляют средства обхода DPI, но чем больше популярность, тем больше шанс, что провайдер узнает о сервисе и сможет полностью заблокировать доступ к нему. От полной блокировки не защищен никто, но, когда используешь публичный сервис, шанс всегда выше.
Пара слов об OpenVPN
OpenVPN использует два канала: канал управления (control channel) и канал данных (data channel). В первом случае задействуется TLS — с его помощью ведется аутентификация и обмен ключами для симметричного шифрования. Эти ключи используются в канале данных, где и происходит само шифрование трафика.
Существуют скрипты, которые автоматизируют установку, и процесс занимает меньше времени. Но, во-первых, эти скрипты подходят только для конкретных дистрибутивов, а во-вторых, они не предоставляют выбора. Например, используют RSA и AES-CBC, когда есть поддержка ECDSA и AES-GCM. Таким образом, без знания и понимания того, как это работает, ты не сможешь подправить скрипт, чтобы он исполнялся на других системах или делал то, что ты хочешь.
Что такое stunnel
Трафик, туннелируемый через stunnel, ничем не отличается от обычного HTTPS
С учетом того что OpenVPN использует шифрование для своего канала данных, у нас есть два варианта настройки:
Таким образом, в первом варианте получается два слоя: один от stunnel, второй от OpenVPN. Этот вариант позволит использовать RSA вместе с ECDSA. Недостаток в том, что тратится больше ресурсов, и второй вариант позволит этого избежать. В любом случае настройка stunnel остается неизменной.
Что нам понадобится
Провайдер VPS
Первым делом нужно выбрать провайдера, который нам предоставит виртуальный выделенный сервер (VPS). Что выбирать — дело каждого и зависит от страны и от того, сколько ты готов платить. Главная рекомендация — выбирай страну, наиболее близкую по географическому расположению, это сведет задержку к минимуму. Но, конечно, живя в Китае, покупать сервис в Индии или Пакистане смысла мало.
Выбор ОС
Я буду использовать RHEL 7.4. Для точного копирования команд из статьи годится и CentOS 7 (1708), так как это бесплатная и почти идентичная копия RHEL, основанная на его коде. Возможно, подойдут другие дистрибутивы, а также производные RHEL (Fedora), но пути конфигурационных файлов и версии программ могут отличаться.
Подготовка и первичная настройка
После покупки сервера и установки системы нам нужно попасть на сервер. Я буду делать это с помощью SSH. Вся конфигурация будет проходить в два этапа: настройка на сервере (включает в себя первичную настройку) и настройка клиентов.
Для начала нам понадобится подключить репозиторий EPEL — пакет openvpn лежит именно там.
Перезагружаемся и ставим необходимые пакеты:
Базовая защита
Поскольку китайские боты и скрипт-киддиз не дремлют и, скорее всего, уже сейчас пробуют подобрать пароль к твоему серверу, перенесем sshd на другой порт и запретим логин от рута. Перед тем как это сделать, нужно убедиться, что в системе существует другой пользователь с доступом по SSH, или добавить нового и установить для него пароль.
Перечитаем конфиги ( systemctl reload sshd ), убедимся, что sshd поднялся без проблем ( systemctl status sshd ), и попробуем открыть дополнительную сессию SSH, не закрывая текущей.
Продолжение доступно только участникам
Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
Создание SSL-туннеля при помощи Stunnel в Ubuntu
Что такое Stunnel?
Программа Stunnel предназначена для развертывания шифрования SSL между удаленным клиентом и локальным или удаленным сервером. Stunnel добавляет функциональность SSL к наиболее часто используемым демонам Inetd (например, POP2, POP3) и IMAP-серверам без каких-либо изменений в коде программы.
Stunnel превращает любой небезопасный TCP-порт в зашифрованный с помощью криптографического пакета OpenSSL. Это похоже на небольшую безопасную VPN, которая работает на определенных портах.
Примечание: данное руководство было протестировано на виртуальных выделенных серверах Ubuntu 12.04, Ubuntu 12.10, Ubuntu 13.04.
1: Подготовка системы
При помощи нижеприведенных команд обновите список пакетов и сами пакеты:
apt-get update
apt-get upgrade
2: Установка Stunnel
Программу Stunnel можно установить при помощи стандартного менеджера пакетов:
3: Настройка Stunnel
Настройки Stunnel хранятся в файле stunnel.conf, который по умолчанию находится в /etc/stunnel. Чтобы создать этот файл, используйте:
Чтобы идентифицировать себя на сервере, нужно использовать сертификат SSL; для этого необходимо задать путь к этому сертификату в файле stunnel.conf Используйте следующую строку (сам файл сертификата будет создан далее):
Затем нужно указать сервис для взаимодействия с Stunnel. Это может быть любой сервис, который использует сеть (почтовый сервер, прокси-сервер и т.д.).
В данном руководстве для примера будет показано, как защитить трафик между прокси-сервером Squid и клиентом, использующим Stunnel. Инструкции по установке Squid можно найти в разделе 6.
Указав название сервиса, взаимодействующего с Stunnel, нужно указать Stunnel, на каком порте нужно прослушивать данный сервис. Это может быть любой из 65535 портов, если только он не заблокирован другим сервисом или фаерволом.
[squid] accept = 8888
Далее нужно указать в конфигурационном файле порт и IP-адрес сервиса, для которого создается безопасный туннель. В основном Stunnel принимает пакеты от безопасного порта, а затем пересылает их на порт и IP-адрес указанного сервиса.
По умолчанию Squid-прокси запускается на локальном хосте и использует порт 3128; следовательно, чтобы программа Stunnel могла принимать соединения с этим сервисом, в данном случае в конфигурационный файл нужно внести следующую строку:
В целом конфигурационный файл stunnel.conf должен иметь такой вид:
client = no
[squid] accept = 8888
connect = 127.0.0.1:3128
cert = /etc/stunnel/stunnel.pem
Примечание: параметр client = no не является обязательным, поскольку Stunnel по умолчанию работает в режиме сервера.
4: Создание SSL-сертификата
Stunnel использует сертификат SSL для защиты соединений. Такой сертификат можно легко создать с помощью пакета OpenSSL:
Вышеприведенные команды генерируют закрытый ключ, создают сертификат при помощи этого ключа, а затем объединяют эти файлы в один файл по имени stunnel.pem, который и будет использовать Stunnel.
Примечание: при создании сертификата нужно указать некоторую информацию; обратите внимание на поле Common Name – в нем нужно указать имя хоста или IP-адрес сервера.
Затем настройте автоматический запуск Stunnel. Для этого откройте файл /etc/default/stunnel4 в текстовом редакторе:
и измените значение параметра ENABLED на 1:
В завершение перезапустите Stunnel, чтобы обновить настройки.
5: Установка прокси-сервера Squid
Чтобы установить Squid, используйте:
6: Настройка Stunnel как клиента
Примечание: данный раздел демонстрирует установку и настройку Stunnel в качестве клиента в Windows, но настройки и инструкции по установке программы в Linux или даже Android останутся такими же. Единственное отличие – местонахождение конфигурационного файла stunnel.conf.
Для того, чтобы Stunnel мог взаимодействовать с сервером, сертификат SSL (см. раздел 4) должен находиться на клиенте. Существует множество способов перемещение файла stunnel.pem с сервера, но в данном случае для этого используется протокол SFTP – одновременно достаточно простой и безопасный.
При помощи SFTP-клиента (например, Filezilla) подключитесь к серверу и загрузите файл stunnel.pem из каталога /etc/stunnel/ на клиент.
Примечание: чтобы получить больше информации о работе SFTP, читайте руководство «Использование SFTP для безопасного обмена файлами с удаленным сервером».
Скачайте Stunnel с сайта проекта.
Установите Stunnel в любой удобной точке системы. Затем перейдите в папку Stunnel и переместите в нее файл сертификата stunnel.pem.
Создайте в папке Stunnel файл stunnel.conf (если такого файла еще нет). Откройте файл при помощи текстового редактора (например, Notepad).
Для начала нужно указать путь к сертификату, который в Windows находится в каталоге Stunnel.
Примечание: в Ubuntu этот файл находится в каталоге /etc/stunnel/.
В данном случае нужно перевести Stunnel в режим клиента. Поместите следующую строку в файл:
Далее нужно указать конфигурации сервиса, который нужно использовать.
Сначала укажите имя сервиса, затем его IP и порт, который должна прослушивать программа Stunnel на клиенте.
[squid] accept = 127.0.0.1:8080
Для этого подойдет любой порт на клиентском компьютере, если он не занят другим сервисом и не блокируется брандмауэром.
Затем нужно настроить Stunnel для передачи пакетов, поступающих на данный порт, серверу Stunnel; для этого укажите IP-адрес виртуального сервера и порт, заданный при настройке сервера Stunnel (в данном случае это порт 8888):
connect = [внешний IP-адрес]:8888
В итоге файл stunnel.conf будет иметь такой вид:
cert = stunnel.pem
client = yes
[squid] accept = 127.0.0.1:8080
connect = [Server’s Public IP]:8888
Сохраните и закройте файл.
Готово! Взаимодействие клиента и сервера надежно защищено SSL-туннелем. Теперь для подключения к любому сервису VPS нужно вводить не только IP, но также и порт, заданный в параметре accept конфигурационного файла Stunnel.
Например, чтобы подключиться к прокси-серверу Squid на облачном сервере, нужно указать 127.0.0.1:8080, и Stunnel автоматически подключится к сервису, запущенному на указанном порте. Чтобы защитить трафик, настройте браузер использовать порт 8080 в качестве прокси.