Facebook

Scopriamo insieme come accedere in modo sicuro ad un VPS via SSH, usando Linux o macOS

Accedere in modo sicuro ad un VPS via SSH, usando Linux o macOS

Accedere in modo sicuro ad un VPS via SSH, usando Linux o macOS

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

  1. Un VPS con sistema operativo Linux
  2. Un utente con privilegi adeguati, ovvero sudo (in questo esempio si chiama utente_vps)
  3. Il proprio computer deve utilizzare macOS o qualsiasi distribuzione basata su Linux
  4. L'applicazione ssh-keygen, normalmente presente su Linux e macOS
  5. L'applicazione ssh-copy-id, normalmente presente su Linux e macOS

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

  1. Apri l'applicazione Terminale
  2. Digitare il comando:
    $ 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):

    oppure se sei su linux
    Enter file in which to save the key (/home/tuo_utente_linux/.ssh/id_rsa):
    ti chiederà dove salvare la coppia di chiavi, puoi lasciare il percorso che ti propone o sceglierne uno che preferisci. Nel caso in cui dovesse esistere già una coppia di chiavi, ti comparirà il seguente messaggio:
    /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.
  3. Per una maggiore sicurezza puoi specificare anche una password che dovrai inserire ogni volta che userai le chiavi. Sta a te decidere. Se premete INVIO senza scrivere nulla, non ti servirà alcuna password.

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".

Indice  degli articoli

Articoli più recenti