How-to login in SSH con una chiave criptografica

Da MontelLUG.
Versione del 6 giu 2016 alle 12:43 di EndelWar (Discussione | contributi) (Pagina ricreata dopo eliminazione errata)

(diff) ← Versione meno recente | Versione attuale (diff) | Versione più recente → (diff)

Howto login SSH con chiave criptografica

Situazione: mi trovo connesso in una rete “insicura” e intendo collegarmi ad un server SSH remoto, connesso ad Internet.

Cosa significa e a cosa serve questo howto: una volta seguite le istruzioni che seguono, sarete in grado di loggarvi in un vostro server SSH facendo uso di una chiave crittografica privata con o senza password.

Perchè: utilizzando una chiave crittografica, è migliorato il livello di sicurezza del collegamento:

  1. non avviene lo scambio della chiave crittografica alla prima connessione al server SSH;
  2. è possibile utilizzare una password differente da quella di login nel server fisico.

Premessa

Chiunque effettui una breve ricerca su questo argomento trova una miriade di collegamenti: spesso però sono incompleti. Questa guida Per aiutare i soci del Montellug In questo howto non vengono trattati i seguenti argomenti, che verranno eventualmente argomentati in apposite pagine wiki del sito del MontelLug:

  • utilizzare SSH per creare un tunnel tra due macchine remote;
  • impostare un server SSH; creare un tunnel instradando il traffico VNC sulla connessione SSH; impostare il router affinchè svolga un port-forwarding;
  • collegamento ad un server SSH;
  • VNC ed altri programmi utilizzabili in un tunnel SSH;

In questo howto si considera che:

  • è stato gia installato il server SSH;
  • il collegamento è già stato testato ed è possibile loggarsi nel modo tradizionale;
  • sia possibile memorizzare una chiave privata su un supporto informatico: tramite una penna USB o un CD o qualunque altro tipo di supporto di memorizzazione mobile.

Configurazione demone SSH

Generare Chiave Pubblica e Privata

Creiamo una copia di chiavi crittografiche, una pubblica ed una privata. Spostiamoci nella cartella ~./ssh e diamo il comando

ssh-keygen -t dsa

Se non esiste la cartella dobbiamo crearla così:

mkdir -p ~/.ssh
chmod 700 ~./ssh
cd ~/.ssh

Seguiamo le istruzioni: verrà chiesto l'inserimento di una password. Si tratta della password che verrà utilizzata per connettersi via SSH, pertanto è bene inserirne anche una Al termine nella cartella ~./ssh troveremo 2 files:

  • id_rsa la chiave privata
  • id_rsa.pub la chiave pubblica

La chiave pubblica verrà conservata nella cartella nascosta ~./ssh nella directory dell'utente nel server. La chiave privata verrà salvata nella chiavetta USB e servirà per connettersi da remoto.

La chiave pubblica andrà memorizzata anche nel seguente file cui fa riferimento il file di configurazione del demone SSH:

cat ~/.ssh/id.pub >> authorized_keys
chmod 600 authorized_keys

Configurazione demone SSH

Il file di configurazione del demone SSH si trova in /etc/ssh/sshd_config: è questo il file che deve essere modificato per configurare il demone.

Salvare il file in questione prima della modifica:

sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config_ORI

Apriamo il file di configurazione per modificarlo:

sudo nano /etc/ssh/sshd_config

Ora bisogna procedere ad effettuare le modiche al file: alcune volte sarà sufficiente togliere il carattere # (che viene interpretato come “tutto ciò che segue è commento e non configurazione), altre volte si dovrà modificare il testo.

Impostare la porta di collegamento

Cerchiamo la parola port e modifichiamo il numero che la segue a nostra scelta.

port 22

La porta di default sulla quale restano in ascolto i server SSH è 22. Per motivi di sicurezza è possibile cambiarla, considerando però che in seguito si dovrà impostare il collegamento remoto a questa porta. Per semplicità consideriamo di non modificare la porta di default.

Disabilitare i login remoti con l'account di root

Per disabilitare il login da remoto con i permessi e privilegi disponibili all'account root cerchiamo la parola PermitRootLogin modifichiamo come segue.

