SSH-Hardening
Du härtest die SSH-Konfiguration deiner Server-VM gegen die häufigsten Angriffsvektoren — Root-Login sperren, Passwort-Auth abschalten, Login-Versuche begrenzen, Idle-Sessions schließen. 7 Aufgaben, ca. 60 Minuten.
SSH-Konfiguration absichern
Was ist SSH — und warum „Hardening"?
SSH (Secure Shell) ist das Standard-Protokoll, um sich verschlüsselt auf einem entfernten Server anzumelden und ihn über die Kommandozeile zu verwalten. Der SSH-Dienst heißt sshd und lauscht standardmäßig auf Port 22.
Weil SSH der Haupt-Zugang zum Server ist, ist er das beliebteste Angriffsziel: Bots probieren rund um die Uhr automatisch Benutzernamen und Passwörter durch — das nennt man Brute-Force. Hardening (Härtung) bedeutet, den Dienst so einzustellen, dass solche Angriffe ins Leere laufen.
Wo wird konfiguriert?
Alle Einstellungen stehen in der Datei /etc/ssh/sshd_config. Nach jeder Änderung musst du den Dienst neu laden, damit sie greift:
sudo systemctl reload sshDein Ziel in dieser Lektion
Du härtest die SSH-Konfiguration gegen die häufigsten Angriffe: Root-Login sperren, Passwort-Anmeldung abschalten, Login-Versuche begrenzen, inaktive Sitzungen schließen, den Zugang auf erlaubte Benutzer beschränken und ein Login-Banner setzen.
Aufgaben
1. Root-Login deaktivieren
Begriff: Root-Login.
rootist der Administrator-Account mit unbegrenzten Rechten. Darf sichrootdirekt per SSH anmelden, ist das ein „Game-Over"-Risiko: Wer das Passwort errät, übernimmt sofort den ganzen Server. Sichere Server verbieten den direkten Root-Login — man meldet sich als normaler Benutzer an und nutzt bei Bedarfsudo.Öffne die Konfiguration mit
sudo nano /etc/ssh/sshd_config, suche die ZeilePermitRootLoginund setze sie auf:PermitRootLogin noSpeichern mit
Strg+O,Enter, schließen mitStrg+X. Danach den Dienst neu laden:sudo systemctl reload sshKontrolle:
sshd -T | grep permitrootloginmusspermitrootlogin noausgeben.2. Passwort-Authentifizierung abschalten
Begriff: Public-Key- statt Passwort-Anmeldung. Bei der Passwort-Anmeldung tippt man ein Passwort — das können Bots per Brute-Force erraten. Bei der Public-Key-Authentifizierung besitzt der Nutzer einen privaten Schlüssel, der Server kennt nur den passenden öffentlichen Schlüssel. Ohne den privaten Schlüssel kommt niemand rein — das ist um Größenordnungen sicherer und kann nicht erraten werden.
Schalte die Passwort-Anmeldung in
/etc/ssh/sshd_configab:PasswordAuthentication noDanach neu laden:
sudo systemctl reload sshDein bestehender Public-Key-Zugang bleibt davon unberührt — du sperrst dich also nicht aus.
Kontrolle:
sshd -T | grep passwordauthenticationmusspasswordauthentication nozeigen.3. Login-Versuche auf 3 begrenzen
Begriff:
MaxAuthTries. Diese Direktive begrenzt, wie viele Anmelde-Versuche pro Verbindung erlaubt sind. Der Standard ist6— das gibt Brute-Force-Tools unnötig viele Versuche. Mit3schließt der Server die Verbindung früher, und Schutz-Tools wie fail2ban greifen schneller.Setze in
/etc/ssh/sshd_config:MaxAuthTries 3Danach neu laden:
sudo systemctl reload sshKontrolle:
sshd -T | grep maxauthtriesmussmaxauthtries 3zeigen.4. Idle-Sessions nach 5 Minuten schließen
Begriff: Idle-Timeout. Eine offene SSH-Sitzung in einem unbeaufsichtigten Terminal ist ein Einfallstor — jemand könnte sie übernehmen.
ClientAliveIntervallegt fest, nach wie vielen Sekunden Inaktivität der Server eine inaktive Sitzung beendet.300= 5 Minuten.Setze in
/etc/ssh/sshd_config:ClientAliveInterval 300Danach neu laden:
sudo systemctl reload sshKontrolle:
sshd -T | grep clientaliveintervalmussclientaliveinterval 300zeigen.5. SSH nur für student-User erlauben
Begriff: Whitelist mit
AllowUsers. Statt allen Benutzern den SSH-Zugang zu erlauben und einzelne zu sperren (Blacklist), erlaubst du nur ausdrücklich genannte Benutzer (Whitelist) — das ist deutlich sicherer.Trage in
/etc/ssh/sshd_configdie erlaubten Benutzer ein:AllowUsers student ssh-validatorDanach neu laden:
sudo systemctl reload ssh⚠️ Wichtig:
ssh-validatormuss mit in die Liste — sonst sperrst du den Plattform-Prüfer aus und die Aufgabe kann nicht bestanden werden.Kontrolle:
sshd -T | grep allowusersmussstudentundssh-validatorenthalten.6. Login-Banner aktivieren
Begriff: Login-Banner. Ein Banner ist ein Hinweistext, der vor der Anmeldung angezeigt wird. Er dient rechtlich als Warnung („nur autorisierter Zugriff") und schreckt Angreifer ab.
Erstelle zuerst den Warntext und verweise dann in der SSH-Konfiguration darauf.
Banner-Datei anlegen:
echo 'Authorized access only. All activity is monitored.' | sudo tee /etc/issue.netIn
/etc/ssh/sshd_configdie Banner-Zeile setzen:Banner /etc/issue.netDanach neu laden:
sudo systemctl reload sshKontrolle:
sshd -T | grep bannermuss/etc/issue.netzeigen.7. sshd reloaden und Public-Key-Auth verifizieren
Begriff: Wirksam vs. nur konfiguriert. Änderungen an
sshd_configwirken erst nachsystemctl reload ssh. Und nursshd -Tzeigt die tatsächlich geladene Konfiguration — die Datei anzusehen reicht nicht, denn ein Tippfehler könnte verhindern, dass sie überhaupt geladen wird.Stelle sicher, dass Public-Key-Authentifizierung aktiv ist, lade den Dienst neu und prüfe das Ergebnis:
sudo systemctl reload ssh sshd -T | grep -i pubkeyauthenticationDie Ausgabe muss
pubkeyauthentication yesenthalten.Kontrolle: Der Validator prüft, dass
sshdneu geladen wurde und Public-Key-Auth wirksam aktiv ist.
Jetzt selbst üben
Lesen ist gut – selbst machen ist besser. Starte diesen Kurs an einer echten Linux-VM, direkt im Browser. Ein kostenloses Konto genügt.
Kostenlos startenLab-Inhalte unter CC BY 4.0 – frei nutzbar mit Namensnennung (© TechLogia).
