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

Konten, SSH und Dateimodi härten

Nach dieser Lektion: Ich kann schwache Konten, SSH-Einstellungen und Dateimodi eines Servers finden und beheben.

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

Das Konto, an das niemand mehr dachte

Ein kleiner Laden hatte das Konto eines Lieferanten behalten, der vor einem Jahr ging. Es verlangte kein Passwort, und der Server ließ root über das Netz herein.

Niemand griff es an. Ein Scanner fand es zuerst. Die Reparatur dauerte fünf Minuten, aber sie gehörte an den ersten Tag.

Diese Lektion zeigt, wie man diese Arbeit erledigt, bevor jemand angreift.

Am Ende dieser Lektion

Notiz

Ich kann schwache Konten, SSH-Einstellungen und Dateimodi eines Servers finden und beheben.

Schlüsselwörter

BegriffWas er bedeutetBeispiel
Härtenentfernen, was ein Server nicht braucht, damit es weniger anzugreifen gibt
Kontoein Name, mit dem das System die Anmeldung erlaubt, mit eigenen Rechten
Dateimodusdrei Ziffern, die sagen, wer eine Datei lesen, schreiben und ausführen darf640
Für alle schreibbareine Datei, die jeder Benutzer der Maschine ändern darf
SSHdas Werkzeug, mit dem man sich über ein Netz an einem Server anmeldet
Einstellungeine Zeile einer Konfigurationsdatei: ein Name und ein Wert

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

Konten auflisten, dann fragen, wer sie braucht

Ein Konto, das man nicht kennt, kann man nicht schützen. Das Härten beginnt deshalb mit einer Liste.

Normale Personen haben eine Kontonummer ab 1000, die UID. Root hat die UID 0, und nur root soll sie haben.

Normale Konten und ihre Shell auflisten

Befehl
awk -F: '$3 >= 1000 && $3 < 65534 {print $1, $7}' /etc/passwd

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

Welche Konten haben die UID 0?

Befehl
awk -F: '$3 == 0 {print $1}' /etc/passwd

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 Listen lesen

Der erste Run schreibt eine Zeile je normalem Konto: seinen Namen und seine Login-Shell, zum Beispiel /bin/bash. Fragen Sie bei jeder Zeile: Braucht das noch jemand?

Der zweite Run schreibt ein einziges Wort, root. Ein zweiter Name wäre ein zweites root und ein Grund, einen Vorfall zu eröffnen.

Ein Modus sagt, wer was darf

Jede Datei hat einen Modus aus drei Ziffern: der Besitzer, die Gruppe und alle anderen. Jede Ziffer addiert 4 für Lesen, 2 für Schreiben und 1 für Ausführen.

Die Kontenliste ist öffentlich, alle dürfen sie lesen. Die Datei mit den Passwort-Hashes darf es nicht sein.

Den Modus zweier Dateien zeigen

Befehl
stat -c '%a %U:%G %n' /etc/passwd /etc/shadow

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

Konten mit leerem Passwort zählen

Befehl
sudo awk -F: '$2 == "" {print $1}' /etc/shadow | wc -l

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: Was vier Modi bedeuten

ModusBesitzerGruppeAlle anderen
644lesen und schreibenlesenlesen
640lesen und schreibenlesennichts
2770lesen, schreiben und betretenlesen, schreiben und betretennichts
777allesallesalles, also für alle schreibbar

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

Was das Terminal ausgab

Der stat-Run schrieb zwei Zeilen: 644 root:root /etc/passwd und 640 root:shadow /etc/shadow. Jeder darf die Kontenliste lesen. Nur root und die Gruppe shadow dürfen die Hashes lesen.

Der Zähl-Run schrieb 0. Jede andere Zahl wären Konten, an denen man sich ohne Passwort anmeldet.

SSH ist eine Tür, Einstellungen sind das Schloss

Der SSH-Server liest eine Einstellungsdatei. Drei Zeilen entscheiden über den Großteil des Risikos: ob root sich anmelden darf, ob ein Passwort erlaubt ist und ob ein leeres Passwort erlaubt ist.

Sie üben an einer Kopie in Ihrem Ordner. Die echte Datei bleibt unberührt, sodass niemand ausgesperrt wird.

Eine schwache Übungsdatei schreiben

Befehl
printf 'PermitRootLogin yes\nPasswordAuthentication yes\nPermitEmptyPasswords no\n' > sshd-uebung.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.

Die zwei schwachen Zeilen finden

Befehl
grep -E '^(PermitRootLogin|PasswordAuthentication) yes' sshd-uebung.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.

Beide mit sed beheben

Befehl
sed -i 's/^PermitRootLogin yes/PermitRootLogin no/; s/^PasswordAuthentication yes/PasswordAuthentication no/' sshd-uebung.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.

Die Datei noch einmal prüfen

Befehl
grep -E '^(PermitRootLogin|PasswordAuthentication)' sshd-uebung.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.

Warum der erste Wert zählt

Der Suchbefehl fand zwei schwache Zeilen. Nach der Korrektur sagen beide no. Man meldet sich dann mit einem Schlüssel an, nicht mit einem Passwort, und niemand meldet sich als root an.

Noch eine Regel: Der SSH-Server benutzt den ersten Wert, den er für eine Einstellung findet. Eine schwache Zeile über einer sicheren gewinnt.

Sehen, welche Zeile zählt

Befehl
printf 'PermitRootLogin no\nPermitRootLogin yes\n' | grep -m1 '^PermitRootLogin'

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, die letzte Zeile einer Einstellungsdatei gewinnt, und hängen die sichere Zeile unten an. Beim SSH-Server gewinnt die erste, und die schwache Zeile darüber gilt weiter. Ändern Sie die vorhandene Zeile. Fügen Sie keine zweite hinzu.

Die Übungsdatei löschen

Befehl
rm sshd-uebung.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.

Zum Weiterdenken: der Ordner des Labs

Wenn Sie die Aufgabe 2 des Labs fertig haben, führen Sie ls -ld /srv/projects und stat -c '%a %U:%G %n' /srv/projects aus. Sagen Sie in einem Satz, wer hineinkommt und welche Ziffer alle anderen draußen hält.

Die Prüfung des Labs benotet den Benutzer, den Ordner, den cron-Auftrag und den Dienst. Diese Lektion benotet sie nicht. Die Aufgabe oben ist ihre geprüfte Aufgabe.

Ü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.