Unser Newsletter rund um technische Themen,
das Unternehmen und eine Karriere bei uns.

3 Minuten Lesezeit (659 Worte)

Doppelt hält besser: SSH 2FA mit Security Keys

Mit einem Security Key, kann die SSH-Verbindungen mit einem zweiten Faktor abgesichert werden, sodass ein physischer Kontakt benötigt wird und die Verbindung dadurch nicht von Schadsoftware angegriffen werden kann. 

Über 2FA

Wie wir bereits im Artikel "Zwei-Faktor-Authentifizierung für SSH-Logins mit dem Google Authenticator unter Linux" beschrieben haben, erhöht ein zweiter Faktor die Sicherheit bei der Authentifizierung. Mit einem Security Key kann man die SSH Key Pairs absichern, ohne zusätzliche Software auf dem Server installieren/konfigurieren zu müssen. Außerdem erhöht ein Security Key die Sicherheit weiter, da ein physischer Kontakt mit dem Key als zweiter Faktor dient.  

Voraussetzungen

Neben der Open SSH Version >= 8.2 auf dem Server und dem Client wird noch ein Security Key wie z. B. SoloKeys Solo2, Yubikey 5 NFC, Feitian A4B benötigt. Wichtig hierbei ist, dass der Security Key das Protokoll U2F (Universal Second Factor) unterstützt.

Generierung des SSH Key Pairs

Damit SSH Keys mit einem Security Key gesichert werden können, muss ein neues Key Pair erzeugt werden. Dazu stehen die beiden neuen Typen "ecdsa-sk" und "ed25519-sk" zur Verfügung.

Das -sk steht für Security Key. Ich habe mich in diesem Beispiel für die ed25519-sk Variante entschieden. Der Unterschied zu den Schlüsseln ohne "-sk" liegt darin, dass die Schlüssel mit "-sk" durch den Security Key abgesichert werden.

Achtung: Verliert ihr euren Security Key, könnt ihr euch mit dem generierten Key Pair nicht mehr an dem Server anmelden.

Deswegen empfiehlt es sich noch ein zweites Key Pair mit einem zusätzlichen Security Key als Backup zu generieren. 

ssh-keygen -t ed25519-sk -O verify-required 
Generating public/private ed25519-sk key pair. 
You may need to touch your authenticator to authorize key generation. 
Enter file in which to save the key (/home/johannes/.ssh/id_ed25519_sk): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/johannes/.ssh/id_ed25519_sk 
Your public key has been saved in /home/johannes/.ssh/id_ed25519_sk.pub 
The key fingerprint is: 
SHA256:DoraeDg8JpyBe8Kp2/eb4GrVLw9UpuG9/CqXVqO9/3I johannes@linux-machine 
The key's randomart image is: 
+[ED25519-SK 256]-+ 
|                 | 
|                 | 
|      . o        | 
|     . *         | 
|.    .= S        | 
|.. ..o.+ .o      | 
|+o=.o ..+= .     | 
|*&+...oo*.. . E  | 
|OB=o..+Bo.oo.+.  | 
+----[SHA256]-----+  

Mit dem Parameter -O verify-required stellen wir sicher, dass bei der Verwendung die PIN des Security Keys eingegeben werden muss.

Den generierten Public Key kann man mit ssh-copy-id auf den Zielserver kopieren. 

ssh-copy-id -i ~/.ssh/id_ed25519_sk jgr@ct-test

Jetzt können wir uns mit dem Testserver verbinden. Dabei wird die Passphrase für das Key Pair abgefragt. Anschließend wird die PIN für den Key abgefragt und wir müssen die Kontaktfläche am Security Key berühren. 

ssh -i ~/.ssh/id_ed25519_sk jgr@ct-test 
 
ssh jgr@ct-test 
Enter passphrase for key '/home/johannes/.ssh/id_ed25519_sk': 
Confirm user presence for key ED25519-SK SHA256:NGYQH5himBHhqWJw6V5YWV5h+nCbaYKV46/hKoq21KQ 
Enter PIN for ED25519-SK key /home/johannes/.ssh/id_ed25519_sk: 
Confirm user presence for key ED25519-SK SHA256:NGYQH5himBHhqWJw6V5YWV5h+nCbaYKV46/hKoq21KQ 
User presence confirmed 
Linux ct-test 6.5.11-7-pve #1 SMP PREEMPT_DYNAMIC PMX 6.5.11-7 (2023-12-05T09:44Z) x86_64 
 
The programs included with the Debian GNU/Linux system are free software; 
the exact distribution terms for each program are described in the 
individual files in /usr/share/doc/*/copyright. 
 
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent 
permitted by applicable law. 
Last login: Tue Apr 30 05:58:59 2024 from 192.168.247.11  

Anpassen der SSH Server Config

Serverseitig kann die SSH Config so angepasst werden, dass ausschließlich SSH Key Pairs genutzt werden können, die mit Security Keys gesichert sind.

Dazu müssen folgende Einträge in der sshd_config gesetzt werden. 

PubkeyAuthentication yes 
PubkeyAcceptedKeyTypes sk-ecdsa-sha2-nistp256@openssh.com,sk-ssh-ed25519@openssh.com 
PubkeyAuthOptions verify-required  
PasswordAuthentication no  

Fazit

Mit einem U2F Security Key kann man SSH-Verbindungen einfach um einen zweiten Faktor erweitern und absichern ohne weitere PAM Module installieren zu müssen. Durch das notwendige Berühren des Security Keys, kann dieses Verfahren nicht aus der Ferne angegriffen werden, da ein physischer Zugriff notwendig ist. 

Seminarempfehlung

 

Kommentare

Derzeit gibt es keine Kommentare. Schreibe den ersten Kommentar!
Sonntag, 09. März 2025

Sicherheitscode (Captcha)

×
Informiert bleiben!

Bei Updates im Blog, informieren wir per E-Mail.

Weitere Artikel in der Kategorie