Novità
Icona risorsa

Guida Verificata Come utilizzare l'autenticazione SSH a Chiave Pubblica

Una guida verificata è stata controllata dallo staff punto per punto e se ne attesta la sua validità.

Introduzione​

In questa piccola guida, vedremo brevemente come utilizzare l'autenticazione SSH tramite chiave pubblica e privata.

L'argomento era stato accennato nella nostra precedente guida, senza approfondirlo:

Nella guida precedente, avevamo indicato come proteggere correttamente un server, cambiando (tra le altre cose) la porta predefinita ssh. L'accesso "tradizionale" viene fatto tramite user e password. Nella guida inoltre installavamo fail2ban per monitorare i tentativi di accesso brute-force, di fatto raggiungendo un discreto livello di protezione, ma si può fare di meglio!

L'accesso consiste in due chiavi:
  • Chiave Pubblica: Conservata sul server a cui si vuole accedere, definisce CHI può accedere, ovvero solo gli utenti in possesso della corrispondente chiave privata.
  • Chiave Privata: Conservata dall'utente in un luogo sicuro, FUORI dal server a cui si vuole accedere. Solo chi è in possesso di questa chiave può effettuare l'accesso, e solo se nel server di destinazione è presente la corrispondente chiave pubblica. Questa chiave privata, volendo può essere anche protetta da un'ulteriore password.
Oltre ad aumentare notevolmente la sicurezza, questo metodo consente anche un accesso più rapido, senza digitare nome utente e password, molto usato nei sistemi automatizzati.

Creazione delle Chiavi​

Il primo passo per implementare questo metodo di autenticazione, è creare le chiavi. Possiamo farlo sia in locale che direttamente sul server di origine, naturalmente è altamente consigliato farlo in locale! Possiamo usare sia sistemi Linux che Windows per la creazione.

Da Linux​

Se usiamo un sistema Linux, possiamo creare la chiave semplicemente digitando il comando ssh-keygen. Questo genererà una chiave RSA a 2048 bit. Ma dato che ci siamo, aumentiamo la complessità, quindi per la creazione usiamo:
Bash:
Accedi o Registrati per vedere questo contenuto.
Otterremo in output qualcosa del genere:
Codice:
Accedi o Registrati per vedere questo contenuto.
Se intendiamo proteggere la nostra chiave privata con una password, inseriamone una, altrimenti premiamo semplicemente invio e la chiave verrà generata senza password aggiuntiva (in ogni caso, se non si è in possesso del file contenente la chiave privata, sarà impossibile accedere alla macchina).

ATTENZIONE: Il comando, controllerà se esiste già una coppia di chiavi nella directory predefinita dell'utente in uso, nel caso comparirà un messaggio di avviso, informandoci che se procediamo, la precedente chiave verrà eliminata definitivamente. Quindi, se già esiste una chiave, assicuriamoci di fare il backup altrimenti perderemo l'accesso tramite la coppia di chiavi precedenti.

Questa procedura genererà 2 file, uno contenente la chiave pubblica che andremo ad inserire nel server che intendiamo proteggere, l'altro file conterrà la chiave privata, da conservare con cura.

Da Windows​

Se usiamo un sistema Windows, possiamo usare lo stesso comando ssh-keygen dal Prompt dei comandi (cmd.exe) e le chiavi verranno generate all'interno della directory del nostro utente.

Alternativamente, possiamo utilizzare il programma puttygen.exe, liberamente scaricabile a questo indirizzo:
Accedi o Registrati per vedere questo link.


Se volessimo usare puttygen, la procedura è semplicissima: una volta aperto, indichiamo la complessità in basso a destra, ovvero 4096 e clicchiamo sul tasto "generate". Ci verrà chiesto di muovere il mouse in modo casuale, per la corretta generazione della chiave.

puttygen.jpg


Inseriamo (se vogliamo) un commento per la nostra chiave, ed un'eventuale password per la chiave privata. Copiamo tutto il contenuto della prima casella (subito sotto la scritta "Public key for pasting into OpenSSH authorized_keys file") in un file di testo, e per il momento conserviamolo.

Clicchiamo poi su "Save private key" e verrà generato un file per la chiave privata da utilizzare poi con putty (se accediamo alla macchina tramite putty).

AVVISO: Il file della chiave privata che verrà generato, avrà estensione .ppk e potrà essere usato con il programma putty. Se intendiamo utilizzare la chiave privata per l'accesso ssh anche in un sistema linux, quindi direttamente dalla shell, dobbiamo convertire la chiave nel formato OpenSSH. Possiamo farlo tranquillamente in seguito, aprendo il programma puttygen.exe utilizzando il menu "conversions" in alto.

