Frage zur Apache Konfiguration

rkader

Ensign
Registriert
Mai 2011
Beiträge
217
Bei mir läuft ein Apache Webserver mit Nextcloud und ist aus dem Internet erreichbar. Nun möchte ich noch einen anderen Dienst auf dem Webserver laufen lassen, der jedoch nur im heimischen Netz erreichbar sein sollte. Wie richte ich das in Apache ein, kann mir jemand weiterhelfen?
 
Reverse Proxy und dort (sollte hoffentlich möglich sein) nur auf interne Anfragen hören. Genaue Konfiguration hängt von deinem System ab, aber in der Richtung solltest du mal Ausschau halten.
Bzw den Dienst auf Ports laufen lassen, die per Portfreigabe einfach nicht freigegeben sind und daher nur intern erreichbar sind. Dann reicht bestimmt auch ein normaler DNS Eintrag um es einfacher zugänglich zu machen.
 
  • Gefällt mir
Reaktionen: rkader
Theoretisch sollte es reichen die Bind IP im VirtualHost anzupassen.
Code:
<VirtualHost 192.160.0.x:80>
  ...
</VirtualHost>
<VirtualHost 192.160.0.x:443>
  ...
</VirtualHost>
 
  • Gefällt mir
Reaktionen: rkader und Nero1
Danke schon mal an alle für den Input!

Nero1 schrieb:
Reverse Proxy und dort (sollte hoffentlich möglich sein) nur auf interne Anfragen hören. Genaue Konfiguration hängt von deinem System ab, aber in der Richtung solltest du mal Ausschau halten.
Bzw den Dienst auf Ports laufen lassen, die per Portfreigabe einfach nicht freigegeben sind und daher nur intern erreichbar sind. Dann reicht bestimmt auch ein normaler DNS Eintrag um es einfacher zugänglich zu machen.
Reverse Proxy hört sich schon wieder kompliziert an, da müsste ich mich wohl erst einlesen. Wenn's einfacher geht, nehme ich gerne eine andere Lösung 😝
Unterschiedliche Ports zuzuweisen wäre natürlich am einfachsten, aber ich würde schon gerne die üblichen behalten. Wäre dann nur eine Notlösung.

Yuuri schrieb:
Theoretisch sollte es reichen die Bind IP im VirtualHost anzupassen.
Code:
<VirtualHost 192.160.0.x:80>
  ...
</VirtualHost>
<VirtualHost 192.160.0.x:443>
  ...
</VirtualHost>
Reicht dort tatsächlich nur eine beliebige IP einzutragen und eine entsprechende Weiterleitung einzurichten? Muss ich nicht evtl. zuvor den Netzwerkadapter anpassen und Virtual IP's einrichten oder etwas in die Richtung?
 
rkader schrieb:
Reverse Proxy hört sich schon wieder kompliziert an, da müsste ich mich wohl erst einlesen.
Ist auch gut möglich, dass ich damit über das Ziel weit hinaus schieße :‘D IdR nutzt man es für mehrere Services auf einem Server, die extern zugänglich sein sollen. Hier kann man sicher einfacher ran gehen. Drücke die Daumen, dass du ne gute Lösung für dich findest :D
 
rkader schrieb:
Reicht dort tatsächlich nur eine beliebige IP einzutragen und eine entsprechende Weiterleitung einzurichten? Muss ich nicht evtl. zuvor den Netzwerkadapter anpassen und Virtual IP's einrichten oder etwas in die Richtung?
Vergiss die Idee, würde sowieso nicht funktionieren, denn dein Server is ja eh nur im LAN verfügbar. Würde ergo auch immer antworten.

Kannst dann nur mit dem Access Modul arbeiten.
Code:
Require ip 192.168.0.0/24
oder was auch immer dein (Sub-)Netz ist.
 
  • Gefällt mir
Reaktionen: rkader und Nero1
Yuuri schrieb:
Kannst dann nur mit dem Access Modul arbeiten.
Code:
Require ip 192.168.0.0/24
oder was auch immer dein (Sub-)Netz ist.
Perfekt! Ich schätze mal, genau danach habe ich gesucht - einfach und zielführend 😁

Yuuri schrieb:
Vergiss die Idee, würde sowieso nicht funktionieren, denn dein Server is ja eh nur im LAN verfügbar. Würde ergo auch immer antworten.
Nur mal interessehalber: wieso würde das nicht funktionieren? Die Idee hatte ich anfangs auch, aber irgendwas lief bei der Einrichtung eines virtuellen Interfaces schief.
Ich wollte dabei ein eigenes Interface für Nextcloud einrichten mit einer eigenen internen IP und eins für den anderen Dienst. So hätte ich 2 zusätzliche IP's (getrennt nach Diensten), die ich in der jeweiligen Apache Konfiguration definieren könnte. Schließlich hätte ich für die Freigabe ins Internet lediglich eine Portweiterleitung auf die IP des für Nextcloud bestimmten virtuellen Interfaces einrichten müssen. Oder habe ich einen Denkfehler gemacht?
 
