- Применяем stunnel для защиты сервисов
- Введение
- Установка stunnel
- Настройка сервера stunnel
- Создание сертификатов
- Запуск сервера
- Настройка клиентов
- Stunnel установить как службу windows
- Настройка Stunnel+1С Предприятие
- Как настроить Windows Stunnel — Вокруг-Дом — 2021
- Table of Contents:
- Шаг 1
- Шаг 2
- Шаг 3
- Шаг 4
- stunnel configuration (Апрель 2021).
- Твой тайный туннель. Детальный гайд по настройке OpenVPN и stunnel для создания защищенного канала
- Содержание статьи
- О сервисах и блокировках
- Пара слов об OpenVPN
- Что такое stunnel
- Что нам понадобится
- Провайдер VPS
- Выбор ОС
- Подготовка и первичная настройка
- Базовая защита
- Продолжение доступно только участникам
- Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте
Применяем stunnel для защиты сервисов
Очень часто возникает потребность защитить от различных систем мониторинга работу SSH, VPN, либо других сервисов. С этим отлично справится stunnel, который мы и рассмотрим в данной статье.
Введение
Stunnel — это мощный прокси, который добавляет внешний слой шифрования TLS поверх любого из существующих протоколов без необходимости изменения их конфигурации, либо программного кода.
Мы рассмотрим работу с данным программным продуктом на примере дистрибутива Fedora (и CentOS с подключённым репозиторием EPEL7) и будем защищать OVN сервер.
Установка stunnel
Пакет доступен в главном репозитории Fedora. Установим его:
Настройка сервера stunnel
Все файлы конфигурации сервера должны находиться в каталоге /etc/stunnel, поэтому создадим главный конфиг stunnel.conf и укажем правильные права доступа:
Листинг файла /etc/stunnel/stunnel.conf:
Создадим каталог для индивидуальных конфигов защищаемых сервисов:
Листинг файла /etc/stunnel/conf.d/ovn.conf:
Здесь 127.0.0.1:1194 — это IP-адрес и порт, который слушает OVN сервер (для максимальной безопасности рекомендуется в настройках VPN сервера разрешить ему работать исключительно на 127.0.0.1, чтобы никто не мог подключиться к нему в обход stunnel), а 443 — порт, на котором stunnel будет ожидать входящие подключения.
Создание сертификатов
Stunnel будет осуществлять аутентификацию клиентов при помощи сертификатов.
Создадим каталог для их хранения:
Сгенерируем сертификат для нашего сервера:
На выходе мы получим файлы server.crt (открытый ключ) и server.key (секретный ключ). Загрузим их на сервер в каталог /etc/stunnel/certs любым удобным для нас способом и установим chmod 0600:
Сгенерируем сертификаты для клиентов (каждый клиент должен выполнять этот шаг самостоятельно, а затем лишь передать свой открытый ключ (файл client.crt) на сервер):
Объединим все открытые ключи клиентов в единый бандл:
Скопируем полученный clients.pem на сервер любым способом и установим chmod 0644:
При появлении нового клиента его публичный ключ должен быть добавлен в бандл, а сервис stunnel перезапущен.
Запуск сервера
Теперь мы наконец готовы запустить наш сервер:
Настройка клиентов
Создадим каталог для хранения пользовательских сертификатов:
Создадим конфиг клиента client.conf и установим ему корректные права доступа:
Листинг файла /etc/stunnel/client.conf:
Скопируем публичный ключ сервера server.crt, а также клиентский сертификат (открытый (client1.crt) и закрытый (client1.key) ключи) в /etc/stunnel/certs и установим им правильный chmod:
Теперь изменим OVN подключение так, чтобы в качестве IP-адреса сервера использовался 127.0.0.1:1194.
Stunnel установить как службу windows
Клиент Stunnel (Linux) принимает трафик на указанном порте 1500 по адресу 192.168.69.180, шифрует все поступившие на него данные и передает их на Stunnel Сервер (Windows) с IP адресом 192.168.69.61 на порт 1502. Сервер расшифровывает все поступившие на этот порт данные и передает на указанный в настройках порт и адрес (google.ru, порт 80).
Если требуется проверка сертификата клиента, нужно назначить параметр «Verify=2».
Установка на ОС Linux
Для работы необходимо установить КриптоПро CSP 3.6 — http://www.cryptopro.ru/products/csp/downloads
- lsb-cprocsp-base
- sb-cprocsp-rdr
- lsb-cprocsp-capilite
- lsb-cprocsp-kc1 ( или lsb-cprocsp-kc2)
Дополнительный пакет (входит в состав дистрибутива):
Установка пакета Stunnel
Для дистрибутивов Linux, основанных на rpm, это утилита rpm:
- rpm -i cprocsp-stunnel-3.6.1-4.i486.rpm
Для дистрибутивов, основанных на deb, это утилита alien:
- alien -kci cprocsp-stunnel-3.6.1-4.i486.rpm
После установки пакета бинарные файлы, предназначенные для запуска Stunnel, будут помещёны в /opt/cprocsp/sbin/ /. Существует две реализации службы Stunnel: с использованием библиотеки thread и с использованием fork; бинарные файлы называются stunnel_thread и stunnel_fork соответственно. Stunnel с использованием fork возможно использовать только с КриптоПро CSP исполнение КС2.
Установка сертификата
Устанавливаем сертификат клиента в хранилище «Личные» локального компьютера с привязкой к контейнеру закрытого ключа. В сертификате требуется наличие OID — «Проверки подлинности клиента».
/opt/cprocsp/bin/ /certmgr -inst -file client.cer -cont ‘\\.\HDIMAGE\client’
Требуется установить необходимые сертификаты:
а) сертификат корневого Центра Сертификации (ЦС) – в хранилище «Доверенные корневые Центры Сертификации» локального компьютера
/opt/cprocsp/bin/ /certmgr -inst -file root.cer -store ROOT
б) если сертификат клиента выдан на подчинённом ЦС — сертификаты всех подчиненных ЦС в цепочке должны быть установлены в хранилище «Промежуточные Центры Сертификации» локального компьютера
/opt/cprocsp/bin/ /certmgr -inst -file ca.cer -store CA
Запуск службы
Запуск службы будет выполняться под тем пользователем, под которым был установлен сертификат.
root@ubuntu:/opt/cprocsp/sbin/ia32# ./stunnel_thread /etc/stunnel/stunnel.conf
Установка на ОС Windows
Для работы необходимо установить:
Установка службы Stunnel
Установка делается путём запуска stunnel.exe – install
В дальнейшем служба для старта будет использовать файл stunnel.exe из той папки, откуда была проведена установка.
Перед установкой нужно выбрать режим работы службы, установить сертификаты и сформировать файл конфигурации.
Установка сертификата
Устанавливаем сертификат сервера в хранилище «Личные» локального компьютера с привязкой к контейнеру закрытого ключа. Для TLS-сервера требуется, чтобы в сертификате сервера был OID — «проверка подлинности сервера». Имя сертификата (Common Name) должно совпадать с именем компьютера.
Требуется установить необходимые сертификаты:
а) сертификат корневого Центра Сертификации (ЦС) – в хранилище «Доверенные корневые Центры Сертификации» локального компьютера;
б) если сертификат сервера выдан на подчинённом ЦС — сертификаты всех подчиненных ЦС в цепочке должны быть установлены в хранилище «Промежуточные Центры Сертификации» локального компьютера.
Запуск службы по умолчанию выполняется от пользователя «SYSTEM»
Пуск -> Панель управления -> Администрирование -> Службы -> Stunnel Service -> Пуск (Запустить).
В браузере Internet Explorer обращаемся по адресу — 192.168.69.180:1500, открывается адрес — google.ru:80
Получается следующая цепочка:
данные_в_открытом_виде ->192.168.69.180:1500 ->шифрование ->
данные_в_зашифрованном_виде ->192.168.69.61:1502 ->дешифровка ->
данные_в_открытом_виде ->google.ru:80
Данная программа позволяет создавать TLS-«туннель», обеспечивающий шифрование трафика от клиента до сервера с использованием сертифицированного СКЗИ произвольного TCP-соединения.
Подробные настройки по использованию Stunnel
Настройка Stunnel+1С Предприятие
После того как тройка основных провайдеров электронной почты (Яндекс, MailRu, Google) перешли на защищенный тип соединения SSL отправки почты, многие пользователи платформы 1С Предприятия 8.2 стали испытывать трудности в отправки писем.
Вся проблема в том, что платформа не поддерживает в коробке отправку почты, а именно не умеет отсылать используя SSL соединение. 1С для решения выкатило версию 8.3, однако даже на текущий день есть достаточное количество людей которые не хотят переезжать на новую версию, т.к. есть ряд подводных каменей.
Сегодня рассмотрим один из таких случаев, когда нужно обратно подружить 1С 8.2 с Яндекс почтой.
Для выхода из этой ситуации есть пара проверенных решений одно из которых это редактирование конфигурации, его мы рассматривать не будем, т.к. это отступление от типовой нормы.
Решение: В качестве решения мы будем эмулировать отправку с SSL через программу посредник Stunnel.
Дистрибутив можно загрузить тут. Установка не вызывает особой сложности, однако при установке следует учесть один момент, обязательно следует установить все компоненты Tools. Во время установки будет сформирован персональный сертификат.
После установки в командной строке с правами администратора системы необходимо выполнить команды:
«C:\Program Files (x86)\stunnel\bin\stunnel.exe » -install
«C:\Program Files (x86)\stunnel\bin\stunnel.exe » -start
Для установки в качестве службы и старта приложения.
Далее через интерфейс приложения или любой текстовый редактор заменяем часть конфигурационного файла вставляя настройку для 3х наиболее распространенных почтовых провайдеров.
Как настроить Windows Stunnel — Вокруг-Дом — 2021
Table of Contents:
Как администраторы серверов, так и домашние пользователи чувствуют давление для обеспечения безопасности своих интернет-коммуникаций, но не все приложения поддерживают использование TLS. Электронная почта, протокол передачи файлов (FTP) и чат общаются по старым и устоявшимся, но небезопасным каналам, и мало надежных альтернатив можно найти. Вместо того, чтобы отбрасывать эти старые приложения, настройте Stunnel для небезопасной связи через прокси-сервер по безопасному каналу для защиты ваших данных.
Защитите свой интернет-трафик, настроив Stunnel на прокси-трафик по безопасному каналу.
Шаг 1
Установите Stunnel. Загрузите бинарный файл Windows с сайта Stunnel.org. Дважды щелкните исполняемый файл «stunnel-4.34-installer.exe» и примите значения по умолчанию для установки Stunnel на ваш компьютер.
Шаг 2
Скопируйте действительный открытый сертификат SSL в каталог «C: Program Files (x86) stunnel». Чтобы упростить работу, объедините сертификаты открытого ключа и закрытого ключа в один файл .PEM.
Шаг 3
Измените файл конфигурации Stunnel. Откройте файл «C: Program Files (x86) stunnel stunnel.conf» с помощью текстового редактора, например Блокнота. Измените файл, добавив в него строку «cert = C: Program Files (x86) stunnel ,» где имя вашего файла сертификата
Измените файл, указав как входящий (безопасный) порт, так и исходящий (незащищенный) порт. Для ясности обозначьте этот раздел в скобках. Пример конфигурации выглядит следующим образом:
https accept = 443 connect = 8080
Эта конфигурация сообщает Stunnel о необходимости принимать входящие соединения через порт 443, защищенный с помощью сертификата SSL с открытым ключом, и перенаправлять эти соединения на порт 8080 на локальном сервере без защиты.
Шаг 4
Настройте Stunnel для автоматического запуска. Перейдите в меню «Пуск», папку «stunnel» и нажмите «Служба установки». Stunnel настроит службу Windows под названием «stunnel» для автоматического запуска при загрузке компьютера.
stunnel configuration (Апрель 2021).
Твой тайный туннель. Детальный гайд по настройке OpenVPN и stunnel для создания защищенного канала
Содержание статьи
О сервисах и блокировках
Существует бесчисленное множество сервисов, которые предоставляют VPN, в том числе и бесплатные. Вот несколько причин, почему бесплатный VPN — это плохая идея.
- Качество. Те, кто пользовался бесплатным VPN, знают, что в большинстве случаев сервис просто ужасен: низкая скорость, постоянные обрывы. Это и неудивительно, ведь, кроме тебя, им одновременно может пользоваться еще пара сотен человек.
- Безопасность. Даже если качество более-менее сносное, ты не знаешь, что на самом деле происходит с твоим трафиком. Хранится и анализируется ли он, кто и в каких целях оперирует сервисом. Бесплатный сыр, как говорится.
- Малое количество или полное отсутствие опций и настроек: нет возможности выбрать шифр, протокол и порт. Остается только пользоваться тем, что дали.
С платными сервисами дела обстоят лучше: можно ожидать какого-то гарантированного качества и наличия настроек. Но ты все еще не можешь знать наверняка, хранятся твои логи непосредственно на сервере или нет. К тому же твоего провайдера могут заблокировать.
Великий китайский файрвол, к примеру, научили определять и блокировать трафик OpenVPN при помощи техники Deep packet inspection (DPI). На какой бы порт ты его ни прятал, будь то UDP 53 или TCP 443, в Китае просто так OpenVPN не попользуешься. Дело в том, что в режиме TLS трафик OpenVPN отличается от обычного трафика HTTPS. Если под рукой есть сниффер, в этом несложно убедиться.
TLS-трафик OpenVPN
А вот как выглядит обычный HTTPS.
Трафик HTTPS
Некоторые популярные платные VPN предоставляют средства обхода DPI, но чем больше популярность, тем больше шанс, что провайдер узнает о сервисе и сможет полностью заблокировать доступ к нему. От полной блокировки не защищен никто, но, когда используешь публичный сервис, шанс всегда выше.
Пара слов об OpenVPN
OpenVPN использует два канала: канал управления (control channel) и канал данных (data channel). В первом случае задействуется TLS — с его помощью ведется аутентификация и обмен ключами для симметричного шифрования. Эти ключи используются в канале данных, где и происходит само шифрование трафика.
Существуют скрипты, которые автоматизируют установку, и процесс занимает меньше времени. Но, во-первых, эти скрипты подходят только для конкретных дистрибутивов, а во-вторых, они не предоставляют выбора. Например, используют RSA и AES-CBC, когда есть поддержка ECDSA и AES-GCM. Таким образом, без знания и понимания того, как это работает, ты не сможешь подправить скрипт, чтобы он исполнялся на других системах или делал то, что ты хочешь.
Что такое stunnel
Stunnel — это утилита для обеспечения защищенного соединения между клиентом и сервером посредством TLS для программ, которые сами шифровать трафик не умеют. Например, можно туннелировать трафик для netcat , vnc и даже bash . В нашем случае stunnel будет использоваться для маскировки трафика OpenVPN под «чистый» TLS, чтобы его было невозможно определить посредством DPI и, следовательно, заблокировать.
Трафик, туннелируемый через stunnel, ничем не отличается от обычного HTTPS
С учетом того что OpenVPN использует шифрование для своего канала данных, у нас есть два варианта настройки:
- использовать шифрование stunnel плюс шифрование канала данных OpenVPN;
- использовать шифрование stunnel, а шифрование канала данных OpenVPN отключить.
Таким образом, в первом варианте получается два слоя: один от stunnel, второй от OpenVPN. Этот вариант позволит использовать RSA вместе с ECDSA. Недостаток в том, что тратится больше ресурсов, и второй вариант позволит этого избежать. В любом случае настройка stunnel остается неизменной.
Что нам понадобится
Провайдер VPS
Первым делом нужно выбрать провайдера, который нам предоставит виртуальный выделенный сервер (VPS). Что выбирать — дело каждого и зависит от страны и от того, сколько ты готов платить. Главная рекомендация — выбирай страну, наиболее близкую по географическому расположению, это сведет задержку к минимуму. Но, конечно, живя в Китае, покупать сервис в Индии или Пакистане смысла мало.
Выбор ОС
Я буду использовать RHEL 7.4. Для точного копирования команд из статьи годится и CentOS 7 (1708), так как это бесплатная и почти идентичная копия RHEL, основанная на его коде. Возможно, подойдут другие дистрибутивы, а также производные RHEL (Fedora), но пути конфигурационных файлов и версии программ могут отличаться.
Подготовка и первичная настройка
После покупки сервера и установки системы нам нужно попасть на сервер. Я буду делать это с помощью SSH. Вся конфигурация будет проходить в два этапа: настройка на сервере (включает в себя первичную настройку) и настройка клиентов.
После покупки, скорее всего, тебе дадут доступ по SSH с логином root и паролем. Позже лучше создать обычного пользователя, а рутовые команды выполнять после sudo -i . Нужно это в том числе для защиты от брутфорса — пользователь root общеизвестный, и при попытках брута, вероятней всего, будет использоваться именно он.
Для начала нам понадобится подключить репозиторий EPEL — пакет openvpn лежит именно там.
На RHEL, CentOS, Fedora, OpenSUSE и, возможно, других установлен и включен по умолчанию SELinux. Проверить это можно командой getenforce или sestatus . Чтобы не нырять в дебри его настроек и спастись от возможной головной боли, мы переведем его в режим permissive . В этом режиме он будет оповещать нас о нарушениях политик безопасности, но предпринимать никаких действий не станет. Таким образом, у тебя всегда будет возможность его поизучать. Для этого нужно изменить следующую директиву в файле /etc/selinux/config :
Перезагружаемся и ставим необходимые пакеты:
- iptables-services — файлы .service для управления утилитой iptables ;
- openvpn — сам сервер OpenVPN;
- зачем нужен unzip , попробуй догадаться сам. 🙂
Базовая защита
Поскольку китайские боты и скрипт-киддиз не дремлют и, скорее всего, уже сейчас пробуют подобрать пароль к твоему серверу, перенесем sshd на другой порт и запретим логин от рута. Перед тем как это сделать, нужно убедиться, что в системе существует другой пользователь с доступом по SSH, или добавить нового и установить для него пароль.
где eakj — имя пользователя. В идеале нужно использовать ключи SSH, но в этом случае обойдемся паролем. Не забудь проверить, раскомментирована ли строчка %wheel ALL=(ALL) ALL в файле /etc/sudoers . Теперь изменим следующие директивы в файле /etc/ssh/sshd_config :
Перечитаем конфиги ( systemctl reload sshd ), убедимся, что sshd поднялся без проблем ( systemctl status sshd ), и попробуем открыть дополнительную сессию SSH, не закрывая текущей.
Продолжение доступно только участникам
Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее