GNU/Linux >> Znalost Linux >  >> Linux

SSLH – Sdílejte stejný port pro HTTPS a SSH

V tomto krátkém tutoriálu uvidíme, co je SSLH, jak nainstalovat SSLH a jak nakonfigurovat SSLH pro sdílení stejného portu pro https a ssh v operačních systémech Linux a Unix.

Co je SSLH?

Někteří poskytovatelé internetových služeb a korporátní společnosti možná zablokovali většinu portů a povolili pouze několik konkrétních portů, jako je port 80 a 443, aby zpřísnili zabezpečení.

V takových případech nemáme jinou možnost, ale použít stejný port pro více programů, řekněme port HTTPS 443 , který je zřídka blokován. Zde je SSLH , SSL/SSH multiplexer, přichází na pomoc.

SSLH bude naslouchat příchozím připojením na portu 443. Jednoduše řečeno, SSLH nám umožňuje spouštět několik programů nebo služeb na portu 443 v systému Linux. Takže můžete současně používat SSL i SSH pomocí stejného portu.

Pokud jste se někdy dostali do situace, kdy je většina portů blokována firewally, můžete pro přístup ke vzdálenému serveru použít SSLH.

Nainstalujte SSLH v Linuxu

SSLH je součástí balíčku pro většinu distribucí Linuxu, takže jej můžete nainstalovat pomocí výchozích správců balíčků.

V Debianu , Ubuntu , Linux Mint a Pop OS , spustit:

$ sudo apt install sslh

Při instalaci SSLH budete dotázáni, zda chcete sslh spouštět jako službu od inetd, nebo jako samostatný server.

Každá volba má své výhody. S pouze několika připojeními za den je pravděpodobně lepší spouštět sslh z inetd, abyste ušetřili zdroje.

Na druhou stranu, s mnoha připojeními by měl sslh běžet jako samostatný server, aby se zabránilo vytváření nového procesu pro každé příchozí připojení.

V systému Arch Linux a deriváty jako Antergos, Manjaro Linux, nainstalujte jej pomocí Pacman, jak je uvedeno níže.

$ sudo pacman -S sslh

Na RHEL , CentOS , AlmaLinux a Rocky Linux , musíte přidat EPEL úložiště a poté nainstalujte SSLH, jak je znázorněno níže.

$ sudo dnf install epel-release
$ sudo dnf install sslh

Na Fedoře :

$ sudo dnf install sslh

Pokud není k dispozici ve výchozích úložištích, můžete ručně zkompilovat a nainstalovat SSLH, jak je popsáno zde .

Nakonfigurujte webové servery Apache nebo Nginx

Jak již víte, webové servery Apache a Nginx budou naslouchat na všech síťových rozhraních (tj. 0.0.0.0:443 ) ve výchozím stavu. Toto nastavení musíme změnit, aby webový server naslouchal pouze na rozhraní localhost (tj. 127.0.0.1:443 nebo localhost:443 ).

Chcete-li tak učinit, upravte konfigurační soubor webového serveru (nginx nebo apache) a vyhledejte následující řádek:

listen 443 ssl;

A změňte jej na:

listen 127.0.0.1:443 ssl;

Pokud používáte Virutalhosts v Apache, ujistěte se, že jste to také změnili.

VirtualHost 127.0.0.1:443

Uložte a zavřete konfigurační soubory. Nerestartujte služby. Ještě jsme neskončili.

Nakonfigurujte SSLH

Jakmile nastavíte, aby webové servery naslouchaly pouze místnímu rozhraní, upravte konfigurační soubor SSLH:

$ sudo vi /etc/default/sslh

Najděte následující řádek:

Run=no

A změňte jej na:

Run=yes

Poté přejděte o kousek dolů a upravte následující řádek tak, aby umožnil SSLH naslouchat na portu 443 na všech dostupných rozhraních (např. 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"

Kde,

  • --user sslh :Vyžaduje spuštění pod tímto zadaným uživatelským jménem.
  • --listen 0.0.0.0:443 :SSLH naslouchá na portu 443 na všech dostupných rozhraních.
  • --sshs 127.0.0.1:22 :Směrovat provoz SSH na port 22 na localhost.
  • --ssl 127.0.0.1:443 :Směrovat provoz HTTPS/SSL na port 443 na localhost.

Uložte a zavřete soubor.

Nakonec povolte a spusťte sslh služby pro aktualizaci změn.

$ sudo systemctl enable sslh
$ sudo systemctl start sslh

Testování

Zkontrolujte, zda démon SSLH poslouchá 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

Nyní můžete přistupovat ke vzdálenému serveru přes SSH pomocí portu 443 :

$ ssh -p 443 [email protected]

Ukázkový výstup:

[email protected]'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

Vidět? Nyní mohu přistupovat ke vzdálenému serveru přes SSH, i když je výchozí port SSH 22 je zablokován. Jak vidíte ve výše uvedeném příkladu, použil jsem https port 443 pro připojení SSH. Také můžeme použít stejný port 443 i pro připojení openVPN.

Testoval jsem SSLH na svém serveru Ubuntu 18.04 LTS a fungovalo to dobře, jak je popsáno výše. Testoval jsem SSLH v chráněné místní síti, takže si nejsem vědom bezpečnostních problémů. Pokud jej používáte ve výrobě, dejte nám vědět o výhodách a nevýhodách používání SSLH v sekci komentářů níže.

Další podrobnosti najdete na oficiální stránce GitHubu uvedené níže.


Linux
  1. Jak změnit port SSH v Linuxu

  2. Jak nastavit SSH tunelování

  3. Číst a zapisovat do stejného souboru v Linuxu bez přepisování?

  1. Ssh a oprávnění k domovskému adresáři?

  2. Vypršel časový limit připojení pro Ssh server?

  3. 5 nejlepších SSH a FTP aplikací pro Android pro Linux

  1. Změňte port SSH v CentOS a Red Hat

  2. Jak nakonfigurovat samostatný port pro SSH a SFTP na CentOS/RHEL

  3. nástroj podobný teamvieweru pro ssh?