Главная » Хабрахабр » SSLH: Прячем SSH/HTTPS/OpenVPN/Telegram за единым портом 443

SSLH: Прячем SSH/HTTPS/OpenVPN/Telegram за единым портом 443

image

Что?!
— Да! SSH/HTTPS/OpenVPN/Telegram и всё на одном порту?!

  • Хотите скрыть наличее у вас некоторых сервисов?
  • В публичной wi-fi сети блокируется всё кроме 443 (https) порта?
  • Настроили Telegram Proxy/OpenVPN и не хотите его «светить» ?
  • SSH подключение к своему серверу из стран с цензурой?

На все эти вопросы ответ один — Мультиплексирование SSL/TLS соединений, или SSLH.

В посте мы рассмотрим как в 1 команду спрятать кучу сервисов за 1 портом.

Почему?

С недавним выходом Telegram Proxy который почти полностью выглядит как SSL трафик появился интересный вопрос в комментариях к посту:
Newton:

У меня довольно нубский вопрос — а завести это вместе с sslh не реально?

После беглой проверки возможностей приложения sslh мне показалось, что «завести» не удастся, но меня очень заинтересовало это приложение, и, как оказалось, скрестить ужа с ежом «завести» все-таки можно.

Как?

Приложение SSLH — мултиплексор, другими словами, оно анализируя трафик (фактически выполняя работу mini-DPI) и в зависимости от типа трафика, направляет его в локальный порт 8443/999/991 или любой другой…

Что позволяет нам впервые использовать технологию DPI во благо.

Задача

Для примера использования SSLH поставим задачу:

На сервере установлены следующие приложения — Telegram Proxy, Apache, SSH и все эти сервисы мы хотим пускать в мир через 443 порт.

04. Сервер в нашем примере — Ubuntu 16. 4 LTS, Apache2 + LetsEncrypt,SSH,Telegram Proxy в Docker.

На данный момент, на нем работает, как и положено, Apache.

Установка & Настройка

Установим SSLH:

sudo apt-get install --no-install-recommends sslh

При установке будет задан вопрос о режиме использования, их два:

  • стабильный но более ресурсозатратный
  • быстрый, но с потерей соединений при падении процесса

Я за второй вариант, вы, конечно же, можете выбрать другой.

Проверим, работает ли наше чудо следующей командой:


sudo sslh-select -f --listen IP:8443 --tls 127.0.0.1:443 --ssh 127.0.0.1:22 --anyprot 127.0.0.1:9443

IP — внешний IP сервера
8443 — порт на котором будет запущен наш мултиплексор
443 — там где живет Apache
Обратите внимание на опцию anyprot — именно там будет жить наш Telegram Proxy, другими словами, если трафик не подошел ни под какой тип — отправить туда.

Если в вашей конфигурации отсутствует Telegram или SSH — уберите лишние ключи запуска. Внимание!

Проверим?

Откройте браузер по адресу вашего сервера с портом 8443 — вы должны увидеть ответ от Apache, далее попробуйте подключить по SSH или через Telegram Proxy.

Перенос Apache на другой порт

Для переноса Apache со стандартного порта (443) на другой, например на 7443, посетите следующие файлы:


sudo nano /etc/apache2/ports.conf
sudo nano /etc/apache2/sites-enabled/000-default-le-ssl.conf

В примере Apache+SSL/HTTPS был установлен с использованием LetsEncrypt при другом сертификате конфигурационные файлы могут быть по другим путям.

Автозапуск

Настало время настроить автозапуск.

Отредактируем файл:


sudo nano /etc/default/sslh

В поле DAEMON_OPTS= добавьте атрибуты при запуске команды sslh-select, установите RUN в =yes.

Запустим:


sudo systemctl start sslh

Убедимся, что всё хорошо:


sudo systemctl status sslh

Что в итоге?

После прохождения данного туториала у вас должен был появится сервер, у которого через единый порт доступны сразу несколько служб (какие — на ваш выбор).

А как дела с OpenVPN? какие протоколы еще умеет приложение?

На момент написания поста, sslh умеет определять и мультиплексировать следующие протоколы:

[--ssh <addr>] [--openvpn <addr>] [--tinc <addr>] [--xmpp <addr>] [--http <addr>] [--ssl <addr>] [--tls <addr>] [--anyprot <addr>]

Перед использованием, лучше убедиться, какие протоколы поддерживает ваша версия, (вдруг она новее) используя:

sslh-select -h

Ссылки

Разработка SSLH происходит на github, вот в этом репозитории: github.com/yrutschle/sslh

Docker

Собрать рабочий вариант sslh в докере вместе со всеми другими службами у меня не получилось, на мой взгляд будет интересен docker-compose файл который сможет поднять на 443 порту:

  • Apache + LetsEncrypt
  • Telegram Proxy
  • OpenVPN (опционально)
  • Использовать локальный SSH

Если у кого то это получится — пишите в комментариях — добавим в статью, на мой взгляд, это будет полезно.


Оставить комментарий

Ваш email нигде не будет показан
Обязательные для заполнения поля помечены *

*

x

Ещё Hi-Tech Интересное!

[Перевод] UDB. Что же это такое?

Как я уже отметил в статье, про UDB кратко не написать, но можно просто перевести фирменную документацию на него, чтобы познакомить отечественного читателя со столь мощным средством для реализации микропрограммных функций.Но прежде, давайте рассмотрим, что вообще такое PSoC. В комментариях ...

Беспроводные технологии передачи звука на базе Bluetooth: что же лучше?

С развитием технологий так привычные всем «ламповые» аналоговые наушники уходят в историю – их всё больше вытесняют беспроводные собратья на базе Bluetooth. Современные смартфоны лишаются привычного разъёма в угоду влаго- и пылезащищённости. Разработчики выпускают всё новые версии протокола Bluetooth и ...