URL-Rewerite für den Port

Alles, was den Apache betrifft, kann hier besprochen werden.

URL-Rewerite für den Port

Postby phreichmuth » 14. October 2016 10:30

Hallo Leute

Ich bin noch nicht wahnsinnig erfahren mit Apache und neu hier im Forum. Also bitte entschuldigt, wenn meine Fragen hier am falschen Ort sind oder so.

Ich nutze ein Qnap NAS als Server und habe eine Domain auf mein NAS geleitet. Wie ihr wahrscheinlich wisst, bietet Qnap verschiedene Module, um Cloud-Dienste auf dem NAS anzubieten, sprich eine Musicstation, Photostation, Filestation etc. um eben vom Internet per Homepage auf die Musik- und Fotosammlung oder die Dateien auf dem NAS zuhause zuzugreifen.
Leider läuft das bei Qnap alles über dieselben Ports (HTTP udn HTTPS) wie auch die Administration des NAS'. Wenn nun also die Ports für die Stations vom Internet her zugänglich sind, ist auch das Administations-Frontend zugänglich - und das möchte ich nicht. Für einige Stations funktioniert es intresannterweise, wenn der Unterordner unter den normalen Ports, also 81 und 443 anstatt 81 und 444, aufgerufen wird, für andere nicht.
Vom Internet sind die Ports 80 und 443 erreichbar, 81 und 444 nicht.

Sprich:
Code: Select all
Im Heimnetzwerk funktioniert:
https://<NAS-IP>:444/musicstation/

vom Internet funktioniert (ich weiss, bei https muss der Port 443 nicht angegeben werden, aber hier zur Verdeutlichung):
https://<Domain>:443/musicstation
mit Virtual Host konfigurierter Sub-Domain funktioniert auch:
https://music.<Domain>:443 (wird per mod_rewrite auf https://music.<Domain>:443/musicstation umgeleitet)


Code: Select all
Im Heimnetzwerk funktioniert :
https://<NAS-IP>:444/filestation/

vom Internet funktioniert [b]NICHT[/b]:
https://<Domain>:443/filestation
auch mit der entsprechenden Sub-Domain und derselben mod_rewrite-Konstruktion wie oben funktioniert folgendes nicht:
https://files.<Domain>:443 (wird per mod_rewrite auf https://files.<Domain>:443/filestation umgeleitet)


Was ich noch sagen muss, die Stations liegen alle als unterordner in demselben Ordner, also Root für die Domain der Ordner ....../Web und für die Subdomaing ......./Web/<Station-Ordner>. Deswegen funktioniert der mod_rewrite so schön - wenn er denn funktioniert.

Meine Frage ist nun:
Wie kann ich intern für einzelne Sub-Domains die Ports weiterleiten, ohne dass der Client einen anderen Port aufrufen muss? Sprich ähnlich wie mod_rewrite den Pfad kaschieren kann und intern, für den Client unsichtbar, auf einen anderen Pfad leiten kann, möchte ich dasselbe mit dem Port machen, aber nur für einzelne Sub-Domains. Geht das mittels .htaccess-Datei oder etwas ähnlichem im Ordner der Sub-Domain?

Per Firewall grundsätzlich die Ports umzuleiten, will ich nicht, da sonst das Administrations-Frontend aus dem Internet wieder zugänglich ist. IP-Tables und httpd-vhosts bzw. httpd-ssl-vhosts möcht ich nicht nutzen, da ich nicht derart tief in die Firmware eingreifen möchte. Bei einem Update oder evtl. bereits bei einem Neustart würden die Änderungen sowieso überschrieben.

Grüsse
Philipp
phreichmuth
 
Posts: 3
Joined: 14. October 2016 09:49
XAMPP version: unknown
Operating System: Linux (Qnap firmware)

Re: URL-Rewerite für den Port

Postby Nobbie » 14. October 2016 20:43

phreichmuth wrote:Leider läuft das bei Qnap alles über dieselben Ports (HTTP udn HTTPS) wie auch die Administration des NAS'. Wenn nun also die Ports für die Stations vom Internet her zugänglich sind, ist auch das Administations-Frontend zugänglich - und das möchte ich nicht.


Ne, so funktioniert es eben NICHT. Ob ein Port erreichbar ist oder nicht, entscheidet alleine der Server, ob er auf diesem Port lauscht oder nicht. Für den Server spielt es dabei zunächst einmal keine Rolle, welchen Port der Client angibt - der Client muss sowieso den Port angeben, auf dem der Server lauscht.

