Ich benötige eine Reverse-Proxy-Lösung für SSH

10

Hallo, hier ist eine Situation, in der ich einen Server in einem Unternehmensdatenzentrum für ein Projekt habe. Ich habe einen SSH-Zugriff auf diese Maschine an Port 22. Auf diesem Server werden einige virtuelle Maschinen ausgeführt, und dann stehen alle anderen Betriebssysteme auf der Rückseite. Da ich mich hinter der Firewall des Rechenzentrums befinde, fragte mich mein Vorgesetzter, ob ich etwas tun kann, mit dem ich vielen Personen im Internet direkten Zugriff auf diese virtuellen Maschinen gewähren kann. Ich weiß, wenn ich Verkehr auf einem anderen Port als 22 erhalten durfte, kann ich eine Portweiterleitung durchführen. Aber da mir das nicht erlaubt ist, was kann in diesem Fall eine Lösung sein. Die Leute, die sich verbinden möchten, könnten komplette Idioten sein. Wer kann glücklich sein, wenn er nur Kitt an seinen Maschinen öffnet, oder sogar Filezilla sein.

Ich habe keine Firewall in der Hand oder einen anderen Port als 22 geöffnet, und selbst wenn ich darum bitte, dass sie nicht geöffnet werden dürfen. 2-mal SSH ist nichts, was mein Vorgesetzter möchte.

Bindung
quelle
1
verwandte Frage mit einer anderen großartigen Lösung: serverfault.com/questions/361794/…
Kaii
SSH Reverse Proxy github.com/tg123/sshpiper
Bauer1992
sshpiperd funktioniert super!
Király István

Antworten:

5

Sie sollten den SSH-Tunnel von Ihrem Computer zum Server im Rechenzentrum öffnen. Nennen wir dies "server1". Wenn Sie openssh verwenden, können Sie einfach ausführen

ssh -L0.0.0.0:8080:localhost:8080 you_username@server1

Dadurch wird die Verbindung von Ihrem Computer an Port 8080 zum Server, Port 8080, geöffnet und die Firewall dazwischen übersprungen. Angenommen, Ihr Apache überwacht Port 8080. Das Portweiterleitungsformat überwacht IP: lokaler Port: Remote-Adresse: Remote-Port. Natürlich können Sie auch für einzelne Server verwenden

ssh -L0.0.0.0:8080:remote_server_address:8080 you_username@server1

Bitte beachten Sie, dass localhost im Parameter -L relativ zu server1 ist. Mit anderen Worten, der Server sieht Verbindungen, die von localhost kommen, obwohl diese tatsächlich von Ihrem Computer über eine SSH-Verbindung kommen.

Sie benötigen auch Parameter

AllowTcpForwarding yes

in der ssh-Konfiguration des Servers (normalerweise / etc / ssh / sshd_config).

Danach können andere über Port 8080 eine Verbindung zu Ihrem Computer herstellen, um eine Verbindung über Apache Reverse Proxy herzustellen. Wenn Sie einen allgemeinen Proxy benötigen (damit Benutzer die Adresse auswählen können, nicht nur bestimmte Adressen in der Apache-Konfiguration), sollten Sie squid auf Server1 installieren und den SSH-Tunnel zum Squid-Port verwenden.

Olli
quelle
Sie wollen ssh -L0.0.0.0:8080:localhost:8080 you_username@server1 dann sagen, ob die Verbindung noch über Port 22 der Firewall hergestellt wird (denn wenn dies nicht geschieht, kann ich nichts tun) und der SSH-Tunnel zwischen dem lokalen Computer und dem Remote-Computer hergestellt wird an den angegebenen Ports würde aber der gesamte Datenverkehr an der Firewall weiterlaufen (Port 22).
Bond
Wenn Sie den SSH-Tunnel ausführen, wird dieser Datenverkehr (von Port 8080 zu Port 8080) über Port 22 in die SSH-Verbindung geleitet. Die Firewall sieht den Datenverkehr zu Port 22 und nicht zu 8080.
Olli
Wenn Sie diesen Befehl geben, ssh -L0.0.0.0:8080:remote_server_address:8080 you_username@server1 möchte ich wissen, was als remote_server_address eingegeben werden kann, ist die IP des internen Computers, für den ich server1 als Zwischencomputer verwenden möchte. Habe ich das richtig verstanden?
Bond
Bond: Ja, das stimmt. Sie können auch mehrere -L-Tunnel angeben (natürlich mit unterschiedlichen Quellports), um Verbindungen zu mehreren internen Computern herzustellen. Zum Beispiel "-L0.0.0.0: 8080: remote_server1: 80 -L0.0.0.0: 8081: remote_server2: 80 -L0.0.0.0: 8082: remote_server2: 22" (ohne Anführungszeichen).
Olli
Um dies zu gewährleisten, müsste ein Server eingerichtet werden, der als Rebound außerhalb des Rechenzentrums fungiert und Datenverkehr zulässt. Natürlich ist der SSH-Tunnel als temporäre Lösung in Ordnung, aber für etwas in der Produktion würde ich empfehlen, einen echten Reverse-Proxy auf zu installieren den Rebound und passen Sie die Firewall-Einstellung an, um 8080-Verbindungen nur von diesem Rebound zuzulassen. Es ist jedoch klüger, den Reverse-Proxy als eine der virtuellen Maschinen im DC zu platzieren. Damit muss die Verbindung nur zu diesem Computer mit SSL gesichert werden.
jmary
0

Vielleicht könnten Sie etwas wie SshMeIn verwenden . Es ist ein OpenSource-Web-System, das SSH-Tunnel durch Firewalls macht, Sie müssen nicht einmal die Ports öffnen.

Belug
quelle