Würde funktionieren.

  • Du nimmst das Netzwerkinterface her. Das ganz normale.
  • Dort setzt Du eine zweite IP drauf, aus dem existierenden Subnetz, die eindeutig im Subnetz ist und nicht kollidiert.
  • Diese IP nimmst Du dann als VirtualHost in die Apachekonfiguration.

Das funktioniert, weil es eine Portfreigabe auf dem Router gibt mit einem konkreten Socket als Ziel (IP+Port). Der neue Dienst läuft aber auf einer anderen IP. Ergo wird an ihn nicht weitergeleitet und der Service ist von außen nicht erreichbar. Im lokalen Netz funktioniert alles "normal". Zusätzlich kann die neue IP auch als eigener "virtueller" Host in vorgelagerten Firewalls behandelt werden und so Zugriffe weiter geregelt werden.


Den Weg des Require kann man auch gehen. Ist definitiv einfacher und intuitiver einzurichten. Allerdings muß der Apache das sauber filtern - die Anfrage aus dem Internet kriegt er noch und muß sie selber behandeln.

Der Weg über den VHost hätte den Vorteil, daß die Anfragen an den neuen Service erst gar nicht beim Apache ankommen. Dafür ist die Einrichtung umständlicher und der Zugriff geht dann auch nur über die neue IP (der man aber natürlich ggfs. einen DNS Record verpassen kann).
 
  • Gefällt mir
Reaktionen: rkader, Bob.Dig und Nero1
rkader schrieb:
Nur mal interessehalber: wieso würde das nicht funktionieren? Die Idee hatte ich anfangs auch, aber irgendwas lief bei der Einrichtung eines virtuellen Interfaces schief.
Sagen wir dein Subnetz lautet 192.168.0.0/24, dann hätte der Router die 1, dein PC die 2 und der Server die 3. Der Apache bindet standardmäßig auf 0.0.0.0, also jedes Interface, ergo 127.0.0.1 und 192.168.0.0/24. Wenn du jetzt nen VHost erstellst, reagiert der Apache hierbei jeweils auf beide Interfaces. Erstellst du nun nen VHost für 192.168.0.0 explizit, reagiert er nur nicht mehr auf 127.0.0.1. Die Seite ist also aus dem Netzwerk erreichbar, nicht aber über localhost. Die Pakete vom Router kommen ja aber sowieso von 192.168.0.1, weshalb der Apache hier trotzdem was ausliefert.

Um das nun aber zum Laufen zu kriegen, müsstest du innerhalb deines Netzwerks nun ein weiteres Subnetz aufspannen, welches nicht den Router inkludiert, damit der Apache entsprechend nur Anfragen aus dem routerlosen Netzwerk zulässt. Das Netzwerk müsste dann noch entsprechend priorisiert werden, damit Pakete im Netzwerk eben über 192.168.1.0/24 geschickt werden und nicht über das mit dem Router.

Ein ziemliches Gefummel imho für wenig Mehrwert. Das eigene Subnetz wird ja nicht per DHCP verteilt, ergo musst du es bei jedem Client manuell einrichten. Zumal kannst du in nem Windows, welches DHCP nutzt, auch keine zusätzliche statische IP vergeben, d.h. du müsstest dir ne zweite NIC reinhängen, nur damit du entsprechend DHCP nutzen kannst und für dein routerloses Netzwerk ein eigenes Subnetz aufspannen kannst. Bei Smartphones sieht die Situation wahrscheinlich noch düsterer aus...
 
  • Gefällt mir
Reaktionen: rkader
Mit einem Lokalen DNS-Eintrag und entsprechendem VirtualHost würde es auch klappen. Dafür wäre keine andere IP erforderlich. Ist nur die Frage wie dein DNS organisiert ist, welcher Server oder Router.
 
  • Gefällt mir
Reaktionen: rkader
Der Apache kann die Seite dann aber trotzdem an extern ausliefern, sofern der Host Header korrekt gesetzt ist.
Code:
curl --header "Host: example.tld" "https://www.computerbase.de"
Security by obscurity ist aber kein Weg den man beschreiten sollte.
 
@Yuuri Das ginge ja nur, wenn die Adresse bekannt wäre, aber ich verstehe deinen Punkt. Wie wäre das im Zusammenspiel mit der von Dir ins Spiel gebrachten Access Control?
 
Danke für die Vorschläge. Leider hat es bei mir nicht funktionier, da hat wohl @Yuuri Recht. Ich bin nochmal alle Möglichkeiten durchgegangen und habe sowohl ein virtuelles Interface angelegt, als auch eine zusätzliche IP dem vorhandenen Netzwerkinterface vergeben. Im heimischen Netz geht es, aus dem Internet ist Nextcloud jedoch nicht mehr erreichbar.
 
Zurück
Oben