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

Ports schließen, Patches einspielen

Nach dieser Lektion: Ich kann finden, worauf ein Server lauscht, Überflüssiges schließen und Updates prüfen.

Lektion, 55 Min.12 BefehleLinux-Administrationslab: Benutzer, Berechtigungen, cron und systemd im Browser

Der Testserver, der offen blieb

Ein Entwickler öffnete einen Port, um eine Seite zu testen, und fuhr in den Urlaub. Der Port blieb drei Monate offen, und das Programm dahinter wurde nie aktualisiert.

Ein Port, den niemand braucht, ist eine Tür, die niemand beobachtet. Ihn zu schließen kostet nichts.

Am Ende dieser Lektion

Notiz

Ich kann finden, worauf ein Server lauscht, Überflüssiges schließen und Updates prüfen.

Schlüsselwörter

BegriffWas er bedeutetBeispiel
Porteine nummerierte Tür einer Maschine, an der ein Programm lauscht22
Lauschenan einem Port warten, dass sich jemand verbindet
Loopbackdie Adresse 127.0.0.1, die nur dieselbe Maschine erreicht
Standardmäßig verbietenalles ablehnen, was keine Regel erlaubt
Patchein Update, das einen bekannten Fehler behebt
Angriffsflächealles, was ein Angreifer erreichen und ausprobieren kann

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Worauf etwas lauscht, das kann man angreifen

Jedes Programm, das an einem Port lauscht, ist ein möglicher Eingang. Je weniger es gibt, desto weniger kann ein Angreifer versuchen.

Die erste Arbeit ist das Hinschauen. Sie starten zwei kleine eigene Webserver aus einem leeren Ordner, einen offen für das Netz und einen nur für diese Maschine.

Auflisten, worauf jetzt gelauscht wird

Befehl
ss -ltn

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

Einen leeren Ordner zum Ausliefern anlegen

Befehl
mkdir -p leere-seite

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

Einen netzoffenen Server auf 8088 starten

Befehl
(timeout 120 python3 -m http.server 8088 --bind 0.0.0.0 --directory leere-seite >/dev/null 2>&1 &)

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

Einen Loopback-Server auf 8089 starten

Befehl
(timeout 120 python3 -m http.server 8089 --bind 127.0.0.1 --directory leere-seite >/dev/null 2>&1 &)

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 beiden vergleichen

Befehl
ss -ltn | grep -E ':808[89]'

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 Spalte Local Address lesen

Der letzte Run schrieb zwei Zeilen. Eine enthält 0.0.0.0:8088, die andere 127.0.0.1:8089.

Die Adresse 0.0.0.0 heißt: alle Netze, in denen die Maschine hängt. Die Adresse 127.0.0.1 heißt: nur diese Maschine. Der zweite Server lässt sich von außen nicht angreifen und braucht keine Firewall-Regel.

Beide Server halten nach zwei Minuten von selbst an.

Eine Regel kann einen Port ablehnen

Manchmal muss ein Programm breit lauschen, soll aber nicht erreicht werden. Eine Firewall-Regel auf der Maschine kann es ablehnen.

Sie fügen jetzt eine Regel nur für den Port 8088 hinzu, in einer eigenen Tabelle namens uebung. Ihr Terminal bleibt unberührt, und nichts wird gespeichert. Sagt ein Run nft: command not found, installieren Sie es mit sudo apt-get install -y nftables.

Den Port 8088 mit einer Regel ablehnen

Befehl
sudo nft 'add table inet uebung; add chain inet uebung waechter { type filter hook input priority 0 ; policy accept ; }; add rule inet uebung waechter tcp dport 8088 reject with tcp reset'

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

Jetzt den Port 8088 fragen

Befehl
curl -sS -m 3 http://127.0.0.1:8088/ 2>&1 | head -n 1

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

Den Port 8089 fragen, den keine Regel berührt

Befehl
curl -s -o /dev/null -w '%{http_code}\n' http://127.0.0.1:8089/

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

Was die beiden Antworten sagen

Das erste curl schrieb curl: (7) Failed to connect to 127.0.0.1 port 8088, gefolgt von einem Hinweis zur Zeit. Die Regel lehnte die Verbindung sofort ab. Das zweite schrieb 200: Der Port 8089 antwortet weiter.

Eine echte Firewall beginnt andersherum. Ihre Richtlinie ist standardmäßig verbieten, und je eine Regel erlaubt jeden nötigen Port.

Beispiel: Standardmäßig verbieten bei einem Webserver

PortWofürRegel
22SSH für den AdministratorErlauben, nur von der Adresse des Büros
443Die WebsiteErlauben, von überall
8088Eine vergessene TestseiteKeine Regel, also abgelehnt

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Die Übungstabelle löschen

Befehl
sudo nft delete table inet uebung

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

Beide Wegwerf-Server anhalten

Befehl
pkill -f 'http.server 808'

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

Patches schließen Fehler, die andere schon fanden

Die meisten Angriffe nutzen einen Fehler, für den es schon eine Reparatur gibt. Ein Server mit verspäteten Updates ist leicht anzugreifen.

Sie können nachsehen, ohne etwas zu ändern. Die Option -s heißt simulieren: Der Befehl schreibt, was er täte, und tut nichts. Die Zahlen hängen vom Tag ab, deshalb steht hier keine.

Gibt es eine neuere Version von openssl?

Befehl
apt-cache policy openssl | head -n 3

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 Updates würde ein Upgrade einspielen?

Befehl
sudo apt-get -s upgrade | grep -c '^Inst'

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

Ein häufiger Fehler

Warnung

Viele glauben, ein Port sei sicher, weil niemand weiß, dass er da ist. Scanner probieren alle Ports in Minuten durch. Ein Port ist sicher, wenn kein Programm an ihm lauscht oder eine Regel ihn ablehnt. Unbekannt zu sein ist keine Kontrolle.

Zum Weiterdenken: Patches nach Zeitplan

Führen Sie ls /etc/apt/apt.conf.d aus und suchen Sie eine Datei mit auto-upgrades im Namen. Gibt es sie, lesen Sie sie mit cat. Sie sagt, ob die Maschine Sicherheitsupdates selbst einspielt.

Schreiben Sie zwei Sätze. Einen Grund, einen Server sich selbst aktualisieren zu lassen. Einen Grund, warum eine Hochschule Updates zuerst testen möchte.

Über dieses Lab und seinen Quellcode: Linux-Administrationslab: Benutzer, Berechtigungen, cron und systemd im Browser

Sie unterrichten eine Gruppe? Weisen Sie dieses Modul Ihren Studierenden zu, mit Handbuch für Lehrende, automatisch geprüften Aufgaben und einem Lab für jede Person.