Eine Besonderheit ist nun die Situation, dass Dein NAS "hinter" Deinem Router sitzt (Fritzbox??). Denn Dein NAS hat "nur" eine sog, "LAN IP", das sind u.a. IPs im Adressbereich 192.168.*.* oder auch 10.*.*.*.* - solche IPs sind GAR NICHT von außen erreichbar, grundsätzlich nicht. Dass Deine NAS dennoch erreichbar ist (oder zumindest zu sein scheint), liegt daran, dass Du in Deinem Router eine entsprechende Konfiguration vorgenommen hast. Denn von außen können Clients nur die IP Deines Routers eingeben und erreichen (das ist aber nicht die IP des NAS) und der Router entscheidet dann, ob er diesen Request gleich in die Tonne wirft, oder ob er den Request ggf. an einen Rechner im LAN (und das NAS ist auch nur ein Rechner im LAN) weiterreicht. Das ganze wird realisiert mit dem Trick, dass man Requests, die auf der IP stattfinden, abhängig vom Port auf einen anderen Rechner (und ggf. auch anderen Port) "weiterleitet".

Lange Rede, kurzer Sinn: anstatt irgendwelche (hier sowieso noch falsche) EInstellungen vorzunehmen und irgendwie mit den Ports herumzuspielen, reicht es vollkommen aus, wenn Du das sog. "Portforwarding" (was Du ganz sicher eingerichtet hast) für das NAS einfach aus dem Router entfernst. Und sofort ist das NAS von außen auf keinem Weg mehr erreichbar. Und zwar gar nicht.
Nobbie
 
Posts: 8780
Joined: 09. March 2008 13:04

Re: URL-Rewerite für den Port

Postby phreichmuth » 14. October 2016 21:46

Hallo Nobbie

Das mit dem Portforwarding im Router, der mittels NAT auch eine gewisse Firewall-Funktion hat, ist alles klar. Genau so habe ich das gemacht, wie du es schreibst. Der Router leitet Anfragen aus dem WAN an die interne IP des NAS weiter, wenn sie auf den konfiguriereten Ports daher kommt, 80 und 443. Diese werden auf dieselben Ports des NAS geleitet.
Aber: über die offiziellen Links von Qnap werden die Stations über Port 81 bzw. 444 geöffnet, dieselben Ports wie für das Administrations-Frontend. Dieses will ich aber bewusst nicht vom Internet erreichbar haben, die Stations aber schon - deshalb sollten diese über andere Ports als das Admin-Frontend erreichbar sein, und am liebsten alle Stations.

Um meine Erklärung vielleicht noch etwas zu verdeutlichen, ein paar Bilder:
- Hier das Admin-Frontend mit den Links zu den Stations. Der Aufruf läuft über den internen Servernamen und Port 444:
Image

- Hier die Musicstation aufgerufen über die lokale Adresse, wie sie hinter dem offiziellen Link auf der Admin-Seite steckt. Man beachte, ebenfalls Port 444:
Image

- Hier die Musicstation, wie sie aus dem Internet erreichbar ist über die Sub-Domain. Man beachte Port 443:
Image
Man kann die Station auch aus dem Internet aufrufen über https://<Domain.ch>:443/musicstation/

- Hier noch die htaccess-Datei, wie sie im Unterverzeichnis für die Sub-Domain liegt:
Image

Die Admin-Seite ist nicht erreichbar aus dem Internet, die Musicstation jedoch schon. Für die Musicstation ist das somit i.o. und ausreichend. Leider funktioniert das aber nicht mit allen Stations. Und deshalb bräuchte ich eine für den Client unsichtbare Port-Rewrite (so wie es die htaccess auch das Unterverzeichnis /musicstation/ in der Internetadresse verbirgt.

@ Nobbie: wenn du mir eine PN schickst, dann schick ich dir die komplette Adresse, dann kannst du dir das selber anschauen. Aber auf jeden Fall schonmal vielen Dank, dass du dich dem Thema annimmst und deine Zeit opferst, um mir zu helfen.
phreichmuth
 
Posts: 3
Joined: 14. October 2016 09:49
XAMPP version: unknown
Operating System: Linux (Qnap firmware)

Re: URL-Rewerite für den Port

Postby Nobbie » 15. October 2016 11:26

Das ist leider etwas viel verlangt, dass ich Dir die Umgebung einrichte. Ich könnte das zwar (ich habe sogar selbst ein QNAP hier stehen, mache allerdings nichts mit den ganzen Stations), aber das übertrifft dann doch um Welten den Sinn dieses Forums.

Nur noch mal ein paar generelle Hinweise:

a) vergiss alles, was mit Ports zu tun hat, das ist der falsche Ansatz. Ganz sicher.

b) wenn ich das richtig sehe, ist für den Adminbereich doch sowieso schon eine Basic Authorization aktiviert (= Login notwendig)? Dann ist doch alles im Lot, wer die Zugangsdaten nicht kennt (und die wirst Du sicherlich nicht veröffentlichen), kann sich auch nicht anmelden?!

c) je nach Konzept könnte man auch eine Lösung über VirtualHosts etablieren, die User von außen greifen ja mit einem Domainnamen zu, intern kannst Du aber mit einer LAN IP zugreifen. Das kann man getrennt konfigurieren.

d) wenn die Adminbereiche über unterschiedliche Verzeichnisse realisiert sind, kann man (statt oder ergänzend zur Authorization) ganz knüppelhart von der Remote IP (= IP des Anwenders im Internet) abhängig den Zugriff komplett abdrehen (je nach Apache Version entweder via "Allow / Deny From ...." oder "Require IP ....". Ab Apache 2.4 gibt es die Require Syntax, vorher die Allow / Deny Syntax. Siehe u.a. https://httpd.apache.org/docs/2.4/howto/access.html

Letzteres ist wahrscheinlich am ehesten das, wonach Dir der Sinn ist. Nur dieses Gewurstel über die Ports, das ist der falsche Weg. Du bist zwar Neuling (wie Du sagst), aber da muss jeder mal durch, der Apache konfigurieren will, wobei ich hier noch nicht einmal erkenne, wieso das Login nicht ausreicht?! Es hat jedenfalls sicher keinen Nährwert, wenn Dir das jemand einrichtet, das bringt Dich nicht weiter. Apache ist leider ein sehr mächtiges Tool und das lernt man nicht an einem einzigen Tag, wie das zu konfigurieren ist.
Nobbie
 
Posts: 8780
Joined: 09. March 2008 13:04

Re: URL-Rewerite für den Port

Postby phreichmuth » 15. October 2016 12:17

Nobbie wrote:Das ist leider etwas viel verlangt, dass ich Dir die Umgebung einrichte.


@ Nobbie: Wer hat etwas davon gesagt, dass du etwas einrichten sollst? Sich etwas anschauen ist nach allgemeinem deutschen Sprachgebrauch nicht dasselbe wie etwas erledigen. Da ich davon ausgehe, hier Apache-Experten zu finden, erwarte ich mir nicht mehr als ein paar Hinweise, wie so etwas gemacht werden kann. Machen werde ich das schon selber.

Den Admin-Bereich möchte ich nicht im Netz exponieren, damit gar niemand auf die Idee kommt, mein NAS anzugreifen.ich möchte damit den unplanbaren Admin-Aufwand tief halten.
Ausserdem erlaubt Qnap nicht dieselben Ports für die Admin-Seite und den offiziellen Zugang zu den Stations wie für die selber konfigurierten Web-Hosts. Deshalb brauche ich die Port-Verbiegung sowieso.

Wenn du mir hier mal deine Vorschläge c) und d) grob skizzieren kannst und welche Module und Befehle ich dazu benötige und genauer anschauen muss, wäre das schon super.
phreichmuth
 
Posts: 3
Joined: 14. October 2016 09:49
XAMPP version: unknown
Operating System: Linux (Qnap firmware)

Re: URL-Rewerite für den Port

Postby Nobbie » 15. October 2016 12:40

phreichmuth wrote:@ Nobbie: Wer hat etwas davon gesagt, dass du etwas einrichten sollst? Sich etwas anschauen ist nach allgemeinem deutschen Sprachgebrauch nicht dasselbe wie etwas erledigen.


Habe ich mir angeschaut.

phreichmuth wrote:Da ich davon ausgehe, hier Apache-Experten zu finden, erwarte ich mir nicht mehr als ein paar Hinweise, wie so etwas gemacht werden kann. Machen werde ich das schon selber.


Prima. Ich habe ja oben einige Hinweise gegeben, dann ist ja genau das, was Du suchst.

phreichmuth wrote:Wenn du mir hier mal deine Vorschläge c) und d) grob skizzieren kannst und welche Module und Befehle ich dazu benötige und genauer anschauen muss, wäre das schon super.


Da ist ein sehr wertvoller Link schon drin, dahinter verbirgt sich eine ganze Information inkl. Beispiele. Je nachdem, für welchen Weg Du Dich entscheidest, kannst Du auch noch die Doku für die VirtualHosts durcharbeiten, das findest auch alles auf der Doku Seite von Apache.
Nobbie
 
Posts: 8780
Joined: 09. March 2008 13:04


Return to Apache

Who is online

Users browsing this forum: No registered users and 3 guests