46.6. Sicherheit

Ein dem öffentlichen Internet ausgesetzter Webserver erfordert ständige Wartungs- und Verwaltungsarbeiten. Sicherheitsprobleme, verursacht durch die Software wie auch durch versehentliche Fehlkonfigurationen, sind kaum zu vermeiden. Im Folgenden einige Tipps zur Verbesserung der Sicherheit.

Bleiben Sie stets auf dem neuesten Stand

Bei Bekanntwerden von Sicherheitsrisiken in der Apache-Software veröffentlicht SUSE sofort einen entsprechenden Sicherheitshinweis. Dieser enthält Anleitungen zur Behebung der Risiken, die möglichst frühzeitig ausgeführt werden sollten. Die SUSE-Mailing-Liste zu Sicherheitsankündigungen ist unter http://www.suse.com/us/private/support/online_help/mailinglists/ verfügbar. Die neuesten Informationen zu Sicherheitsaspekten in SUSE Linux-Paketen werden außerdem unter http://www.novell.com/linux/security/securitysupport.html online veröffentlicht.

Außerdem sollten Sie sich in die Apache-Mailing-Liste eintragen (http://httpd.apache.org/lists.html#http-announce), über die neue Versionen und Bug Fixes veröffentlicht werden.

DocumentRoot-Berechtigungen

In SUSE Linux sind das DocumentRoot-Verzeichnis /srv/www/htdocs (absoluter Pfad) und das CGI-Verzeichnis /srv/www/cgi-bin standardmäßig dem Root-Benutzer zugeordnet. Diese Berechtigungen sollten nicht geändert werden. Wenn diese Verzeichnisse für alle Benutzer modifizierbar wären, könnte jeder Benutzer Dateien darin ablegen. Diese Dateien würden dann von Apache mit wwwrun-Berechtigungen ausgeführt werden, was wiederum dem Benutzer unbeabsichtigt Zugriff auf die Ressourcen des Dateisystems gewähren würde. Verwenden Sie Unterverzeichnisse von /srv/www/htdocs und /srv/www/cgi-bin zur Organisation von benutzer- oder domänenspezifischen Daten in Kombination mit der Directory-Direktive (siehe Directory (Verzeichnis)).

CGI- und SSI-Verzeichnisse

Interaktive Skripts in Perl, PHP, SSI oder anderen Programmiersprachen können im Prinzip jeden beliebigen Befehl ausführen. Eine Möglichkeit, das damit einhergehende Sicherheitsrisiko zu vermindern, ist eine Ausführungsbeschränkung für CGIs und SSIs (siehe Abschnitt 46.5.1.2, „Common Gateway Interface: mod_cgi, ScriptAlias und Abschnitt 46.5.1.1, „Serverseitige Includes (Einschlüsse) mit mod_include) auf bestimmte Verzeichnisse, statt einer globalen Zulassung dieser Skripts.

Eine andere Möglichkeit ist die generelle Verwendung von mod_suexec (siehe Abschnitt 46.5.2.1, „Ausführen von CGIs unter einem anderen Benutzer mit mod_suexec) für CGIs. Auch eine sicherheitsbewusste Interpreterkonfiguration für die jeweiligen Apache-Module, wie in Abschnitt 46.5.3.2, „Unterstützung für PHP: mod_php4, mod_php5 beschrieben, ist bereits ein großer Schritt in Richtung einer sicheren Web-Umgebung.

Zugriffsberechtigungen

Besonders in Testumgebungen werden die Zugriffsberechtigungen für einen Webserver oft nachlässig behandelt, da es sich ja „nur“ um einen Konfigurationstest handelt. Dies kann zur versehentlichen Freigabe sensitiver Informationen, ja sogar zur Preisgabe eines vollständigen Servers an das falsche Publikum führen. Verwenden Sie die Order-Direktive (http://httpd.apache.org/docs-2.0/mod/mod_access.html#order) in Verbindung mit .htaccess-Dateien (siehe Abschnitt 46.3.2.3.3, „AccessFileName Dateinamen), um den Zugriff auf bestimmte Websites auf einen bestimmten Benutzer- oder Client-Kreis einzuschränken.

Zusätzlich können Sie nach dem Grundsatz „Sicherheit durch Verschleierung“ vorgehen. Ein typisches Beispiel hierfür wäre die Ausführung von Apache an einem nicht standardgemäßen Port (siehe Auswahl des Netzwerkgeräts). An die URLs würde in diesem Fall die Port-Nummer angefügt werden (z. B. http://www.beispiel.com:8765), was in Testumgebungen durchaus akzeptabel ist.