Zugriff auf Unterverzeichnisse nicht erlaubt 403

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

Zugriff auf Unterverzeichnisse nicht erlaubt 403

Postby maddinthebrain » 19. January 2022 08:03

Hallo zusammen,

ich habe einen Apach2-Server am laufen. Dort drauf läuft eine nextcloud-Instanz. Aber auch Phpmyadmin und pihole. Die beiden letzt sollen nur lokal erreichbar sein. Daher habe ich jeweils eine eigen conf-Datei angelegt.

Leider komme ich auch aus dem lokalen Netz und auch vom Server selbst im Browser nicht auf die Verzeichnisse. 403 Forbidden. Irgendwo ist eine Kleinigkeit falsch.

001-nextcloud.conf:

Code: Select all
<VirtualHost *:80>
        # The ServerName directive sets the request scheme, hostname and port t$
        # the server uses to identify itself. This is used when creating
        # redirection URLs. In the context of virtual hosts, the ServerName
        # specifies what hostname must appear in the request's Host: header to
        # match this virtual host. For the default virtual host (this file) this
        # value is not decisive as it is used as a last resort host regardless.
        # However, you must set it for any further virtual host explicitly.
        ServerName #######

        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html/nextcloud

        # Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
        # error, crit, alert, emerg.
        # It is also possible to configure the loglevel for particular
        # modules, e.g.
        #LogLevel info ssl:warn

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

        # For most configuration files from conf-available/, which are
        # enabled or disabled at a global level, it is possible to
        # include a line for only one particular virtual host. For example the
        # following line enables the CGI configuration for this host only
        # after it has been globally disabled with "a2disconf".
        #Include conf-available/serve-cgi-bin.conf

RewriteEngine on
RewriteCond %{SERVER_NAME} = ######
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>


001-nextcloud-le-ssl.conf
Code: Select all
<IfModule mod_ssl.c>
<VirtualHost *:443>

        ServerName #######

        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html/nextcloud

        <IfModule mod_headers.c>
                Header always set Strict-Transport-Security "max-age=15768000; $
                Header set Referrer-Policy "strict-origin-when-cross-origin"
                # Prevent MIME based attacks
                Header set X-Content-Type-Options "nosniff"
                Header always set X-Frame-Options "SAMEORIGIN"
        </IfModule>
       
        SSLEngine on
        SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH
        SSLProtocol All -SSLv2 -SSLv3 -TLSv1 -TLSv1.1
        SSLHonorCipherOrder On

        <Directory /var/www/html/nextcloud/>
                Options +FollowSymlinks
                AllowOverride All


        <IfModule mod_dav.c>
                Dav off
        </IfModule>

        SetEnv HOME /var/www/html/nextcloud
        SetEnv HTTP_HOME /var/www/html/nextcloud
        Satisfy Any

        </Directory>

          ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

 

Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateFile /etc/letsencrypt/live/####/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/####/privkey.pem
</VirtualHost>
</IfModule>

phpmyadmin.conf:

Code: Select all
<VirtualHost *:80>
        ServerName phpmyadmin
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html/phpmyadm/
        <Directory /var/www/html/phpmyadm/>
                Require host localhost
                Require host 127.0.0.1 
                Require ip 192.168.178
                #  Require all granted
                #  Require all denied
        </Directory>

        ErrorLog /var/log/apache2/error.log
        CustomLog /var/log/apache2/access.log combined
        ServerSignature On
</VirtualHost>


Bei Zugriff auf phpmyadm steht dann dies im error.log:


Code: Select all
[Sat Jan 15 16:10:58.816383 2022] [authz_core:error] [pid 9136] [client ::1:36946] AH01630: client denied by server configuration: /var/www/html/nextcloud/phpmyadm
[Sat Jan 15 16:10:59.024628 2022] [authz_core:error] [pid 9136] [client ::1:36946] AH01630: client denied by server configuration: /var/www/html/nextcloud/favicon.ico, referer: http://localhost/phpmyadm

Ich habe leider noch keinen Durchblick, wo der Fehler ist. Es ist aber offensichtlich, dass er zu /var/www/html/nextcloud/phpmyadm will. Das ist aber falsch, er müsste zu /var/www/html/phpmyadm. Und das mit dem favicon ist auch irdendwie seltsam

Wenn ich im phpmyadm.conf alle Require auskommentiere und Require all granted einfüge geht es, freilich mit Zugriff von überall her, was ich ja nicht will.

Vielen Dank

Grüße Martin
maddinthebrain
 
Posts: 2
Joined: 23. February 2020 17:36
XAMPP version: n/a
Operating System: Windows, Raspbian

Re: Zugriff auf Unterverzeichnisse nicht erlaubt 403

Postby Nobbie » 19. January 2022 14:24

Da ist ziemlich viel falsch, erst mal die ganz wilden Dinger:

Code: Select all
RewriteEngine on
RewriteCond %{SERVER_NAME} = ######
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]


Das ist völlig verquer, der ServerName ##### soll wohl ein Platzhalter sein. Insgesamt ist die ganze RewriteCondition Käse, denn Du bist ja sowieso im VirtualHost Kontext des ServerNames ######,das ist also eine Tautologie. Dann braucht man auch den verqueren Rewrite nicht, die kompletten drei Zeilen ersetzt Du simpel durch:

Code: Select all
Redirect / https://######/


Dann fehlen sowohl im VirtualHost von Port 80 als auch von Port 443 zum ServerName ###### jedwede Require Klausel. Das ist der Grund für 403-er Fehler. Apache hat nicht die Rechte, auf den jeweiligen DocumentRoot zuzugreifen.

Bei PhpMyAdmin sind divese Require Klauseln, aber ob sie treffen, steht in den Sternen. Die Klausel "Require ip 192.168.178" zieht offensichtlich nicht, wie man im Log sehen kann, greift der Client nicht mit dieser IP zu, sondern mit einer IP aus dem Adressraum von IPv6:

[Sat Jan 15 16:10:58.816383 2022] [authz_core:error] [pid 9136] [client ::1:36946] AH01630: client denied by server configuration: /var/www/html/nextcloud/phpmyadm


Da steht ja "[client ::1:36946]" und das genau ist die IP in diesem Kontext (::1), gefolgt vom Port. Entweder musst Du IPv6 abschalten und damit IPv4 erzwingen, oder eine semantische Require Klausel wählen (siehe "Require local"). Siehe https://httpd.apache.org/docs/2.4/mod/m ... _host.html

Und last not least kann ich nicht erkennen, mit welcher URL Du zugreifst und diese Fehlermeldungen bekommst. Ggf. wird ein VirtualHost nämlich nicht erkannt und dann wird der falsche VirtualHost ausgeführt. Du kannst mit dem Kommando "httpd -S" (httpd ist der Apache2 Server, ggf. musst Du den Pfadnamen voranstellen) in einem Terminal anzeigen lassen, welche VirtualHosts Apache in der Konfiguration erkennt.

P.S. Ich habe es schon im Log gesehen, genau was ich mir dachte. Da gibt es einen Referer "http://localhost/phpmyadmin" - das ist genau das Problem. Du willst ja phpmyadmin als VirtualHost ansprechen, also so: http://phpmyadmin - aber irgendwo gibt es einen Link auf http://localhost/phpmyadmin. Das passt ja nicht zusammen.
Nobbie
 
Posts: 13170
Joined: 09. March 2008 13:04


Return to Apache

Who is online

Users browsing this forum: No registered users and 14 guests