Home » Netzwerk & Sicherheit » Server SSH Zugang mit YubiKey absichern
|

Server SSH Zugang mit YubiKey absichern

Heute geht es darum, wie wir den SSH Zugang unserer Server mit einem YubiKey absichern können. Secure Shell (SSH) ist ein kryptographisches Netzwerkprotokoll, das für sichere Verbindungen zwischen einem Client und einem Server verwendet wird. Obwohl Passwörter und herkömmliche SSH-Schlüssel für die Authentifizierung weit verbreitet sind, bieten sie nicht immer ausreichenden Schutz gegen fortschrittliche Bedrohungen. Die Nutzung eines YubiKeys zur Absicherung von SSH-Zugängen stellt eine robuste Zwei-Faktor-Authentifizierungsmethode dar, die sowohl die Sicherheit als auch die Benutzerfreundlichkeit erhöht. Sie basiert auf der publickey-authentication, nutzt jedoch einen Hardware Key als Sicherheitsschlüssel welcher gegenüber dem üblichen RSA Verfahren deutlich sicherer ist.

Grundlagen der YubiKey-Authentifizierung

YubiKeys sind physische Sicherheitsschlüssel, die von Yubico entwickelt wurden, um eine starke Zwei-Faktor-Authentifizierung und Passwort-Management-Lösungen zu bieten. Für die SSH-Authentifizierung nutzen YubiKeys Protokolle wie FIDO U2F, FIDO2 oder das proprietäre Yubico OTP, um eine sichere Authentifizierung zu gewährleisten. In diesem Kontext konzentrieren wir uns auf die Nutzung von FIDO-basierten Schlüsseln (z.B. ed25519-sk oder ecdsa-sk), die in OpenSSH ab Version 8.2 unterstützt werden.

Vorteile der Nutzung von YubiKeys für SSH

  • Physische Sicherheit: Der private Schlüssel verlässt niemals den YubiKey, was das Risiko einer Exfiltration minimiert.
  • Benutzerfreundlichkeit: Authentifizierung erfolgt durch Einstecken des YubiKeys und ggf. Berühren, ohne lange Passwörter eingeben zu müssen.
  • Portabilität: Der YubiKey ist ein kleines, tragbares Gerät, das leicht zwischen verschiedenen Systemen getragen werden kann.

Kompatible Yubikeys

Die Kompatibilität eines YubiKeys mit bestimmten Funktionen, insbesondere der SSH-Authentifizierung mittels FIDO U2F oder FIDO2 (für sk-ssh-ed25519 oder ecdsa-sk Schlüssel), hängt vom spezifischen Modell und der Firmware-Version des YubiKeys ab. Zum Zeitpunkt meines letzten Wissensstands (April 2023) unterstützen die meisten aktuellen YubiKey-Modelle diese Funktionalität, aber es gibt einige Unterschiede in den Featuresets je nach Modell. Hier ist eine Übersicht über die gängigen YubiKey-Modelle und ihre Unterstützung für SSH-Authentifizierung:

YubiKey 5 Serie

  • YubiKey 5 NFC
  • YubiKey 5C
  • YubiKey 5 Nano
  • YubiKey 5C Nano
  • YubiKey 5Ci

Diese Modelle unterstützen eine breite Palette von Protokollen, einschließlich FIDO U2F, FIDO2, Smart Card (PIV), OATH-TOTP, OATH-HOTP, und OpenPGP. Sie sind vollständig kompatibel mit der Nutzung von SSH-Schlüsseln, die eine FIDO-basierte Authentifizierung erfordern.

YubiKey 4 Serie

Die YubiKey 4 Serie (einschließlich YubiKey 4, YubiKey 4 Nano, und YubiKey 4C) unterstützt OpenPGP, PIV, OATH-TOTP/HOTP, und FIDO U2F. Während sie für U2F-basierte Authentifizierung geeignet sind, unterstützen sie nicht FIDO2, was für einige neuere SSH-Authentifizierungsmethoden erforderlich sein kann.

YubiKey FIDO U2F und Security Key by Yubico

Diese Modelle sind auf die Unterstützung von FIDO U2F beschränkt und sind für U2F-basierte Authentifizierungszwecke gedacht. Der "Security Key by Yubico" unterstützt auch FIDO2, was ihn für moderne SSH-Authentifizierungsmechanismen geeignet macht.

YubiKey Bio

Der YubiKey Bio bietet Unterstützung für FIDO2 und ermöglicht die biometrische Authentifizierung. Er ist für die Nutzung mit FIDO2-basierten Anwendungen, einschließlich SSH-Authentifizierung, konzipiert und bietet eine zusätzliche Sicherheitsebene durch Fingerabdruckerkennung.

Prüfung der Kompatibilität

Um die spezifische Kompatibilität eines YubiKeys zu prüfen, ist es wichtig, die neuesten Produktbeschreibungen auf der offiziellen Yubico-Website zu konsultieren oder die Dokumentation für das spezifische Modell zu überprüfen. Die Unterstützung für bestimmte Protokolle kann sich mit neuen Firmware-Releases ändern, daher ist es ratsam, auch nach Firmware-Updates zu suchen, die zusätzliche Funktionalitäten einführen oder bestehende verbessern.

Vorbereitungen Yubikey

Damit der Yubikey für SSH verwendet werden kann, muss er mit dem YubiKey Manager eingerichtet sein. Die Einrichtung ist super simple. Alles was ihr tun müsst, ist den Pincode für Fido2 Authentifzierungen zu aktivieren. Dies wird für Funktion zur SSH Authentifikation benötigt. Installiert euch den YubiKey Manager mit apt install yubikey-manager oder über die offizielle Seite hier zu finden.

Steckt euren YubiKey ein, und setzt einen Pin:

