Umgang mit verschlüsselten und unverschlüsselten http-Verbindungen über einen einzigen Port

10

Bitte schauen Sie sich das folgende Diagramm an.

Alt-Text

Wie soll das funktionieren?

  • Wenn eine Fernbedienung http: // myhost.com:8080/* anfordert, sollte die Anforderung an den http-Server weitergeleitet werden, der Port 8008 der Loopback-Schnittstelle überwacht. Dies ist der einfache Teil.

  • Wenn ein Remote-Benutzer http: // myhost.com:8080/specialurl anfordert ...

    • Das Programm, das als Gateway auf Anwendungsebene fungiert, sollte in der Lage sein, die Verbindung zu einer verschlüsselten Sitzung zu aktualisieren ( ohne die Ports zu ändern ).

    • Nach dem Einrichten einer verschlüsselten Sitzung mit dem Remote-Browser sollte die Anforderung an das C-Programm weitergeleitet werden, das Port 8000 der Loopback-Schnittstelle überwacht

Meine Fragen sind :

  1. Haben Sie jemals eine solche Lösung in einer Produktionsumgebung bereitgestellt? Wenn Sie haben...
  2. Welches Produkt haben Sie als Anwendungsgateway verwendet?
  3. Könnten Sie ein Konfigurationsbeispiel angeben?

Harte Einschränkungen :

  • Ich habe keine Kontrolle über die Firewall und der einzige Port, über den ich externen Datenverkehr in den internen Server leiten kann, ist 8080. Die Portnummer ist irrelevant. Die Sache ist, dass auf Firewall-Ebene nur ein Port offen ist, der eingehende Daten weiterleitet Datenverkehr zum internen Server.
  • Auf dem internen Server muss Linux ausgeführt werden (derzeit wird Debian Lenny ausgeführt).
  • Remotebenutzer sollten lediglich einen aktuellen Webbrowser und eine Internetverbindung benötigen, um auf diesen Server zugreifen zu können. Dies bedeutet, dass die Weiterleitung von Reverse-Ports über SSH hier keine Option ist.
  • Ich benötige ein Produkt, das in der Produktion getestet wurde und problemlos bereitgestellt werden kann. Ich möchte kein eigenes Anwendungsgateway entwickeln (wenn dies der Fall wäre, würde ich diese Frage wahrscheinlich bei Stack Overflow stellen, anstatt sie bei Server Fault zu stellen).

Weiche Einschränkungen :

  • Ich möchte vermeiden, Apache als Anwendungsgateway zu verwenden (obwohl ich dazu bereit bin, wenn dies die einzig mögliche Wahl ist).
  • Wenn möglich, sollte das Anwendungsgateway ein ausgereiftes Open-Source-Softwareprodukt sein.

Bisher getestete Produkte als Anwendungsgateways (ohne Erfolg)

  • Nginx
  • lighttpd
  • Pfund

Relevante RFCs

  • RFC2817 (... erklärt, wie der Upgrade-Mechanismus in HTTP / 1.1 verwendet wird, um Transport Layer Security (TLS) über eine vorhandene TCP-Verbindung zu initiieren. Dadurch kann ungesicherter und gesicherter HTTP-Verkehr denselben bekannten Port gemeinsam nutzen ...)
  • RFC2818 (... beschreibt die Verwendung von TLS zum Sichern von HTTP-Verbindungen über das Internet. Derzeit wird HTTP über SSL (der Vorgänger von TLS) geschichtet, wobei gesicherter Verkehr von unsicherem Verkehr durch die Verwendung eines anderen Server-Ports unterschieden wird ... )
Alemartini
quelle
"Wenn ein Remotebenutzer http: // myhost.com:8080/specialurl anfordert ... Das Programm, das als Gateway auf Anwendungsebene fungiert, sollte in der Lage sein, die Verbindung zu einer verschlüsselten Sitzung zu aktualisieren (ohne die Ports zu ändern)" ... wie ist das? das auf der clientseite möglich? Unterstützt ein Client-Browser das Ausführen von SSL über eine URL, die kein https enthält?
Adam Brand
Hallo Adam, und danke, dass du deinen Kommentar hinterlassen hast. Nach der Anforderung von myhost.com:8080/specialurl sollte der Browser zu myhost.com:8080/specialurl umgeleitet werden . Bei anderen Browsern bin ich mir nicht sicher, aber neuere Versionen von Opera und Firefox scheinen dies ohne Probleme zu unterstützen.
Alemartini

Antworten:

1

Ein Port, der sie alle regiert, zeigt, dass jemand ihn zumindest in der Java-Welt implementiert hat.

Haben Sie jemals eine solche Lösung in einer Produktionsumgebung bereitgestellt?

Ich habe es nicht - und ich würde es auch niemals empfehlen. Als Berater versuche ich meine Kunden zu ermutigen, standardisierte und bewährte Technologien einzusetzen. Kein System scheint diese RFCs richtig zu implementieren, außer in Randfällen - und das würde ich nicht vorschlagen oder unterstützen wollen.

SirStan
quelle
Hallo Stan, und danke für das Feedback. Grizzly war mir nicht bekannt und ich kenne Java leider nicht. Haben Sie jemals eine solche Lösung in einer Produktionsumgebung bereitgestellt? Es wäre großartig, wenn Sie ein Beispiel teilen könnten, das zeigt, wie es geht. Nochmals vielen Dank, Alex.
Alemartini
Ok, danke, dass Sie Ihre Antwort bearbeitet und weitere Informationen hinzugefügt haben. Wie Sie sehen können, habe ich meine Frage jetzt eingegrenzt und klarer festgestellt, dass ich nach einem ausgereiften Produkt suche. Mal sehen, ob jemand eine gute Antwort auf diese Frage findet. Es ist kaum zu glauben, dass Apache die einzige Anwendung in der Linux-Welt ist, die RFC2817 unterstützt. Aber wenn dies der Fall ist oder wenn niemand sonst Erfahrung in der Praxis hat, so etwas mit einem anderen Produkt zu implementieren, habe ich wahrscheinlich keine andere Wahl, als zu versuchen, dies mit Apache zu lösen.
Alemartini
0

Apache wird dir hier nicht helfen. Es kann nur auf HTTP- oder HTTPS-Verbindungen (nicht auf beide) an einem bestimmten Port warten.

Soweit ich weiß, gibt es kein "ausgereiftes Produkt", das diese Funktionalität implementiert. Lassen Sie sich von Ihrem Netzwerkadministrator ein weiteres Loch in die Firewall schlagen oder richten Sie einen VPN- oder SSH-Tunnel zu einem externen Endpunkt ein, an dem Sie mehrere Überwachungsports einrichten können.

Dämmerung -inaktiv-
quelle