Ubuntu SSH absichern: Best Practices für Experten

Wer einen Ubuntu-Server betreibt, sollte SSH nicht einfach mit den Standardwerten laufen lassen. SSH ist einer der wichtigsten Dienste für die Fernverwaltung von Linux-Systemen. Genau deshalb ist er auch ein häufiges Ziel für Angriffe. Schon ein einzelner falsch konfigurierter SSH-Zugang kann dazu führen, dass Unbefugte Zugriff auf den Server bekommen. Für Anfänger wirkt das Thema oft technisch und kompliziert. In der Praxis geht es aber vor allem darum, einige klare Sicherheitsregeln sauber umzusetzen. Dazu gehören starke Authentifizierung, das Abschalten unnötiger Funktionen, sinnvolle Benutzerrechte und eine gute Kontrolle von Logins. In diesem Tutorial lernen Sie Schritt für Schritt, wie Sie Ubuntu SSH absichern, welche Best Practices für Experten wirklich wichtig sind und wie Sie typische Fehler vermeiden. Die Erklärungen bleiben bewusst leicht verständlich, damit auch Anfänger, IT-Studenten und Linux-Lernende ein sicheres und professionelles SSH-Setup aufbauen können.

Table of Contents

Warum SSH unter Ubuntu abgesichert werden muss

SSH steht für Secure Shell. Mit diesem Protokoll können Sie sich sicher per Netzwerk auf einem Ubuntu-System anmelden und Befehle ausführen. Das ist praktisch, aber auch sicherheitskritisch. Sobald ein Server aus dem Internet erreichbar ist, wird der SSH-Dienst oft automatisch von Bots, Scannern und Angreifern getestet. Diese Systeme versuchen zum Beispiel schwache Passwörter, bekannte Benutzernamen oder unsichere Konfigurationen auszunutzen.

Wenn Sie Ubuntu SSH absichern, schützen Sie also nicht nur einen einzelnen Dienst, sondern oft den kompletten Zugang zum System. SSH ist in vielen Fällen das wichtigste Eingangstor für Administratoren. Genau deshalb sollten die Sicherheitseinstellungen sorgfältig geplant und regelmäßig geprüft werden.

  • SSH erlaubt die Fernverwaltung von Ubuntu-Servern.
  • Unsichere Standardwerte erhöhen das Risiko.
  • Angriffe auf Port 22 sind sehr häufig.
  • Schwache Passwörter und Root-Logins sind besonders gefährlich.
  • Eine gute SSH-Härtung gehört zu jeder sicheren Linux-Administration.

Prüfen, ob OpenSSH Server installiert ist

Bevor Sie SSH absichern, sollten Sie zuerst prüfen, ob der OpenSSH-Server auf Ubuntu installiert ist. In vielen Server-Installationen ist er bereits vorhanden. Auf Desktop-Systemen muss er oft zuerst eingerichtet werden.

Prüfen, ob SSH verfügbar ist

systemctl status ssh

Wenn der Dienst läuft, sehen Sie Informationen zum Status. Falls OpenSSH noch nicht installiert ist, können Sie das Paket nachinstallieren.

OpenSSH Server unter Ubuntu installieren

sudo apt update
sudo apt install openssh-server -y

Danach prüfen Sie erneut den Status:

sudo systemctl status ssh

SSH-Dienst beim Systemstart aktivieren

sudo systemctl enable ssh

Damit startet der SSH-Dienst auch nach einem Neustart automatisch.

Die zentrale SSH-Konfigurationsdatei kennen

Die wichtigsten Einstellungen für den OpenSSH-Server finden Sie in dieser Datei:

/etc/ssh/sshd_config

Dort legen Sie fest, wie sich Benutzer anmelden dürfen, welche Authentifizierung erlaubt ist und welche Sicherheitsoptionen gelten. Bevor Sie Änderungen machen, sollten Sie die aktuelle Datei sichern.

