Поиск по сайту:

SSLH — используйте один и тот же порт для HTTPS и SSH

В этом кратком руководстве мы увидим, что такое SSLH, как установить SSLH и как настроить SSLH для использования одного и того же порта для https и ssh в Linux и Unix-подобных системах. операционные системы.

Что такое SSLH?

Некоторые интернет-провайдеры и корпоративные компании могли заблокировать большинство портов и разрешить только некоторым конкретным портам, таким как порт 80 и 443, для повышения безопасности.

В таких случаях у нас нет выбора, кроме как использовать один и тот же порт для нескольких программ, скажем, порт HTTPS 443, который редко блокируется. Здесь на помощь приходит SSLH, мультиплексор SSL/SSH.

SSLH будет прослушивать входящие соединения через порт 443. Проще говоря, SSLH позволяет нам запускать несколько программ или служб через порт 443 в системе Linux. Таким образом, вы можете одновременно использовать SSL и SSH, используя один и тот же порт.

Если вы когда-либо оказывались в ситуации, когда большинство портов блокируются брандмауэрами, вы можете использовать SSLH для доступа к удаленному серверу.

Установите SSLH в Linux

SSLH входит в состав большинства дистрибутивов Linux, поэтому вы можете установить его с помощью менеджеров пакетов по умолчанию.

В Debian, Ubuntu, Linux Mint и Pop OS запустите:

sudo apt install sslh

При установке SSLH вам будет предложено запустить sslh как службу inetd или как автономный сервер.

Каждый выбор имеет свои преимущества. При небольшом количестве подключений в день, вероятно, лучше запустить sslh из inetd, чтобы сэкономить ресурсы.

С другой стороны, при большом количестве соединений sslh должен работать как автономный сервер, чтобы избежать создания нового процесса для каждого входящего соединения.

Установить SSLH

В Arch Linux и его производных, таких как Antergos, Manjaro Linux, установите его с помощью Pacman, как показано ниже.

sudo pacman -S sslh

В RHEL, CentOS, AlmaLinux и Rocky Linux необходимо добавить EPEL репозиторий, а затем установите SSLH, как показано ниже.

sudo dnf install epel-release
sudo dnf install sslh

В Fedora:

sudo dnf install sslh

Если он недоступен в репозиториях по умолчанию, вы можете вручную скомпилировать и установить SSLH, как описано здесь.

Настройте веб-серверы Apache или Nginx

Как вы уже знаете, веб-серверы Apache и Nginx по умолчанию прослушивают все сетевые интерфейсы (т. е. 0.0.0.0:443). Нам нужно изменить этот параметр, чтобы веб-сервер прослушивал только интерфейс localhost (т. е. 127.0.0.1:443 или localhost:443 ). ).

Для этого отредактируйте файл конфигурации веб-сервера (nginx или apache) и найдите следующую строку:

listen 443 ssl;

И измените его на:

listen 127.0.0.1:443 ssl;

Если вы используете Virutalhosts в Apache, убедитесь, что вы его тоже изменили.

VirtualHost 127.0.0.1:443

Сохраните и закройте файлы конфигурации. Не перезапускайте службы. Мы еще не закончили.

Настроить SSLH

После того, как вы настроили веб-серверы для прослушивания только локального интерфейса, отредактируйте файл конфигурации SSLH:

sudo vi /etc/default/sslh

Найдите следующую строку:

Run=no

И измените его на:

Run=yes

Затем прокрутите немного вниз и измените следующую строку, чтобы разрешить SSLH прослушивать порт 443 на всех доступных интерфейсах (например, 0.0.0.0:443).

DAEMON_OPTS="--user sslh --listen 0.0.0.0:443 --ssh 127.0.0.1:22 --ssl 127.0.0.1:443 --pidfile /var/run/sslh/sslh.pid"

Где,

  • --user sslh: требуется запуск под указанным именем пользователя.
  • --listen 0.0.0.0:443 : SSLH прослушивает порт 443 на всех доступных интерфейсах.
  • --sshs 127.0.0.1:22 : направить SSH-трафик на порт 22 на локальном хосте.
  • --ssl 127.0.0.1:443 : маршрутизировать HTTPS/SSL-трафик на порт 443 на локальном хосте.

Сохраните и закройте файл.

Наконец, включите и запустите службу sslh, чтобы обновить изменения.

sudo systemctl enable sslh
sudo systemctl start sslh

Тестирование

Проверьте, прослушивает ли демон SSLH 443.

$ ps -ef | grep sslh 
sslh 2746 1 0 15:51 ? 00:00:00 /usr/sbin/sslh --foreground --user sslh --listen 0.0.0.0 443 --ssh 127.0.0.1 22 --ssl 127.0.0.1 443 --pidfile /var/run/sslh/sslh.pid
sslh 2747 2746 0 15:51 ? 00:00:00 /usr/sbin/sslh --foreground --user sslh --listen 0.0.0.0 443 --ssh 127.0.0.1 22 --ssl 127.0.0.1 443 --pidfile /var/run/sslh/sslh.pid
sk 2754 1432 0 15:51 pts/0 00:00:00 grep --color=auto sslh

Теперь вы можете получить доступ к своему удаленному серверу через SSH, используя порт 443:

ssh -p 443 sk@192.168.225.50

Пример вывода:

sk@192.168.225.50's password: 
Welcome to Ubuntu 18.04.2 LTS (GNU/Linux 4.15.0-55-generic x86_64)

* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage

System information as of Wed Aug 14 13:11:04 IST 2019

System load: 0.23 Processes: 101
Usage of /: 53.5% of 19.56GB Users logged in: 0
Memory usage: 9% IP address for enp0s3: 192.168.225.50
Swap usage: 0% IP address for enp0s8: 192.168.225.51

* Keen to learn Istio? It's included in the single-package MicroK8s.

https://snapcraft.io/microk8s

61 packages can be updated.
22 updates are security updates.


Last login: Wed Aug 14 13:10:33 2019 from 127.0.0.1

Доступ к удаленным системам через SSH, используя порт 443.

Видеть? Теперь я могу получить доступ к удаленному серверу через SSH, даже если порт SSH по умолчанию 22 заблокирован. Как вы видите в приведенном выше примере, я использовал порт https 443 для SSH-соединения. Кроме того, мы можем использовать тот же порт 443 для соединений openVPN.

Заключение

Я протестировал SSLH на своем сервере Ubuntu 18.04 LTS, и он работал нормально, как описано выше. Я тестировал SSLH в защищенной локальной сети, поэтому мне пока не известны проблемы безопасности. Если вы используете его в производстве, сообщите нам о преимуществах и недостатках использования SSLH в разделе комментариев ниже.

Для получения более подробной информации посетите официальную страницу GitHub, приведенную ниже.

Ресурс:

  • Репозиторий SSLH на GitHub

Рекомендуем прочитать:

  • Как подключиться по SSH к определенному каталогу в Linux
  • Как создать псевдоним SSH в Linux
  • Как настроить аутентификацию на основе ключей SSH в Linux
  • Как предотвратить разрыв сеанса SSH в Linux
  • Разрешить или запретить доступ по SSH определенному пользователю или группе в Linux
  • 4 способа сохранить выполнение команды после выхода из сеанса SSH
  • ScanSSH — быстрый SSH-сервер и открытый прокси-сканер

Статьи по данной тематике