Best Practices zur Härtung der SSH-Sicherheit auf Linux-Servern
Sichern Sie Ihren Linux-Server sofort, indem Sie diese wesentlichen SSH-Härtungstechniken beherrschen. Dieser Expertenleitfaden bietet umsetzbare Schritte, wobei der Schwerpunkt auf Konfigurationsänderungen in `sshd_config` liegt. Erfahren Sie, wie Sie den riskanten Root-Login deaktivieren, eine obligatorische schlüsselbasierte Authentifizierung implementieren, um schwache Passwörter zu eliminieren, den Standardport ändern und Fail2Ban für eine effektive Ratenbegrenzung gegen Brute-Force-Angriffe installieren. Schützen Sie Ihr System, indem Sie SSH in einen robusten, sicheren Kanal umwandeln.
Bewährte Methoden zur Härtung der SSH-Sicherheit auf Linux-Servern
SSH ist normalerweise die erste Tür, die Sie auf einem Linux-Server öffnen. Daher sollte die Härtung der SSH-Sicherheit erfolgen, bevor Sie diesen Host dem Internet aussetzen. Bots versuchen ständig schwache Passwörter, wiederverwendete Anmeldeinformationen und Standardkonten auf Port 22.
Das Ziel ist einfach: Halten Sie den Fernzugriff für Sie nutzbar und für Angreifer schmerzhaft. Beginnen Sie mit einer zweiten Terminalsitzung, behalten Sie Ihre aktuelle SSH-Sitzung offen und testen Sie jede Änderung, bevor Sie den Daemon neu starten.
Sichern und Testen Sie die Konfiguration zuerst
Bevor Sie /etc/ssh/sshd_config bearbeiten, erstellen Sie ein Backup. Ein Tippfehler kann Sie vom Server aussperren.
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak_$(date +%F)
Überprüfen Sie nach der Bearbeitung die Syntax:
sudo sshd -t
Wenn der Test bestanden wird, laden Sie SSH neu oder starten Sie es neu. Der Dienstname ist üblicherweise sshd auf RHEL-basierten Systemen und ssh auf Debian/Ubuntu:
sudo systemctl restart sshd
# oder
sudo systemctl restart ssh
1. Deaktivieren Sie die Root-Anmeldung
Die direkte root-Anmeldung gibt einem Angreifer von vornherein den wertvollsten Benutzernamen. Verwenden Sie ein normales Benutzerkonto und erhöhen Sie dann die Rechte mit sudo, wenn Sie administrative Zugriffe benötigen.
Konfigurationsschritt
Öffnen Sie /etc/ssh/sshd_config und suchen Sie die Direktive PermitRootLogin. Ändern Sie ihren Wert auf no.
# Vorher:
# PermitRootLogin yes
# Nachher (Bewährte Methode):
PermitRootLogin no
Bevor Sie SSH neu starten, bestätigen Sie, dass Sie sich als Standardbenutzer mit sudo-Rechten anmelden können.
2. Erzwingen Sie die schlüsselbasierte Authentifizierung
Passwortauthentifizierung ist im großen Maßstab leicht angreifbar. SSH-Schlüssel sind schwerer zu erraten, einfacher zu rotieren und für die tägliche Administration sicherer, wenn Sie den privaten Schlüssel mit einer Passphrase schützen.
Schlüssel generieren und installieren
- Generieren Sie das Schlüsselpaar auf Ihrem lokalen Rechner:
ssh-keygen -t ed25519 -C "[email protected]" - Kopieren Sie den öffentlichen Schlüssel auf den Server:
ssh-copy-id -i ~/.ssh/id_ed25519 benutzer@ihre_server_ip
Deaktivieren Sie die Passwortauthentifizierung
Sobald Sie bestätigt haben, dass Sie sich erfolgreich mit Ihrem SSH-Schlüssel anmelden können, deaktivieren Sie die Passwortauthentifizierung vollständig.
# Passwörter deaktivieren
PasswordAuthentication no
# Sicherstellen, dass Schlüssel aktiviert sind
PubkeyAuthentication yes
Ed25519 ist eine gute Standardeinstellung für neue Schlüssel. Wenn Sie aus Kompatibilitätsgründen mit älteren Systemen RSA benötigen, verwenden Sie einen großen Schlüssel, z. B. 4096 Bit.
3. Erwägen Sie, den Standard-SSH-Port zu ändern
Das Ändern von SSH von TCP-Port 22 auf einen nicht standardmäßigen Port kann laute automatisierte Scans reduzieren. Es ist kein Ersatz für Schlüssel, Zugriffskontrollen oder Rate-Limiting, da jeder den offenen Port dennoch mit einem Scan entdecken kann.
Konfigurationsschritt
Ändern Sie in /etc/ssh/sshd_config die Direktive Port:
# Vorher:
# Port 22
# Nachher (Beispiel für nicht standardmäßigen Port):
Port 22222
Aktualisieren Sie Ihre Firewall und alle Cloud-Sicherheitsgruppen, bevor Sie SSH neu starten. Andernfalls lauscht Ihr neuer SSH-Daemon möglicherweise auf einem Port, den Sie nicht erreichen können.
Beispiel mit firewalld (CentOS/RHEL):
sudo firewall-cmd --permanent --add-port=22222/tcp
sudo firewall-cmd --reload
4. Beschränken Sie den Zugriff auf bestimmte Benutzer und Gruppen
Wenn nur eine kleine Gruppe von Personen SSH verwenden soll, geben Sie dies in der sshd_config an. Dies verhindert, dass vergessene lokale Konten zu entfernten Einstiegspunkten werden.
Konfigurationsdirektiven
Verwenden Sie eine oder beide der folgenden Direktiven in der sshd_config:
- Bestimmte Benutzer zulassen:
AllowUsers alice bob - Bestimmte Gruppen zulassen:
AllowGroups sshaccess admins
Wenn diese Direktiven vorhanden sind, wird jedem Benutzer oder jeder Gruppe, der/die nicht explizit aufgeführt ist, der Zugriff verweigert.
5. Behalten Sie moderne SSH-Standardeinstellungen bei und deaktivieren Sie Legacy-Methoden
Aktuelle OpenSSH-Versionen verwenden bereits SSH-Protokoll 2; die Unterstützung für das ältere Protokoll 1 wurde aus modernen OpenSSH-Versionen entfernt. Vermeiden Sie es, alte Härtungsausschnitte zu kopieren, die nicht unterstützte Protocol-Direktiven oder eine veraltete Chiffreliste enthalten. Diese können SSH nach einem Upgrade beschädigen.
Konzentrieren Sie sich darauf, Legacy-Vertrauensmechanismen zu deaktivieren, es sei denn, Sie wissen, dass Sie sie benötigen:
HostbasedAuthentication no
IgnoreRhosts yes
PermitEmptyPasswords no
Wenn Ihre Organisation eine benutzerdefinierte Chiffre-, MAC- oder Schlüsselaustauschrichtlinie benötigt, überprüfen Sie, was Ihr installierter Server unterstützt, bevor Sie es ändern:
sshd -T | grep -E '^(ciphers|macs|kexalgorithms) '
Wenden Sie dann nur eine getestete Richtlinie an, die zu Ihrer Client-Basis passt. Eine zu strenge Liste kann ältere Automatisierungshosts aussperren.
6. Fügen Sie Rate-Limiting mit Fail2Ban hinzu
Selbst bei schlüsselbasierter Authentifizierung verschwenden wiederholte Sondierungen Ressourcen und überladen Protokolle. Fail2Ban überwacht Authentifizierungsprotokolle und fügt nach wiederholten Fehlversuchen temporäre Firewall-Sperren hinzu.
Installieren Sie Fail2Ban:
# Debian/Ubuntu sudo apt update && sudo apt install fail2ban # RHEL/CentOS/Fedora sudo dnf install fail2banAktivieren Sie den
sshd-„Jail“. Viele Systeme werden mit einer Standardkonfiguration ausgeliefert, aber Sie sollten lokale Überschreibungen in/etc/fail2ban/jail.localoder einer Datei unter/etc/fail2ban/jail.d/vornehmen.[sshd] enabled = true port = 22222 maxretry = 5 bantime = 1hStarten Sie den Dienst:
sudo systemctl enable --now fail2ban
Wenn Sie den SSH-Port geändert haben, lassen Sie den Fail2Ban-Jail mit dem neuen Port übereinstimmen.
7. Optimieren Sie Sitzungs- und Authentifizierungseinstellungen
Diese Einstellungen helfen, inaktive Sitzungen zu schließen und schwache Authentifizierungspfade zu entfernen:
| Direktive | Empfohlener Wert | Zweck |
|---|---|---|
ClientAliveInterval |
300 | Sendet alle 300 Sekunden eine serverseitige Keepalive-Überprüfung. |
ClientAliveCountMax |
3 | Trennt die Verbindung nach drei unbeantworteten Überprüfungen. |
UsePAM |
yes | Aktiviert Pluggable Authentication Modules (PAM) für zusätzliche lokale Systemsicherheitsrichtlinien. |
PermitEmptyPasswords |
no | Blockiert Konten mit leeren Passwörtern bei der Anmeldung. |
MaxAuthTries |
3 | Begrenzt wiederholte Authentifizierungsversuche pro Verbindung. |
X11Forwarding |
no | Deaktiviert X11-Weiterleitung, es sei denn, Sie verwenden sie tatsächlich. |
Härtungs-Checkliste
Verwenden Sie diese Checkliste, um sicherzustellen, dass Ihr Server die grundlegenden SSH-Härtungsstandards erfüllt:
- Erstellen Sie ein Backup der
sshd_config, bevor Sie Änderungen vornehmen. - Setzen Sie
PermitRootLogin no. - Setzen Sie
PasswordAuthentication no(nach der Schlüsseleinrichtung). - Ändern Sie den
Portauf einen nicht standardmäßigen Wert. - Aktualisieren Sie die Firewall, um den neuen Port zuzulassen.
- Verwenden Sie
AllowUsersoderAllowGroups, um den Zugriff einzuschränken. - Deaktivieren Sie Legacy-Vertrauensmethoden wie
HostbasedAuthentication. - Installieren und konfigurieren Sie Fail2Ban.
- Überprüfen Sie die Konfiguration mit
sshd -t, bevor Sie neu starten.
Die Härtung der SSH-Sicherheit funktioniert am besten als abgestufte Verteidigung. Schlüssel stoppen Passwortraten, Benutzereinschränkungen reduzieren, wer sich verbinden kann, Firewall-Regeln begrenzen, woher Verbindungen kommen, und Fail2Ban verlangsamt wiederholte Sondierungen. Behalten Sie eine funktionierende Sitzung offen, während Sie testen, und dokumentieren Sie dann den neuen Port und die Anmeldemethode für jeden, der den Server betreibt.