Sie befinden sich hier: Themen IT-Grundschutz-Kataloge. Inhalt. Dokumententitel: M 4.194 Sichere Grundkonfiguration eines Apache-Webservers - IT-Grundschutz-Kataloge - Stand 2006
direkt zu der Navigation Servicebereich. direkt zu der Hauptnavigation. direkt zur Themennavigation. direkt zum Seiteninhalt.

M 4.194 Sichere Grundkonfiguration eines Apache-Webservers

Verantwortlich für Initiierung: Leiter IT, IT-Sicherheitsmanagement

Verantwortlich für Umsetzung: Administrator

Nachdem der Apache-Webserver installiert wurde, muss eine sichere Grundkonfiguration vorgenommen werden. Dies betrifft beispielsweise die Einstellungen für Erweiterungsmodule und für Zugriffe auf Verzeichnisse innerhalb und außerhalb des WWW-Bereichs, aber auch Einstellungen, die auf den Performance des Servers Einfluss haben.

Generell sollte mittels der Direktive HostnameLookups Off explizit festgelgt werden, dass der Server keine Namensauflösung für IP-Adressen vornimmt, von denen HTTP-Anfragen gesendet werden. In den Logdateien werden dann die Zugriffe mit der betreffenden IP-Adresse gespeichert und diese kann später, falls nötig, bei der Auswertung der Logdateien aufgelöst werden.

Server-Wurzelverzeichnis und Logdateien

In der Datei httpd.conf wird mit der Direktive

ServerRoot /usr/local/apache

das Verzeichnis angegeben, in dem der Apache-Webserver installiert wurde. Relativ zu diesem Verzeichnis werden beispielsweise die Konfigurationsdateien gesucht.

Mit der Direktive

ErrorLog /var/wwwlogs/error.log

wird die Fehlerprotokolldatei für den Server festgelegt. Die Direktive LogLevel gibt an, welche Art von Fehlern protokolliert werden soll. Je nach LogLevel kann die Fehlerprotokolldatei recht schnell anwachsen. Normalerweise ist die Default-Einstellung warn für den LogLevel angemessen.

Für die Erzeugung von Zugriffsprotokollen ist das Modul mod_log_config zuständig. Ist dieses Modul geladen, so können mit der Direktive LogFormat die zu protokollierenden Informationen festgelegt werden. Mit der Direktive AccessLog wird anschliessend eine Datei für die Zugriffsprotokolldatei angegeben. Informationen zur Festlegung eines geeigneten Formats für Logdateien finden sich in der httpd.conf Beispieldatei sowie in der Apache-Dokumentation.

Da Zugriffsprotokolldateien noch mehr als Fehlerprotokolldateien sehr schnell anwachsen können, sollten sie regelmäßig gesichert werden. Anschliessend sollte der Server mit einer neuen Zugriffsprotokolldatei neu gestartet werden.

Informationen über den Server

Aus den HTTP-Header-Zeilen von Antworten auf Anfragen oder in Fehlermeldungen können Angreifer oft Informationen über die Version der Server-Software und andere Details gewinnen. Diese Informationen können dann eventuell dazu genutzt werden, um bestimmte Angriffsmethoden auszuwählen

und so schneller den Server zu kompromittieren. Daher sollte auf diesen "Seitenkanälen" so wenig Informationen wie möglich geliefert werden.

Mit der Direktive ServerTokens wird gesteuert, welche Informationen der Server in den HTTP-Header-Zeilen der Antwort auf Anfragen über sich selbst liefert. Dies sollte mittels

ServerTokens Prod

auf das Mindestmaß beschränkt werden. Mittels

ServerSignature Off oder ServerSignature EMail

sollte außerdem die Information beschränkt werden, die der Server bei servergenerierten Dokumenten übermittelt.

In bestimmten Fehlermeldungen wird vom Server die E-Mail-Adresse des Administrators als Kontakt genannt. Daher sollte eine Funktions-E-Mail-Adresse (beispielsweise admin@servername) eingerichtet und mittels

ServerAdmin admin@servername

im Server eingestellt werden. E-Mails an diese Adresse müssen vom Server-Administrator regelmäßig ausgewertet werden.

Einstellungen für Verzeichnisse und Dateien

Die Wurzel des WWW-Dateibaums wird durch die DocumentRoot-Direktive festgelegt:

DocumentRoot /var/www/htdocs

Dies bedeutet jedoch nicht, dass keine Dokumente ausserhalb des hier angegebenen Verzeichnisses ausgeliefert würden. Durch Direktiven wie Alias (Modul mod_alias) oder durch symbolische Links können auch Dokumente ausserhalb der DocumentRoot ausgeliefert werden. Der Zugriff auf die Dateien des Webserver-Rechners außerhalb des WWW-Verzeichnisses sollte in der Apache Konfigurationsdatei über einen Limit-Abschnitt für das Wurzel-verzeichnis / verhindert werden:

<Directory / >
Options None
AllowOverride None
Order Deny,Allow
Deny from All
</Directory>

Lediglich der Zugriff auf das mittels DocumentRoot festgelegte WWW-Verzeichnis sollte wieder mittels eines entsprechenden Limit-Abschnittes für Anfragen geöffnet werden.

<Directory /var/www/htdocs >
Order Deny,Allow
Allow from All
</Directory>

Werden Verzeichnisse von ausserhalb der DocumentRoot mittels Alias in den WWW-Dokumentenbaum eingebunden, so muss auch für diese mit einer entsprechenden Directory-Direktive der Zugriff erlaubt werden.

Ist kein Datentransfer von Clients zum Webserver vorgesehen, so sollten PUT-Requests mittels einer entsprechenden Limit-Direktive verboten werden.

Optionen für Verzeichniszugriff

Für den Zugriff auf die Verzeichnisse im WWW-Dateibaum existieren eine Reihe von Optionen, die mit der Direktive Options innerhalb eines <Directory> Abschnitts festgelegt werden können. Wie oben beschrieben sollten per Default alle Optionen mittels Options None ausgeschaltet werden und nur in solchen Bereichen, in denen bestimmte Funktionalitäten benötigt werden, sollten diese aktiviert werden. Beispiele:

.htaccess-Dateien

.htaccess-Dateien bieten die Möglichkeit, innerhalb eines Verzeichnisses im WWW-Dateibaum Einstellungen für dieses Verzeichnis festzulegen. Diese Einstellungen überschreiben gegebenenfalls solche, die in der Datei httpd.conf getroffen wurden.

Das Überschreiben der Konfigurationseinstellungen durch Einträge in den .htaccess-Dateien sollte per Default abgeschaltet sein und nur bei Bedarf für einzelne Bereiche freigeschaltet werden. Welche Einstellungen in .htaccess-Dateien verändert werden dürfen, wird mit der Option AllowOverride festgelegt (siehe oben: AllowOverride None). Da .htaccess-Dateien im WWW-Bereich stehen und eventuell sensitive Informationen enthalten, sollte außerdem mit der Einstellung

<Files ~ "^\.ht">
Order allow,deny
Deny from all
<Files>

festgelegt werden, dass Files, deren Name mit ".ht" beginnt, nicht ausgeliefert werden dürfen.

Einstellungen für URL-Bereiche

Neben der Zugriffssteuerung auf Verzeichnisse kann dies mit der <Location> -Direktive auch für bestimmte "URL-Bereiche" auf dem Webserver geschehen. Dies ist beispielsweise relevant, wenn ein Verzeichnis von außer-halb des DocumentRoot-Directories mit einer Alias-Direktive in den WWW-Dokumentenbaum eingebunden wurde oder wenn bestimmte URL-Bereiche nicht direkt einem Verzeichnis im Dateisystem entsprechen. Dies kann beispielsweise bei dynamisch erzeugten Webseiten der Fall sein.

Module

Bei der Installation einer Binärversion des Apache-Webservers werden eine Anzahl von Erweiterungsmodulen standardmäßig mit installiert. Das Laden eines Moduls erfolgt durch die Direktive LoadModule. So würde beispielsweise die Zeile

LoadModule access_module modules/mod_access.so

das Modul mod_access laden. Prinzipiell sollten nur diejenigen Module im Server aktiviert werden, die für den Betrieb des Webservers benötigt werden. Der Grund hierfür ist der gleiche wie bei der Absicherung des Betriebssystems: Systeme sollten stets möglichst minimal konfiguriert werden, um so das Risiko des Vorhandenseins einer Sicherheitslücke zu minimieren.

Die Module mod_status und mod_info sollten nach Möglichkeit nicht geladen werden, da bei Verwendung dieser Module der Apache-Webserver eine Reihe von Statusinformationen über den Webserver über die HTTP-Schnittstelle bereitstellt. Wird der Zugriff auf die Statusinformationen aus wichtigen Gründen benötigt, so sollte zumindest eine sehr restriktive Zugangsbeschränkung über entsprechende <Location> Direktiven vorgenommen werden.

Die Auswahl der Module sollte dokumentiert werden, damit zu jeder Zeit nachvollzogen werden kann, welche Module zu welchem Zweck gebraucht werden.

Performance-Einstellungen

Der Apache-Webserver erlaubt verschiedene Einstellungen, mit denen die Performance des Webservers beeinflusst werden kann. Diese Einstellungen hängen teilweise vom gewählten MPM und Betriebssystem ab.

Für diese Einstellungen enthält die Standardkonfiguration Vorgabewerte, die in vielen Fällen ausreichend sind. In der Dokumentation werden die einzelnen Direktiven erläutert. Von den Vorgabewerten sollte nur dann abgewichen werden, wenn die Auswirkungen absehbar sind, idealerweise sollten Änderungen auf einem Testsystem überprüft werden, bevor sie auf einem Produktivsystem übernommen werden.

Generell sollte bei Änderungen an systemnahen Einstellungen, die auf das Zusammenspiel zwischen dem Apache-Webserver und dem unterliegenden Betriebssystem Einfluss haben, eher konservativ vorgegangen werden.

Ergänzende Kontrollfragen: