Sistemista.IT

Operiamo su: Agrigento Alessandria Ancona Aosta Arezzo Ascoli Piceno Asti Avellino Bari Barletta Belluno Benevento Bergamo Biella Bologna Bolzano Brescia Brindisi Cagliari Caltanissetta Campobasso Caserta Catania Catanzaro Chieti Como Cosenza Cremona Crotone Cuneo Enna Fermo Ferrara Firenze Foggia Genova Gorizia Imperia Isernia L'Aquila La Spezia Lecce Lecco Livorno Lodi Lucca Macerata Mantova Massa-Carrara Messina Milano Modena Monza e Brianza Napoli Novara Oristano Palermo Parma Pavia Perugia Pesaro e Urbino Pescara Piacenza Pisa Pistoia Potenza Ravenna Reggio Calabria Reggio Emilia Rieti Rimini Roma Salerno Savona Siena Siracusa Sondrio Taranto Teramo Terni Torino Trapani Trento Treviso Trieste Udine Varese Venezia Verbano-Cusio-Ossola Vercelli Verona Vibo Valentia Viterbo Forlì-Cesena Frosinone Grosseto Latina Matera Nuoro Padova Pordenone Prato Ragusa Rovigo Sud Sardegna Vicenza

Chiave SSH: come generarla e installarla su server Linux

generare chiave SSH con RSA
Indice
3
(2)

Una volta configurato il nostro server per ricevere connessioni SSH e poterlo così gestire da remoto, potremmo sentire la necessità di renderlo più sicuro. Forse perché il nostro server comincia a gestire una certa quantità di servizi importanti o perché Fail2Ban ci indica che il nostro servizio SSH è costantemente sotto attacco. Quindi, come puoi rendere sicuro l’accesso SSH? Puoi configurare una chiave per l’accesso SSH.

In questo modo OpenSSH accetterà connessioni in ingresso solo tramite autenticazione con certificato di sicurezza. Tralasciando la semplice e potenzialmente craccabile password in chiaro.

Se troverai interessante il nostro articolo collegati più spesso con la sezione sicurezza informatica del blog di www.sistemista.it

Genera la chiave SSH

Il primo passo per mettere in sicurezza il servizio è generare una coppia di chiavi per SSH con le quali andremo ad effettuare l’autenticazione. Questo possiamo farlo o dal server o meglio ancora da un client con un sistema operativo Linux installato.

Per generare le chiavi di accesso diamo sul nostro client i seguenti comandi:

  • mkdir ~/.ssh
  • chmod 700 ~/.ssh
  • ssh-keygen -t rsa

Il terzo comando che abbiamo dato avvierà un tool che genererà le chiavi per l’accesso SSH con RSA,. Per fare questo il  tool ci farà una serie di domande:

  • Enter file in which to save the key (/home/b/.ssh/id_rsa)
  • Enter passphrase (empty for no passphrase)
  • Enter same passphrase again

La prima richiesta è di inserire il percorso nel quale vogliamo vengano salvate le chiavi d’accesso, inseriamolo e premiamo invio. La seconda richiesta riguarda la passphrase, scegliamone una piuttosto robusta poiché questa servirà contro il furto della chiave come ti spiegherò tra poco. La terza richiesta è la conferma della passphrase. Inserite queste poche informazioni, avverrà una elaborazione più o meno rapida e il sistema ci informerà che la coppia di chiavi è stata salvata nella directory da noi indicata. I nomi delle chiavi saranno id_rsa e id_rsa.pub.

NOTA: Va detto che le chiavi RSA possono crittografare il traffico in diversi bit, più bit ci sono e più la crittografia sarà complessa. Di default ssh-keygen usa la crittografia a 2048bit se vogliamo aumentare la nostra sicurezza il terzo comando sopra elencato dovrà essere così scritto:

  • ssh-keygen -t rsa -b 4096

Questo creerà una coppia di chiavi a 4096 bit anzichè 2048, il sistema impiegherà più tempo poi ad elaborare le chiavi (quache min). Fatto questo ora dobbiamo trasferire la chiave sul server.

Configura e attiva la chiave SSH

La chiave che dobbiamo trasferire sul nostro server è la chiave pubblica, id_rsa.pub, dobbiamo copiare tale chiave nella cartella /home/nomeutente/.ssh, la chiave deve essere ovviamente copiata nella directory di un utente sudoer e abilitato alla connessione SSH.

