| |
...
root
443
0.0
0.1
5876
928 std S
0:00.12 -tcsh (tcsh)
root
450
0.0
0.1
2420
980 ?? Ss
0:00.04 httpd
www
451
0.0
0.0
2420
268 ?? S
0:00.00 httpd
root
452
0.0
0.0
1324
288 std R+
0:00.01 ps -aux
...
Die Ausgabe zeigt, dass httpd mit der Prozessnummer 450 gestartet wurde und
sofort, wie von StartServers 1 verlangt, einen Child-Prozess gestartet hat.
Der Child Prozess gehört, wie am USER-Eintrag für Prozess 451 sichtbar ist,
dem Benutzer www, dessen Rechte stark eingeschränkt sind.
Unter Windows steht diese Sicherheitsvorkehrung nicht zur Verfügung, Apache
ignoriert dort die User und Group Direktiven.
4.2 Kontrolle von Code-Ausführung und Dateizugri en
Dieser Abschnitt widmet sich den beiden Hauptgefahren. Die erste Gefahr
ist, das Unheil anrichtender Code ausgeführt werden kann, worunter auch die
Ausführung von Shell-Befehlen zählt. Die zweite Gefahr ist, dass unerlaubt auf
Dateien zugegri en werden kann, sei es lesend oder schreibend.
Den ersten Schutz vor unerlaubten Zugri en auf Dateien bietet bereits
das UNIX Dateisystem. Wie Abschnitt 3.5 beschreibt, wird die in der HTTP-
Anfrage gelieferte URI in einen Dateinamen übersetzt. Auf diese Datei wird
dann als der Benuter zugegri en, unter dem die Child-Prozesse laufen, dies
sei im Folgenden webuser. Das bedeutet unter UNIX, dass die Rechte für die
Datei entsprechend gesetzt sein müssen.
Apache kann auf vier Dateiarten zugreifen, auf Verzeichnisse, Daten, Program-
me und Shell-Skripte. Der webuser muss das Recht haben sich alle ö entlichen
Verzeichnisse anzusehen. Er benötigt für Daten Leserechte, für Programme
Ausführungsrechte und für Skripte Lese- sowie Ausführungsrechte.
Es ist sinnvoll, ihm diese und nur diese Rechte zu geben. Wenn die Dateien
webuser gehören, kann er selber (also auch ein von ihm ausgeführtes bösartiges
Programm) seine Rechte beliebig ändern. Daher ist es aus Sicherheitsgründen
sinnvoll, wenn die Dateien dem root-Benutzer gehören und der Zugri über
das Setzen des Dateiattributes für Andere geschieht10.
Eine weitere Gefahr droht durch die Nutzung von symbolischen Links.
Einige Dateien, zum Beispiel CGI-Skripte sollten dem webuser gehören, um
nicht das Leserecht für die Anderen setzen zu müssen. D.h. normalerweise
hat nur der webuser zugri darauf. Ein normaler Nutzer kann (und das ist gut
so) das Skript nicht lesen und ihm bleiben mögliche Sicherheitslücken in dem
Skript verborgen.
Nehmen wir an, aufgrund der UserDir-Direktive, können Benutzer in ihrem
WWW-Verzeichnis Dateien verö entlichen. Platziert ein Benutzer in seinem
10UNIX bietet die Angabe von Rechten getrennt nach Besitzer, Gruppe des Besitzers und
Anderen
17
|  |
|
| |
|
|