SSH-Konfiguration sichern

sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak

Danach können Sie die Datei mit einem Editor öffnen, zum Beispiel:

sudo nano /etc/ssh/sshd_config

Wichtig ist: Nach jeder Änderung sollte die Konfiguration geprüft werden, bevor der Dienst neu gestartet wird.

SSH-Konfiguration testen

sudo sshd -t

Wenn kein Fehler angezeigt wird, ist die Syntax in Ordnung.

Root-Login per SSH deaktivieren

Eine der wichtigsten Best Practices für Experten ist das Deaktivieren des direkten Root-Logins per SSH. Der Benutzer root hat volle Systemrechte. Wenn Angreifer direkt per SSH als root arbeiten können, ist das Risiko besonders hoch. Viel sicherer ist es, sich mit einem normalen Benutzer anzumelden und nur bei Bedarf sudo zu verwenden.

Einstellung in sshd_config

PermitRootLogin no

Falls die Zeile nicht vorhanden ist, können Sie sie hinzufügen. Falls sie auskommentiert ist, entfernen Sie das führende #.

Warum Root-Login deaktiviert werden sollte

  • Der wichtigste Systembenutzer wird nicht direkt über das Netzwerk erreichbar gemacht.
  • Angriffe auf den bekannten Benutzernamen root werden blockiert.
  • Administrative Aktionen laufen kontrollierter über sudo.
  • Die Nachvollziehbarkeit von Benutzeraktionen ist besser.

Passwort-Login abschalten und SSH-Schlüssel verwenden

Wenn Sie Ubuntu SSH wirklich sicher konfigurieren möchten, sollten Sie Passwort-Logins möglichst deaktivieren und stattdessen SSH-Schlüssel verwenden. Passwörter können erraten, wiederverwendet oder durch Phishing gestohlen werden. SSH-Schlüssel sind deutlich sicherer, wenn sie richtig erstellt und geschützt werden.

SSH-Schlüsselpaar auf dem Client erstellen

ssh-keygen -t ed25519 -C "mein-ubuntu-zugang"

Dieser Befehl erstellt einen modernen und sicheren SSH-Schlüssel vom Typ ed25519. Danach werden Sie gefragt, wo der Schlüssel gespeichert werden soll und ob Sie eine Passphrase setzen möchten. Eine Passphrase ist sehr empfehlenswert.

Öffentlichen Schlüssel auf den Server kopieren

ssh-copy-id benutzername@server-ip

Alternativ können Sie den Inhalt der Datei ~/.ssh/id_ed25519.pub manuell in die Datei ~/.ssh/authorized_keys auf dem Server eintragen.

Passwort-Authentifizierung in sshd_config deaktivieren

PasswordAuthentication no

Je nach Umgebung kann zusätzlich diese Einstellung sinnvoll sein:

ChallengeResponseAuthentication no

Und falls PAM-basierte Passwortanmeldung nicht gebraucht wird:

UsePAM yes

Hier ist Vorsicht wichtig. In vielen Ubuntu-Systemen bleibt UsePAM yes aktiv, weil andere Funktionen davon abhängen können. Für Anfänger ist es oft besser, nur die Passwort-Authentifizierung gezielt abzuschalten und PAM nicht blind zu ändern.

Warum SSH-Schlüssel sicherer sind

  • Schlüssel sind deutlich schwerer zu erraten als Passwörter.
  • Automatische Brute-Force-Angriffe verlieren stark an Wirkung.
  • Mit Passphrase ist auch der private Schlüssel besser geschützt.
  • Die Anmeldung ist gleichzeitig sicher und praktisch.

Einen normalen Admin-Benutzer statt root verwenden

SSH-Sicherheit beginnt nicht nur in der Konfigurationsdatei, sondern auch bei der Benutzerverwaltung. Arbeiten Sie möglichst mit einem normalen Benutzerkonto, das nur bei Bedarf sudo nutzt. So reduzieren Sie das Risiko und halten Ihre Arbeitsweise sauber.

Neuen Benutzer anlegen

sudo adduser adminuser

Benutzer zur sudo-Gruppe hinzufügen

sudo usermod -aG sudo adminuser

Danach testen Sie zuerst die Anmeldung mit diesem Benutzer und prüfen, ob sudo korrekt funktioniert. Erst wenn das sicher klappt, sollten Sie den Root-Login wirklich deaktivieren.

SSH-Zugriff auf bestimmte Benutzer begrenzen

Eine weitere professionelle Best Practice ist die Begrenzung der erlaubten SSH-Benutzer. Wenn nur bestimmte Konten SSH nutzen dürfen, sinkt die Angriffsfläche. Nicht jeder lokale Benutzer sollte sich automatisch auch per SSH anmelden dürfen.

Nur bestimmte Benutzer erlauben

AllowUsers adminuser max

Oder auf Gruppenbasis:

AllowGroups sshadmins

Wenn Sie Gruppen verwenden, legen Sie die Gruppe an und fügen passende Benutzer hinzu:

sudo groupadd sshadmins
sudo usermod -aG sshadmins adminuser

Warum diese Einschränkung sinnvoll ist

  • Unnötige Benutzerkonten sind nicht per SSH erreichbar.
  • Die Verwaltung bleibt übersichtlicher.
  • Angriffsversuche auf unwichtige Konten laufen ins Leere.

SSH-Port ändern ist nur Zusatzschutz, keine Hauptsicherheit

Viele Anleitungen empfehlen, den Standardport 22 zu ändern. Das kann die Zahl automatischer Angriffe verringern, ersetzt aber keine echte Sicherheitsmaßnahme. Ein anderer Port ist nur eine zusätzliche Hürde, kein vollständiger Schutz.

SSH-Port in sshd_config ändern

Port 2222

Wenn Sie den Port ändern, müssen Sie später beim Verbindungsaufbau den Port angeben:

ssh -p 2222 benutzername@server-ip

Worauf Sie bei einer Portänderung achten müssen

  • Die Firewall muss den neuen Port erlauben.
  • Monitoring und Backup-Tools müssen angepasst werden.
  • Dokumentation und Automatisierungen müssen aktualisiert werden.

Für Anfänger ist wichtig: Ein anderer Port kann helfen, aber Passwort-Login abschalten und Schlüssel nutzen ist viel wichtiger.

Firewall für SSH sauber konfigurieren

Wenn Sie Ubuntu SSH absichern, gehört die Firewall immer dazu. Unter Ubuntu wird häufig ufw verwendet. Damit können Sie den SSH-Zugriff gezielt freigeben und andere unerwünschte Zugriffe blockieren.

Firewall-Status prüfen

sudo ufw status

SSH erlauben

sudo ufw allow OpenSSH

Wenn Sie einen anderen Port nutzen, erlauben Sie diesen direkt:

sudo ufw allow 2222/tcp

Firewall aktivieren

sudo ufw enable

Ganz wichtig: Aktivieren Sie die Firewall erst dann, wenn SSH korrekt freigegeben ist. Sonst können Sie sich selbst aussperren.

Regeln anzeigen

sudo ufw status numbered

Fail2ban gegen Brute-Force-Angriffe einsetzen

Eine sehr wichtige Best Practice für Experten ist der Einsatz von fail2ban. Dieses Werkzeug überwacht Logdateien und sperrt IP-Adressen, wenn zu viele fehlgeschlagene Anmeldeversuche erkannt werden. Das schützt besonders gut gegen automatische Brute-Force-Angriffe auf SSH.

Fail2ban installieren

sudo apt update
sudo apt install fail2ban -y

Standardkonfiguration nicht direkt ändern

Eigene Einstellungen legen Sie besser in einer lokalen Datei ab:

sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

Danach öffnen Sie die Datei:

