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 [3])

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.

Ähnliche Artikel

comments powered by Disqus

Artikel der Woche

Eigene Registry für Docker-Images

Wer selber Docker-Images herstellt, braucht auch eine eigene Registry. Diese gibt es ebenfalls als Docker-Image, aber nur mit eingeschränkter Funktionalität. Mit einem Auth-Server wird daraus ein brauchbares Repository für Images. (mehr)
Einmal pro Woche aktuelle News, kostenlose Artikel und nützliche ADMIN-Tipps.
Ich habe die Datenschutzerklärung gelesen und bin einverstanden.

Konfigurationsmanagement

Ich konfiguriere meine Server

  • von Hand
  • mit eigenen Skripts
  • mit Puppet
  • mit Ansible
  • mit Saltstack
  • mit Chef
  • mit CFengine
  • mit dem Nix-System
  • mit Containern
  • mit anderer Konfigurationsmanagement-Software

Ausgabe /2021