Der direkte Root-Login über SSH ist eine der häufigsten Schwachstellen auf frisch aufgesetzten Linux-Servern. Viele Distributionen liefern OpenSSH noch immer mit aktiviertem Root-Login aus, sodass Angreifer nur ein einziges Passwort erraten müssen, um vollständige Kontrolle über das System zu erlangen.
In diesem Beitrag zeige ich, warum du den direkten Root-Login über SSH deaktivieren solltest, wie du die sshd_config sicher anpasst, welche alternativen Konfigurationen existieren und welche zusätzlichen Härungsmaßnahmen sich sinnvoll ergänzen lassen. Zum Abschluss gibt es Tipps für den Fall, dass du dich nach einer Änderung selbst aus dem Server aussperrst.
Was ist SSH Root Login?
SSH Root Login ermöglicht es, sich direkt als Root-Benutzer über SSH auf einem Linux-Server anzumelden. Dies stellt ein erhebliches Sicherheitsrisiko dar, da der Root-Account uneingeschränkte Systemrechte besitzt und ein bevorzugtes Ziel für Angreifer ist.
Sicherheitsrisiko: Root-Account hat vollständige Systemkontrolle
Brute-Force-Schutz: Angreifer können nicht direkt Root-Credentials erraten
Auditierbarkeit: Bessere Nachverfolgung von Benutzeraktionen
Privilege Escalation: Kontrollierte Rechteerweiterung über sudo
Best Practice: Industrie-Standard für Server-Sicherheit
Der direkte Root-Login via SSH (Secure Shell) ist eine häufige Sicherheitslücke auf Linux-Servern. Standardmäßig kann sich der Root-Benutzer direkt per SSH anmelden, was ein hohes Risiko darstellt, da Angreifer so gezielt versuchen können, sich mit dem mächtigsten Benutzerkonto Zugriff zu verschaffen. Um die Sicherheit Ihres Servers zu erhöhen, sollten Sie den Root-Login über SSH deaktivieren.
Voraussetzungen
Bevor du den Root-Login deaktivierst, stelle sicher, dass:
Ein SSH-Daemon (OpenSSH) installiert und aktiv ist
Du einen alternativen Benutzer mit sudo-Berechtigung hast
Du Zugriff auf den Server über die Konsole hast (falls SSH-Probleme auftreten)
Eine Backup-Verbindung besteht (für den Notfall)
SSH-Status prüfen
Bevor du die Konfiguration änderst, solltest du den aktuellen Zustand des SSH-Dienstes und die aktiven Einstellungen prüfen. So erkennst du, ob der Dienst überhaupt läuft und welchen Wert PermitRootLogin aktuell hat.
SSH-Service überprüfen
1 2 3 4 5 6 7 8
# Service-Status anzeigen sudo systemctl status ssh
# SSHD-Konfiguration testen sudo sshd -t
# Aktuelle SSH-Verbindungen anzeigen ss -tlnp | grep :22
Im Folgenden deaktivieren wir den direkten Root-Login vollständig. Die Änderung erfolgt in der Hauptkonfigurationsdatei des SSH-Daemons unter /etc/ssh/sshd_config. Arbeite die Schritte nacheinander ab und validiere die Konfiguration, bevor du den Dienst neu startest.
Schritt 1: SSH-Konfiguration bearbeiten
1 2 3 4 5
# Backup der aktuellen Konfiguration erstellen sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.backup
# Syntax der SSHD-Konfiguration prüfen sudo sshd -t
# Bei Erfolg: keine Ausgabe # Bei Fehlern: Fehlermeldung wird angezeigt
Schritt 4: SSH-Service neu starten
1 2 3 4 5 6 7 8 9 10
# Moderne Systeme (systemd) sudo systemctl restart ssh
# Ältere Systeme sudo service ssh restart
# Status nach Neustart prüfen sudo systemctl status ssh # Hinweis: Auf RHEL/CentOS/Alma/Rocky heißt der Dienst meist "sshd" # sudo systemctl status sshd
Alternative Konfigurationen
Option 1: Root-Login nur mit SSH-Keys
1 2
# In /etc/ssh/sshd_config PermitRootLogin prohibit-password
Diese Einstellung erlaubt die Anmeldung als Root ausschließlich mit einem hinterlegten SSH-Schlüssel. Passwort-basierte Logins werden abgewiesen. Das ist ein guter Kompromiss, wenn du beispielsweise automatisierte Wartungs-Skripte brauchst, die als Root laufen sollen, aber weiterhin Brute-Force-Angriffe auf das Root-Passwort ausschließen willst. Achte darauf, dass ausschließlich vertrauenswürdige Public Keys in /root/.ssh/authorized_keys liegen und der private Schlüssel sicher verwahrt wird.
Option 2: Root-Login nur von bestimmten IPs
1 2 3 4 5 6
# In /etc/ssh/sshd_config PermitRootLogin no
# Zusätzlich Match-Block für spezielle IPs Match Address 192.168.1.100 PermitRootLogin yes
Mit einem Match Address-Block lässt sich der Root-Login auf einzelne, explizit freigegebene IP-Adressen beschränken. Das ist beispielsweise sinnvoll, wenn Wartungsarbeiten von einem festen Administrations-Netzwerk aus durchgeführt werden. Beachte, dass Match-Blöcke am Ende der sshd_config stehen müssen und alle darauffolgenden Direktiven nur für die Bedingung gelten. Ein neuer Match all-Block oder das Dateiende beendet den Gültigkeitsbereich.
Option 3: Root-Login nur für bestimmte Commands
1 2
# In /etc/ssh/sshd_config PermitRootLogin forced-commands-only
Diese restriktivste Variante erlaubt Root-Logins nur dann, wenn im zugehörigen SSH-Public-Key in /root/.ssh/authorized_keys ein command="..."-Eintrag gesetzt ist. Der Login ist also an einen fest definierten Befehl gebunden, der automatisch ausgeführt wird, anstatt eine interaktive Shell zu öffnen. Das eignet sich für automatisierte Backup- oder Monitoring-Jobs, die mit Root-Rechten laufen müssen, ohne dass ein menschlicher Angreifer die Shell übernehmen könnte.
Konfiguration testen
Nachdem du die Konfiguration geändert und den Dienst neu gestartet hast, solltest du die Änderungen in einer eigenen Sitzung testen. Wichtig: Halte dabei deine bestehende SSH-Verbindung offen, damit du im Fehlerfall nicht ausgesperrt bist.
Test 1: Root-Login versuchen (sollte fehlschlagen)
# Mit regulärem Benutzer anmelden ssh username@server-ip
# sudo-Zugriff testen sudo whoami # Sollte "root" ausgeben
Test 3: SSH-Logs überprüfen
1 2 3 4 5 6 7
# Aktuelle SSH-Verbindungsversuche anzeigen sudo journalctl -u ssh -f # oder (je nach Distribution) sudo journalctl -u sshd -f
# Oder traditionelle Logs sudo tail -f /var/log/auth.log
Zusätzliche SSH-Sicherheitsmaßnahmen
Das Deaktivieren des Root-Logins ist nur der erste Schritt. OpenSSH bietet eine Reihe weiterer Direktiven, mit denen sich der Dienst gezielt härten lässt. Die folgenden Einstellungen ergänzen die Grundkonfiguration sinnvoll und erschweren Angreifern das Leben zusätzlich.
# Fail2Ban starten sudo systemctl enable --now fail2ban
Monitoring und Troubleshooting
Auch mit einer gehärteten Konfiguration solltest du regelmäßig prüfen, wer sich auf deinem Server anmeldet und ob es Anzeichen von Angriffsversuchen gibt. Die folgenden Befehle helfen dir dabei, den SSH-Betrieb zu überwachen und typische Probleme einzugrenzen.
# Minimale sichere SSH-Konfiguration PermitRootLogin no PasswordAuthentication no PubkeyAuthentication yes PermitEmptyPasswords no MaxAuthTries 3 ClientAliveInterval 300 Protocol 2
Zusätzliche Sicherheitsmaßnahmen
Verwende SSH-Schlüssel statt Passwörter
Ändere den Standard-SSH-Port (22)
Implementiere Fail2Ban oder ähnliche Tools
Aktiviere UFW/iptables Firewall-Regeln
Regelmäßige Überwachung der SSH-Logs
Verwende 2FA für SSH-Verbindungen
Tipps
Teste Änderungen immer mit einer zweiten SSH-Verbindung
Erstelle vor Änderungen ein Backup der sshd_config
Dokumentiere alle SSH-Konfigurationsänderungen
Überwache SSH-Logs auf verdächtige Aktivitäten
Verwende starke, einzigartige SSH-Schlüssel
Aktualisiere OpenSSH regelmäßig
Fazit
Das Deaktivieren des SSH Root Logins ist ein grundlegender Sicherheitsschritt für jeden Linux-Server. Es beseitigt das einfachste Angriffsszenario – das Erraten des Root-Passworts über SSH – und zwingt alle administrativen Tätigkeiten durch einen regulären Benutzer mit sudo zu laufen. Das erhöht nicht nur die Sicherheit, sondern verbessert auch die Nachvollziehbarkeit, da Rechteerweiterungen protokolliert werden.
In Kombination mit SSH-Schlüsseln statt Passwörtern, Fail2Ban und einer durchdachten Firewall-Regelung reduziert das Risiko erfolgreicher Angriffe erheblich. Wichtig ist, dass du Änderungen immer mit einer zweiten, offenen SSH-Sitzung absicherst und ein Backup der sshd_config bereithältst. Wer zusätzlich auf aktuelle OpenSSH-Versionen achtet und die Logs regelmäßig kontrolliert, betreibt einen deutlich robusteren Serverbetrieb.