GNU/Linux >> LINUX-Kenntnisse >  >> Linux

SSLH – Teilen Sie einen gleichen Port für HTTPS und SSH

In diesem kurzen Tutorial werden wir sehen, was SSLH ist, wie SSLH installiert wird und wie SSLH konfiguriert wird, um denselben Port für https und ssh in Linux- und Unix-ähnlichen Betriebssystemen zu teilen.

Was ist SSLH?

Einige Internetdienstanbieter und Unternehmen haben möglicherweise die meisten Ports blockiert und nur einige bestimmte Ports wie Port 80 und 443 zugelassen, um ihre Sicherheit zu erhöhen.

In solchen Fällen bleibt uns nichts anderes übrig, als denselben Port für mehrere Programme zu verwenden, beispielsweise den HTTPS-Port 443 , die selten blockiert wird. Hier ist SSLH , ein SSL/SSH-Multiplexer, hilft dabei.

SSLH wartet auf eingehende Verbindungen auf Port 443. Einfacher ausgedrückt:SSLH ermöglicht es uns, mehrere Programme oder Dienste auf Port 443 auf einem Linux-System auszuführen. Sie können also SSL und SSH gleichzeitig über denselben Port verwenden.

Wenn Sie jemals in einer Situation waren, in der die meisten Ports von den Firewalls blockiert wurden, können Sie SSLH verwenden, um auf Ihren Remote-Server zuzugreifen.

SSLH unter Linux installieren

SSLH ist für die meisten Linux-Distributionen gepackt, sodass Sie es mit den Standardpaketmanagern installieren können.

Auf Debian , Ubuntu , Linux Mint und Pop OS , ausführen:

$ sudo apt install sslh

Während der Installation von SSLH werden Sie gefragt, ob Sie sslh als Dienst von inetd oder als eigenständigen Server ausführen möchten.

Jede Wahl hat ihre eigenen Vorteile. Bei nur wenigen Verbindungen pro Tag ist es wahrscheinlich besser, sslh von inetd aus auszuführen, um Ressourcen zu sparen.

Andererseits sollte sslh bei vielen Verbindungen als eigenständiger Server laufen, um zu vermeiden, dass für jede eingehende Verbindung ein neuer Prozess erzeugt wird.

Auf Arch Linux und Derivate wie Antergos, Manjaro Linux, installieren Sie es mit Pacman wie unten gezeigt.

$ sudo pacman -S sslh

Auf RHEL , CentOS , AlmaLinux und Rocky Linux , müssen Sie EPEL hinzufügen -Repository und installieren Sie dann SSLH wie unten gezeigt.

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

Auf Fedora :

$ sudo dnf install sslh

Wenn es in den Standard-Repositories nicht verfügbar ist, können Sie SSLH wie hier beschrieben manuell kompilieren und installieren .

Apache- oder Nginx-Webserver konfigurieren

Wie Sie bereits wissen, lauschen Apache- und Nginx-Webserver auf allen Netzwerkschnittstellen (z. B. 0.0.0.0:443 ) standardmäßig. Wir müssen diese Einstellung ändern, um den Webserver anzuweisen, nur auf der Localhost-Schnittstelle zu lauschen (d. h. 127.0.0.1:443 oder localhost:443 ).

Bearbeiten Sie dazu die Konfigurationsdatei des Webservers (nginx oder Apache) und suchen Sie die folgende Zeile:

listen 443 ssl;

Und ändern Sie es in:

listen 127.0.0.1:443 ssl;

Wenn Sie Virutalhosts in Apache verwenden, stellen Sie sicher, dass Sie das auch geändert haben.

VirtualHost 127.0.0.1:443

Speichern und schließen Sie die Konfigurationsdateien. Starten Sie die Dienste nicht neu. Wir sind noch nicht fertig.

SSLH konfigurieren

Sobald Sie die Webserver so eingestellt haben, dass sie nur auf der lokalen Schnittstelle lauschen, bearbeiten Sie die SSLH-Konfigurationsdatei:

$ sudo vi /etc/default/sslh

Suchen Sie die folgende Zeile:

Run=no

Und ändern Sie es in:

Run=yes

Scrollen Sie dann ein wenig nach unten und ändern Sie die folgende Zeile, damit SSLH Port 443 auf allen verfügbaren Schnittstellen abhören kann (z. B. 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"

Wo,

  • --user sslh :Muss unter diesem angegebenen Benutzernamen ausgeführt werden.
  • --listen 0.0.0.0:443 :SSLH lauscht auf Port 443 auf allen verfügbaren Schnittstellen.
  • --sshs 127.0.0.1:22 :SSH-Verkehr an Port 22 weiterleiten auf dem lokalen Host.
  • --ssl 127.0.0.1:443 :HTTPS/SSL-Verkehr an Port 443 leiten auf dem lokalen Host.

Speichern und schließen Sie die Datei.

Schließlich aktivieren und starten Sie sslh Dienst, um die Änderungen zu aktualisieren.

$ sudo systemctl enable sslh
$ sudo systemctl start sslh

Testen

Überprüfen Sie, ob der SSLH-Daemon auf 443 lauscht .

$ 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

Jetzt können Sie über Port 443 per SSH auf Ihren Remote-Server zugreifen :

$ ssh -p 443 [email protected]

Beispielausgabe:

[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

Sehen? Ich kann jetzt über SSH auf den Remote-Server zugreifen, auch wenn der Standard-SSH-Port 22 ist blockiert. Wie Sie im obigen Beispiel sehen, habe ich den https-Port 443 verwendet für SSH-Verbindung. Außerdem können wir denselben Port 443 verwenden auch für openVPN-Verbindungen.

Ich habe SSLH auf meinem Ubuntu 18.04 LTS-Server getestet und es hat wie oben beschrieben einwandfrei funktioniert. Ich habe SSLH in einem geschützten lokalen Netzwerk getestet, daher sind mir die Sicherheitsprobleme nicht bekannt. Wenn Sie es in der Produktion verwenden, teilen Sie uns die Vor- und Nachteile der Verwendung von SSLH im Kommentarbereich unten mit.

Weitere Einzelheiten finden Sie auf der unten angegebenen offiziellen GitHub-Seite.


Linux
  1. Lesen und schreiben Sie in dieselbe Datei unter Linux, ohne sie zu überschreiben?

  2. Berechtigungen für SSH- und Home-Verzeichnisse?

  3. 5 beste SSH- und FTP-Android-Apps für Linux

  4. Ändern Sie den SSH-Port in CentOS und Red Hat

  5. So konfigurieren Sie einen separaten Port für SSH und SFTP auf CentOS/RHEL

So verbinden und teilen Sie Daten zwischen zwei Linux-Systemen

SSH-Tunneling und Proxying

So ändern Sie den Standard-SSH-Port in Linux [richtig und sicher]

Ändern Sie Ihren SSH-Port in Ubuntu und Debian

Wie ändere ich den SSH-Port auf Centos 7.x?

Wie ändere ich den SSH-Port auf Ubuntu?