|
Standard-ServerAdministration eines Apache ServersDer Apache Web-Server basiert auf dem NCSAWeb-Server, Version 1.3 undwurde im April 1995 als erste Beta Version veröffentlicht. Innerhalbkürzester Zeit hat er sich zur Nummer 1 unter den im Internet eingesetztenServern entwickelt.Ihn zeichnet die Verfügbarkeit auf fastallen Plattformen, die hohe Performance bei geringen Hardwareanforderungenund seine Flexibilität aus. Dieser letzte Punkt wird vor allem durch dasmodulare Konzept des Apache erreicht. Es wird normalerweise ein httpd-Hauptprozeß gestartet, der sich an alle ihm durch Port oder Listen zugewiesene Ports (normalerweise 80 (Standard) oder 443 (SSL)) bindet. Anschließenderzeugt dieser Hauptprozeß Kindprozesse unter der eingestellten UIDund GID, die die Client-Anfragen behandeln. Mit der MinSpareServerund MaxSpareServers wird bestimmt, wieviele unbeschäftigte Kindprozesse in Reserve gehalten werden (preforking). Mit der Variablen MaxClients kann man festlegen, wieviele Kindprozesse maximal gleichzeitig gestartet werden können. Vorteil dieser Methode ist die schnelle Reaktion des Servers auf Clientanfragen.Nachteil ist der große Speicherplatzbedarf. Hat man das Maximum angleichzeitigen Kindprozessen zu hoch eingestellt, reicht der Hauptspeichernicht für alle Prozesse aus und das dadurch hervorgerufene Swapping
verringert die Performance drastisch.
Konfiguration
Normalerweise wird für die Konfiguration nur eine Datei verwendet,
httpd.conf, in der auch die Einstellungen von access.conf
und srm.conf vorgenommen werden. An dieser Stelle werden die Daten
der übersichtlichkeit halber dreigeteilt:
Einstellungen in httpd.conf
Abhängig von den eingebundenen Modulen steht eine Vielzahl von Einträgen
zur Verfügung. Hier werden nur einige Standardparameter aufgelistet:
ServerType standalone |
Es wird festgelegt, daß der Server beim
Starten selbst den mit Listen definierten Port (Standard ist 80) öffnet
und auf Anfragen wartet. |
Listen 80 |
Falls mehrere Interfaces bzw. IP Adressen für
den Rechner vorhanden sind, kann mit Listen festgelegt werden, welche Ports
für welche Adresse abgehört werden sollen |
User wwwrun Group nogroup |
Nach dem öffnen des Ports (als root), wechselt
Apache zu der als User und Group angegebenen UID bzw. GID. Die Zuweisung
kann entweder durch angeben des Namens oder durch # gefolgt von der ID
erfolgen |
ServerAdmin webmaster@domain.tld |
Bei Fehlermeldungen wird diese Mail-Adresse an den Client
geliefert. |
ServerName www.zwergenburg.de |
Name des Servers. Ohne ServerName würde der
richtige Hostname des Rechners zurückgeliefert. Wichtig für Redirects
und virtuelle Hosts. |
ServerRoot /opt/www |
Diese Einstellung sorgt dafür, daß
Apache ausgehend von diesem Verzeichnis die Verzeichnisse für Dokumente,
Logfiles und Konfigurationsdateien sucht. |
DocumentRoot /opt/www/htdocs |
Hier werden die HTML Seiten abgelegt. Unterhalb
/opt/www können dann Dateien liegen, die nicht über das
Webinterface zugänglich sein sollen. |
AccessConfig /etc/httpd/access.conf |
Datei zur Definition der Funktionen und Zugriffsrechte
bestimmter Verzeichnisse |
ResourceConfig /etc/httpd/srm.conf |
Diese Datei enthält Angaben zur Formatierung
und dem Aussehen der automatisch erzeugten Verzeichnisindizes (FancyIndexing)
sowie Angaben zu den einzelnen Dateitypen. |
TypesConfig /etc/httpd/mime.types |
Enthält die Zuordnung Dateiendung zu Mime-Typ |
PidFile /var/run/httpd.pid |
Datei, in der sich die Prozeß ID des Httpd-Daemons
befindet |
LockFile /var/locks/httpd.lock |
Spezifizert das Lock File |
ErrorLog /var/log/httpd/httpd.error |
Datei zur Aufnahme von Fehlermeldungen und sonstigen
Info Meldungen (mod_log_config) |
ScriptLog /var/log/httpd/httpd.script |
Datei zum Debuggen von CGI-Scripten (mod_cgi) |
CustomLog /var/log/httpd/httpd.access
"%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\"" |
Erzeugt die Datei httpd.access im Combined Log
Format (Hostname, Remote Logname, User ID, Zeit, erste Zeile der Client-Anfrage,
HTTP-Statuscode, Größe der vom Server ausgelieferten Datei (ohne
Header), Wert des Referer Headers, Wert des User-Agent Headers) |
Timeout 300 |
Zeitlimit für Client-Anfragen in
Sekunden |
StartServers 5 |
Es werden automatisch 5 Kindprozesse des
Apache gestartet |
MaxClients 150 |
Maximal gleichzeitig laufende Server-Prozesse |
MaxRequestsPerChild 30 |
Nach 30 Anfragen wird der Kindprozeß beendet
und gegebenenfalls ein neuer gestartet. |
MinSpareServers 5 MaxSpareServers 10 |
Es existieren immer mindestens 5 und höchstens
10 leerlaufende Prozesse |
KeepAlive On |
Unterstützung der HTTP-1.1-Persistent
Connections. Dadurch können über eine TCP-Verbindung mehrere
Anfragen an den Server geschickt werden. |
MaxKeepAliveRequests 10 |
Es werden 10 aufeinanderfolgende Anfragen innerhalb
einer Keep-Alive-Verbindung erlaubt. |
KeepAliveTimeout 15 |
Der Server wartet maximal 15 Sekunden
auf weitere Anfragen des Clients bei einer Keep-Alive-Verbindung |
HostnameLookups Off |
Es sollen keine DNS-Lookups ausgeführt
werden. Aus performancegründen anzuraten. |
Einstellungen in access.conf
<Directory />
Options None
AllowOverride None
Order deny,allow
Deny from all
</Directory> |
Im root-Verzeichnis werden keine Konfigurationsanweisungen
in der Datei .htaccess beachtet und es wird kein Zugriff auf irgendwelche
Unterverzeichnisse gestattet |
<Files ~
"(\.htaccess|/core|~|#|\.bak|\.BAK)$">
order deny,allow
deny from all
</Files> |
Es wird kein Zugriff auf Dateien gestattet
die .htaccess heißen, sich in einem Verzeichnis core befinden oder
~ bzw. # enthalten oder mit .bak bzw. .BAK enden |
<Location />
Otions SymLinksIfOwnerMatch IncludesNOEXEC
order allow,deny
allow from all
AuthType Basic
AuthUserFile /etc/httpd/passwd
</Location> |
Für /opt/www/htdocs
und alle Unterverzeichnisse wirde festgelegt, daß symbolische Links
verfolgt werden dürfen, wenn sie dem Benutzer (wwwrun)
gehören und daß Include Anweisungen ausgeführt werden dürfen
(außer exec).
|
<Directory /opt/www/cgi-bin>
Options ExecCGI
Order allow,deny
Allow from all
</Directory> |
Im Verzeichnis cgi-bin können CGI-Scripts
ausgeführt werden |
Einstellungen in srm.conf
Alias /icons /opt/www/icons
Alias /cgi-bin /opt/www/cgi-bin
Alias /images /opt/www/images |
Aliasname für bestimmte Directories. Diese
werden anschließend behandelt, wie wenn sie sich unter htdocs
befinden würden |
UserDir public_html |
Benutzer können in ihren
Homedirectories ein Unterverzeichnis namens public_html
anlegen und so eigene Seiten veröffentlichen, die über
servername/~username erreichbar sind. |
DirectoryIndex index.html |
Wird nur ein Directory angegeben, wird automatisch
nach einer Datei index.html gesucht und angezeigt. |
IndexOptions FancyIndexing |
Wird keine Index-Datei gefunden, wird der Inhalt
des Verzeichnisses als Verzeichnisbaum angezeigt. Mit AddIcon
werden bestimmten Dateendungen dann bestimmte Icons zugeordnet. |
IndexIgnore .??* *~
*# *.bak *.BAK HEADER.* README.* RCS core |
Diese Dateien werden nicht durch FancyIndexing
angezeigt |
AccessFileName .htaccess |
Jedes Verzeichnis kann eine Datei .htaccess
enthalten, mit der (falls erlaubt) die Optionen von access.conf
überschrieben werden k&oum;nnen. |
DefaultType text/plain |
Dateien ohne Endung werden wie Text-Files behandelt. |
Wie man Verzeichnisse durch Passwort schützen kann, erfahren Sie, wenn Sie
das Verzeichnis /geheim auf diesem
Server wählen. Um sich zu authentisieren, geben Sie als Usernamen "user"
und als Passwort "geheim" eingeben.
Viele Server bieten die Möglichkeit, zu jedem Verzeichnis automatisch
eine Inhaltsseite zu erstellen. Da freut sich der Hacker: Mit der URL
"https://domain/cgi-bin/" erhält er ein schönes Listing aller
installierten CGI-Skripte. Mit etwas Glück ist auch noch die eine oder
andere von einem Editor erstellte Backup-Datei übriggeblieben und kann
direkt heruntergeladen werden. Zur Abhilfe sollte man unbedingt die
automatische Indexfunktion ausschalten, zumindest in allen Verzeichnissen,
die CGI-Skripte enthalten. Unter Windows NT sollte man dem Web-Server im
/cgi-bin/-Verzeichnis nur Ausführungs- und keine Leserechte gewähren.
Falls man keinen Einfluß auf die Konfiguration hat, etwa weil die
Website bei einem Service-Provider liegt, sollte man eine leere
"index.html"-Seite anlegen. Surfer bekommen dann diese anstelle des
Verzeichnis-Listings angezeigt. Weiterhin sollte man prüfen, ob der
Lieblings-Editor Backup-Dateien hinterläßt, und diese
regelmäßig löschen.
Wo wir schon beim Aufräumen sind: Es gab in der Vergangenheit
Fälle, wo im Lieferumfang des Web-Servers gefährliche
CGI-Beispielskripte enthalten waren. Deshalb sollte man alle CGI-Skripte
vom Server entfernen, die man nicht benötigt. Denn was nicht
vorhanden ist, kann auch keinen Schaden anrichten.
|
|
|