Der Webserver – Bedeutung, Arten und Absicherung!

Die Begriffe Webserver und Webclient werden häufig verwendet, wenn man über Internetseiten oder generell dem Internet spricht. Wir beschäftigen uns heute damit, was ein Webserver eigentlich ist. Welche Aufgaben dieser hat und mit einem Fokus auf die IT-Sicherheit, worauf man achten sollten, wenn man einen Webserver betreiben möchte.

Die Aufgaben eines Webservers

Ein Webserver ist der Kommunikationspartner des Webclients. Das beste Beispiel, um die Aufgaben eines Webservers zu erklären ist, das Aufrufen einer Webseite. Wenn Sie in Ihrem Browser eine Internetadresse eingeben wie bspw. „https://www.internet-sicherheit.de/“ sendet Ihr Browser eine HTTP-Anfrage an des Webserver der auf dieser Adresse wartet.

Ein Webserver ist eine spezielle Software bzw. ein spezieller Dienst, der darauf wartet, eingehende HTTP-Anfragen zu beantworten. Hinter der Internetadresse befindet sich eine IP-Adresse, die das Ziel unserer HTTP-Anfrage angibt. Diese IP-Adresse für durch DNS herausgefunden, sodass wir als Mensch ganz bequem „https://www.internet-sicherheit.de/“ eingeben können und uns keine IP-Adresse wie bspw. 194.94.127.43 merken müssen.

Sobald unser Computer die HTTP-Anfrage an die richtige IP-Adresse geschickt hat, erhält der Webserver diese Anfrage und beantwortet diese. Mithilfe der Entwicklertools in den verschiedenen Browsern können Sie diese Request (Anfrage) und die passende Response (Antwort) einsehen:

Wir erkennen, dass die URL automatisch in die Remote Address umgewandelt wird. In diesem Beispiel wartet der Webserver auf dem Port 443 (HTTPS), daher wird die Request genau an diesen Port geschickt.
Der Webserver validiert die Request und gibt in diesem Beispiel eine HTML-Seite zurück. Bei dieser Seite handelt es sich um die Homepage von dem Institut für Internet-Sicherheit.

In diesem einfachen Beispiel wird lediglich eine Webseite aufgerufen, das heißt, eine statische HTML-Seite wird bei einer Request zurückgegeben. Dynamische HTML-Seiten, dass heißt Webseiten die erst zur Laufzeit dargestellt werden (bspw. durch Benutzer-Eingaben) können nicht alleine von unserem Browser (Webclient) dargestellt werden. Ein Webclient kann lediglich eine Request stellen und eine Response meist in Form einer HTML-Seite darstellen.

Um dynamische Inhalte darstellen zu können, müssen häufig weiter Module geladen werden, diese erkennt man bspw. an der Endung .php. Hat der Webserver eine Response mit dynamischem Inhalt, muss dieser zunächst an einen PHP-Parser übergeben werden, damit dieser eine statische HTML-Seite erzeugt, die anschließend an den Webclient (unseren Browser) zurückgegeben wird.




Verschiedene Arten und richtige Einstellungen

Es gibt viele gängige Arten von Webservern, denen man in Penetrationstests begegnet. 3 sehr verbreitete Webserver lauten:

  1. Internet Information Server (IIS)
  2. Apache
  3. nginx

Es gibt noch viele weitere Webserver, die unterschiedliche Eigenschaften mitbringen. Möchten Sie nun einen eigenen Webserver betreiben, um bspw. Ihr Unternehmen öffentlich aus dem Internet erreichbar machen, sollten Sie die richtigen Einstellungen wählen.

Leider gibt es unzählige Schrauben an denen Sie in Ihrem Webserver drehen können, um die IT-Sicherheit zu erhöhen. Wir listen im Folgenden einige Dinge auf, die wir in der Realität häufig als Sicherheitsrisiko entdecken:

  • Informationen über den Server: Ein Angreifer sollte möglichst wenig Informationen bekommen, die ihm helfen könnte, passende Exploits zu finden. Sie sollten Ihren Webserver so konfigurieren, dass die Versionsnummer nicht zu erkennen ist und keine Fehlermeldungen oder andere Quellen Informationen über die verwendete Software geben könnte. Wenn der Angreifer herausfindet, dass Sie Apache in der Version X.Y.Z verwenden, kann dieser schneller einen Exploit für Ihren Webserver finden.
  • Nur notwendige Module verwenden: Es gibt viele verschiedene Module, die Sie in Ihrem Webserver laufen lassen können. Jedoch benötigen die meisten Anwender nicht alle Module, die sie aktiviert haben. Jedes aktive Modul stellt einen potenziellen Angriffspunkt für einen Angreifer da. Damit Sie möglichst wenige Angriffspunkte bieten, sollten Sie nur die für Sie notwendigen Module aktiviert haben.
  • Header-Einstellungen: Als Webserver haben Sie das Privileg aussuchen zu können, welche Anfragen Sie beantworten und welche nicht. Ein Beispiel sind die HTTP Request Methoden: Für eine klassische Webanwendung benötigen Sie meist nur die Methoden GET, HEAD und POST. Dementsprechend können Sie alle anderen Methoden verbieten bzw. nicht beantworten. Eine weitere Einstellung, die Sie treffen sollten, ist die Verwendung des HttpOnly und Secure Flags in Cookies einzubauen. Diese verhindern unter anderem das Risiko eines Cross-Site-Scripting Angriffs.

Wie Sie die verschiedenen Einstellungen in Ihrem Webserver setzen können, hängt von der Webserver-Art und Ihrer System-Umgebung ab. Aus diesem Grund können wir keine einheitliche Anleitung dazu geben, jedoch finden Sie mit den hier bereitgestellten Einstellungen eine passende Anleitung, wenn Sie gezielt eine Suchmaschine damit füttern.

Eine gute Anleitung für einen Apache Webserver finden Sie bspw. auf der Webseite von segal-online.