Apache2 Webserver Verzeichnisse für intern und externen Zugriff trennen

L I V E Stammtisch ab 20:30 Uhr im Chat
  • Hallo Forum,

    an meinem RasPi ist eine USB-Festplatte angeschlossen und unter /media/USBHDD1 gemountet. Der RasPi läuft im Hausinternen-Netz unter der IP 192.168.0.20. Es gibt noch weitere (Windows-)PCs im hausinternen Netz. Der RasPi soll mehrere Webseiten in Unterverzeichnissen für internen und/oder externen Zugriff hosten. Für externen Zugriff habe ich eine DynDNS Adresse wie zum Beispiel http://www.meines.dyndns.net
    Der RasPi dient allen hausinternen PC noch als Samba Server für Backups.


    Der Apache2-Webserver (2.2.22) läuft unter Debian Linux 7.2 auf dem RasPi.
    Sein www Verzeichnis liegt unter /media/USBHDD1/www zum Beispiel /media/USBHDD1/www/phpsysinfo oder /media/USBHDD1/www/roundcubemail
    Unter /data habe ich noch einen Link gespeichert auf das www Verzeichnis (/data/www). Der Apache2 greift so über /data/www/phpsysinfo bzw. /data/www/roundcubemail auf die Verzeichnisse zu.

    Auf dem Modem-Router habe ich den Port 80 (und auch 443 für https) weitergeleitet zum RasPi, so dass aus dem Internet über DynDNS auf beide Verzeichnisse zugegriffen werden kann, also zum Beispiel über http://www.meines.dyndns.net/roundcubemail auf das Verzeichnis roundcubemail. Auch aus dem Internen Netz kann auf beide Verzeichnis vom Browser zugegriffen werden, also zum Beispiel über http://192.168.0.20/roundcubemail/ ebenfalls auf roundcubemail.
    Dies ist für roundcubemail auch gut so.
    Jedoch auf phpsysinfo möchte ich nur aus dem internen Netz, also von 192.168.0.XXX, aus zugreifen können.
    Im Moment geht das leider auch noch von "draussen" aus dem Internet. Dies würde ich gerne abschalten. Ich möchte nicht das die internen Daten aus dem Internet herraus von jedem erreichbar sind. Es soll also Seiten geben, welche von intern und extern erreichbar sind und Seiten welche nur von intern erreichbar sind.

    Ich habe dazu schon gegoogelt aber nichts gefunden, was ich habe umsetzen können. Entweder zu kompliziert beschrieben oder ich bin zu blöd in der Umsetzung.

    Ich habe auch Webmin installiert. Komischer Weise (=ich verstehe es nicht, aber es funktioniert gut) ist dieser aus dem Browser nur über https://192.168.0.20:10000/ also intern erreichbar und nicht aus dem Internet. Ich glaube das liegt daran, dass der Port 10000 nicht weitergeleitet wird vom Modem-Router auf den RasPi und der Webmin einen eigenen Webserver hat, also nicht den Apache2.

    Ich würde mich auf eine Anleitung für Dummys freuen, falls es eine Lösung gibt.

  • Apache2 Webserver Verzeichnisse für intern und externen Zugriff trennen? Schau mal ob du hier fündig wirst!

  • Ich kann Dir zu der Webmin-Frage helfen.
    Damit Webmin auch von aussen erreichbar ist, musst Du nur noch den Port 10000 im Router freischalten. Webmin liefert zwar Webseiten zurück, aber halt nicht auf dem Standard-Port 80, sondern hier auf Port 10000.

    Ich glaube, den Zugriff auf die phpsysinfo kann man nicht über eine Portsperre begrenzen und wäre so immer auch von aussen erreichbar.
    Du könntest aber das Verzeichnis phpsysinfo mit .htaccess schützen. Dann folgt eine Passwort-Abfrage, bevor man den Inhalt von phpsysinfo sieht.
    Dazu musst Du für den Apache ModRewrite aktivieren und die beiden Dateien .htaccess sowie .htpasswd in dem Verzeichnis neu erstellen.
    Genauere Anleitungen dazu findest Du bestimmt hier im Forum oder über Google. Ich selbst habe das noch nicht gemacht.

    Hoffe, konnte ein wenig helfen.

  • Hallo modelb,

    das mit .htaccess sowie .htpasswd hatte ich auch schon gelesen. Das Verfahren ist halt insofern nachteilig, da bei internen Zugriffen auch jedes mal eine Anmeldung durchgeführt werden müsste, was im vertrauenswürdigen Bereich natürlich nur noch eine ungeliebte zusätzliche Hürde ist.

    Den Webmin Zugriff von aussen möchte ich ja gerade nicht, deshalb habe ich diesen Port nicht von aussen nach innen weitergeleitet.
    Ich hatte dieses Beispiel angeführt um so ggf. auch phpsysinfo von aussen unsichtbar (und unzugreifbar) zu machen, habe jedoch keine Ahnung wie ich dieses Beispiel von Webmin auch über phpsysinfo übergestülpt bekomme.
    Wie könnte ich denn auch phpsysinfo nur über einen Port (z.B. 10001) zugreifbar machen? Wen ich den Port dann von aussen nicht weiterleite habe ich den exklusiven internen Zugriff möglich, aber externe Zugriffe verunmöglicht. Das wäre mein Ziel.

  • Die einfachste - aber auch die sicherste Lösung ist, eine weitere IP für die nur intern zugänglichen Seiten zu benutzen. Das geht entweder über eine physische Trennung - also eine weiter Pi - oder durch die Konfiguration der Benutzung eines anderen Ports, der nicht extern durchgeroutet wird. Aber vermutlich sollen alle über Port 80 zugreifen.

    Ich bin kein Apache Spezl - aber soweit ich mich erinnern kann kann man auch im Apache für die verschiedenen Context roots ein Binding auf verschiedene lokale IP Adressen konfiguriern. D.h. Du musst Deiner Pi nur eine zweite IP verpassen auf die die internen Geräte zugreifen. Die erste IP ist dagegen die vom INet erreichbare.

    Ich persönlich würde in diesem Falle eine physische Separation vornehmen. Wenn Dein Router dann noch DMZs unterstützt bist Du da auf der sicheren Seite.

  • Hallo Forum,

    Heureka ich habs! (Hoffentlich:s).

    Also , ich habe die Datei /etc/apache2/sites-available/default gefunden.

    Dort habe ich nach dem Teil:

    <Directory /data/www/>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride None
    Order allow,deny
    allow from all
    </Directory>

    eine Ergänzung wie folgt vorgenommen:

    <Directory /data/www/phpsysinfo>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride None
    Order deny,allow
    Deny from all
    allow from 192.168.0.0/24
    </Directory>

    und danach das selbe noch einmal in der Datei /etc/apache2/sites-available/default-ssl

    Nach einem Restart des Apache mit:
    sudo apachectl restart
    kann ich auf phpsysinfo von intern zugreifen. Der Externe Zugriff wird mit "Forbidden" dem Browser abgelehnt.

    Weiter Verzeichnisse kann ich jeweils mit wiederholen des Blocks mit anderem Verzeichnissnamen dazufügen und nach dem Restart sind auch diese Verboten (Forbidden).

  • Na ja,
    das funktioniert zwar aber hat nichts mit Trennen der Verzeichnisse zu tun.
    Das geht indem du für den Externen Zugriff einen eigenen VHOST anlegst der ein komplett anderes wwwroot hat.

    Offizieller Schmier und Schmutzfink des Forum.
    Warum einfach wenn's auch schwer geht ?

    Kein Support per PN !
    Fragen bitte hier im Forum stellen. So hat jeder etwas davon.

  • Google mal nach Apache 2 VHOST ....

    ;) Gruß Outi :D
    Pis: 2x Pi B (Rente) / 1x Pi B+ (Rente) / 1x Pi 2 B (Rente) / 2x Pi 3 B (RaspberryMatic / Repetier Server) / 2x Pi Zero 1.2 (B. Lite) / 2x Pi Zero 1.3 (B. Lite) / 2x Pi Zero W 1.1 (B. Lite) / 1x Pi Zero 2 (mal so, mal so) / 1x Pi 3 B+ (Tests) / 1x Pi 4 B 4GB (BW Lite (Webserver)) / Pi 400 (BW) / 1x Pi 5 (BW) / 2x Pi Pico / 2x Pi Pico W
    Platinen: Sense HAT / HM-MOD-RPI-PCB / RPI-RF-MOD / PiFi DAC+ V2.0 / TV HAT / Pi 5 Kühler HAT
    Kameras: orig. Raspberry Pi Camera Module V1 & V3 / PS3 Eye

  • Hallo Outlaw,

    Danke für Deinen Hinweis.

    Zitat aus meinem ersten Posting zu diesem Thema:

    Zitat


    Ich habe dazu schon gegoogelt aber nichts gefunden, was ich habe umsetzen können. Entweder zu kompliziert beschrieben oder ich bin zu blöd in der Umsetzung.

    Deshalb bin ich ja froh meinen Weg, wie zu vor beschrieben, gefunden zu haben.

    Ich bin jedoch für konkrete und konstruktive Verbesserungen offen.

    Ich möchte niemanden hier in diesem Forum persönlich zu nahe treten, aber pauschale Hinweise in der Art "... googlen...VHost..." finde ich nicht so gut, denn natürlich kann man mit Google jederzeit Millionen von Suchtreffern zu VHost finden. Das hatte ich ja, wie oben beschrieben auch schon getan. Es ist jedoch schwierig und zeitaufwendig die "Perlen" aus dem Millionenhaufen herauszufinden und habe deshalb in diesem Forum für konkrete Hinweise gefragt. Es bräuchte dieses Forum ja ansonsten gar nicht, da sich alles immer in Google finden lässt!

    Und deshalb nochmal: Ich bin offen für konkrete und konstruktive Verbesserungen in diesem Forum.


  • Hallo Imperator,

    1. Ich bin schon zufrieden, da ich meine dass die "bösen Externen" nicht zugreifen können.
    2. Du kritisierst zwar, schreibst aber nicht
    warum
    und vor allem Dingen nicht
    wie besser.

    1. Das war keine Kritik, das war eine Anmerkung das die Lösung nicht zum Titel des Thread passt.
    2. Ich habe dir sehrwohl gesagt wie es geht. VHOST !


    Hallo Outlaw,

    Danke für Deinen Hinweis.

    Zitat aus meinem ersten Posting zu diesem Thema:

    Ich möchte niemanden hier in diesem Forum persönlich zu nahe treten, aber pauschale Hinweise in der Art "... googlen...VHost..." finde ich nicht so gut,
    Und deshalb nochmal: Ich bin offen für konkrete und konstruktive Verbesserungen in diesem Forum.

    Ja man möchte am liebsten fertig vorgekaute Lösungen finden ohne sich selber anstrengen zu müssen.
    Es muß nicht immer Google sein, auc das Forum hier hat eine Suchfunktion.
    Dort mal VHOST eingetragen und du findest u.a folgenden Thread.

    RaspiDo
    17. August 2013 um 21:27

    Warum soll ich alles doppelt posten oder dir das Suchen im Forum abnehmen ?

    Offizieller Schmier und Schmutzfink des Forum.
    Warum einfach wenn's auch schwer geht ?

    Kein Support per PN !
    Fragen bitte hier im Forum stellen. So hat jeder etwas davon.

  • Hallo Imperator,

    danke für den Tipp. Werde ich in demnächst ausprobieren.

    Aber, warum lässt Du mich erst zappeln und sagst nicht gleich in Deinem ersten Beitrag "...guckst Du hier:..."?
    Na egal, Schwamm drüber. Sei mir nicht böse. Ich denke halt anders über Foren, Google usw. und deren Funktion.

    Also, ich werde dass demnächst ausprobieren und anschließend hier berichten.


  • Hallo Imperator,

    danke für den Tipp. Werde ich in demnächst ausprobieren.

    Aber, warum lässt Du mich erst zappeln und sagst nicht gleich in Deinem ersten Beitrag "...guckst Du hier:..."?
    Na egal, Schwamm drüber. Sei mir nicht böse. Ich denke halt anders über Foren, Google usw. und deren Funktion.

    Also, ich werde dass demnächst ausprobieren und anschließend hier berichten.

    versteh ich jetzt nicht,
    ich hatte dir gesagt wie es geht :

    Zitat


    Das geht indem du für den Externen Zugriff einen eigenen VHOST anlegst der ein komplett anderes wwwroot hat.

    Aber Entschuldige das ich nicht alles direkt in mundgerechten Häppchen serviert habe.
    Wenn du wirklich vorher im netz gesucht hast dann wärst du auch über die Apache Dokumentation gestolpert.
    RTFM ist manchmal eben doch die Lösung der Probleme.
    ich gebe jedoch zu das dies der unbequeme Weg ist.

    Offizieller Schmier und Schmutzfink des Forum.
    Warum einfach wenn's auch schwer geht ?

    Kein Support per PN !
    Fragen bitte hier im Forum stellen. So hat jeder etwas davon.

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!