SSH Key auf Ed25519 upgraden



Logo
Quelle Logo: OpenSSH

Die Vorteile des Verschlüsselungsalgorithmus Ed25519 sind - sicherer, schneller zu verifizieren und kompakter von der Dateigröße.

Ob ein SSH-Server am eigenen System läuft sieht man am installierten Paket openssh-server.

 $ dpkg -l | grep -i openssh-server
 ii  openssh-server   1:7.6p1-4ubuntu0.3   amd64   secure shell (SSH) server, for secure access from remote machines


Für die Anpassungen der SSH-Server Konfiguration wird die Datei /etc/ssh/sshd_config editiert und folgende Zeilen hinzufügt.

 # Key exchange algorithms
 KexAlgorithms curve25519-sha256@libssh.org,diffie-hellman-group-exchange-sha256
 #
 # Host-key algorithms
 HostKeyAlgorithms ssh-ed25519,ssh-rsa
 #
 # Encryption algorithms (ciphers)
 Ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com,aes128-gcm@openssh.com
 #
 # Message authentication code (MAC) algorithms
 MACs hmac-sha2-512-etm@openssh.com,hmac-sha2-256-etm@openssh.com,umac-128-etm@openssh.com


Danach den sshd.service restarten und auf evtl. auftretende Fehler achten.

 # systemctl status sshd.service
 ● ssh.service - OpenBSD Secure Shell server
   Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
   Active: active (running) since Sun 2020-04-05 12:02:27 CEST; 1s ago
  Process: 9134 ExecStartPre=/usr/sbin/sshd -t (code=exited, status=0/SUCCESS)
  Main PID: 9135 (sshd)
    Tasks: 1 (limit: 4915)
   CGroup: /system.slice/ssh.service
           └─9135 /usr/sbin/sshd -D
 Apr 05 12:02:27 neonlight systemd[1]: Starting OpenBSD Secure Shell server…
 Apr 05 12:02:27 neonlight sshd[9135]: Server listening on 0.0.0.0 port 22.
 Apr 05 12:02:27 neonlight sshd[9135]: Server listening on :: port 22.
 Apr 05 12:02:27 neonlight systemd[1]: Started OpenBSD Secure Shell server.


Welche Cipher-Suites der SSH-Server aktuell anbietet kann man mit dem Kommando nmap überprüfen.

 # nmap -p22 -n -sV –script ssh2-enum-algos 192.168.145.100
 Starting Nmap 7.60 ( https://nmap.org ) at 2020-04-05 12:26 CEST
 Nmap scan report for 192.168.145.100
 Host is up (0.000062s latency).
 .
 PORT   STATE SERVICE VERSION
 22/tcp open  ssh     OpenSSH 7.6p1 Ubuntu 4ubuntu0.3 (Ubuntu Linux; protocol 2.0)
 | ssh2-enum-algos:
 |   kex_algorithms: (2)
 |       curve25519-sha256@libssh.org
 |       diffie-hellman-group-exchange-sha256
 |   server_host_key_algorithms: (4)
 |       ssh-rsa
 |       rsa-sha2-512
 |       rsa-sha2-256
 |       ssh-ed25519
 |   encryption_algorithms: (3)
 |       chacha20-poly1305@openssh.com
 |       aes256-gcm@openssh.com
 |       aes128-gcm@openssh.com
 |   mac_algorithms: (3)
 |       hmac-sha2-512-etm@openssh.com
 |       hmac-sha2-256-etm@openssh.com
 |       umac-128-etm@openssh.com
 |   compressionalgorithms: (2)
 |       none
 |      zlib@openssh.com
 Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
 Service detection performed. Please report any incorrect results at https://nmap.org/submit/
 Nmap done: 1 IP address (1 host up) scanned in 0.59 seconds


Ein zusätzliches Schlüsselpaar (Ed25519) am Client für den jeweiligen User erzeugen.

$ ssh-keygen -t ed25519 -f id_ed25519

Im Verzeichnis $HOME/.ssh wurden zwei neue Dateien angelegt (Private- und Public-Key)

 $ ls -la id_ed25519*
 -rw——-  1 michael michael 464 Mär 22 18:47 id_ed25519
 -rw-r—– 1 michael michael  99 Mär 22 18:47 id_ed25519.pub

In die Datei $HOME/.ssh/config des jeweiligen Users den neuen Schlüssel bekannt machen.

 IdentityFile ~/.ssh/id_ed25519


Nach einem Neustart des ssh-agent kann der sichere Verschlüsselungsalgorithmus Ed25519 genutzt werden.

 $ eval "$(ssh-agent -s)"
 $ ssh-add ~/.ssh/id_ed25519

Da sich der SSH Hostkey durch diese Maßnahmen ändert, muss man als root die Datei /root/.ssh/known_hosts bearbeiten und den alten Eintrag löschen.

Welcher Eintrag dies ist, stellt man am besten fest in dem man sich als root selbst am eigenen Host anmeldet.

# ssh $(hostname)

Beim Login wird der alte Hostkey (Zeilennumner in der Datei known_hosts) angezeigt. Dementsprechend den alten Eintrag mit einem Editor aus der Datei known_hosts von root löschen. Danach einmal am eigenen Host anmelden und mit yes die Sicherheitsabfrage bestätigen.


Weitere Informationen

Kuketz-Blog - OpenSSH: Aktuelle Cipher-Suites für die Konfiguration

Arch Wiki - SSH keys

Carsten’s Blog - Sichere SSH Konfiguration

RISAN - Upgrade Your SSH Key to Ed25519