sudo nano /etc/fail2ban/jail.local

Wichtiger Bereich für SSH

[sshd]
enabled = true

Weitere typische Werte können sein:

bantime = 1h
findtime = 10m
maxretry = 5

Danach starten Sie den Dienst neu:

sudo systemctl restart fail2ban

Status prüfen

sudo fail2ban-client status
sudo fail2ban-client status sshd

Nur moderne und sichere SSH-Protokolle und Algorithmen verwenden

OpenSSH ist heute standardmäßig recht sicher konfiguriert. Trotzdem ist es gut zu wissen, dass alte und unsichere Verfahren vermieden werden sollten. SSH Version 1 ist veraltet und unsicher. Moderne Ubuntu-Systeme verwenden SSH Version 2. Zusätzlich sollten alte schwache Algorithmen nicht bewusst wieder aktiviert werden.

SSH Version 2 sicherstellen

In aktuellen OpenSSH-Versionen ist das Standardverhalten bereits modern. In älteren Anleitungen findet man manchmal noch:

Protocol 2

Auf aktuellen Ubuntu-Systemen ist diese Angabe oft nicht mehr nötig, aber das Sicherheitsprinzip bleibt wichtig: keine veralteten Protokolle und keine schwachen kryptografischen Verfahren verwenden.

Was Sie vermeiden sollten

  • Alte Host-Key-Typen bewusst wieder aktivieren
  • Veraltete MAC- oder Cipher-Listen aus alten Tutorials kopieren
  • Unsichere Alt-Kompatibilität ohne echten Grund einschalten

Leerlauf-Sitzungen und Verbindungsdauer begrenzen

Offene SSH-Sitzungen sind ein Risiko, wenn ein Terminal vergessen wird oder ein Rechner unbeaufsichtigt bleibt. Deshalb ist es sinnvoll, inaktive Verbindungen automatisch zu beenden.

Leerlauf-Sitzungen konfigurieren

ClientAliveInterval 300
ClientAliveCountMax 2

Diese Werte bedeuten vereinfacht: Der Server prüft regelmäßig, ob der Client noch aktiv ist. Bleibt die Antwort aus, wird die Verbindung nach einer bestimmten Zeit getrennt.

Vorteile solcher Limits

  • Verwaiste SSH-Sitzungen bleiben nicht unbegrenzt offen.
  • Unbeaufsichtigte Terminals werden schneller getrennt.
  • Die Kontrolle über aktive Sitzungen verbessert sich.

X11-Forwarding und unnötige Funktionen abschalten

Je weniger unnötige Funktionen aktiv sind, desto kleiner ist die Angriffsfläche. Wenn Sie keine grafischen Programme über SSH weiterleiten, können Sie X11-Forwarding deaktivieren.

X11-Forwarding deaktivieren

X11Forwarding no

Auch andere Funktionen sollten nur aktiv sein, wenn sie wirklich benötigt werden. Ein schlankes SSH-Setup ist meist sicherer und leichter zu kontrollieren.

Weitere sinnvolle Einschränkungen

  • Nur benötigte Benutzer zulassen
  • Nur nötige Ports öffnen
  • Keine unnötigen Authentifizierungsmethoden erlauben
  • Keine experimentellen Alt-Einstellungen aus fremden Anleitungen übernehmen

SSH-Logs prüfen und Anmeldeversuche überwachen

Zur professionellen SSH-Sicherheit gehört auch die Überwachung. Sie sollten regelmäßig prüfen, wer sich anmeldet, welche Fehler auftreten und ob ungewöhnliche Login-Versuche sichtbar sind. Unter Ubuntu finden Sie viele SSH-bezogene Einträge in den System-Logs.

SSH-Logs mit journalctl prüfen

sudo journalctl -u ssh

Oder nur die neuesten Einträge:

sudo journalctl -u ssh -n 50

Fehlgeschlagene Anmeldeversuche suchen

