Weiterleitung mit Apache über Linux-Gateway ohne Portangaben
Hallo Community,
ich stehe mal wieder vor einem kleinen Problem.
Folgende technische Situation ist vorhanden.
- DNS Eintrag für meine-domain.de auf meine statische IP vom Serverstandort
- Router --> externes Netz <-- Ubuntu 14.04 als Firewall (als DMZ Host im Router) --> dahinter dann im internen Netz eine Apache Webserver mit verschiedenen vhosts.
Ich möchte jetzt diese vhosts über das Internet erreichbar machen. Das einfachste wäre Portweiterleitung in der Firewall mit verschiedenen Ports zu nutzen, aber eigentlich möchte ich das vermeiden, da die Endnutzer, welche die Zugriffe benutzen... ich sag mal etwas betagt sind in der Bedienung des Internets & Computers
Fällt euch hierzu eine alternative ein dieses Problem zu lösen?
Gruß und Dank,
Markus
ich stehe mal wieder vor einem kleinen Problem.
Folgende technische Situation ist vorhanden.
- DNS Eintrag für meine-domain.de auf meine statische IP vom Serverstandort
- Router --> externes Netz <-- Ubuntu 14.04 als Firewall (als DMZ Host im Router) --> dahinter dann im internen Netz eine Apache Webserver mit verschiedenen vhosts.
Ich möchte jetzt diese vhosts über das Internet erreichbar machen. Das einfachste wäre Portweiterleitung in der Firewall mit verschiedenen Ports zu nutzen, aber eigentlich möchte ich das vermeiden, da die Endnutzer, welche die Zugriffe benutzen... ich sag mal etwas betagt sind in der Bedienung des Internets & Computers
Fällt euch hierzu eine alternative ein dieses Problem zu lösen?
Gruß und Dank,
Markus
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 305600
Url: https://administrator.de/contentid/305600
Ausgedruckt am: 22.11.2024 um 06:11 Uhr
13 Kommentare
Neuester Kommentar
Häufig gestellte Frage: Lösung: Reverse Proxy mit Squid oder Nginx
Benötigt wird dann nur eine einzige Weiterleitung Port 80/443 auf den Proxy.
Die interne Proxy-Weiterleitung erfolgt dann anhand der Hostheader der Anfragen.
Gruß skybird
Benötigt wird dann nur eine einzige Weiterleitung Port 80/443 auf den Proxy.
Die interne Proxy-Weiterleitung erfolgt dann anhand der Hostheader der Anfragen.
Gruß skybird
Moin,
Wie @Lochkartenstanzer schon richtig schrieb, macht dein vHost das schon. Einfach eine Portweiterleitung. Fertig.
Dein Webserver kümmert sich schon darum, dass die passende Seite ausgeliefert wird. Deine "Firewall" kümmert sich dann darum, dass die TCP-Sessions auch wieder da ankommen, wo sie hin sollen.
Alternativ kannst du natürlich einen Reverse-Proxy auf deiner Firewall nutzen, aber das verkompliziert dein Setup nur unnötig und führt zu unnötig viel Last auf dem Gerät.
Ein Virtual-Host wird innerhalb des HTTP Requests bzw. während des TLS-Handshakes bestimmt und ist somit unabhängig von deiner Firewall. Terminierst du die HTTP-Session auf der Firewall muss diese die Logik kennen um diese Anfragen zu händeln. Also Worker-Prozesse, die die Anfragen behandeln und weiterleiten. Das ist sehr aufwendig und kann für Angriffe auf deine Firewall genutzt werden. Will man also nicht. Bei einer Port Weiterleitung ist die Last auf deiner Firewall wesentlich geringer und der Angriff trifft "nur" deinen Webserver. Das bringt deinen Webserver vielleicht ins Wanken aber deine anderen Anwendungen bleiben aktiv. Außerdem kann man keine Sicherheitslücken in der Webserver-Anwendung nutzen um deine Firewall zu kompromittieren.
Du hattest also eigentlich schon die Lösung ;)
Gruß
Chris
Das einfachste wäre Portweiterleitung in der Firewall mit verschiedenen Ports zu nutzen, aber eigentlich möchte ich das vermeiden, da die Endnutzer, welche die Zugriffe benutzen...
Wie @Lochkartenstanzer schon richtig schrieb, macht dein vHost das schon. Einfach eine Portweiterleitung. Fertig.
Dein Webserver kümmert sich schon darum, dass die passende Seite ausgeliefert wird. Deine "Firewall" kümmert sich dann darum, dass die TCP-Sessions auch wieder da ankommen, wo sie hin sollen.
Alternativ kannst du natürlich einen Reverse-Proxy auf deiner Firewall nutzen, aber das verkompliziert dein Setup nur unnötig und führt zu unnötig viel Last auf dem Gerät.
Ein Virtual-Host wird innerhalb des HTTP Requests bzw. während des TLS-Handshakes bestimmt und ist somit unabhängig von deiner Firewall. Terminierst du die HTTP-Session auf der Firewall muss diese die Logik kennen um diese Anfragen zu händeln. Also Worker-Prozesse, die die Anfragen behandeln und weiterleiten. Das ist sehr aufwendig und kann für Angriffe auf deine Firewall genutzt werden. Will man also nicht. Bei einer Port Weiterleitung ist die Last auf deiner Firewall wesentlich geringer und der Angriff trifft "nur" deinen Webserver. Das bringt deinen Webserver vielleicht ins Wanken aber deine anderen Anwendungen bleiben aktiv. Außerdem kann man keine Sicherheitslücken in der Webserver-Anwendung nutzen um deine Firewall zu kompromittieren.
Du hattest also eigentlich schon die Lösung ;)
Gruß
Chris
Zitat von @markuswo:
Also wenn ich server1.mein-server.de aufrufe erkennt das der Apache durch die Firewall und wenn ich server2.mein-server.de aufrufe das auch? Obwohl in der DNS config für mein-server.de nur die öffentliche IP steht?
Also wenn ich server1.mein-server.de aufrufe erkennt das der Apache durch die Firewall und wenn ich server2.mein-server.de aufrufe das auch? Obwohl in der DNS config für mein-server.de nur die öffentliche IP steht?
Du mußt natürlich noch aliase für server1.mein-server.de und server2.mein-server.de einrichten, die auf mein-server.de zeigen (ode A-records mit derselben IP-Adresse).
... irgendwie klingt das zu einfach. Dann hab ich wahrscheinlich noch irgendwo nen Fehler.
Das sist so einfach:
Die Adresse severx.mein-server.de wird auf die IP-Adresse aufgelöst und dann einfach an diese ein http-request geschickt, in dem drinsteht, daß Du etwas vom Server "severx.mein-server.de" willst.
Der Appache schaut dann in seiner Config nach, ob er für serverx einen vhost hat und wenn ja, liefert er diese Seiten aus. Ansonsten liefert er das aus, was er als default eingestellt hat oder er gibt dier eine 404er.
lks
www.server1.mein-server.de ----> ist nicht gleich -----> server1.mein-server.de
https://httpd.apache.org/docs/current/vhosts/examples.html
Und warum die Hosts bearbeiten ??? Unnötig ...
Der Server entscheidet anhand des Hostheaders an welchen vHost die Anfrage weitergeleitet wird, d.h. das was der User in die Adresszeile eingibt ... einfach mal in die HTTP-Header schauen, dann verstehst du auch was wir meinen.
Gruß skybird
https://httpd.apache.org/docs/current/vhosts/examples.html
Die DocumentRoot sehen so aus in den config-Dateien.
Und die ServerName Direktive ?? Die ist ja das gerade das essentielle bei einer vHost Config.Und warum die Hosts bearbeiten ??? Unnötig ...
Der Server entscheidet anhand des Hostheaders an welchen vHost die Anfrage weitergeleitet wird, d.h. das was der User in die Adresszeile eingibt ... einfach mal in die HTTP-Header schauen, dann verstehst du auch was wir meinen.
Gruß skybird
www ist auch eine Subdomain/CNAME/A-Record und wenn du das also benutzt muss dein DNS mit dem www auch entsprechend auf das richtige Ziel zeigen. In der Subdomain müsste man dann quasi noch ein Alias bzw. C-Name 'www' anlegen.
Solange alles auf die richtige IP zeigt ...
https://httpd.apache.org/docs/2.2/de/mod/core.html#servername
https://httpd.apache.org/docs/2.2/de/mod/core.html#servername