# Hiawatha Webserver

Hiawatha ist ein von Hugo Leisink seit 2002 entwickelter freier Webserver. Er implementiert alle wichtigen Funktionen eines Webservers.

## Funktionsumfang / Besonderheiten

Das Programm ist monolithisch aufgebaut und verzichtet im Gegensatz zu den meisten anderen Programmen dieser Kategorie (z. B. Apache HTTP Server, Lighttpd) auf die Möglichkeit, einzelne Module beim Start des Programms zu laden. Ab Version 2.0 nutzt das Programm ausschließlich Threads, dies führt zu einer verbesserten Geschwindigkeit. Die aktuelle Version bietet darüber hinaus einige Funktionen, die nicht zum Standard gehören und sonst teilweise nur durch externe Zusatzprogramme realisiert werden können:
* Unterstützung von XSL Transformation
* Schutz vor SQL-Injection-Angriffen, DoS-Attacken und Cross-Site-Scripting
* Banning: Clients kann auf IP-Ebene anhand ihrer Adresse der Zugriff blockiert werden.
* CommandChannel: Über einen separaten Port kann der Server kontrolliert werden.
* Unterstützung von VirtualHosts
* URL-rewrite anhand regulärer Ausdrücke, wird bei Hiawatha als URL-Toolkit bezeichnet.
* Unterstützung von CGI und FastCGI
* Unterstützung der Basic und Digest Access HTTP-Authentifizierung
* IPv6-Unterstützung
* Überwachung des Datenverkehrs mit Hiawatha Monitor
* Unterstützung von WebSocket-Verbindungen
Eine vollständige Liste der Funktionen findet sich auf der Webseite des Projekts.

## Geschichte

Die Entwicklung von Hiawatha begann im Januar 2002, da Hugo Leisink nach eigenen Angaben mit den seinerzeit verfügbaren Webservern nicht zufrieden war. Der Fokus bei der Entwicklung liegt auf Sicherheit, geringem Ressourcenverbrauch sowie einfacher Konfiguration. Nachstehend der Entwicklungsverlauf:
* Version 1.0 (September 2002): Erste funktionale Version
* Version 2.0 (März 2004): Umstellung des Programms auf thread-basierte Ausführung (statt fork)
* Version 3.0 (September 2004): SSL-Unterstützung
* Version 4.0 (Dezember 2005): Unterstützung für den Aufruf externer CGI-Programme
* Version 5.0 (Oktober 2006): Implementierung von FastCGI, erstmalige Integration im FreeBSD-Portstree im Dezember 2006, bei OpenBSD im März 2007
* Version 6.0 (Oktober 2007): Implementierung von IPv6
* Version 7.0 (Februar 2010): Einführung von Hiawatha Monitor, eine auf PHP5, MySQL und Banshee basierende Überwachungsanwendung, IPv6 steht nun auch unter Windows zur Verfügung
* Version 7.5 (Mai 2011): Unterstützung des Do Not Track HTTP-Header-Feldes
* Version 8.0 (Januar 2012): CMake ersetzt Autoconf und mbed TLS (zum Zeitpunkt des Erscheinens noch PolarSSL genannt) ersetzt OpenSSL, Einführung des HTTP-Statuscodes: 414 Request-URI Too Long
* Version 9.0 (März 2013): Verwendung eines Thread-Pools (statt Multithreading)
* Version 9.8 (September 2014): Implementierung des WebSocket-Protokolls
* Version 10.11 (Juli 2020)
Zwischen diesen Hauptversionen gab es regelmäßige Updates z. B. für die Schließung von Sicherheitslücken oder die Beseitigung von Fehlern.

## Sicherheit

Der Hiawatha Webserver bringt eine Reihe von optionalen Sicherheitsfunktionen mit sich, darunter die automatische Erkennung und Abwehr von SQL-Injection-, XSS und CSRF-Angriffen, sowie von DoS-Attacken. Außerdem wird für die Verschlüsselung von HTTPS-Verbindungen die leichtgewichtigere Bibliothek PolarSSL anstelle von OpenSSL verwendet, die zu einer höheren Sicherheit führen soll. PolarSSL (und somit auch Hiawatha) war im Gegensatz zu OpenSSL (und darauf aufbauenden Webservern wie Apache Web Server oder Nginx) nicht von der Heartbleed-Sicherheitslücke betroffen.
Zwischenzeitlich tauchten jedoch vereinzelt Bugs in Hiawatha auf, welche die Sicherheitsfunktionen vollständig oder in bestimmten Situationen außer Kraft setzten. Zuletzt wurde am 31. Mai 2014 bekannt, dass sich die Erkennung von SQL-Injection-Angriffen ab der Version 8.6 durch die Verwendung von SQL-Kommentaren /* */ umgehen ließ. Außerdem funktionierte die Abwehr von XSS-Angriffen nicht für Reverse Proxys. Beide Sicherheitslücken wurden daraufhin in der Version 9.6 geschlossen.

## Verbreitung

Zuverlässige Zahlen über die Anzahl der Hiawatha Installationen sind nicht verfügbar. Da Hiawatha am besten mit Lighttpd vergleichbar ist, spricht er auch überwiegend die Zielgruppe der Administratoren an, die einen möglichst schlanken Webserver einsetzen wollen.