M 4.193 Sichere Installation eines Apache-Webservers
Verantwortlich für Initiierung: Leiter IT, IT-Sicherheitsmanagement
Verantwortlich für Umsetzung: Administrator
Bei der Installation eines Apache-Webservers sind verschiedene Aspekte zu berücksichtigen, die direkten Einfluss auf die Sicherheit haben.
Das Betriebssystem des Webserver-Rechners muss sicher installiert und konfiguriert sein. Dazu müssen die entsprechenden IT-Grundschutz-Bausteine umgesetzt werden. Darüber hinaus gibt M 4.192 Konfiguration des Betriebssystems für einen Apache-Webserver Hinweise, welche zusätzlichen Schritte auf dem Rechner durchgeführt werden sollten, der den Apache-Webserver beherbergen soll.
Ein wichtiger Aspekt, der bei der Installation des Apache-Webservers beachtet werden muss, ist die Integrität der zu installierenden Software (siehe M 4.191 Überprüfung der Integrität und Authentizität der Apache-Pakete).
Die mit dem Apache-Webserver mitgelieferte Dokumentation ist sehr detailliert und beschreibt die notwendigen Schritte recht ausführlich. Diese Grundschutz-Maßnahme kann die mitgelieferte Dokumentation nicht ersetzen, sondern lediglich Hinweise auf Punkte geben, die besonders zu beachten sind. Sie bezieht sich auf die Installation einer Binärversion von der Apache-Foundation oder eines aus dem Quellcode kompilierten Apache-Webservers. Apache-Versionen von Betriebssystemherstellern oder Distributoren können davon abweichen.
Seit der Version 2 bietet der Apache-Webserver die Auswahl zwischen verschiedenen sogenannten Multiprocessing-Modulen (MPMs). Die Wahl eines bestimmten MPMs kann die Performance des Apache-Webservers bei verschiedenen Einsatzbedingungen beeinflussen. Das benutzte MPM muss beim Kompilieren des Webservers festgelegt werden. Normalerweise kann das "Standard-MPM" für das jeweilige Betriebssystem übernommen werden, nur bei speziellen Anforderungen sollte davon abgewichen werden. In diesem Fall bietet die Apache-Dokumentation Informationen zur Auswahl eines MPMs. Wie die gesamte Konfiguration sollte die Auswahl des MPMs dokumentiert werden.
Das Kompilieren des Apache-Webservers aus dem Quellcode sollte nicht als root oder Systenadministrator erfolgen. Nachdem die Integrität und Authentizität des Quellcodepackets anhand der digitalen Signaturen überprüft wurde, sollten das Entpacken, die Konfiguration (configure, Festlegung des Installationsverzeichnisses sowie von Vorgabewerten, die fest einkompiliert werden, sowie der zu kompilierenden Module) und der eigentliche Übersetzungsvorgang (make) unter einem unprivilegierten Benutzeraccount durchgeführt werden. Erst der letzte Schritt, die eigentliche Installation des übersetzten Programms (make install) muss gegebenenfalls mit höheren Privilegien erfolgen. Wird das Zielverzeichnis der Installation vorab manuell angelegt und erhält der unprivilegierte Benutzeraccount Schreibberechtigung für dieses Verzeichnis, so kann selbst dieser letzte Schritt unter diesem Account durchgeführt werden.
Wird der Apache-Webserver aus dem Quellcode übersetzt, so muss genau dokumentiert werden, welche Konfigurationsoptionen dabei gewählt wurden. Die Konfiguration muss sich anhand dieser Dokumentation jederzeit nachvollziehen und reproduzieren lassen. Es empfiehlt sich auch, ein Protokoll der Ausgaben des Konfigurations- und Übersetzungslaufs (beispielsweise durch Umleiten der Ausgaben in eine Datei) anzufertigen und aufzubewahren.
Bei der Installation des Apache-Webservers werden im Zielverzeichnis der Installation mehrere Unterverzeichnisse erstellt. Als Zielverzeichnis unter Unix wird im Rahmen dieser Maßnahme das Verzeichnis /usr/local/apache angenommen, unter Windows d:\programme\apache. Das Unterverzeichnis conf enthält die Konfigurationsdateien. Die Unterverzeichnisse logs und htdocs sind in der Standardinstallation für Logdateien bzw. WWW-Dokumente vorgesehen. Diese sollten jedoch nicht benutzt werden, sondern es sollten Verzeichnisse auf eigenen Partitionen benutzt werden (siehe auch M 4.192 Konfiguration des Betriebssystems für einen Apache-Webserver). Im Rahmen dieser Maßnahme werden dafür
- W:\htdocs unter Windows und
- /var/www/htdocs unter Unix (wobei /var/www der Mountpoint eines eigenen Filesystems ist)
für die WWW-Dateien sowie für die Logfiles
- L:\logs unter Windows und
- /var/wwwlogs unter Unix
angenommen.
Die zentrale Konfigurationsdatei für den Apache-Webserver ist die Datei httpd.conf im Unterverzeichnis conf. Dabei handelt es sich um eine reine Textdatei, die je nach Installationsart bereits mit sinnvollen Konfigurationseinstellungen vorbelegt ist. Die Datei ist außerdem mit ausführlichen Kommentaren zur Dokumentation versehen, die sie weitgehend selbsterklärend machen. Die Konfiguration erfolgt durch sogenannte Direktiven. Dabei handelt es sich entweder um "Name-Wert-Paare" oder um Abschnitte in der Datei, die durch "Tags" der Form <Direktive> </Direktive> abgegrenzt werden.
Alle Schritte, die bei der Installation gemacht werden, sollten so dokumentiert werden, dass sich die Konfiguration im Notfall schnell verstehen und reproduzieren läßt. Dies betrifft neben den Einstellungen beim Kompilieren auch Installationspfade, Berechtigungen, Änderungen an der Datei httpd.conf und ähnliche Informationen.
Sichere Installation des Apache-Webserver unter Unix
Der Start des Apache-Webservers sollte im Allgemeinen aus den Startupskripts des Betriebssystems erfolgen. So steht der Webserver auch nach einem Reboot des Server-Rechners direkt zur Verfügung. Ausnahmen bestehen hier unter Umständen beim Einsatz von SSL (siehe auch M 5.107 Verwendung von SSL im Apache-Webserver).
Normalerweise muss der Start des Apache-Webservers unter dem Benutzerkonto root erfolgen, damit der Apache-Webserver den "WWW-Port" 80/tcp benutzen kann. Der Apache-Webserver darf jedoch nicht ständig mit Root-Rechten ausgeführt werden. Zu diesem Zweck muss ein eigenes Benutzerkonto und eine eigene Gruppe, z. B. apache, angelegt werden. Mittels der Direktiven user und group in der Konfiguration httpd.conf wird festgelegt, unter welchem Benutzerkonto der Apache-Webserver ausgeführt werden soll. In der Datei httpd.conf wird durch die Direktiven
- user apache
- group apache
festgelegt, dass der Webserver nach dem Start die Benutzer- und Gruppen-Kennung apache annehmen soll.
Nach der Installation sollte die Konfiguration der Dateizugriffsrechte kontrolliert werden. Das Apache-Verzeichnis und alle darüber liegenden Verzeichnisse müssen dem Benutzer root (oder einem sonstigen Systemkonto) und einer entsprechenden Systemgruppe gehören. Nur die Eigentümer dürfen Schreibzugriff auf diese Verzeichnisse haben. Gleiches gilt für die Unterverzeichnisse des Apache-Verzeichnisses, die Binärdateien, Konfigurations- oder Logdateien enthalten. In der Installation einer Quellcode-Distribution des Apache-Webservers sind dies die Verzeichnisse bin, conf und logs. Auch die Binärdateien selbst sollten nur von root geschrieben werden können.
Sichere Installation unter Windows
Eine sichere Installation des Apache-Webservers unter Windows erfordert einige zusätzliche Maßnahmen, da die Standardkonfiguration, wie sie direkt aus der Kompilierung der Quelltextdistribution entsteht, genauso wie die Standardinstallation des Apache 2.0 mit dem mitgelieferten Microsoft Installer Plugin einige wichtige Regeln zur Absicherung des Apache-Webservers nicht umsetzen. Beispielsweise wird der Apache-Webserver damit unter dem Konto LocalSystem ausgeführt.
Im Rahmen der Installation sollten daher die folgenden Änderungen an der Konfiguration vorgenommen werden:
Für den Apache-Webserver sollte ein spezielles Benutzerkonto (bspw. apache) eingerichtet werden, das nur über die minimal notwendigen Rechte verfügt. Dieses Benutzerkonto muss ein Mitglied der Gruppe Benutzer sein. Zusätzlich müssen dem Benutzerkonto im User Manager spezielle Benutzerrechte eingeräumt werden, damit der Webserver als Dienst ablauffähig ist. Erforderlich sind die Benutzerrechte
- Anmelden als Dienst,
- Sichern von Dateien und Verzeichnissen und
- Wiederherstellen von Dateien und Verzeichnissen.
Laut Dokumentation benötigt der Apache-Webservers zusätzlich das Benutzerrecht Als Teil des Betriebssystems handeln, obwohl der Apache-Webserver auch ohne dieses Privileg arbeitet. Dieses spezifische Benutzerrecht räumt dem jeweiligen Benutzer sehr viele Privilegien auf dem lokalen Rechner ein. Bei Verwendung des Apache-Webservers unter Windows NT sollte daher im Einzelfall geprüft werden, ob die Vergabe dieses Benutzerrechtes wirklich notwendig ist.
Außerdem sollten die Zugriffsrechte im Dateisystem modifiziert werden, da in der Voreinstellung alle Benutzer Vollzugriff auf alle Dateien des Apache-Webservers haben. Bei der Beschränkung des Zugriffs auf diese Verzeichnisse muss jedoch sichergestellt werden, dass der Apache-Webserver über die für den ordnungsgemäßen Ablauf notwendigen Zugriffsrechte verfügt.
Die folgende Tabelle gibt die notwendigen Zugriffsrechte für die im Verzeichnis d:\programme\apache enthaltenen Dateien und Ordner an.
Datei bzw. Verzeichnis | Zugriffsrechte |
---|---|
Apache |
Administrator: F System: F apache: R |
Apache/Apache.exe |
apache: RX |
Apache/ApacheCore.dll |
apache: RX |
Apache/Win9xConHook.dll |
apache: RX |
Apache/logs |
apache: RWXD |
Apache/logs/* |
apache: RWD |
htdocs |
WWW-Redakteure: F apache: RX |
proxy |
apache: RWD |
Tabelle: Zugriffsrechte
Der Zugriff auf das htdocs Verzeichnis, das den WWW-Dateibaum enthält (hier W:\htdocs), sowie seine Unterverzeichnisse, sollte so eingeschränkt werden, dass nur Benutzer (im obigen Beispiel WWW-Redakteure genannt), die Daten in den Webserver einstellen dürfen, Zugriff auf die jeweiligen Verzeichnisse haben.
Ergänzende Kontrollfragen:
- Wurde die Integrität der Software vor der Installation überprüft?
- Wie ist die Konfiguration dokumentiert?
- Welche Zugriffsrechte bestehen auf das WWW-Verzeichnis (DocumentRoot)?