sudo grep "Failed password" /var/log/auth.log

Oder erfolgreiche SSH-Logins prüfen:

sudo grep "Accepted" /var/log/auth.log

Warum Log-Analyse wichtig ist

  • Angriffsversuche werden schneller erkannt.
  • Fehlkonfigurationen fallen eher auf.
  • Unerwartete Logins können untersucht werden.
  • Die Sicherheitslage des Servers bleibt transparent.

SSH nach Änderungen sicher neu laden

Nach Änderungen an der Datei sshd_config sollten Sie nicht blind neu starten. Prüfen Sie zuerst die Syntax und halten Sie möglichst eine zweite SSH-Sitzung offen. So vermeiden Sie, dass Sie sich durch einen Fehler selbst aussperren.

Syntax prüfen

sudo sshd -t

SSH-Dienst neu laden

sudo systemctl reload ssh

Ein reload übernimmt Konfigurationsänderungen oft ohne vollständigen Neustart. Falls nötig, können Sie auch neu starten:

sudo systemctl restart ssh

Wichtige Sicherheitsregel vor jedem Neustart

  • Immer Syntax prüfen
  • Bestehende SSH-Sitzung offen lassen
  • Neue Anmeldung in einem zweiten Terminal testen
  • Erst danach alte Sitzung schließen

Typische Fehler beim Absichern von Ubuntu SSH vermeiden

Viele Probleme entstehen nicht durch komplizierte Technik, sondern durch unbedachte Änderungen. Gerade Anfänger sollten sehr vorsichtig arbeiten, wenn sie SSH härten.

Häufige Fehler

  • Passwort-Login deaktivieren, bevor Schlüssel korrekt getestet wurden
  • Firewall aktivieren, ohne SSH vorher freizugeben
  • Root-Login sperren, ohne einen funktionierenden sudo-Benutzer zu haben
  • Port ändern, aber die neue Verbindung nicht testen
  • Konfiguration ändern, ohne sshd -t zu prüfen
  • Unsichere Einstellungen aus alten Blogartikeln kopieren

Besonders wichtiger Praxis-Tipp

Ändern Sie nie mehrere kritische Punkte gleichzeitig, wenn Sie auf einem entfernten Server arbeiten. Arbeiten Sie Schritt für Schritt: erst Schlüssel testen, dann Passwort-Login deaktivieren, dann Root-Login sperren, dann zusätzliche Härtung aktivieren.

Praktisches Minimal-Setup für ein sicheres SSH-Grundgerüst

Für viele Ubuntu-Systeme ist eine kompakte und sichere Grundkonfiguration ein guter Start. Diese Einstellungen sind keine vollständige Speziallösung für jede Umgebung, aber sie zeigen ein sinnvolles Sicherheitsniveau für viele Server und Lernumgebungen.

Beispiel für wichtige Einträge in sshd_config

PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
X11Forwarding no
ClientAliveInterval 300
ClientAliveCountMax 2
AllowUsers adminuser

Zusätzlich sollten Sie einen funktionierenden SSH-Schlüssel, eine Firewall-Regel und möglichst fail2ban eingerichtet haben.

SSH-Schlüssel auf dem Client zusätzlich schützen

Ein sicheres SSH-Setup endet nicht auf dem Server. Auch der private Schlüssel auf dem Client muss geschützt werden. Wer den privaten Schlüssel ohne Schutz verliert, gibt Angreifern möglicherweise direkten Zugriff.

Wichtige Schutzmaßnahmen für private Schlüssel

  • Immer eine starke Passphrase verwenden
  • Den privaten Schlüssel niemals weitergeben
  • Keine Schlüssel unverschlüsselt in unsicheren Backups speichern
  • Bei Verlust oder Verdacht den Schlüssel sofort austauschen
  • Alte nicht mehr genutzte Schlüssel aus authorized_keys entfernen

Autorisierte Schlüssel auf dem Server prüfen

