techlogia — KI- und Web-Dienstleister Berlin
Alle Kurse
Frei lesbar – ohne Anmeldung

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.

Dauer: 60 Min.Niveau: EinsteigerAufgaben: 7

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 ssh

Dein 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. 1. Root-Login deaktivieren

    Begriff: Root-Login. root ist der Administrator-Account mit unbegrenzten Rechten. Darf sich root direkt 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 Bedarf sudo.

    Öffne die Konfiguration mit sudo nano /etc/ssh/sshd_config, suche die Zeile PermitRootLogin und setze sie auf:

    PermitRootLogin no

    Speichern mit Strg+O, Enter, schließen mit Strg+X. Danach den Dienst neu laden:

    sudo systemctl reload ssh

    Kontrolle: sshd -T | grep permitrootlogin muss permitrootlogin no ausgeben.

  2. 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_config ab:

    PasswordAuthentication no

    Danach neu laden:

    sudo systemctl reload ssh

    Dein bestehender Public-Key-Zugang bleibt davon unberührt — du sperrst dich also nicht aus.

    Kontrolle: sshd -T | grep passwordauthentication muss passwordauthentication no zeigen.

  3. 3. Login-Versuche auf 3 begrenzen

    Begriff: MaxAuthTries. Diese Direktive begrenzt, wie viele Anmelde-Versuche pro Verbindung erlaubt sind. Der Standard ist 6 — das gibt Brute-Force-Tools unnötig viele Versuche. Mit 3 schließt der Server die Verbindung früher, und Schutz-Tools wie fail2ban greifen schneller.

    Setze in /etc/ssh/sshd_config:

    MaxAuthTries 3

    Danach neu laden:

    sudo systemctl reload ssh

    Kontrolle: sshd -T | grep maxauthtries muss maxauthtries 3 zeigen.

  4. 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. ClientAliveInterval legt fest, nach wie vielen Sekunden Inaktivität der Server eine inaktive Sitzung beendet. 300 = 5 Minuten.

    Setze in /etc/ssh/sshd_config:

    ClientAliveInterval 300

    Danach neu laden:

    sudo systemctl reload ssh

    Kontrolle: sshd -T | grep clientaliveinterval muss clientaliveinterval 300 zeigen.

  5. 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_config die erlaubten Benutzer ein:

    AllowUsers student ssh-validator

    Danach neu laden:

    sudo systemctl reload ssh

    ⚠️ Wichtig: ssh-validator muss mit in die Liste — sonst sperrst du den Plattform-Prüfer aus und die Aufgabe kann nicht bestanden werden.

    Kontrolle: sshd -T | grep allowusers muss student und ssh-validator enthalten.

  6. 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.net

    In /etc/ssh/sshd_config die Banner-Zeile setzen:

    Banner /etc/issue.net

    Danach neu laden:

    sudo systemctl reload ssh

    Kontrolle: sshd -T | grep banner muss /etc/issue.net zeigen.

  7. 7. sshd reloaden und Public-Key-Auth verifizieren

    Begriff: Wirksam vs. nur konfiguriert. Änderungen an sshd_config wirken erst nach systemctl reload ssh. Und nur sshd -T zeigt 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 pubkeyauthentication

    Die Ausgabe muss pubkeyauthentication yes enthalten.

    Kontrolle: Der Validator prüft, dass sshd neu 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 starten

Lab-Inhalte unter CC BY 4.0 – frei nutzbar mit Namensnennung (© TechLogia).

SSH-Hardening