Per copiare la chiave hai diversi modi. Puoi metterla in una pen drive, collegarla al server e copiarla con il comando cp. Puoi creare una cartella condivisa e copiarla li dentro. Oppure è possibile utilizzare il comando ssh-copy-id <username>@<host>, sostituendo username con il nome dell’utente sudoer abilitato alla connessione SSH e ad Host il nome del Server. Io ti consiglio di copiarla fisicamente sul server, senza usare cartelle condivise o passare per reti poco sicure.

Se abbiamo copiato la chiave a mano nella directory dobbiamo sostituirla a quella di default del sistema, a tal fine possiamo dare i seguenti comandi:

  • cp authorized_keys authorized_keys_bk
  • cat id_rsa.pub >> authorized_keys

Con questi due comandi effettuiamo prima un backup della vecchia chiave e poi autorizziamo la nostra nuova chiave per la connessione sicura. Fatto questo passiamo alla configurazione del Server SSH, apriamo quindi il file di configurazione in /etc/ssh/sshd_config con il comando nano /etc/ssh/sshd_config e accertiamoci che queste tre opzioni siano abilitate

  • PubkeyAuthentication yes
  • RSAAuthentication yes
  • AuthorizedKeysFile /etc/ssh/%u/authorized_keys

Salviamo il file con la combinazione Ctrl+o e usciamo con Ctrl+x e riavviamo il servizio con il comando sudo service ssh restart.

Primo accesso e test

Ora effettuiamo un primo accesso con la nostra nuova configurazione, se il file id_rsa è nella nostra Home directory siamo a posto, altrimenti per collegarci dovremo usare l’opzione -i per specificare un file id, es:

  • sudo ssh -l amministratore -i /home/utente/cartella/id_rsa nomeserver

Alla pressione del tasto invio prima di effettuare la connessione ci verrà chiesta la Passphrase della chiave RSA, per l’utilizzo. La passphrase, impedisce l’utilizzo della chiave a chi non conosce la passphrase o in caso di furto. Per questo bisogna sceglierne una robusta, affinché non la si trovi usando delle password di uso comune o un sistema di Brute Force o a dizionario.

Effettuato l’accesso correttamente possiamo disabilitare il metodo di autenticazione con password, quindi riapriamo il file /etc/ssh/sshd_config e disabilitiamo la voce PasswordAuthentication impostandola su no salvando il file e riavviando Openssh.

Alcuni utili suggerimenti

Se abbiamo la nostra cartella Home criptata il servizio SSH ovviamente non può leggere la nostra chiave authorized_keys, perché sarà protetta fino al nostro corretto accesso.

Per ovviare a tale problema creiamo una cartella fuori dalla nostra Home ad esempio in /etc/ssh/nomeutente, sostituendo nomeutente con il nostro nome utente, e spostando il file authorized_keys in questa directory. La cartella deve avere i permessi impostati su 755 e ne deve essere proprietario l’utente SSH. Il file authorized_keys deve avere dei permessi più restrittivi, 644 e deve essere proprietario sempre l’utente SSH, i comandi per fare tutto ciò in ordine sono:

  • mkdir /etc/ssh/nomeutente
  • chmod 755 /etc/ssh/nomeutente
  • chown nomeutente:nomeutente
  • mv /home/nomeutente/.ssh/authorized_keys /etc/ssh/nomeutente/
  • chown nomeutente:nomeutente
  • chmod 644 /etc/ssh/nomeutente/authorized_keys

Le operazioni di chmod e chown sul file authorized_keys possono risolvere anche problemi dovuti a un accesso negato da parte del Server generalmente indicate da un messaggio di Permission Denied (Publickey) nel terminale.

Un altro problema potrebbe essere quello legato all’agente di autenticazione che non gestisce la nostra chiave di autenticazione RSA, generalmente segnalato con un messaggio di errore Error: Agent admitted failure to sign using the key, nel terminale, per risolvere tale problema dopo aver copiato correttamente la chiave pubblica nel file authorized_keys diamo il seguente comando:

  • ssh-add

Fatto questo abbiamo finito di rendere sicuro il nostro accesso SSH.

 

Buon lavoro

Quanto ti è stato utile questo articolo?

Clicca sulla stella per votare!

Voto medio 3 / 5. Voti totali: 2

Nessun voto ancora, vota prima di tutti!

Ci dispiace che non ti sia stato utile.

Aiutaci a migliorarlo.

Come possiamo renderlo più utile?

Articoli correlati
Condividi il post