SSLH: Verstecken Sie SSH / HTTPS / OpenVPN / Telegram hinter einem einzelnen Port 443

Bild

SSH / HTTPS / OpenVPN / Telegramm und alles an einem Port ?! Was ?!
- Ja!
  • Möchten Sie das Vorhandensein einiger Ihrer Dienste verbergen?
  • Ist in einem öffentlichen Wi-Fi-Netzwerk alles außer 443 (https) Ports blockiert?
  • Haben Sie Telegram Proxy / OpenVPN konfiguriert und möchten es nicht "glänzen"?
  • SSH-Verbindung zu Ihrem Server aus zensierten Ländern?

Auf all diese Fragen gibt es nur eine Antwort: Multiplexing von SSL / TLS-Verbindungen oder SSLH.

In diesem Beitrag werden wir uns ansehen, wie Sie eine Reihe von Diensten in einem Befehl hinter einem Port verstecken .

Warum?


Mit der jüngsten Veröffentlichung von Telegram Proxy, die fast vollständig wie SSL-Verkehr aussieht, ist in den Kommentaren zum Beitrag eine interessante Frage aufgetaucht:
Newton :
Ich habe eine ziemlich noob Frage - ist es wirklich nicht möglich, dies mit sslh zusammenzubringen?
Nach einer kurzen Überprüfung der Funktionen der sslh-Anwendung schien es mir, dass ich sie nicht starten konnte, aber ich war sehr an dieser Anwendung interessiert, und wie sich herausstellte, kann ich sie immer noch mit einem Igel kreuzen .

Wie?


Die SSLH-Anwendung ist ein Multiplexer. Mit anderen Worten, sie analysiert den Datenverkehr (führt tatsächlich Mini-DPI-Arbeit aus) und sendet ihn je nach Art des Datenverkehrs an den lokalen Port 8443/999/991 oder einen anderen ...

Damit können wir die DPI-Technologie zum ersten Mal zum Vorteil einsetzen .

Herausforderung


Als Beispiel für die Verwendung von SSLH legen wir die Aufgabe fest:

Die folgenden Anwendungen sind auf dem Server installiert - Telegram Proxy, Apache, SSH, und wir möchten alle diese Dienste über Port 443 in die Welt lassen.

Der Server in unserem Beispiel ist Ubuntu 16.04.4 LTS, Apache2 + LetsEncrypt, SSH, Telegramm-Proxy in Docker.

Im Moment arbeitet Apache daran, wie es sein sollte.

Installation & Setup


Installieren Sie SSLH:

sudo apt-get install --no-install-recommends sslh 

Während der Installation wird eine Frage zum Nutzungsmodus gestellt. Es gibt zwei davon:

  • stabil aber ressourcenintensiver
  • schnell, aber mit Verbindungsverlust, wenn der Prozess fällt

Ich bin für die zweite Option, natürlich können Sie eine andere wählen.

Überprüfen Sie, ob unser Wunder mit dem folgenden Befehl funktioniert:

 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 - externer IP-Server
8443 - Port, an dem unser Multiplexer gestartet wird
443 - wo Apache lebt
Achten Sie auf die Option anyprot - hier befindet sich unser Telegramm-Proxy, dh wenn der Datenverkehr zu keinem Typ passt - senden Sie ihn dorthin.

Achtung! Wenn Ihre Konfiguration kein Telegramm oder SSH enthält, entfernen Sie die zusätzlichen Startschlüssel.

Probieren Sie es aus?


Öffnen Sie einen Browser an Ihrer Serveradresse mit Port 8443 - Sie sollten eine Antwort von Apache sehen und dann versuchen, eine Verbindung über SSH oder über Telegram Proxy herzustellen.

Apache auf einen anderen Port portieren


Besuchen Sie die folgenden Dateien, um Apache vom Standardport (443) auf einen anderen zu übertragen, z. B. auf 7443:

 sudo nano /etc/apache2/ports.conf sudo nano /etc/apache2/sites-enabled/000-default-le-ssl.conf 

In diesem Beispiel wurde Apache + SSL / HTTPS mithilfe von LetsEncrypt mit einem anderen Zertifikat installiert. Die Konfigurationsdateien können auf andere Weise erstellt werden.

Autostart


Es ist Zeit, Autorun einzurichten.

Bearbeiten Sie die Datei:

 sudo nano /etc/default/sslh 

Fügen Sie im Feld DAEMON_OPTS = Attribute hinzu, wenn Sie den Befehl sslh-select ausführen, und setzen Sie RUN auf = yes.

Ausführen:

 sudo systemctl start sslh 

Stellen Sie sicher, dass alles in Ordnung ist:

 sudo systemctl status sslh 

Was ist das Ergebnis?


Nach Abschluss dieses Lernprogramms sollten Sie über einen Server verfügen, auf dem mehrere Dienste über einen einzigen Port verfügbar sind (welcher Ihrer Wahl) .

Was ist mit OpenVPN? Welche Protokolle kann die Anwendung noch ausführen?


Zum Zeitpunkt des Schreibens kann sslh die folgenden Protokolle erkennen und multiplexen:
 [--ssh <addr>] [--openvpn <addr>] [--tinc <addr>] [--xmpp <addr>] [--http <addr>] [--ssl <addr>] [--tls <addr>] [--anyprot <addr>] 

Bevor Sie es verwenden, sollten Sie sicherstellen, welche Protokolle Ihre Version unterstützt (plötzlich ist es neuer). Verwenden Sie dazu:

 sslh-select -h 


Referenzen


Die SSLH-Entwicklung findet auf github in diesem Repository statt: github.com/yrutschle/sslh

Docker


Es ist mir nicht gelungen, die Arbeitsversion von sslh in Docker zusammen mit allen anderen Diensten zu sammeln. Meiner Meinung nach wird die Docker-Compose- Datei, die auf Port 443 ausgelöst werden kann, interessant sein:
  • Apache + LetsEncrypt
  • Telegramm-Proxy
  • OpenVPN (optional)
  • Verwenden Sie lokales SSH


Wenn es jemandem gelingt - schreiben Sie in die Kommentare - fügen Sie dem Artikel hinzu, meiner Meinung nach wird es nützlich sein.

Sie könnten auch interessiert sein.


Source: https://habr.com/ru/post/de412779/


All Articles