Zum Inhalt springen
Techlogia — KI- und Web-Dienstleister Berlin

Dieses Modul kostenlos auf echter VM üben

Kostenlos registrieren
 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, tote Verbindungen per Keep-Alive erkennen. 7 Aufgaben, ca. 60 Minuten.

Dauer: 60 Min.Niveau: EinstiegAufgaben: 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, tote Verbindungen erkennen, 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: sudo 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: sudo 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 nur drei Versuchen schließt der Server die Verbindung früher, und Schutz-Tools wie fail2ban greifen schneller.

    Setze in /etc/ssh/sshd_config:

    MaxAuthTries ____

    Danach neu laden:

    sudo systemctl reload ssh

    Kontrolle: sudo sshd -T | grep maxauthtries muss den neuen Wert zeigen.

  4. 4. Tote SSH-Verbindungen erkennen (Keep-Alive alle 5 Minuten)

    Begriff: Keep-Alive. Bricht eine Verbindung weg (WLAN aus, Laptop zugeklappt), merkt der Server das oft lange nicht — die tote Sitzung bleibt offen. ClientAliveInterval legt fest, nach wie vielen Sekunden ohne Daten vom Client der Server verschlüsselt nachfragt, ob die Gegenseite noch da ist. Bleibt die Antwort ClientAliveCountMax-mal aus (Standard: 3), trennt er die Verbindung. Ein Client, der antwortet, bleibt verbunden — auch wenn niemand tippt. Es ist also keine Abmeldung bei Untätigkeit. Der Wert wird in Sekunden angegeben.

    Setze in /etc/ssh/sshd_config:

    ClientAliveInterval ____

    Danach neu laden:

    sudo systemctl reload ssh

    Kontrolle: sudo sshd -T | grep clientaliveinterval muss den neuen Wert in Sekunden 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 ____ 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: sudo sshd -T | grep allowusers muss deinen eigenen Benutzer 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:

    ____ /etc/issue.net

    Danach neu laden:

    sudo systemctl reload ssh

    Kontrolle: sudo 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. sudo sshd -T zeigt die wirksame Konfiguration: alle Dateien zusammen (auch sshd_config.d/) samt Standardwerten — und bricht bei einem Tippfehler mit Datei und Zeile ab. Es liest die Dateien, nicht den laufenden Dienst: Ob der Reload geklappt hat, zeigt systemctl status ssh.

    Stelle sicher, dass Public-Key-Authentifizierung aktiv ist, lade den Dienst neu und prüfe das Ergebnis in der wirksamen Konfiguration.

    sudo systemctl reload ssh
    sudo sshd -T | grep -i pubkeyauthentication

    Sie muss pubkeyauthentication yes enthalten.

    Kontrolle: Der Prüfer schaut, ob der SSH-Dienst läuft und ob pubkeyauthentication yes in der wirksamen Konfiguration steht. Ob du neu geladen hast, sieht er nicht — das ist dein Teil.

Wissens-Check: SSH-Hardening

Ohne VM, ca. 3 Minuten. Du rufst ab, was du im Modul geübt hast – falsche Antworten kommen am Ende noch einmal.

Verwandte Kurse

Jetzt selbst üben

Lesen ist gut – selbst machen ist besser. Übe dieses Modul 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).

Wie gefällt Ihnen diese Seite?