cat ~/.ssh/authorized_keys

So sehen Sie, welche öffentlichen Schlüssel aktuell für die Anmeldung erlaubt sind.

Regelmäßige Updates als Teil der SSH-Sicherheit

Auch die beste SSH-Konfiguration hilft wenig, wenn das System veraltet ist. Sicherheitsupdates gehören deshalb immer zur professionellen Serverhärtung unter Ubuntu. OpenSSH, das Betriebssystem und sicherheitsrelevante Pakete sollten aktuell gehalten werden.

Pakete aktualisieren

sudo apt update
sudo apt upgrade -y

Gerade bei Internet-Servern ist es wichtig, bekannte Schwachstellen zügig zu schließen. SSH-Sicherheit ist also nicht nur eine Frage der richtigen Dateioptionen, sondern auch der laufenden Pflege des Systems.

Wichtige Befehle für die SSH-Härtung im Überblick

Beim Absichern von Ubuntu SSH tauchen einige Befehle immer wieder auf. Diese Kommandos sollten Sie kennen und sicher anwenden können.

OpenSSH Server installieren

sudo apt install openssh-server -y

SSH-Status prüfen

systemctl status ssh

SSH-Konfiguration testen

sudo sshd -t

SSH-Dienst neu laden

sudo systemctl reload ssh

SSH-Schlüssel erzeugen

ssh-keygen -t ed25519 -C "mein-ubuntu-zugang"

Schlüssel auf Server kopieren

ssh-copy-id benutzername@server-ip

Firewall-Regel für SSH setzen

sudo ufw allow OpenSSH

Fail2ban installieren

sudo apt install fail2ban -y

SSH-Logs anzeigen

sudo journalctl -u ssh

Wenn Sie diese Schritte sauber umsetzen, haben Sie eine sehr gute Grundlage, um Ubuntu SSH sicher und professionell zu betreiben. Genau diese Kombination aus Schlüssel-Login, deaktiviertem Root-Zugang, klaren Benutzerrechten, Firewall, Log-Kontrolle und Angriffsschutz durch fail2ban gehört zu den wichtigsten Best Practices für Experten.

Konfiguriere Cisco Router & Switches und liefere ein Packet-Tracer-Lab/GNS3

Ich biete professionelle Unterstützung im Bereich Netzwerkkonfiguration und Network Automation für private Anforderungen, Studienprojekte, Lernlabore, kleine Unternehmen sowie technische Projekte. Ich unterstütze Sie bei der Konfiguration von Routern und Switches, der Erstellung praxisnaher Topologien in Cisco Packet Tracer, dem Aufbau und Troubleshooting von GNS3- und EVE-NG-Labs sowie bei der Automatisierung von Netzwerkaufgaben mit Netmiko, Paramiko, NAPALM und Ansible. Kontaktieren Sie mich jetzt – klicken Sie hier.

Meine Leistungen umfassen:

  • Professionelle Konfiguration von Routern und Switches

  • Einrichtung von VLANs, Trunks, Routing, DHCP, NAT, ACLs und weiteren Netzwerkfunktionen

  • Erstellung von Topologien und Simulationen in Cisco Packet Tracer

  • Aufbau, Analyse und Fehlerbehebung von Netzwerk-Labs in GNS3 und EVE-NG

  • Automatisierung von Netzwerkkonfigurationen mit Python, Netmiko, Paramiko, NAPALM und Ansible

  • Erstellung von Skripten für wiederkehrende Netzwerkaufgaben

  • Dokumentation der Konfigurationen und Bereitstellung nachvollziehbarer Lösungswege

  • Konfigurations-Backups, Optimierung bestehender Setups und technisches Troubleshooting

Benötigen Sie Unterstützung bei Ihrem Netzwerkprojekt, Ihrer Simulation oder Ihrer Network-Automation-Lösung? Kontaktieren Sie mich jetzt – klicken Sie hier.

Related Articles