HTML-Verzeichnis für Lese-Zugriffe anderer User sperren

Rund um die Sicherheit des Systems und die Applikationen
Post Reply
sylvie
Posts: 5
Joined: 2005-11-16 13:59
 

HTML-Verzeichnis für Lese-Zugriffe anderer User sperren

Post by sylvie »

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
andreask2
Posts: 696
Joined: 2004-01-27 14:16
Location: Aachen
 

Re: HTML-Verzeichnis für Lese-Zugriffe anderer User sperren

Post by andreask2 »

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

Code: Select all

    <Directory "/">
        Order Allow,Deny
        Deny From All
    </Directory>
und entsprechenden Direktiven in jedem vhost wie

Code: Select all

    <Directory "/home/USER1/html">
        Order Allow,Deny
        Allow From All
    </Directory>
verhindern.
sylvie
Posts: 5
Joined: 2005-11-16 13:59
 

Re: HTML-Verzeichnis für Lese-Zugriffe anderer User sperren

Post by sylvie »

Hi,
andreask2 wrote:verwende für die Dateien eine Gruppe, in denen der Apache Mitglied ist, aber nicht die User.
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.

Trotzdem danke für die Antwort,
Sylvie
andreask2
Posts: 696
Joined: 2004-01-27 14:16
Location: Aachen
 

Re: HTML-Verzeichnis für Lese-Zugriffe anderer User sperren

Post by andreask2 »

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.
Was spricht dagegen den Apachen mit in die jeweiligen Gruppen zu packen?
sylvie
Posts: 5
Joined: 2005-11-16 13:59
 

Re: HTML-Verzeichnis für Lese-Zugriffe anderer User sperren

Post by sylvie »

andreask2 wrote:Was spricht dagegen den Apachen mit in die jeweiligen Gruppen zu packen?
Mein Gott, so einfach kann es sein!!!!

1000 Dank ! :-D

Sylvie
sylvie
Posts: 5
Joined: 2005-11-16 13:59
 

Re: HTML-Verzeichnis für Lese-Zugriffe anderer User sperren

Post by sylvie »

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:

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)
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
Last edited by sylvie on 2005-11-17 19:25, edited 1 time in total.
andreask2
Posts: 696
Joined: 2004-01-27 14:16
Location: Aachen
 

Re: HTML-Verzeichnis für Lese-Zugriffe anderer User sperren

Post by andreask2 »

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!
sylvie
Posts: 5
Joined: 2005-11-16 13:59
 

Re: HTML-Verzeichnis für Lese-Zugriffe anderer User sperren

Post by sylvie »

Hi,

ist ein 2.4.32. Ich werde mein Glück mal probieren.

Vielen Dank für Deine Hilfe!!! :-D

Sylvie
Post Reply