Die Bäckerei-Seite verrät zu viel
Die Website einer Bäckerei läuft gut. Aber sie nennt jedem Besucher die genaue Version der Software dahinter. Sie listet jede Datei in einem Ordner mit Preislisten auf. Sie liefert sogar eine alte Sicherung einer Einstellungsdatei aus.
Niemand hat sie angegriffen. Man hat ihr nur nie gesagt, dass sie weniger verraten soll.
Die eine Regel
Warnung
Dieses Lab ist ein Webserver, der absichtlich schwach ist. Arbeiten Sie nur an Ihrer eigenen, privaten Kopie und nichts sonst. Sie hat keine Verbindung ins Internet. Einen Server abzutasten, der Ihnen nicht gehört, ist eine Straftat. Das gilt auch dann, wenn Sie nur Header lesen.
Am Ende dieser Lektion
Notiz
Ich kann sagen, was ein Webserver verbergen und was er ablehnen sollte.
Schlüsselwörter
| Begriff | Was er bedeutet | Beispiel |
|---|---|---|
| Härten | Einstellungen ändern, damit ein System weniger verrät und weniger erlaubt; auf Englisch Hardening | |
| Header | eine Zeile am Anfang einer Antwort, die dem Browser sagt, wie er sie behandeln soll | Server: nginx |
| Verzeichnisliste | eine Seite, die jede Datei eines Ordners auflistet | |
| TLS | das Verfahren, das den Verkehr zwischen Browser und Seite verschlüsselt | |
| Zertifikat | eine signierte Datei, die beweist, dass eine Seite die ist, die sie vorgibt | |
| HSTS | ein Header, der Browsern sagt, nur noch die sichere Adresse zu nutzen |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Ein Server sollte weniger sagen
Jedes überflüssige Wort eines Servers hilft einem Angreifer. Eine Versionsnummer verrät, welche bekannten Lücken er probieren soll. Eine Ordnerliste zeigt Dateien, die niemand veröffentlichen wollte.
Härten entfernt, was nicht nötig ist: die Version im Server-Header, Ordnerlisten, Sicherungs- und Einstellungsdateien und jeden Admin-Bereich, der allen offensteht.
Der Server in Ihrem Lab
Ihr Lab betreibt eine kleine Bäckerei-Seite auf nginx. Starten Sie sie und führen Sie dann diese vier Befehle aus. Sie lesen nur. Der erste zeigt die Statuszeile. Der zweite zeigt den Server-Header. Der dritte zählt einen Sicherheits-Header. Der vierte liest eine Ordnerseite.
Die Statuszeile
curl -s -I http://web | head -n 1Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Der Server-Header
curl -s -I http://web | grep -i "^server"Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Wie viele X-Frame-Options-Header?
curl -s -I http://web | grep -ci "x-frame-options"Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Die Überschrift einer Ordnerseite
curl -s http://web/files/ | grep -o "Index of [a-z/]*"Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Beispiel: die vier Ausgaben lesen
| Run | Ausgabe | Was es bedeutet |
|---|---|---|
| Statuszeile | HTTP/1.1 200 OK | Die Seite antwortet |
| Server-Header | Server: nginx/1.27.5 | Sie nennt allen ihre genaue Version |
| X-Frame-Options | 0 | Dieser Schutz-Header wird gar nicht gesendet |
| Ordnerseite | Index of /files/, zweimal | Der Server listet einen Ordner auf, statt abzulehnen |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Sicherheits-Header sagen dem Browser, wie er sich verhält
Einige Header kosten nichts und schließen ganze Problemklassen. X-Content-Type-Options: nosniff hindert den Browser daran, den Typ einer Datei zu erraten. X-Frame-Options hindert andere Seiten daran, Ihre Seite einzubetten.
Content-Security-Policy begrenzt, welche Skripte laufen dürfen. Referrer-Policy begrenzt, welche Adresse an andere Seiten weitergegeben wird.
Ein häufiger Fehler
Warnung
Viele glauben, die Versionsnummer zu verbergen mache einen Server sicher. Sie verbirgt nur einen Hinweis. Ein alter Server mit bekannter Lücke bleibt schwach. Verbergen Sie den Hinweis, halten Sie aber auch die Software aktuell und entfernen Sie, was sie nicht braucht.
Der Verkehr gehört mit aktuellem TLS verschlüsselt
TLS hat Versionen. SSL 3 sowie TLS 1.0 und 1.1 sind alt und gelten nicht mehr als sicher. Erlauben Sie nur TLS 1.2 und 1.3.
Eine gute Einrichtung hat außerdem ein vertrauenswürdiges Zertifikat, das nicht abgelaufen ist. Sie leitet die einfache Adresse auf die sichere um. Sie sendet HSTS, damit Browser sich merken, die sichere Adresse zu nutzen.
So wenig wie möglich offen lassen
Liefern Sie nur die Dateien aus, die die Seite braucht. Halten Sie Sicherungen, Ordner der Versionsverwaltung und Einstellungsdateien aus dem Web-Ordner heraus. Stellen Sie den Admin-Bereich hinter eine Anmeldung oder eine Netzgrenze.
Alles, was Sie entfernen, ist eine Sache weniger, die Sie schützen müssen.