Improve SSH security with a new ssh key ed25519

Ogni anno mi piace cambiare le chiavi per accedere con SSH ai miei server, dopo che le chiavi a 1024 bit sono state deprecate e debian ha spostato a 2048 il default nella generazione di una nuova chiave, l’ultima volta avevo usato una rsa a 4096 ma ora ho voluto testare qualcosa di nuovo: ed25519.

Questo nuovo algoritmo di firma digitale con curva di Edwards promette una buona sicurezza e una maggior velocità.

Ed25519 signatures are elliptic-curve signatures, carefully engineered at several levels of design and implementation to achieve very high speeds without compromising security.

La nuova chiave ed25519 è disponibile da openssh 6.5 e già molte applicazioni la supportano, oltre alla openssl di debian anche connectbot per android e putty(kitty) su windows, così perché non provarla ?

Debian

Cominciamo con il generare una nuova chiave :

ssh-keygen -o -a 100 -t ed25519 -f ~/.ssh/yeppa_ed25519

alcune note sulle opzioni

-o

Si può omettere perchè usata di default.

option to save SSH private keys using the new OpenSSH format. It uses bcrypt/pbkdf2 to hash the private key, which makes it more resilient against brute-force attempts to crack the password.

-a

Specifies the number of primality tests to perform when screening DH-GEX candidates using the -T command.

Di default il valore di -a è 16, l’incremento di tale variabile può aumentare i tempi di sblocco della chiave.

-f

Specifies the filename of the key file.

-t

Specifies the type of key to create.

Dopo aver generato la nuova coppia di chiavi apriamo una sessione SSH e andiamo ad inserirla nelle chiavi autorizzate, premetto che sul mio server uso l’opzione :

AuthenticationMethods publickey,password

che comporta l’autenticazione con chiave + password e utente + password, così mi sposto all’interno del file authorized_keys dedicato all’utente per la connessione.

Si può usare il comando specifico

$ scp -P <porta> ~/.ssh/id_rsa.pub <username>@<ip del server>:~/.ssh/authorized_keys

oppure io copio con mc-edit in una sola riga il contenuto della chiave .pub, o delle chiavi come nel mio caso.

In precedenza avevo generato le 4 chiavi specifiche per ogni apparecchio che si connette al server, in questo modo controllo anche gli accessi.

Senza terminare l’attuale sessione in corso eseguo un riavvio di SSH in modo da accreditare le nuove chiavi inserite

#systemcl restart ssh

Ora da terminale provo la nuova connessione:

ssh  -i ~/.ssh/yeppa_ed25519 user@ip-server

usare l’opzione -i nel caso la chiave abbia un nome diverso da quello di default (id_ed255159).

Se tutto funziona correttamente è possibile rimuove la vecchia chiave sia sul server che dalla nostra /home, e cominciare a usare questa nuova.

Connectbot (lineageOS/android)

Dopo aver trasportato la nuova chiave privata sul dispositivo, nella memoria del telefono e non sulla scheda, indico alla connessione configurata la nuova chiave da usare e rimuovo la vecchia.

Anche in questo caso nessun problema.

Putty/Kitty (windows)

Il programma non è in grado di usare la chiave come è stata generata ma occorre convertirla con putty-keygen nel formato .ppk.

Scaricate una versione recente altrimenti non sarete in grado di convertire la vostra chiave in ed_25519.ppk.

Dopo aver convertito la chiave e averla inserita nel profilo come chiave predefinita la prova sulla connessione ha dato esito positivo.

😉

Periodicamente consiglio di cambiare la propria chiave SSH e anche di generare un nuovo user dedicato alla connessione.

Link utili:

Using Ed25519 for OpenSSH keys

Upgrade your SSH keys!

Switching OpenSSH to ed25519 keys

Rispondi

This site uses Akismet to reduce spam. Learn how your comment data is processed.