Wann Reverse Proxy verwenden?

#1
Hi!

Mich beschäftigt das Thema Reverse Proxy immer noch. Mir ist nicht klar, wann genau man ihn zwischen Internet und Gerät im LAN verwenden soll.

Zum Beispiel geht es darum, einen RasPi mit Kodi aus einem fremden LAN heraus erreichbar zu machen. (oder auch OpenHAB.) Zum Streamen von Videos könnte ich per SFTP darauf zugreifen. Zum Streamen von Live TV müsste ich wohl Port 9981 und 9982 im Router öffnen/weiterleiten. Nun lese ich im Netz, dass man generell Geräte nicht per Port Forwarding vom Internet aus erreichbar machen soll. Warum eigentlich genau? Und was bringt der Reverse Proxy dann? :confused:

Hier nochmal das Schema:

LAN1 (Kodi -> Router) -> Internet -> DynDNS -> LAN2 (Router -> Kodi, NAS)

Danke, Titus
 

danton

Debian User
#2
Die technischen Gründe für einen Reverse-Proxy sind vielfältig. Einige Beispiele:
  • HTTPS-Verbindung zur einem Webserver, der nur HTTP kann (im LAN kann man evtl. darauf verzichten)
  • HTTP(S)-Verbindungen zu verschiedenen Hosts im LAN anhand des Names (der Proxy verteilt anhand der mitgesendeten Domain auf unterschiedliche PCs)
  • Absicherung von Embeded WebServern (Passwort-Schutz, Zugriffe von IPs filtern, Zugriff auf Sicherheitslücken unterbinden, usw.)
Du kannst aber nicht alles per Reverse-Proxy erledigen, das hängt vom verwendeten Protokoll ab, ob es dafür überhaupt einen Reverse-Proxy gibt. Dein Beispiel mit den beiden Kodis könnte sich z.B. auch über einen SSH-Tunnel zwischen beiden RasPis umsetzen oder eine VPN-Verbindung. Nur die Diensten aus dem Internet erreichbar machen, bei denen es zwingend sein muss.
 
#3
Die technischen Gründe für einen Reverse-Proxy sind vielfältig. Einige Beispiele:
  • ...
  • HTTP(S)-Verbindungen zu verschiedenen Hosts im LAN anhand des Names (der Proxy verteilt anhand der mitgesendeten Domain auf unterschiedliche PCs)
  • ...
Mit "mitgesendeten Domain" meinst du Subdomain? Wenn ja, habe ich auch schon so genutzt. Also zum Beispiel vcr.domain.de oder nas.domain.de. Ein VPN-Zugang nutze ich scho für andere Zwecke. Ich möchte aber nicht, dass vom fremden LAN aus gleich auf mein komplettes LAN (und nicht nnur auf den Kodi-Server) zugegegriffen werden kann. Außerdem nehme ich an, dass ich dann jedes mal erst den Tunnel öffnen muss? Oder??
 

danton

Debian User
#4
Mitgesendete Domains können Subdomains oder auch komplett unterschiedliche Domains sein - für das HTTP-Protokoll und SNI gibt es da keine Unterscheidung. Die Domains müssen nur im DNS auf die IP des Reverse-Proxys auflösen und in diesem natürlich entsprechend konfiguriert sein.
Bezüglich VPN und vollständigem Zugriff auf dein LAN: Das hängt von deinem VPN-Server ab, inwieweit du da Zugriffsregeln definieren kannst. Ich nutzt z.B. daheim OpenVPN unter Linux als VPN-Server und abhängig vom verbundenen Client konfiguriere ich die Linux-Firewall per iptables. Und natürlich kannst du Dienste, die nur über das VPN verfügbar sind, auch nur erreichen, wenn ein Tunnel aufgebaut ist - das liesse sich ja automatisieren.
Bezüglich deines Live-TV-Beispiels: Wie willst du sicherstellen, dass sich nur legitime Clients an die Ports hängen, über die gestreamt wird? Ist das Programm, welches das LiveTV bereitstellt, auch sicher und hat keine Sicherheitslücken, die man über die freigegebenen Ports ausnutzen könnte. Wenn eine existiert, wird sie früher oder später auch ausgenutzt! Bester Schutz: Der Zugriff auf dein LiveTV nur den Clients gestatten die auch vertrauenswürdig sind, z.B. über einen SSH- oder VPN-Tunnel.
 
#5
Das klingt gut. Weil der Client keine feste IP hat, kann ich in der Firewall des Servers darauf aber nicht testen. Ich müsste dann was mit Keys oder so machen.

Mir ist noch nicht klar, warum VPN sicherer als zum Beispiel SFTP sein soll. Beides sind doch Datenströme auf einem verschlüsselten, authentifizierten Kanal? Beides mit Kennwort und/oder Key-Authentication.

Müsste ich dann OpenVPN auf dem Kodi-Server installieren?
 

danton

Debian User
#6
SFTP ist ähnlich sicher wie eine VPN-Verbindung, wird ja über SSH getunnelt. Den SSH-Tunnel kannst du natürlich auch verwenden, um Ports des Systems, zu dem die SSH-Verbindung besteht, auf ein anderes System weiterzuleiten. Brauchst du Zugriff auf Dienste auf unterschiedlichen Systemen, benötigst du zu jedem eine SSH-Verbindung.
Ob du OpenVPN auf deinem Kodi-System installieren musst, weiss ich nicht. Du schreibst, dass du schon VPN nutzt. Da musst du mal schauen, was deine vorhandene VPN-Lösung dir für Möglichkeiten bietet. Wie ich schon schrieb, steuere ich die Zugriffe mit Firewall-Regeln auf meinem VPN-Server und schränke dort den Zugriff der VPN-IP des VPN-Clients entsprechend ein, wenn er nur eingeschränkten Zugriff haben darf.
Es gibt nicht die Superlösung für alle Dinge. Manchmal geht es nur per Port-Weiterleitung, manchmal per Reverse-Proxy, SSH-Tunnel oder per VPN. Und auch damit hört die Liste der Möglichkeiten nicht auf. Es kommt drauf an, was man erreichen will, wie die Bedingungen vor Ort sind und auch, was man investieren will. Und dann natürlich die Balance zwischen Sicherheit und Komfort finden...
 
Top