⚡ SSLH – общий порт для HTTPS и SSH |

⚡ SSLH – общий порт для HTTPS и SSH

Мануал

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

Проще говоря, SSLH позволяет нам запускать несколько программ / служб через порт 443 в системе Linux.

Таким образом, вы можете использовать как SSL, так и SSH, используя один и тот же порт одновременно.

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

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

SSLH – общий порт для HTTPS, SSH и OpenVPN

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

В Debian, Ubuntu и его производных выполните:

$ sudo apt-get install sslh

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

Каждый выбор имеет свои преимущества.

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

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

На Arch Linux и его производных, таких как Antergos, Manjaro Linux, установите его с помощью Pacman, как показано ниже.
$ sudo pacman -S sslh

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

$ sudo yum install epel-release
$ sudo yum 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

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

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, даже если заблокирован стандартный порт SSH 22.
Как вы видите в приведенном выше примере, я использовал https порт 443 для подключения SSH.
Также мы можем использовать тот же порт 443 и для соединений openVPN.

Пожалуйста, не спамьте и никого не оскорбляйте. Это поле для комментариев, а не спамбокс. Рекламные ссылки не индексируются!
Добавить комментарий

  1. 3wix-blabla

    классны пост, вопрос как включить логирование? облазил кучу сайтов или не смог настроить или не понял как

    Ответить
    1. cryptoparty автор
      Ответить