Installazione della chiave​

Una volta che siamo in possesso della chiave privata e della corrispondente chiave pubblica, possiamo procedere all'installazione. Anche questa procedura, può essere fatta in diversi modi.

METODO 1: Copia automatica della chiave​

Se siamo su sistema linux, possiamo utilizzare il comando (dal nostro pc locale)
Bash:
Accedi o Registrati per vedere questo contenuto.

Ci verrà chiesta la password per l'utente username. Questo è in assoluto il modo più semplice, in quanto tutto verrà fatto automaticamente. La chiave che verrà installata, sarà quella generata in precedenza con il comando ssh-keygen e presente nella directory /user_corrente/.ssh/.
Se vogliamo specificare manualmente la chiave da installare, possiamo aggiungere la directory al comando
Bash:
Accedi o Registrati per vedere questo contenuto.
dove al posto di ~/.ssh/mykey inseriamo la directory dove sono presenti le chiavi generate.

METODO 2: Copia manuale della chiave​

In alternativa, se siamo su sistema Windows o non possiamo utilizzare il comando indicato, dobbiamo procedere all'inserimento manuale della chiave:

Accediamo alla macchina da proteggere tramite SSH, possibilmente con accesso root.

Ora abbiamo bisogno della nostra chiave pubblica. Se abbiamo generato le chiavi con putty, l'abbiamo temporaneamente conservata in un file di testo, come indicato sopra. Altrimenti, se abbiamo utilizzato un sistema linux, la chiave sarà contenuta nel file ~/.ssh/id_rsa.pub. Volendo possiamo leggerla in output digitando
Bash:
Accedi o Registrati per vedere questo contenuto.

Con la nostra chiave a portata di mano, creiamo la directory ssh nella home dello user che intendiamo proteggere e il file authorized_keys
Bash:
Accedi o Registrati per vedere questo contenuto.
Dove sostituiamo opportunatamente user_name con il nome dello user corretto (sempre quello che vogliamo proteggere).

Apriamo adesso il file generato authorized_keys con il nostro editor di testo preferito, e incolliamo all'interno la chiave pubblica, salviamo e chiudiamo il file.

Impostiamo correttamente i permessi del file con
Bash:
Accedi o Registrati per vedere questo contenuto.
e poi
Bash:
Accedi o Registrati per vedere questo contenuto.
facendo le opportune sostituzioni su user_name.

Fatto! La chiave pubblica è stata correttamente installata, ma l'accesso standard tramite user e password è ancora attivo, prima di disattivarlo definitivamente, assicuriamoci di poter accedere tramite chiave, altrimenti rischiamo perdere completamente l'accesso alla macchina!

Test accesso e disattivazione login tramite user-password​

Se usiamo Putty, nelle impostazioni ssh, sotto autenticazione, troviamo l'opzione per accedere usando una chiave privata, da selezionare.
sshaccesso.jpg


Mentre se utilizziamo la shell di linux, possiamo utilizzare il file tramite il comando
Bash:
Accedi o Registrati per vedere questo contenuto.

Se abbiamo protetto la chiave privata con una password, ci verrà richiesta durante l'autenticazione.

Una volta che siamo riusciti a connetterci correttamente, possiamo procedere a disattivare l'accesso standard con user e password. Andiamo quindi a modificare il file sshd_config
Bash:
Accedi o Registrati per vedere questo contenuto.

dobbiamo aggiungere (se non presente) la linea
Codice:
Accedi o Registrati per vedere questo contenuto.
e assicurarci che sia presente anche
Codice:
Accedi o Registrati per vedere questo contenuto.

salviamo il file e riavviamo il servizio con
Bash:
Accedi o Registrati per vedere questo contenuto.

PRIMA DI DISCONNETTERCI consiglio caldamente di avviare una nuova sessione e assicurandoci che l'accesso tramite chiave funzioni correttamente.

E siamo giunti alla fine! Questa guida ha mostrato semplicemente come inserire questo metodo di autenticazione, non approfondendo nelle sue varie sfaccettature, come l'utilizzo di chiavi multiple o impostazioni aggiuntive nel file sshd_config, lascio a voi il piacere della scoperta!

Spero la guida vi sia piaciuta, e come al solito se volete, fatemi sapere cosa ne pensate nei commenti.
Autore
Anyma
Visite
2,942
Primo rilascio
Ultimo aggiornamento
Valutazione
0.00 stella(e) 0 valutazioni

Più risorse di Anyma

Indietro
Alto