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

в 6:41, , рубрики: SSLH, информационная безопасность
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 порт.

Сервер в нашем примере — Ubuntu 16.04.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

Что в итоге?

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

Автор: shifttstas

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js