Der sichere Webserver Hiawatha
Sicher serviert
Nettikette
Hiawtha-Entwickler Hugo Leisink steht auf dem Standpunkt, dass ausschließlich Clients, die sich ordentlich und nett verhalten, eine Antwort vom Webserver verdienen. Um alle anderen, die beispielsweise verkrüppelte oder überlange HTTP-Anfragen senden, zu bestrafen, greift Hiawatha zum mitteralterlichen Instrument der Verbannung. So schließt:
BanOnGarbage = 300
einen Client für 300 Sekunden von weiteren Antworten aus, wenn er eine nicht standardkonforme HTTP-Anfrage gesendet hat, während ihn
BanOnMaxReqSize = 60
bei einer überlangen Anfrage für 60 Sekunden verbannt. Ständige Nachfragen (Flooding) bekommt man per
BanOnFlooding = 10/1:35
in den Griff. Mit diesen Einstellungen würde ein Client für 35 Sekunden ausgeschlossen, wenn er zuvor innerhalb 1 Sekunde mehr als 10 Anfragen auf Hiawatha losgelassen hätte. Ebenfalls nützlich ist:
BanOnCMDi = 60
das einen Client für 60 Sekunden verbannt, wenn er zuvor einen Command-Injection Angriff ausprobiert hätte. Um eine versuchte SQL-Injection kümmert sich analog:
BanOnSQLi = 70
Ergänzend versteht Hiawatha kleine Black-, beziehungsweise Whitelists:
BanlistMask = allow 192.168.2.111, ↩ deny 192.168.0.0/16
Sofern ein verbannter Client extrem unartig ist und während seiner Zeit im Exil erneut einen Zugriff wagt, setzt ein
RebanDuringBan = yes
die Verbannungszeit wieder zurück.
Schlüsselkinder
Sensible Daten sollten immer nur über eine gesicherte SSL-Verbindung laufen. Bevor Hiawatha aber HTTPS sprechen kann, benötigt man ein X509-SSL-Zertifikat. Das kann man entweder bei einer vertrauenswürdigen Stelle (Certificate Authority) käuflich erwerben oder kurzerhand per OpenSSL selbst generieren. Die dazu nötigen Befehle führt Listing 2 auf.
Listing 2
Erstellen eines X509-SSL-Zertifikats (nach )
openssl genrsa -out serverkey.pem 2048 openssl req -new -x509 -days 3650 -key serverkey.pem -out server.crt echo "" >> serverkey.pem cat server.crt >> serverkey.pem echo "" >> serverkey.pem rm -f server.crt
Am Ende hält man die Datei »serverkey.pem«
in der Hand, die man der »httpd.conf«
zur Seite stellt (in der Regel unter »/usr/local/etc/hiawatha«
).
HTTPS-Verbindungen gehen in der Regel auf Port 443 ein, der Webserver muss also dort lauschen und bei eingehenden Anfragen das eben generierte Zertifikat heranziehen:
Binding {
Port = 443
Interface = 192.168.2.123
UseSSL = yes
ServerKey = /usr/local/etc/hiawatha/serverkey.pem
}Damit kann sich ein Browser an Port 443 nur noch über das HTTPS-Protokoll mit Hiawatha verbinden, im obigen Beispiel also via »https://192.168.2.123:443«
. Des Weiteren gilt das Zertifikat ausschließlich für die angegebene Kombination aus Port und Schnittstelle. Um es für alle gesicherten Verbindungen zu nutzen, zieht man die letzte Zeile einfach aus den Klammern heraus.
Alle Angebote zum ADMIN-Magazin im Online-Shop
Versandartikel |
Onlineartikel |




