Ich habe Apache mit FastCGI (mod_fastcgi), suExec und PHP auf meiner lokalen Entwicklungs-Box installiert. Funktioniert perfekt, bis auf eine Sache.
Nehmen wir an, ich habe zwei Benutzer:
user1 - /home/user1/public_html
user2 - /home/user2/public_html
Ich habe eine ernsthafte Sicherheitslücke in meiner Konfiguration entdeckt: Ich kann eine Datei aus dem Web-Root von Benutzer2 in die Datei von Benutzer1 einbinden. Wie kann ich das verhindern? Irgendwelche Tipps?
php-cgi
Der Prozess wird unter dem richtigen Benutzer ausgeführt.
Antwort1
Ich würde vorschlagen, dass Sie Folgendes base_path
in Ihrem VirtualHost festlegen:
php_admin_value open_basedir /usr/local/www/sixeightzero
Antwort2
Wenn das Ziel darin besteht, PHP unter dem Namen der Benutzer auszuführen, versuchen Sie, sie zu trennenapache2-mpm-itk, es ist viel einfacher bereitzustellen als Fast-CGI und funktioniert großartig.
Zur Verwendung müssen Sie nur diese Zeile zur Virtualhost-Konfiguration hinzufügen:
AssignUserId someuser somegroup
Sie können bei Bedarf auch MaxClientsVHost und NiceValue festlegen.
Antwort3
Die einzige Möglichkeit, es richtig zu machen, besteht darin, einem Benutzer das Lesen von Dateien aus dem Home-Verzeichnis eines anderen Benutzers zu verbieten, sie jedoch für den Webserver lesbar zu lassen.
Sie können dies erreichen, indem Sie (Beispiel) Folgendes tun:
Dateisystem mit ACL-Optionen mounten:
mount -o acl /dev/sda /home
Erlauben Sie dem Webserver den Zugriff darauf:
setfacl -m u:nobody:r-x /home/user1
setfacl -m u:nobody:r-x /home/user2
Dem Eigentümer das Lesen erlauben:
setfacl -m u:user1:r-x /home/user1
setfacl -m u:user2:r-x /home/user2