Konfiguration des SSH-Servers

Voraussetzungen: Stelle sicher, dass sowohl der Client als auch der Server OpenSSH 8.2 oder neuer verwenden. Installiert bei Bedarf Updates.

Serverseitige Konfiguration: Bearbeite die SSHD-Konfigurationsdatei (/etc/ssh/sshd_config) auf dem Server, um die Nutzung von FIDO-Schlüsseln zu ermöglichen. Öffnet die Datei mit sudo nano /etc/ssh/sshd_config

Ändert die entsprechenden Zeilen folgendermassen ab:

PubkeyAuthentication yes

Starte den SSH-Dienst neu, um die Änderungen zu übernehmen:

sudo systemctl restart sshd

Generierung eines SSH-Schlüsselpaares mit YubiKey

  1. Schlüsselerzeugung: Auf dem Client-System generiert ihr einen neuen SSH-Schlüssel mit dem Befehl ssh-keygen, wobei -t ecdsa-sk oder -t ed25519-sk als Schlüsseltyp spezifiziert wird, je nach YubiKey-Unterstützung.
ssh-keygen -t ed25519-sk -O resident -O application=ssh:KeyName -O verify-required

Ersetzt KeyName mit einer Bezeichnung für den Schlüssel, z.B Yubi-SSH-Schlüssel.

Für ältere Yubkeys mit einer Firmware unter 5.2.3 ist folgender Befehel zu verwenden:

ssh-keygen -t ecdsa-sk -O resident -O application=ssh:KeyName -O verify-required

Sicherheitshinweis

Es ist eigentlich weniger Ratsam nur einen YubiKey zu besitzen. Geht dieser verloren, oder wird er beschädigt, hat man im wahrsten Sinne des Wortes, die Arschkarte gezogen. Es ist immer Ratsam einen zweiten YubiKey zu haben!
Mit dem Befehl ssh-keygen -t ed25519-sk -O resident -O application=ssh:Backup-Yubi -O verify-required könnt ihr euch mit einem weiteren YubiKey einen zweites Schlüsselpaar erstellen.

Es werden 2 neue Dateien in ~/.ssh/ generiert:

  • id_ed25519_sk.pub
  • id_ed25519_sk

Oder bei der älteren Firmware:

  • id_ecdsa_sk.pub
  • id_ecdsa_sk
  1. Übertragung des öffentlichen Schlüssels: Fügt den öffentlichen Schlüssel (id_ecdsa_sk.pub) zum ~/.ssh/authorized_keys File auf dem Server hinzu:
ssh-copy-id -i ~/.ssh/id_ed25519_sk.pub user@host

bzw. für die ältere Yubikeys:

ssh-copy-id -i ~/.ssh/id_ecdsa_sk.pub user@host

Falls ein zweites Schlüsselpaar mit einem zweiten YubiKey erzeugt wurden ist, befindet sich dieser auch in der Datei id_ed25519_sk.pub oder der id_ecdsa_sk

Ersetzt user und host mit dem login und der IP eures Servers. Ihr werdet aufgefordert eures Passwort einzugeben. Danach wird der Schlüssel auf dem Server kopiert.

Nutzung des YubiKeys für SSH-Verbindungen

SSH-Agent: Füge den privaten Schlüssel zum SSH-Agent hinzu, um eine nahtlose Authentifizierung zu ermöglichen. Dies ist erforderlich, damit der Key sofort geladen wird. Ansonsten müsstet ihr das Gerät erst neu starten damit der Key registriert wird.

    ssh-add ~/.ssh/id_ed25519_sk
    
    bzw:
    
    ssh-add ~/.ssh/id_ecdsa_sk

    SSH-Verbindung: Verbindet euch wie gewohnt mit dem SSH-Server. Wenn alles korrekt konfiguriert ist, fordert der YubiKey erst den PIN an, und dann euch zur Berührung auf, um die Authentifizierung abzuschließen.

      Sollte dies geklappt haben. Loggt euch nochmals auf dem Server ein. Öffnet wie am Anfang die Datei /etc/ssh/sshd_config und ändert die Zeile:

      #PasswordAuthentication yes

      zu

      PasswordAuthentication no

      ab. Das verhindert schlussendlich, dass man sich am Server mit einem Passwort anmelden kann. Bitte überprüft vorher nochmals, ob die Authentifizierung mit dem YubiKey auch wirklich funktioniert!

      Sicherheitshinweise und Best Practices

      • Physische Sicherheit: Bewahrt den YubiKey an einem sicheren Ort auf und vermeidet es, ihn unbeaufsichtigt zu lassen.
      • Softwareaktualität: Haltet sowohl die Client- als auch die Server-Software stets aktuell, um von den neuesten Sicherheitsverbesserungen zu profitieren.
      • Backup-Schlüssel: Ein YubiKey sollte niemals alleine verwendet werden. Verliert ihr den YubiKey, ist der Zugang zu euren Servern nicht mehr so einfach möglich. Legt euch einen Ersatzschlüssel zu. Die meissten bieten eine KVM Konsole an, mit dem ihr euch direkt via der Website des Hosters im Notfall mit dem Server verbinden lässt.

      Fazit

      Die Nutzung eines YubiKeys zur Absicherung von SSH-Zugängen bietet eine erhebliche Verbesserung der Sicherheit durch die Kombination von etwas, das der Benutzer weiß (z.B. ein Passwort), mit etwas, das der Benutzer besitzt (der YubiKey). Diese Methode schützt effektiv vor einer Reihe von Angriffsvektoren, einschließlich Phishing und Keylogging, und sollte in Umgebungen, in denen Sicherheit von höchster Bedeutung ist, in Betracht gezogen werden.

      Ähnliche Beiträge

      Schreibe einen Kommentar

      Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert