M 4.359 Überblick über Komponenten eines Webservers

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

Verantwortlich für Umsetzung: Administrator

Um ein Web-Angebot zur Verfügung stellen zu können, werden sowohl Hardware- als auch Software-Komponenten benötigt. Abhängig von der Funktionalität der Web-Anwendung werden dabei unterschiedliche Server-Typen benötigt. Die Basis-Komponenten stellen der Webserver und der Web-Anwendungsserver dar. In der Regel sind die Dienste für den Webserver und für den Web-Anwendungsserver auf verschiedenen IT-Systemen installiert. Für eine persistente Datenhaltung der Inhalte kommen meist Datenbank-Server zum Einsatz. Daneben kommen für einfache Operationen häufig auch Verzeichnis-Server zum Einsatz, auf deren Daten Clients meist nur lesend zugreifen können. Derartige Verzeichnisse werden beispielsweise zur Ablage von Benutzerdaten verwendet.

Webserver

Ein Webserver ist eine Software-Komponente, mit der Web-Angebote über HTTP und HTTPS bereitgestellt werden können. Damit wird ein Framework zur Verfügung gestellt, dessen Funktionen von der Web-Anwendung genutzt werden können. Häufig wird auch die Hardware, auf dem eine Webserver-Software installiert ist, als Webserver bezeichnet.

Der Webserver ist die Kern-Komponente jedes Web-Angebotes. Er nimmt die Anfragen der Benutzer entgegen und liefert, sofern möglich, selbst die entsprechende Antwort zurück. Dies ist beispielsweise bei statischen Web-Anwendungen der Fall. Angefragte Inhalte werden dabei sofort ohne Aufruf dynamischer Funktionen durch den Webserver zurückgeliefert. Bei dynamischen Web-Anwendungen leitet der Webserver die Anfrage meist an den Web-Anwendungsserver weiter. Dort werden dynamische Funktionen durchgeführt, wie beispielsweise der Aufbau einer Web-Seite auf Grund von Datenbank-Inhalten, und das Ergebnis wieder an den Webserver gesandt. Manche Webserver haben den Web-Anwendungsserver für einige Programmiersprachen integriert ( z. B. unterstützt der Apache-Webserver die Skriptsprache PHP (Akronym für "PHP: Hypertext Preprocessor"). In diesem Fall wird die Anwendung auf dem Server lokal ausgeführt und muss nicht an einen Web-Anwendungsserver weitergeleitet werden.

Da der Webserver direkt von Benutzern angesprochen wird, bietet er auch die exponierteste Angriffsfläche für einen Angreifer. Der Webserver muss sicherstellen, dass nur legitime Anfragen an Hintergrundsysteme weitergeleitet werden, dass Benutzer nur auf die Inhalte Zugriff bekommen, für die sie autorisiert sind, und dass der Webserver nicht durch die Ausnutzung von Software-Schwachstellen kompromittiert werden kann.

Ein Web-Angebot stellt Benutzern Informationen und Funktionen zur Verfügung. Die Benutzer greifen mittels eines Browser darauf zu. Um Web-Angebote betreiben zu können, welche dynamische Funktionen zur Verfügung stellen, bieten sich die folgenden Architekturen an:

Web-Anwendungsserver

Zahlreiche Web-Angebote benötigen zusätzlich zum Webserver weitere Systeme. Beispielsweise werden eigene Web-Anwendungsserver benötigt, wenn Web-Angebote mit Hilfe von Java oder .NET bereitgestellt werden. Programmiersprachen wie PHP, ASP oder Perl funktionieren größtenteils ohne zusätzlichen Web-Anwendungsserver, da die benötigten Funktionen meist direkt im Webserver integriert sind.

Ein Web-Anwendungsserver wird verwendet, um dynamische Web-Angebote zur Verfügung stellen zu können. Dabei werden Anfragen vom Webserver mit entsprechenden Parametern an den Web-Anwendungsserver weitergereicht. Dieser ruft in weiterer Folge die für die Verarbeitung der Anfrage erforderlichen Skripte, Methoden oder Funktionen auf. Je nach Art des Aufrufs führt der Anwendungsserver auch Anfragen an Hintergrundsysteme, beispielsweise an Datenbank- oder Verzeichnis-Server, durch. Das Ergebnis des Web-Anwendungsservers wird dann wieder an den Webserver zurückgegeben.

In einem Web-Anwendungsserver sind einige wichtige Funktionen und Frameworks, welche häufig zum Betrieb von Web-Angeboten benötigt werden, vereinigt. Durch die Kapselung und Abstraktion von Schnittstellen zu anderen Systemen (z. B. Hintergrundsysteme) kann eine saubere Trennung zwischen Anwendung und Datenhaltung erfolgen. Frameworks, die auf Web-Anwendungsservern bereitgestellt werden können, umfassen eine Vielzahl an Funktionen zur Kommunikation mit Hintergrundsystemen. Beispielsweise werden abstrakte Funktionen zum Auslesen und zur Manipulation von Datenbankinhalten geboten, welche nur geringe Kenntnisse über die tatsächlich eingesetzte Datenbank erfordern. Darüber hinaus sind in Frameworks verschiedenste Sicherheitsfunktionen bereits implementiert (z. B. Prepared Statements für SQL-Anfragen, welche die Ausnutzung von SQL-Injection-Schwachstellen verhindern). Durch Hinzufügen weiterer Web-Anwendungsserver zu einem Cluster ist eine Skalierung möglich, ohne dass hierfür die Anwendung modifiziert werden muss.

Datenbank-Server

Um Daten dauerhaft zu speichern, kommen im Zusammenhang mit Web-Angeboten meist Datenbanken zum Einsatz. Diese werden gemeinsam mit den zugehörigen Datenbank-Management-Systemen (DBMS) meist auf dedizierten Datenbank-Servern betrieben. Grundsätzlich werden folgende Formen von Datenbanken unterschieden:

Datenbank-Server müssen speziell geschützt werden (siehe dazu B 5.7 Datenbanken ). So darf der Zugriff auf die darauf befindlichen DBMS nur durch autorisierte Ressourcen erfolgen. Darüber hinaus muss im Sinne des Minimalprinzips auch der Zugriff auf Datenobjekt-Ebene klar definiert und gewartet werden. Wie jede andere Software können auch DBMS Schwachstellen aufweisen, die von Angreifern ausgenutzt werden können, um Zugriff zu vertraulichen Daten zu erhalten. Neben der Einschränkung des Zugriffs müssen daher Maßnahmen umgesetzt werden, um bekannte Schwachstellen zu beseitigen. Speziell für Datenbank-Systeme müssen im Web-Angebot Maßnahmen zum Schutz vor SQL-Injection getroffen werden, da Angreifer sonst möglicherweise Inhalte der Datenbank unberechtigterweise auslesen oder verändern können.

Besonders vertrauliche Inhalte einer Datenbank (z. B. Passwörter) sollten verschlüsselt werden, um sie vor unbefugtem Zugriff zu schützen. Dies erfordert ein geeignetes Schlüsselmanagement und verhindert das Auslesen vertraulicher Daten im Klartext.

Verzeichnisdienst

Mit Hilfe eines Verzeichnisdienstes kann eine zentrale Verwaltung der Benutzerdaten sowie von Rechten erfolgen. Diese Daten werden meist in einer hierarchischen Datenbank abgelegt. Der Zugriff auf einen Verzeichnisdienst erfolgt in der Regel über LDAP (Lightweight Directory Access Protocol). Dieses setzt auf TCP / IP auf und erlaubt die Abfrage und Modifikation von Informationen auf dem Verzeichnisdienst-Server.

Da in Verzeichnisdiensten häufig sensible Daten gespeichert werden, sind auch sicherheitsrelevante Faktoren zu berücksichtigen (siehe B 5.15 Allgemeiner Verzeichnisdienst ). Zum einen sollten sensible Daten (z. B. Passwörter) durch Anwendung geeigneter kryptografischer Verfahren vor unbefugtem Zugriff geschützt werden. Zum anderen besteht bei LDAP, ähnlich wie bei SQL, die Möglichkeit, Anfragen zu manipulieren. Es sind daher geeignete Maßnahmen umzusetzen, um sogenannte LDAP-Injections zu verhindern.

Reverse Proxy

Proxies kommen meist auf der Client-Seite zur Nutzung von Web-Angeboten zum Einsatz. Daneben besteht jedoch auch die Möglichkeit, diese auf der Server-Seite einzusetzen, um Zugriffe zu optimieren (Caching) bzw. eine Filterung durchzuführen. Befindet sich der Proxy auf der Server-Seite, spricht man von einem "Reverse Proxy" (siehe auch M 4.223 Integration von Proxy-Servern in das Sicherheitsgateway ). Alle Anfragen, die an den zugehörigen Webserver gerichtet sind, werden zuerst vom Proxy angenommen. Dieser entscheidet anhand eines konfigurierbaren Regelwerks, ob er die Anfrage selbst beantworten kann (Caching), ob er die Anfrage an den Webserver bzw. einen der Webserver im Cluster weiterleitet oder ob er die Abfrage aus Sicherheitsgründen abweist. Im folgenden werden die wichtigsten Funktionen eines Reverse Proxys kurz erläutert: