AA_holzindianer_PO-22892-123RF_FranciscoJavierQuintana_Galvan.jpg

© Francisco Javier Quintana Galvàn, 123 RF

Wachsamer Häuptling

Schlanker, sicherer Webserver Hiawatha

19.07.2012
Der freie Webserver Hiawatha legt den Fokus auf Sicherheit und geringen Ressourcenverbrauch. Damit eignet er sich besonders für kleinere Web-Projekte, für die Apache zu schwerfällig und komplex erscheint.

Der Entwickler von Hiawatha [1], Hugo Leising, begann 2002 mit der Programmierung eines eigenen Webservers, weil es seinerzeit keinen Vertreter dieser Gattung gab, der seinen Vorstellungen von Sicherheit, Einfachheit und im Umgang mit Ressourcen gerecht wurde. Leisings Bonmot, Apache sei eine fette Kuh mit einer ziemlich hässlichen Konfigurationsdatei, trifft im Jahr 2012 zwar nicht mehr in allen Punkten zu. Dennoch gibt es nach wie vor einen Bedarf an kompakten, einfach zu konfigurierenden Webservern – unter anderem deshalb, viele Web-Anwendungen dann damit punkten können, "out-of-the-box" zu funktionieren, indem Sie den Webserver einfach vorkonfiguriert mitliefern. Auch Hiawatha eignet sich mit seiner kompakten Größe von 620 KByte hervorragend als "Beipack-Lösung".

Der komplett monolithisch aufgebaute Hiawatha sieht ein Laden von Modulen beim Programmstart nicht vor. Seine hohe Geschwindigkeit verdankt Hiawatha der Tatsache, dass der Server ausschließlich Threads verwendet. Hiawatha enthält zudem eine Reihe von Funktionen im Standardumfang, die Sie bei anderen Webservern nachrüsten oder aufwändig konfigurieren müssen, wie etwa Support für IPv6, CGI und FastCGI, XSLT, VirtualHosts oder Basic/Digest-HTTP-Authentifizierung.

Herausragend sind aber vor allem die Sicherheitsfunktionen von Hiawatha, wie der Schutz vor Cross-Site-Scripting (CSS), Cross-Site Request Forgery (CSRF), SQL-Injection-Angriffen und Denial-of-Service-Attacken. Ferner kann der Webserver Clients auf IP-Ebene anhand ihrer Adresse blockieren ("Banning") und lässt sich über einen separaten Port kontrollieren ("Command Channel"). Hiawatha unterstützt außerdem auch URL-Rewriting anhand regulärer Ausdrücke. Allerdings heißt die Funktion bei Hiawatha UrlToolkit. Eine komplette Feature-Liste steht unter [2] zur Verfügung.

Hiawatha in Betrieb nehmen

Hiawatha installieren Sie am besten aus den Quellen. Dazu benötigen Sie an Voraussetzungen neben einem C-Compiler und den Entwicklerversionen der Libc5, Glib2 und Libxslt noch eine aktuelle Cmake-Version. Daneben sollten Sie auch darauf achten, dass OpenSSL installiert ist. Nach dem Herunterladen des Hiawatha-Quellcode-Archivs entpacken sie es mit tar -xfzv hiawatha-8.4.tar.gz, wechseln in das neu entstandene Verzeichnis und starten die Installation mit den Befehlen aus Listing 1.

Listing 1

$ mkdir build
$ cd build
$ sudo cmake ..
$ sudo make install/strip

Bei dieser Minimalversion erhalten Sie zwar elementare Dinge wie SSL-Unterstützung, das UrlToolkit und XSLT-Support, verzichten aber auf ein paar ausgefeiltere Features, wie etwa den Chroot-Support, den Command-Channel oder den Hiawatha-Monitor. Diese binden Sie bei Bedarf beim Aufruf von Cmake über entsprechende Optionen ein (siehe Tabelle "Cmake-Optionen"). Um Hiawatha mit Chroot-Support zu übersetzen, verwenden Sie statt cmake .. beispielsweise cmake -DENABLE_CHROOT=on ... Vergessen Sie aber beim Cmake-Aufruf auf keinen Fall die beiden Punkte, die das Tool anweisen, im darüber liegenden Verzeichnis zu arbeiten.

Cmake-Optionen

Option Vorgabe Funktion
-DENABLE_CACHE=on|off on Cache-Unterstützung
-DENABLE_CHROOT=on|off on Chroot-Support
-DENABLE_COMMAND=on|off off Command-Channel aktivieren
-DENABLE_DEBUG=on|off off Debug-Information ausgeben
-DENABLE_IPV6=on|off on Unterstützung für IPv6
-DENABLE_MONITOR=on|off off Hiawatha-Monitor aktivieren
-DENABLE_RPROXY=on|off on Reverse-Proxy-Support
-DENABLE_SSL=on|off on SSL ermöglichen
-DENABLE_TOOLKIT=on|off on UrlToolkit nutzen
-DENABLE_XSLT=on|off on XSLT-Support

TIPP

Möchten Sie Hiawatha speziell für Debian, Mac OS X oder Windows (via Cygwin) übersetzen, finden Sie im Unterverzeichnis extras spezielle Build-Skripte für die genannten Plattformen, wie etwa make_debian_package.

Hiawatha konfigurieren

Der Hauptvorteil von Hiawatha besteht in seiner einfachen und übersichtlichen Konfiguration. Diese erfolgt in einer einzigen, kompakten Konfigurationsdatei namens hiawatha.conf, die per Default im Verzeichnis /usr/local/etc/hiawatha/ liegt. Abzüglich der auskommentierten Zeilen und der Pfadangaben zu den Log-Files setzt sich die mitgelieferte Datei aus lediglich sieben Einträgen zusammen. Für erste Tests sollten Sie die Default-Konfiguration sichern und entweder eine komplett neue Konfigurationsdatei anlegen oder mit den in der Default-Konfiguration auskommentierten Parametern experimentieren.

Eine Minimalkonfiguration zeigt Listing 2; im Normalfall steht in jeder Zeile genau eine Definition. Eine sogenannte Sektion in geschweiften Klammern ist auch schon das komplexeste Strukturmerkmal der Konfigurationsdatei.

Listing 2

Binding {
  Port = 8080
  Interface = 192.168.0.45
}
WebsiteRoot = /usr/local/var/www/hiawatha
Hostname = localhost

Mit der Binding-Definition (eingeschlossenen in geschweifte Klammern) legen Sie fest, auf welchem Interface und auf welchem Port der Webserver Verbindungen entgegen nimmt. Soll der Webserver auf allen vorhandenen Netzwerkschnittstellen auf Verbindungen warten, lassen Sie die Interface-Angabe einfach weg. Selbstverständlich können Sie auch mehrere Binding-Sektionen einbauen, etwa eine eigene für den SSL-Port 443.

Das bei Apache als DocumentRoot bezeichnete Webserver-Verzeichnis heißt bei Hiawatha schlicht WebsiteRoot. Sie können hierfür zwar jeden beliebigen Ordner auf der Festplatte angegeben, unter /usr/local/var/www/hiawatha liegt aber bereits eine vorbereitete Beispielseite index.html.

Außerdem müssen Sie noch einen Namen oder eine IP-Adresse angeben, unter der sich die Webseite erreichen lässt. Dazu kommt wie bei Apache der Parameter Hostname zum Einsatz. Da Hiawatha wie eingangs erwähnt von Haus aus mit IPv6-Adressen zurecht kommt, stellt es kein Problem dar, eine solche einfach zu verwenden – Sogar das Mischen ist erlaubt.

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 4 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 

Ähnliche Artikel

Kommentare

Infos zur Publikation

LU 11/2014: VIDEOS BEARBEITEN

Digitale Ausgabe: Preis € 4,95
(inkl. 19% MwSt.)

Mit der Zeitschrift LinuxUser sind Sie als Power-User, Shell-Guru oder Administrator im kleinen Unternehmen monatlich auf dem aktuelle Stand in Sachen Linux und Open Source.

Sie sind sich nicht sicher, ob die Themen Ihnen liegen? Im Probeabo erhalten Sie drei Ausgaben zum reduzierten Preis. Einzelhefte, Abonnements sowie digitale Ausgaben erwerben Sie ganz einfach in unserem Online-Shop.

NEU: DIGITALE AUSGABEN FÜR TABLET & SMARTPHONE

HINWEIS ZU PAYPAL: Die Zahlung ist auch ohne eigenes Paypal-Konto ganz einfach per Kreditkarte oder Lastschrift möglich!       

Tipp der Woche

Schnell Multi-Boot-Medien mit MultiCD erstellen
Schnell Multi-Boot-Medien mit MultiCD erstellen
Tim Schürmann, 24.06.2014 12:40, 0 Kommentare

Wer mehrere nützliche Live-Systeme auf eine DVD brennen möchte, kommt mit den Startmedienerstellern der Distributionen nicht besonders weit: Diese ...

Aktuelle Fragen

Artikelsuche
Erwin Ruitenberg, 09.10.2014 07:51, 1 Antworten
Ich habe seit einige Jahre ein Dugisub LinuxUser. Dann weiß ich das irgendwann ein bestimmtes Art...
Windows 8 startet nur mit externer Festplatte
Anne La, 10.09.2014 17:25, 6 Antworten
Hallo Leute, also, ich bin auf folgendes Problem gestoßen: Ich habe Ubuntu 14.04 auf meiner...
Videoüberwachung mit Zoneminder
Heinz Becker, 10.08.2014 17:57, 0 Antworten
Hallo, ich habe den ZONEMINDER erfolgreich installiert. Das Bild erscheint jedoch nicht,...
internes Wlan und USB-Wlan-Srick
Gerhard Blobner, 04.08.2014 15:20, 2 Antworten
Hallo Linux-Forum: ich bin ein neuer Linux-User (ca. 25 Jahre Windows) und bin von WIN 8 auf Mint...
Server antwortet mit falschem Namen
oin notna, 21.07.2014 19:13, 1 Antworten
Hallo liebe Community, Ich habe mit Apache einen Server aufgesetzt. Soweit, so gut. Im Heimnet...