Lässt es sich mit cremefarbenem Papier, einer Tönung, mehr Kontrast oder größerer Schrift besser lesen? Wählen Sie Ihre Farben und Ihre Schrift, einmalig für alle Seiten.

Kostenlose Lektion

Webserver-Härtung: Grundlagen

Die ganze Lektion steht hier zum Lesen. Erstellen Sie ein kostenloses Konto, um sie in einem Live-Lab auszuführen.

Container-Lab8 Min. Lesezeit7 Befehle

Was du machst

Ein Webserver verrät oft mehr, als nötig ist: seine genaue Version, die Dateien in einem Ordner, Dateien, die niemand veröffentlichen wollte. Härten heißt, seine Konfiguration so zu ändern, dass er weniger sagt und zeigt. Du siehst dir eine kleine Website an, führst eine Prüfung aus, die auflistet, was falsch ist, behebst eine Sache im laufenden Server und führst die Prüfung noch einmal aus. Deine Kopie hat keinen Weg ins Internet, die einzige Seite, die du anfasst, ist also deine eigene.

Bevor du anfängst

Notiz

Drücke oben in der Leiste dieser Lektion auf Lab starten und warte, bis dort steht, dass es läuft. Die Website ist der Dienst namens web, und das Terminal erreicht ihn unter diesem Namen. Jede Schaltfläche Ausführen tippt ihren Befehl in das Terminal deines Labs, einen nach dem anderen in derselben Sitzung. Willst du zuschauen oder eigene Befehle tippen, drücke in der Leiste auf Terminal öffnen (neuer Tab).

1. Sieh, was der Server sagt

curl -I fragt nur nach den Headern. Sieh dir die Zeile an, die mit Server: beginnt. Sie verrät allen, die die Seite besuchen, und auch Angreifenden die genaue Version von nginx: nginx/1.27.5.

Befehl
curl -I http://web

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

2. Sieh, was er zeigt

Dieser Ordner hat keine eigene Startseite, deshalb listet der Server auf, was darin liegt. Die Antwort ist eine Seite mit der Überschrift Index of /files/ und zwei Dateien, prices.csv und suppliers.txt. Nichts hier hat darum gebeten, eine Liste zu zeigen.

Befehl
curl http://web/files/

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

3. Führe die Prüfung aus

docker kann in diesem Terminal den Dienst des Labs ansehen, betreten und neu starten, und hier führt es einen Befehl darin aus. lab-check stellt dem laufenden Server neun Fragen und gibt für jede PASS oder FAIL aus. Am Anfang steht überall FAIL, und die letzte Zeile ist Some checks fail.

Befehl
docker exec web lab-check

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

4. Behebe eine Sache

Die Konfiguration ist die Datei /etc/nginx/conf.d/default.conf im Container. Dort steht server_tokens on;, und das schreibt die Version in den Header. Dieser Befehl ändert on in off. sed ist ein Editor, der von der Kommandozeile aus eine Änderung macht. Für größere Änderungen öffnest du die Datei mit docker exec -it web sh und bearbeitest sie mit vi.

Befehl
docker exec web sed -i 's/server_tokens on/server_tokens off/' /etc/nginx/conf.d/default.conf

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

5. Lade sie neu

nginx liest seine Konfiguration nur einmal, deshalb sagst du ihm, dass er sie neu lesen soll. reload tut das, ohne die Seite anzuhalten. Es gibt einen Hinweis aus, signal process started, der kein Fehler ist.

Befehl
docker exec web nginx -s reload

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

6. Sieh noch einmal nach

Die Zeile Server: zeigt jetzt nur noch nginx, ohne Nummer.

Befehl
curl -I http://web

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

7. Führe die Prüfung noch einmal aus

Die erste Zeile lautet jetzt PASS the Server header shows no version number, und die anderen acht zeigen noch FAIL: Jede Reparatur schaltet nur ihre eigene Zeile um. Die Ordnerliste, die fehlenden Sicherheits-Header, der Ordner .git, die Sicherungsdatei und der offene Admin-Bereich sind deine Aufgabe, auf dieselbe Weise, bis die letzte Zeile All checks pass. lautet.

Befehl
docker exec web lab-check

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

8. Sieh, was erhalten bleibt

Drücke in der Lab-Leiste auf Lab beenden und dann wieder auf Lab starten und führe die Prüfung noch einmal aus: Deine Reparatur ist noch da. Der Konfigurationsordner ist ein benanntes Volume, und die Plattform speichert Volumes. Eine Änderung an einer anderen Stelle im Container wäre weg.

Für Lehrkräfte

Tipp

Diese Lektion ist ein kleines Beispiel für eine Lektion, die in einem Lab bearbeitet wird: Die Schritte und die Schaltflächen „Ausführen“ sind die Lektion, und das Lab ist die eigene Kopie jeder lernenden Person. Nichts darin bewertet sich selbst. Die Lernenden geben die Ausgabe von curl -I vor und nach der Reparatur ab, dazu die letzte Ausgabe von lab-check, und Sie bewerten die Belege. Kopieren Sie die Lektion in Ihr eigenes Modul und ändern Sie sie, oder bauen Sie mit dem Menü Lab im Lektionseditor eine neue.

Über dieses Lab und seinen Quellcode: Webserver-Härtungslab: eine schwache nginx-Konfiguration reparieren und mit curl prüfen

Sie unterrichten eine Klasse? Weisen Sie diese Lektionen Ihren Lernenden zu, mit Bewertung und einem Lab für jede lernende Person.