Wie man den SSH-Zugriff auf einen LWS-VPS sichert: nur Schlüssel und fail2ban

Procédure

Um den SSH-Zugang zu Ihrem LWS-VPS abzusichern, wird empfohlen, die Passwortauthentifizierung vollständig zugunsten eines SSH-Schlüssels zu deaktivieren und anschließend fail2ban zu installieren. Diese Konfiguration schützt Ihren Server vor Brute-Force-Angriffen und beseitigt die Risiken durch abgefangene oder erratene Passwörter. In diesem Tutorial kopieren Sie Ihren öffentlichen SSH-Schlüssel, passen die SSH-Konfiguration an, um die Standard-Einstellungen von cloud-init zu neutralisieren, und installieren sowie überprüfen anschließend den aktiven Schutz von fail2ban.

Seinen SSH-Schlüssel installieren

  1. Verbinden Sie sich einmal per SSH und trennen Sie dann die Verbindung

    Öffnen Sie ein Terminal auf Ihrem Computer und verbinden Sie sich mit dem Server mithilfe des in Ihrer Liefer-E-Mail erhaltenen Root-Passworts. Akzeptieren Sie bei der ersten Verbindung den Fingerabdruck des Server-Schlüssels, indem Sie yes eingeben. Sobald die Verbindung hergestellt ist, beenden Sie die Sitzung sofort mit exit, um zu Ihrem lokalen Rechner zurückzukehren.

    ⌨ Auf Ihrem Computer
    ssh root@203.0.113.10
    exit
  2. Kopieren Sie Ihren öffentlichen SSH-Schlüssel auf den VPS

    Verwenden Sie auf Ihrem Computer den Befehl ssh-copy-id, um Ihren öffentlichen Schlüssel auf den Server zu kopieren. Geben Sie Ihr Root-Passwort ein letztes Mal ein, wenn das Terminal Sie dazu auffordert. Falls Sie Ihren SSH-Schlüssel bereits bei der Bestellung oder bei der Neuinstallation über das KVM-Panel hinzugefügt haben, ist dieser Schritt nicht erforderlich.

    ⌨ Auf Ihrem Computer
    ssh-copy-id root@203.0.113.10
    Erwartetes Ergebnis
    Number of key(s) added: 1
    
    Now try logging into the machine, with: "ssh 'root@203.0.113.10'"
    and check to make sure that only the key(s) you wanted were added.
  3. Überprüfen Sie die Verbindung per SSH-Schlüssel

    Verbinden Sie sich von Ihrem Computer aus erneut per SSH mit Ihrem VPS. Die Verbindung muss sofort hergestellt werden, ohne dass das Root-Passwort des Servers abgefragt wird, was bestätigt, dass Ihr öffentlicher Schlüssel korrekt installiert wurde.

    ⌨ Auf Ihrem Computer
    ssh root@203.0.113.10

Passwortanmeldung deaktivieren

  1. Erkennen Sie die Falle der cloud-init-Datei

    Listen Sie die im Verzeichnis /etc/ssh/sshd_config.d/ vorhandenen Dateien auf und zeigen Sie den Inhalt von 50-cloud-init.conf an. Diese Datei aktiviert die Passwortauthentifizierung. Da der SSH-Server bei der Verarbeitung der Dateien in alphabetischer Reihenfolge die zuerst gefundene Direktive beibehält, muss Ihre eigene Konfiguration zwingend vor ihr gelesen werden.

    ⌨ Auf dem Server
    ls /etc/ssh/sshd_config.d/
    cat /etc/ssh/sshd_config.d/50-cloud-init.conf
    Erwartetes Ergebnis
    PasswordAuthentication yes
  2. Erstellen Sie die vorrangige SSH-Konfigurationsdatei

    Öffnen Sie den Editor nano, um die Datei 00-cles-uniquement.conf zu erstellen. Das Präfix 00 stellt sicher, dass diese Datei vor 50-cloud-init.conf verarbeitet wird. Tragen Sie dort die Direktiven ein, die Passwörter deaktivieren und den Root-Zugriff auf Schlüssel beschränken, und speichern Sie dann mit Strg+X, bestätigen Sie mit O (oder Y je nach Sprache) und drücken Sie die Eingabetaste.

    ⌨ Auf dem Server
    nano /etc/ssh/sshd_config.d/00-cles-uniquement.conf
    📄 /etc/ssh/sshd_config.d/00-cles-uniquement.conf
    # SSH-Verbindung nur per Schlüssel
    PasswordAuthentication no
    KbdInteractiveAuthentication no
    PermitRootLogin prohibit-password
  3. Testen Sie die Syntax und wenden Sie die Konfiguration an

    Führen Sie sshd -t aus, um das Fehlen von Syntaxfehlern zu überprüfen, und kontrollieren Sie dann die aktiven Werte mit sshd -T. Beachten Sie, dass permitrootlogin without-password anzeigt, was prohibit-password entspricht. Wenn alles korrekt ist, laden Sie den SSH-Dienst neu, um die neuen Einstellungen ohne Unterbrechung Ihrer Sitzung anzuwenden.

    ⌨ Auf dem Server
    sshd -t
    sshd -T | grep -E "^(passwordauthentication|kbdinteractiveauthentication|permitrootlogin)"
    systemctl reload ssh
    Erwartetes Ergebnis
    permitrootlogin without-password
    passwordauthentication no
    kbdinteractiveauthentication no

SSH-Zugang testen

  1. Bestätigen Sie die Ablehnung des Passworts und den Zugang per Schlüssel

    Ohne Ihre aktive Sitzung zu schließen, öffnen Sie ein zweites Terminalfenster auf Ihrem Computer. Versuchen Sie zunächst eine Verbindung, indem Sie die Schlüsselablehnung mit der Option PubkeyAuthentication=no erzwingen: Der Server muss den Zugriff verweigern. Starten Sie anschließend eine normale Verbindung: Die Authentifizierung per Schlüssel erfolgt erfolgreich.

    ⌨ Auf Ihrem Computer
    ssh -o PubkeyAuthentication=no root@203.0.113.10
    ssh root@203.0.113.10
    Erwartetes Ergebnis
    root@203.0.113.10: Permission denied (publickey).

fail2ban installieren und überprüfen

  1. Installieren Sie fail2ban

    Aktualisieren Sie von Ihrer mit dem VPS verbundenen Sitzung aus die Liste der Debian-Paketquellen mit apt update und installieren Sie dann das Paket fail2ban. In aktuellen Debian-Versionen aktiviert fail2ban automatisch den Schutz des SSH-Dienstes direkt nach Abschluss der Installation.

    ⌨ Auf dem Server
    apt update
    apt install -y fail2ban
  2. Überprüfen Sie den Status von fail2ban und schließen Sie die Sitzung

    Stellen Sie mit systemctl sicher, dass der Dienst fail2ban aktiv ist, und fragen Sie anschließend die Jail sshd ab, um zu bestätigen, dass die Filterung funktioniert und Verbindungen überwacht werden. Danach können Sie sich beruhigt abmelden.

    ⌨ Auf dem Server
    systemctl is-active fail2ban
    fail2ban-client status sshd
    exit
    Erwartetes Ergebnis
    active
    Status for the jail: sshd
    |- Filter
    |  |- Currently failed: 1
    |  |- Total failed:     3
    |  `- Journal matches:  _SYSTEMD_UNIT=ssh.service + _COMM=sshd
    `- Actions
       |- Currently banned: 0
       |- Total banned:     0
       `- Banned IP list:

Lexikon

SSH (Secure Shell)
Sicheres Kommunikationsprotokoll, das es ermöglicht, sich mit einem entfernten Server zu verbinden und ihn per Befehlszeile zu verwalten.
Öffentlicher Schlüssel
Schlüsseldatei, die auf dem entfernten Server abgelegt wird, um die Identität des Benutzers zu überprüfen, ohne ein Passwort zu übertragen.
Privater Schlüssel
Streng vertrauliche Schlüsseldatei, die auf Ihrem lokalen Computer aufbewahrt wird und dazu dient, dem Server Ihre Identität nachzuweisen.
Cloud-init
Automatisierungstool, das bei der ersten Bereitstellung virtueller Maschinen verwendet wird, um deren Netzwerk und Zugänge zu initialisieren.
fail2ban
Sicherheitssoftware, die Systemprotokolle überwacht und verdächtige IP-Adressen vorübergehend auf Firewall-Ebene blockiert.
Jail (Prison)
Bei fail2ban eine Einheit, die einen Filter zur Erkennung von Missbrauchsversuchen und eine Bannregel für einen bestimmten Dienst kombiniert.

Häufige Fragen

Warum die Datei 00-cles-uniquement.conf benennen statt sshd_config zu ändern?

Der OpenSSH-Daemon liest die Dateien im Ordner sshd_config.d in alphabetischer Reihenfolge und wendet den ersten Wert an, auf den er trifft. Durch die Verwendung des Präfixes 00 werden Ihre Direktiven vor denen von 50-cloud-init.conf verarbeitet, was die Berücksichtigung der Passwortsperre sicherstellt.

Was tun, wenn ich mich aus meinem VPS ausgesperrt habe?

Wenn Sie Ihren SSH-Zugang verlieren, melden Sie sich in Ihrem LWS-Kundenbereich an und öffnen Sie die für Ihren VPS verfügbare KVM-/VNC-Konsole. Diese Konsole simuliert einen physischen Bildschirm und eine physische Tastatur, die mit dem Server verbunden sind, und ermöglicht es Ihnen, Ihre Konfigurationsdateien ohne SSH zu korrigieren.

Was ist der Unterschied zwischen prohibit-password und without-password?

Es handelt sich genau um denselben Parameter in OpenSSH. prohibit-password ist die empfohlene moderne Syntax, aber der Befehl sshd -T zeigt in der Liste der aktiven Direktiven den historischen Gegenwert without-password an.

Muss man fail2ban nach der Installation unter Debian konfigurieren?

Auf aktuellen Distributionen wie Debian 13 richtet fail2ban die Jail für den SSH-Dienst bei der Installation des Pakets automatisch ein und startet sie. Sie können die Bann-Dauern später in einer jail.local-Datei anpassen, wenn Sie möchten.

help.lws.net/a/7926
War dieser Artikel hilfreich?

Ja

Nicht

1 Mal gelesen

Vielen Dank! Stellen Sie gerne Fragen zu unserer Dokumentation, wenn Sie weitere Informationen wünschen, und helfen Sie uns, sie zu verbessern.

Ähnliche Artikel

Eine Frage zu diesem Artikel?

Stellen Sie sie dem LWS-Team und der Community. Die Antwort wird nach Moderation veröffentlicht.

Stellen Sie eine Frage an das LWS-Team und seine Gemeinschaft

DSGVO: Verantwortlicher: LWS-Ligne Web Services. Zweck: Moderation und öffentliche Veröffentlichung Ihrer Frage, gegebenenfalls Benachrichtigung über eine Antwort. Rechtsgrundlage: Einwilligung (Art. 6 Abs. 1 lit. a DSGVO). Speicherdauer der E-Mail-Adressen: 90 Tage nach der Benachrichtigung, höchstens 12 Monate ohne Antwort. Zur Ausübung Ihrer Rechte siehe den DSGVO-Abschnitt unserer AGB.