Tel: +39 051 9923640
Email: info@vps-green.com
Come parte del processo di messa in sicurezza del tuo VPS (vedi l’articolo "Come mettere in sicurezza un VPS con sistema operativo Ubuntu" a questo link ), l’accesso SSH tramite nome utente e password potrebbe essere un elemento critico per la sicurezza. Tendenzialmente si cerca di utilizzare password che siano facili da memorizzare (anche se contengono caratteri speciali, esempio Ci@oM0nd0), questo può esporvi a tentativi d'accesso da parte di utenti malintenzionati, utilizzando infatti la tecnica del Brute Force è possibile trovare la vostra password.
Questa tecnica d'attacco si basa sostanzialmente sul provare ad accedere al server utilizzando un database di password conosciute, finchè non si riesce a trovare quella corretta. Se avete seguito la guida indicata all'inizio di questo articolo, avete già configurato un utente senza privilegi che può utilizzare sudo ed avete installato Fail2Ban per tenere alla larga tentativi di accesso non desiderati. Con i prossimi step andremo ad aumentare ulteriormente la sicurezza del VPS.
Prerequisiti
In questa guida vedremo come creare la coppia di chiavi SSH utilizzando ssh-keygen, che è parte di OpenSSH (a questo link troverai il sito ufficiale di OpenSSH).
Come funziona l’accesso tramite chiavi SSH
Prima di partire facciamo un piccolo accenno al funzionamento. Una coppia di chiavi SSH è costituita, per l'appunto, da 2 chiavi crittografiche, una pubblica e una privata, utilizzate per autenticare un client su un server SSH. La chiave privata viene conservata dal client e deve essere tenuta al sicuro e non divulgata; se viene compromessa/persa/rubata consentirà a chi ne è in possesso di accedere al server. La corrispondente chiave pubblica può essere condivisa senza alcuna conseguenza, oltre che essere normalmente caricata sul server cui si vuole accedere. Quest'ultima, infatti, viene utilizzata per criptare i "messaggi" che solo la chiave privata può decriptare.
In una configurazione standard, la chiave pubblica viene inserita all'interno del file authorized_keys presente nella cartella ~/.ssh/ di ogni utente abilitato. Quando un client prova a collegarsi in SSH sul server, il servizio verifica se l’utente è in possesso della chiave privata, in caso di esito positivo sarà garantito l’accesso.
Generazione chiavi SSH con ssh-keygen
Step 1: Creazione delle chiavi
$ ssh-keygen -t rsa
Output:
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/tuo_utente_macos/.ssh/id_rsa):
Enter file in which to save the key (/home/tuo_utente_linux/.ssh/id_rsa):
/Users/tuo_utente_macos/.ssh/id_rsa already exists.
Overwrite (y/n)?
In questo caso sta a te decidere se sovrascriverle o se interrompere la procedura e ripeterla cambiando
il percorso di salvataggio delle nuove chiavi.A questo punto abbiamo creato la coppia di chiavi, salvata nel percorso indicato all’inizio della procedura (normalmente è la directory nascosta .ssh all’interno del tuo profilo utente), nel caso dell'esempio le puoi quindi trovare in /Users/tuo_utente_macos/.ssh/ oppure /home/tuo_utente_linux/.ssh/. All'interno della cartella troverai due files, id_rsa e id_rsa.pub; come suggerisce il nome la chiave id_rsa.pub è la chiave pubblica, questa dovrà essere caricata sul tuo VPS, mentre il file id_rsa è la chiave privata e NON dovrà assolutamente essere condivisa.
Step 2: Copiamo la chiave sul VPS
Procediamo alla copia della chiave pubblica sul VPS, in questo caso ci viene in aiuto il comando ssh-copy-id, dall’applicazione Terminale sul vostro macOS o Linux, digita:
$ ssh-copy-id Nome_Utente@IPv4_del_VPS
Output:
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/Users/tuo_utente_macos/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
Nome_Utente@IPv4_del_VPS’s password:
oppure se stai utilizzando Linux
Output:
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
Nome_Utente@IPv4_del_VPS’s password:
In ogni caso devi inserire la password del tuo utente sul VPS per confermare la copia.
Output:
Number of key(s) added: 1
Now try logging into the machine, with: "ssh 'Nome_Utente@IPv4_del_VPS'"
and check to make sure that only the key(s) you wanted were added.
Se è stato fatto tutto correttamente, collegandosi ora in SSH sul VPS utilizzando l’utente senza privilegi, accederai direttamente alla console remota senza che venga richiesta la password (salvo che tu non abbia impostato la passphrase al momento della creazione delle chiavi, ma, quindi non dovrai usare la password del tuo utente sul VPS, bensì la passphrase che hai deciso di impostare).
Conclusioni
A questo punto potrai fare accesso al tuo VPS con un pizzico di sicurezza in più. Ci sono altri accorgimenti tecnici che puoi mettere in campo sul tuo VPS basato sul sistema operativo Linux, se vuoi approfondirli puoi leggere l'articolo "Accedere in modo sicuro ad un VPS via SSH, usando Linux o macOS".