PermitRootLogin no

Nota 1: probabilmente troverete come parametro yes;

Nota 2: in Ubuntu non è abilitaro l'account di root, pertanto è superfluo modificare l'impostazione.

Disabilitare la password di autenticazione

Se utilizziamo una chiave privata per connettersi al server SSH, una volta avviato il collegamento sarà superfluo che venga richiesta una ulteriore autenticazione alla console. Questo ci consente anche di non utilizzare la nostra vera password sul server per potersi collegare via SSH e costringe colui che si connette al nostro server di avere con se la chiave privata generata in precedenza, senza della quale non sarà possibile autenticarsi ed utilizzare il servizio SSH. Pertanto possiamo decidere di disabilitare tutte le password di autenticazione.

Cerchiamo la riga:

#PasswordAuthentication yes

rimuoviamo il simbolo # e impostiamo il parametro con “no”:

PasswordAuthentication no

Conclusioni

Salviamo il file di configurazione così modificato ed usciamo dall'editor utilizzato.

Riavviamo il demone SSH affinchè le modifiche apportate diventino operative:

sudo /etc/init.d/ssh restart

Avviare la connessione da remoto

Effettuate le modifiche evidenziate sarà possibile connettersi al server utilizzando la chiave privata generata.

Effettuiamo il test da un altro pc connesso direttamente alla rete interna protetta. L'impostazione del port forwarding sul router/firewall non viene trattato in questa guida.

Avviare una sessione SSH da un client Linux

Copiare la propria chiave privata, nel proprio profilo:

sudo cp /media/USBdrive/id_rsa ~/.ssh/

e modificare i permessi sulla chiave appena copiata in modo da renderla usabile solo all'utente:

sudo chmod 600 ~/.ssh/id_rsa

Avviare la sessione SSH:

ssh -p 22 nome_utente@IP_del_server 

Se tutto è stato impostato a dovere vi dovrebbe comparire il prompt del vostro nome_utente sul server a cui vi siete connessi.

Nota 1: è utilizzata la porta di default n. 22. Cambiarla nel caso nel file di configurazione del demone SSH del server sia diversa.

Avviare una sessione SSH da un client Windows

Per connettersi alla macchina remota da un computer con SO Windows è necessario procurarsi gli opportuni programmi, dato che windows non è dotato di alcun client SSH:

Si consiglia un semplice e portatile programmino denominato Putty:

Il programma può essere salvato anche direttamente nella chiavetta USB o nel supporto utilizzato per memorizzare la chiave privata

Putty: ssh-client che rende usabile ssh su macchine Windows.

Puttygen: software necessario per trasformare la nostra chiave id_rsa nel formato usato da Putty (.ppk): scaricate anche questo!

Importare la chiave privata in Putty

Prima di tutto è necessario generare una chiave privata (vengono generate entrambe le chiavi, ma a noi serve solo la privata; la pubblica non ci serve) nel formato utilizzabile da putty.

Apriamo il programma puttygen.exe ed eseguiamo le seguenti operazioni:

  • andare nel menù Conversions | Import Key;
  • scegliere la propria chiave privata (generata da SSH) ed inserire la propria password;
  • aggiornare la key fingerprint;
  • impostare la password: è possibile lasciare la password di default utilizzata o non impostare alcuna passoword.
  • salvare le chiavi usando Save public key e Save private key;

E' possibile in questa fase decidere anche di non impostare una password alla chiave privata:

PRO:

  • è comodo: per avviare la sessione SSH non verranno chieste password: è sufficiente la chiave privata.

CONTRO:

  • è rischioso: qualora venisse persa la chiavetta USB o vi venisse rubata la chiave privata, non ci sono ostacoli ad avviare una sessione SSH perfettamente funzionante.

Nota 1: è sempre possibile partendo dalla propria chiave privata ricostruire la propria chiave pubblica, ma non il contrario.

Linkografia

http://wiki.ubuntu-it.org/InternetRete/ConfigurazioneRete/Vnc/CifraturaSsh



--odeeno 23:24, 12 nov 2008 (CET)