SSH in parole semplici: connettersi ad un server in modo sicuro

SSH in parole semplici: connettersi ad un server in modo sicuro

Scenario generale: cos’è SSH?

Lo scopo generale di SSH è quello di inviare comandi in remoto da un sistema all’altro, sfruttando la rete (ad esempio internet) come mezzo: una volta si poteva fare mediante telnet, strumento che ad oggi viene poco utilizzato. Attualmente, infatti, nei sistemi moderni questo sistema è stato soppiantato da SSH (Secure SHell, ovvero shell sicura), e non è altro che un protocollo che permette di stabilire una sessione remota cifrata tramite interfaccia a riga di comando con un host remoto.

Non ci sono dubbi, quindi, che per gestire questo enorme numero di funzionalità da remoto sia necessario ricorrere ad uno strumento di altrettanto livello come la shell SSH: detta altresì shell Unix, si tratta di un interprete a linea di comando che accomuna sia le distribuzioni Linux (RedHat, Ubuntu e così via) che i sistemi operativi OS-based (Macintosh). L’utente, in sostanza, agisce sulla macchina mediante l’utilizzo di un particolare comando (ssh) che permette di inviare le istruzioni via rete e di eseguirle come se fossimo in locale, ovviamente previo inserimento di username e password (che il provider ci avrà fornito al momento dell’acquisto). La caratteristica fondante di SSH, inoltre, è che permette di accedere al sistema operativo in modalità protetta sia a livello di connessione (criptata) che a livello di inserimento obbligatorio di un’utenza autorizzata per farlo, in modo da evitare attacchi di sniffing o intercettazione di dati dall’esterno (vedi figura, dove mostrano un client UNIX che accede via TCP ad un server dello stesso tipo inviando vari comandi, mentre SSH fa da “involucro” al canale di comunicazione).

Cosa fa SSH?

Tramite esso, nel nostro ambito il client ha la possibilità di accedere ai servizi dell’hosting, ammesso che abbia almeno un VPS o un server dedicato, e programmarlo a seconda delle sue specifiche necessità. Si tratta della “croce e delizia” di numerosi sistemisti e programmatori, poichè da un lato permette di configurare il nostro server a piacere (installando moduli, offrendo servizi ad hoc), dall’altro pone enormi problemi lato sicurezza, se mal configurato porta ad un sito estremamente instabile e soggetto a rischi di sicurezza davvero notevoli. Su questo sito trovate numerosi esempi di uso di SSH nella pratica, in modo da farvi un’idea più precisa.

Come funziona SSH?

L’accesso alle risorse SSH è di norma regolamentato da:
  1. login, quindi classici username e password;
  2. coppia di chiavi crittografiche, per garantire autenticità e sicurezza alla connessione;
  3. eventualmente, un mix delle precedenti soluzioni.

In genere per stabilire una connessione SSH è necessario:

  1. creare la coppia di chiavi pubblica/privata mediante ssh-keygen;
  2. salvarla localmente, ed eventualmente proteggerla mediante passphrase;
  3. attendere la generazione del key fingerprint;
  4. prendere nota dei file in cui sono state salvate la chiave pubblica (id_rsa.pub) e quella privata id_rsa); le cartelle cambiano a seconda che usiate Linux o Mac;
  5. copiare la chiave pubblica sul server a cui desideriamo connetterci (ssh-copy-id oppure ssh);
  6. fare login sul server inserendo la passphrase impostata in precedenza;
  7. disabilitare la password di root sul server, preferibilmente, e ricaricare le impostazioni usando reload ssh.

Una connessione SSH può essere utile per abilitare determinati servizi a basso livello, per accedere a funzionalità che diversamente non sarebbero disponibili, per aggiornare il sistema operativo in remoto in caso di VPS e così via.

Quali hosting commerciali offrono SSH

Ad oggi, in realtà, un po’ tutti; in generale quelli che lo offrono sicuramente sono gli hosting VPS.

L’hosting di tipo VPS è una macchina virtuale che viene venduta come servizio di hosting: quello che la differenzia dagli ordinari pacchetti condivisi è la possibilità per il cliente di accedere da remoto alla macchina (solitamente da shell SSH) al fine di configurare nel minimo dettaglio la stessa. L’utilizzo della shell è ciò che in definitiva viene sottovalutato (o del tutto ignorato) da molti utenti, ed è quello che finisce per scoraggiare dall’acquisto molti altri di essi.

Solitamente i servizi VPS o Virtual Private Server sono caratterizzati dalle seguenti caratteristiche:

  1. IP dedicato pubblico, nella maggioranza dei casi
  2. Accesso diretto alle risorse: CPU, memoria RAM, spazio web, banda mensile a consumo.
  3. Ridondanza di rete per garantire il massimo della responsività della macchina (questa feature può cambiare sensibilmente di pacchetto in pacchetto ed in base alle differenze tra hoster)
  4. Attivazione entro una giornata lavorativa, normalmente
  5. Possibilità di effettuare l’upgrade ed il downgrade da un’offerta ad un’altra, in qualsiasi momento e a seconda delle necessità del momento (è questa la caratteristica che molti chiamano “scalabilità” delle VPS)
  6. Sistema operativo a scelta del cliente: Windows o – molto più spesso – varie distro di Linux (in diverse versioni)
  7. Autonomia assoluta del cliente che, mediante interfaccia web di solito, può effettuare il reboot (riavvio), l’avvio, lo stop del server o l’installazione del sistema operativo da zero
  8. Accesso alla shell come utente root (nota: agendo su una VPS, a meno che non sia managed o gestita da un sistemista pagato a parte, è sotto la completa responsabilità dell’utente anche la messa in sicurezza del sistema, anche solo se utilizziamo un server PHP/MySQL come spiegato in questo mio articolo)
  9. Pagamenti mensili che si possono usualmente disdire senza impegno in qualsiasi momento (a partire dal mese successivo)
  10. Supporto 24 / 7 / 365, giusto perchè certi smanettoni ed appassionati di marketing non dormono mai ed è giusto che vengano supportati :-)

Ci sono molte guide che spiegano quale siano le migliori strategie per agire sulla shell, a mio avviso è un qualcosa di veramente poco pratico se non avete mai fatto nulla via terminale sul vostro PC Linux/Unix, ci vuole un minimo di esperienza per farlo per quanto non sia neanche troppo difficile da imparare.

Esistono molti tutorial specialistici in giro per la rete, quasi sempre in inglese ma di ottimo livello, per quanto esistano alcune piccole differenze di sintassi che a volte possono causare problemi. Pensare di fare uso di una VPS unmanaged senza conoscere la shell è secondo me spesso impraticabile, e lo scrivo perchè ho visto più volte cosa comporta: non è comune proteggersi da attacchi informatici DoS come di altra natura, ed il rischio è quello di vedersi dismettere il servizio (non basta l’assunto “all’italiana” per cui “se pago, esigo di avere un servizio”, perchè la natura dei servizi di hosting impone – specie nei casi di siti professionali – che la conoscenza informatica del cliente sia sempre quantomeno di base per poterne fare uso al meglio).

Ti piace questo articolo?

0 voti

Su Trovalost.it puntiamo sulla qualità dei contenuti da quando siamo nati: la tua sincera valutazione può aiutarci a migliorare ogni giorno.