| |
nutzer und seine Rechte, ein.
Ein weiterer Hauptaskept bei der Scha ung eines sicheren Webservers, ist die
Kontrolle der Dateizugri e und des Ausführens von Code. Diesem Thema wid-
met sich Abschnitt 4.2.
4.1 Rechte bei der Verarbeitung von Anfragen
Dieser Abschnitt geht auf die Rechte bei der Verarbeitung von Anfragen ein.
Es geht dabei um die Rechte des Webservers und die damit verbundenen Ge-
fahren. In Abschnitt 3.1 wurde darauf hingewiesen, dass die HTTP Standard
Portnummer 80 zu den Systemports gehört und dass UNIX (zur Erhöhung der
Systemsicherheit) auf diese Ports nur Programme zugreifen lässt, die mit root-
Rechten ausgeführt werden. Der Apache Webserver muss also als root gestartet
werden. Ein mit root-Rechten gestartetes Programm, stellt stets eine Bedrohung
für ein System dar, denn es darf alles. Würde zur Bearbeitung einer Anfrage
ein Skript ausgeführt und würde dies ebenfalls mit root-Rechten ausgeführt, so
könnte es einen Server in einer Millisekunde lahmlegen.
Um dieser großen Gefahr zu begegnen, werden Anfragen mit den Rechten eines
Benutzers ausgeführt, dessen Rechte stark eingeschränkt sind. Normalerweise
hält dafür ein extra angelegter Benutzer wie z.B. www oder webuser her. Da
ein Benutzer auch über die Gruppe, der er angehört Rechte beziehen kann, wir
dieser Benutzer einer extra angelegten Gruppe zugeordnet, wie z.B. www oder
webgroup.
Der Mechanismus, einen anderen Benutzer zur Bearbeitung der Anfagen zu be-
nutzen, ist an der Stelle implementiert, wo die in 3.3 vorgestellte Erzeugung
der Child-Prozesse stattfindet. Der Aufruf von httpd startet eine Instanz des
Apache Webservers, die root-Rechte hat, aber selber keine Anfragen bearbeitet.
Diese Instanz startet dann die Child-Prozesse als Benutzer mit eingeschränkten
Rechten. Welchen Benutzer Apache für die Child-Prozesse nimmt kann über die
User Direktive und die Group Direktive festgelegt werden.
Sieht die Konfigurationsdatei httpd.conf wie folgt aus:
...
User www
...
Group www
...
MinSpareServers 1
...
MaxSpareServers 5
...
StartServers 1
...
dann liefert ps -aux, was dazu dient, alle aktiven Prozessse auszugeben, das
Folgende (hier unter Mac OSX):
USER
PID %CPU %MEM
VSZ
RSS TT STAT
TIME COMMAND
root
235
0.0
0.0
1288
116 ?? Ss
0:00.00 inetd
16
|  |
|
| |
|
|