HTML-Verzeichnis für Lese-Zugriffe anderer User sperren
HTML-Verzeichnis für Lese-Zugriffe anderer User sperren
Hi,
auf einem Server wo mehrere User angelegt sind, hat jeder User ein Verzeichnis für HTML-Docs.
/home/USER1/html
/home/USER2/html
/home/USER3/html
Jedes USER-Verzeichnis hat chmod 711, damit der Apache Zugriff als "nobody" auf die html-Verzeichnisse hat. Trotzdem kann jeder User mit einem simplen CGI-Script Dateien aus den Verzeichnissen anderer User lesen:
#!/usr/bin/perl
print "Content-type: text/htmlnn cat /home/USER2/html/index.php";
Gibt es eine Möglichkeit sowas zu unterbinden? Bei PHP gehts mit dem open_basedir, aber bei CGI?
Danke,
Sylvie
auf einem Server wo mehrere User angelegt sind, hat jeder User ein Verzeichnis für HTML-Docs.
/home/USER1/html
/home/USER2/html
/home/USER3/html
Jedes USER-Verzeichnis hat chmod 711, damit der Apache Zugriff als "nobody" auf die html-Verzeichnisse hat. Trotzdem kann jeder User mit einem simplen CGI-Script Dateien aus den Verzeichnissen anderer User lesen:
#!/usr/bin/perl
print "Content-type: text/htmlnn cat /home/USER2/html/index.php";
Gibt es eine Möglichkeit sowas zu unterbinden? Bei PHP gehts mit dem open_basedir, aber bei CGI?
Danke,
Sylvie
Re: HTML-Verzeichnis für Lese-Zugriffe anderer User sperren
verwende für die Dateien eine Gruppe, in denen der Apache Mitglied ist, aber nicht die User. Dann lass CGI-Scripte per suExec unter der jeweiligen User-ID laufen, und schon hat ein fremdes CGI-Script keinen Zugriff mehr. (Würde ich übrigens auch für PHP-Scripte empfehlen, da open_basedir/safe_mode nicht wirklich einen Ersatz für restriktive Rechte im Dateisystem bieten!)
Ich würde entsprechend folgende Rechte empfehlen:
- für statische Inhalte wie Webseiten und Bilder: 640
- für PHP-Scripte: 600
- für Perl/CGI Scripte: 700
- für von Skripten ausgelesene Dateien wie z.B. Konfigurationsdateien: 600
- für Verzeichnisse: 710 (dann geht allerdings kein Directory-Listing mehr im Apachen, wenn Du das brauchst, 750)
Jetzt kann man lediglich noch über den Webserver-User auf HTML/Bild Dateien anderer User zugreifen. Das kann man dann in der httpd.conf mit Direktiven wie
und entsprechenden Direktiven in jedem vhost wie
verhindern.
Ich würde entsprechend folgende Rechte empfehlen:
- für statische Inhalte wie Webseiten und Bilder: 640
- für PHP-Scripte: 600
- für Perl/CGI Scripte: 700
- für von Skripten ausgelesene Dateien wie z.B. Konfigurationsdateien: 600
- für Verzeichnisse: 710 (dann geht allerdings kein Directory-Listing mehr im Apachen, wenn Du das brauchst, 750)
Jetzt kann man lediglich noch über den Webserver-User auf HTML/Bild Dateien anderer User zugreifen. Das kann man dann in der httpd.conf mit Direktiven wie
Code: Select all
<Directory "/">
Order Allow,Deny
Deny From All
</Directory>Code: Select all
<Directory "/home/USER1/html">
Order Allow,Deny
Allow From All
</Directory>Re: HTML-Verzeichnis für Lese-Zugriffe anderer User sperren
Hi,
Trotzdem danke für die Antwort,
Sylvie
Geht leider nicht, da es sich um Accounts handelt, wo mehrere User Zugriff haben und diese deshalb alle einer eigenen Gruppe angehören. Die eigene Gruppe pro Account ist außerdem noch wegen der Quota notwendig.andreask2 wrote:verwende für die Dateien eine Gruppe, in denen der Apache Mitglied ist, aber nicht die User.
Trotzdem danke für die Antwort,
Sylvie
Re: HTML-Verzeichnis für Lese-Zugriffe anderer User sperren
Was spricht dagegen den Apachen mit in die jeweiligen Gruppen zu packen?Sylvie wrote:Geht leider nicht, da es sich um Accounts handelt, wo mehrere User Zugriff haben und diese deshalb alle einer eigenen Gruppe angehören. Die eigene Gruppe pro Account ist außerdem noch wegen der Quota notwendig.
Re: HTML-Verzeichnis für Lese-Zugriffe anderer User sperren
Mein Gott, so einfach kann es sein!!!!andreask2 wrote:Was spricht dagegen den Apachen mit in die jeweiligen Gruppen zu packen?
1000 Dank ! :-D
Sylvie
Re: HTML-Verzeichnis für Lese-Zugriffe anderer User sperren
Hi,
leider gibt es noch ein Problem mit den Gruppen. Ich habe beim Testen festgestellt, dass die uid des Apaches nicht mehr als 32 mal einer Gruppe zugeordnet werden kann. Es steht zwar alles richtig in der /etc/group aber alles was nach Zuordnung 32 kommt, hat a) keinen Zugriff und wird b) von "id" nicht mehr angezeigt. Das Beispiel zeigt es:
Die Zuordnung geht in der group bis 589(testusergroup40), Zugriff und Anzeige gehen aber nur bis 580(testusergroup31).
Gibt es da irgendwo ein Limit zum anpassen?
Danke,
Sylvie
leider gibt es noch ein Problem mit den Gruppen. Ich habe beim Testen festgestellt, dass die uid des Apaches nicht mehr als 32 mal einer Gruppe zugeordnet werden kann. Es steht zwar alles richtig in der /etc/group aber alles was nach Zuordnung 32 kommt, hat a) keinen Zugriff und wird b) von "id" nicht mehr angezeigt. Das Beispiel zeigt es:
Code: Select all
f308:~$ id
uid=30(wwwrun) gid=65534(nogroup) Gruppen=65534(nogroup),550(testusergroup1),551(testusergroup2),
552(testusergroup3),553(testusergroup4),554(testusergroup5),
555(testusergroup6),556(testusergroup7),557(testusergroup8),
558(testusergroup9),559(testusergroup10),560(testusergroup11),
561(testusergroup12),562(testusergroup13),563(testusergroup14),
564(testusergroup15),565(testusergroup16),566(testusergroup17),
567(testusergroup18),568(testusergroup19),569(testusergroup20),
570(testusergroup21),571(testusergroup22),572(testusergroup23),
573(testusergroup24),574(testusergroup25),575(testusergroup26),
576(testusergroup27),577(testusergroup28),578(testusergroup29),
579(testusergroup30),580(testusergroup31)Gibt es da irgendwo ein Limit zum anpassen?
Danke,
Sylvie
Last edited by sylvie on 2005-11-17 19:25, edited 1 time in total.
Re: HTML-Verzeichnis für Lese-Zugriffe anderer User sperren
hm, google sagt, der 2.4er Kernel hat eine Beschränkung auf 32 user in den kernel- und glibc-sourcen.
Der Thread ist vielleicht interessant für Dich:
http://lists.gnu.org/archive/html/savan ... 00051.html
Wenn Du einen 2.6er Kernel hast, kannst Du den Wert evtl. einfach in
/proc/sys/kernel/ngroups_max
erhöhen. Aber wenn jemand eine bessere Idee hat...
PS: kannst Du evtl. Deinen Code-Abschnitt umbrechen? Danke!
Der Thread ist vielleicht interessant für Dich:
http://lists.gnu.org/archive/html/savan ... 00051.html
Wenn Du einen 2.6er Kernel hast, kannst Du den Wert evtl. einfach in
/proc/sys/kernel/ngroups_max
erhöhen. Aber wenn jemand eine bessere Idee hat...
PS: kannst Du evtl. Deinen Code-Abschnitt umbrechen? Danke!
Re: HTML-Verzeichnis für Lese-Zugriffe anderer User sperren
Hi,
ist ein 2.4.32. Ich werde mein Glück mal probieren.
Vielen Dank für Deine Hilfe!!! :-D
Sylvie
ist ein 2.4.32. Ich werde mein Glück mal probieren.
Vielen Dank für Deine Hilfe!!! :-D
Sylvie