Ich habe auf einem Webserver, auf dem Seiten von mehreren Usern gehostet sind, diese Verzeichnisstruktur gesehen.
[src=bash]
user@host:/var/www/sites/# ls -ahl
drwxr-xr-x 5 root root .
drwxr-xr-x 5 root root ..
drwxr-xr-x 2 user1 user1 seite1
drwxr-xr-x 2 user2 user2 seite2
drwxr-xr-x 2 userX userX seiteX
user@host:/var/www/sites/seiteX/# ls -ahl
drwxr-xr-x 2 userX userX public_html
[/src]
Apache mit PHP/FPM, jede Seite hat einen eigenen User, dessen Homedir nach /var/www/sites gemountet ist. Dateitransfer über vsftpd, der beim Upload Files mit chmod userX:userX 755 ablegt.
Bei diesem Setup kann ich mit einem PHP Script problmlos das /var/www/sites Verzeichnis durchlaufen und sämtliche Files und Configs der anderen Seiten lesen. Also z. B. aus dem Config File eines CMS die Datenbank-Zugangsdaten auslesen.
Wie sollte bei so einem Setup die Verzeichnisstruktur bzw. Rechte korrekt gesetzt sein, um soetwas zu verhindern?
Ich habe versucht das Read Flag von /var/www/sites sowie /var/www/sites/userX zu entfernen. So könnte jemand zwar noch immer auf die einzelnen public_html Unterverzeichnisse (die 755 brauchen um vom Apache ausgeliefert werden zu können) der jeweiligen User zugreifen, müsste aber die Namen der User-Verzeichnisse zumindest erraten oder kennen.
[src=bash]
user@host:/var/www/sites/# ls -ahl
drwxr-x--x 5 root root .
drwxr-xr-x 5 root root ..
drwxr-x--x 2 user1 user1 seite1
drwxr-x--x 2 user2 user2 seite2
drwxr-x--x 2 userX userX seiteX
user@host:/var/www/sites/seiteX/# ls -ahl
drwxr-xr-x 2 userX userX public_html
[/src]
Ich habe gesehen, dass auch /etc/apache2/sites/enabled world readable ist, somit könnte man sich von hier die Pfade zu den jeweiligen Public Html Dirs holen. Könnte man ohne Probleme für den Webserver auch von /etc/apache2/ das read Flag für World entfernen, ohne dass Apache ein Problem bekommt?
Danke
[src=bash]
user@host:/var/www/sites/# ls -ahl
drwxr-xr-x 5 root root .
drwxr-xr-x 5 root root ..
drwxr-xr-x 2 user1 user1 seite1
drwxr-xr-x 2 user2 user2 seite2
drwxr-xr-x 2 userX userX seiteX
user@host:/var/www/sites/seiteX/# ls -ahl
drwxr-xr-x 2 userX userX public_html
[/src]
Apache mit PHP/FPM, jede Seite hat einen eigenen User, dessen Homedir nach /var/www/sites gemountet ist. Dateitransfer über vsftpd, der beim Upload Files mit chmod userX:userX 755 ablegt.
Bei diesem Setup kann ich mit einem PHP Script problmlos das /var/www/sites Verzeichnis durchlaufen und sämtliche Files und Configs der anderen Seiten lesen. Also z. B. aus dem Config File eines CMS die Datenbank-Zugangsdaten auslesen.
Wie sollte bei so einem Setup die Verzeichnisstruktur bzw. Rechte korrekt gesetzt sein, um soetwas zu verhindern?
Ich habe versucht das Read Flag von /var/www/sites sowie /var/www/sites/userX zu entfernen. So könnte jemand zwar noch immer auf die einzelnen public_html Unterverzeichnisse (die 755 brauchen um vom Apache ausgeliefert werden zu können) der jeweiligen User zugreifen, müsste aber die Namen der User-Verzeichnisse zumindest erraten oder kennen.
[src=bash]
user@host:/var/www/sites/# ls -ahl
drwxr-x--x 5 root root .
drwxr-xr-x 5 root root ..
drwxr-x--x 2 user1 user1 seite1
drwxr-x--x 2 user2 user2 seite2
drwxr-x--x 2 userX userX seiteX
user@host:/var/www/sites/seiteX/# ls -ahl
drwxr-xr-x 2 userX userX public_html
[/src]
Ich habe gesehen, dass auch /etc/apache2/sites/enabled world readable ist, somit könnte man sich von hier die Pfade zu den jeweiligen Public Html Dirs holen. Könnte man ohne Probleme für den Webserver auch von /etc/apache2/ das read Flag für World entfernen, ohne dass Apache ein Problem bekommt?
Danke