SSH: differenze tra le versioni
Wtf (discussione | contributi) Nessun oggetto della modifica |
S3v (discussione | contributi) mNessun oggetto della modifica |
||
(13 versioni intermedie di 3 utenti non mostrate) | |||
Riga 1: | Riga 1: | ||
== Descrizione == | == Descrizione == | ||
'''SSH''' ('''S'''ecure '''SH'''ell, shell sicura) è un ''protocollo'' che permette di stabilire una connessione sicura tra due computer. SSH garantisce la segretezza e l'integrità dei dati scambiati tra due computer cifrando l'intera comunicazione, compresa la fase di autenticazione. SSH | '''SSH''' ('''S'''ecure '''SH'''ell, shell sicura) è un ''protocollo'' che permette di stabilire una connessione sicura tra due computer. SSH garantisce la segretezza e l'integrità dei dati scambiati tra due computer cifrando l'intera comunicazione, compresa la fase di autenticazione. | ||
Le connessioni SSH vengono instaurate tipicamente sulla ''porta 22'' e, di norma, il server risponde aprendo una [[shell]] di comando, tuttavia tramite il meccanismo del [http://en.wikipedia.org/wiki/Tunneling_protocol tunneling] è possibile instradare attraverso tale canale criptato anche il traffico di altre porte e persino le connessioni generate da applicazioni grafiche che risiedono sul computer remoto (ad es. una sessione vnc).<br/> | |||
Questa importante caratteristica consente quindi di sottoporre a comunicazione criptata protocolli che in origine non prevedono questa possibilità, inoltre utilizzando una sola porta per la trasmissione di pacchetti che invece ne userebbero molte altre, è possibile collegarsi ad un [[host]] Linux posto dietro ad un firewall senza bisogno di modificarne le impostazioni. | |||
== Implementazioni == | == Implementazioni == | ||
Riga 8: | Riga 11: | ||
Nella suite sono inclusi diversi client, tra cui il più famoso è <code>ssh</code> che permette di aprire appunto una shell remota connettendosi al server. Altri client sono <code>scp</code> che emula il comportamento di <code>cp</code> e <code>sftp</code> che ha un'interfaccia molto simile a <code>ftp</code> (simula un server FTP). | Nella suite sono inclusi diversi client, tra cui il più famoso è <code>ssh</code> che permette di aprire appunto una shell remota connettendosi al server. Altri client sono <code>scp</code> che emula il comportamento di <code>cp</code> e <code>sftp</code> che ha un'interfaccia molto simile a <code>ftp</code> (simula un server FTP). | ||
Il client <code>ssh</code> ha un'interfaccia a linea di comando simile a quella di | Il client <code>ssh</code> ha un'interfaccia a linea di comando simile a quella di [[telnet]] e <code>rlogin</code>, ma, a differenza di questi ultimi, l'intera comunicazione (sia l'autenticazione che la sessione di lavoro) avviene in maniera cifrata. Per questo motivo, SSH è diventato uno standard di fatto per l'amministrazione remota di sistemi *nix e di molti dispositivi di rete, rendendo obsoleto il protocollo telnet, giudicato troppo pericoloso per la sua mancanza di protezione contro le intercettazioni. | ||
Altro client interessante, venuto recentemente alla ribalta è '''<code>[[SSHFS: montare una risorsa remota sfruttando FUSE ed SSH|SSHFS]]</code>''' che permette di montare directory remote ed usarle in tutto e per tutto come directory locali (grazie a [http://fuse.sourceforge.net/ FUSE]): tutti i programmi possono accedere alla cartella remota in maniera trasparente, ignorando del tutto che essa si trovi su un altro computer! | Altro client interessante, venuto recentemente alla ribalta è '''<code>[[SSHFS: montare una risorsa remota sfruttando FUSE ed SSH|SSHFS]]</code>''' che permette di montare directory remote ed usarle in tutto e per tutto come directory locali (grazie a [http://fuse.sourceforge.net/ FUSE]): tutti i programmi possono accedere alla cartella remota in maniera trasparente, ignorando del tutto che essa si trovi su un altro computer! | ||
Riga 16: | Riga 19: | ||
== Autenticazione e crittografia della connessione == | == Autenticazione e crittografia della connessione == | ||
SSH implementa diversi metodi di autenticazione, dal comune metodo della coppia di credenziali utenza/password al più sicuro e sofisticato metodo della coppia di chiavi pubblica/privata. Tralasciando il metodo utenza/password assai noto, risulta più interessante spendere due parole sul secondo. | |||
una '''connessione SSH''' è una connessione cifrata che utilizza gli algoritmi asimmetrici RSA o DSA soltanto per verificare se una chiave pubblica, memorizzata sul server, derivi da una chiave privata salvata sul client (in modo da garantire la reciproca autenticità del server e del client) in modo da essere utilizzata, per l'intera sessione, per la cifratura simmetrica con algoritmi come AES o 3DES. | La [http://it.wikipedia.org/wiki/Crittografia_asimmetrica criptografia asimmetrica] detta anche '''crittografia a coppia di chiavi''' o, più semplicemente, '''a chiave pubblica/privata''' (o, semplicemente, '''a chiave pubblica''') consiste nella generazione di una coppia di chiavi (chiamate [http://it.wikipedia.org/wiki/Chiave_privata chiave privata] e [http://it.wikipedia.org/wiki/Chiave_pubblica chiave pubblica]): la '''chiave pubblica''' cripta la comunicazione, mentre la '''chiave privata''' è usata per decriptarla. Ogni coppia di chiavi viene generata usando degli algoritmi asimmetrici, per esempio [http://it.wikipedia.org/wiki/RSA RSA] e [https://en.wikipedia.org/wiki/EdDSA EdDSA (ed25519)]: le connessioni che usano tali coppie di chiavi sono dette '''connessioni SSH'''. Tali algoritmi, però, servono soltanto per instaurare una connessione criptata fra il client SSH e il server SSH in quanto, per il trasferimento vero e proprio dei dati, si usano degli algoritmi simmetrici, come AES o 3DES, che sono molto più efficienti per questo scopo ovvero per cifrare la comunicazione. | ||
Riassumendo una '''connessione SSH''' è una connessione cifrata che utilizza gli algoritmi asimmetrici RSA o DSA soltanto per verificare se una chiave pubblica, memorizzata sul server, derivi da una chiave privata salvata sul client (in modo da garantire la reciproca autenticità del server e del client) in modo da essere utilizzata, per l'intera sessione, per la [[Introduzione alla crittografia|cifratura simmetrica]] con algoritmi come AES o 3DES. | |||
== Voci correlate sul wiki == | |||
* [[OpenSSH]] | * [[OpenSSH]] | ||
** [[OpenSSH: file di configurazione | File di configurazione]] | |||
** [[OpenSSH: Windows | Connettere windows e linux]] | |||
** [[SSHFS: montare una risorsa remota sfruttando FUSE ed SSH]] | |||
* [[Fail2ban | Ostacolare attacchi ''brute-force'' al server SSH con fail2ban]] | |||
== Approfondimenti == | |||
* [http://it.wikipedia.org/wiki/Ssh Ssh] su Wikipedia (it) | * [http://it.wikipedia.org/wiki/Ssh Ssh] su Wikipedia (it) | ||
* [http://en.wikipedia.org/wiki/Secure_Shell Secure Shell] su Wikipedia (en) | * [http://en.wikipedia.org/wiki/Secure_Shell Secure Shell] su Wikipedia (en) |
Versione attuale delle 11:22, 27 nov 2015
Descrizione
SSH (Secure SHell, shell sicura) è un protocollo che permette di stabilire una connessione sicura tra due computer. SSH garantisce la segretezza e l'integrità dei dati scambiati tra due computer cifrando l'intera comunicazione, compresa la fase di autenticazione.
Le connessioni SSH vengono instaurate tipicamente sulla porta 22 e, di norma, il server risponde aprendo una shell di comando, tuttavia tramite il meccanismo del tunneling è possibile instradare attraverso tale canale criptato anche il traffico di altre porte e persino le connessioni generate da applicazioni grafiche che risiedono sul computer remoto (ad es. una sessione vnc).
Questa importante caratteristica consente quindi di sottoporre a comunicazione criptata protocolli che in origine non prevedono questa possibilità, inoltre utilizzando una sola porta per la trasmissione di pacchetti che invece ne userebbero molte altre, è possibile collegarsi ad un host Linux posto dietro ad un firewall senza bisogno di modificarne le impostazioni.
Implementazioni
Gli strumenti più diffusi per utilizzare il protocollo SSH sono la suite OpenSSH che è disponibile per OpenBSD, Linux, vari UNIX, Mac OS X, e MS Windows tramite Cygwin.
Nella suite sono inclusi diversi client, tra cui il più famoso è ssh
che permette di aprire appunto una shell remota connettendosi al server. Altri client sono scp
che emula il comportamento di cp
e sftp
che ha un'interfaccia molto simile a ftp
(simula un server FTP).
Il client ssh
ha un'interfaccia a linea di comando simile a quella di telnet e rlogin
, ma, a differenza di questi ultimi, l'intera comunicazione (sia l'autenticazione che la sessione di lavoro) avviene in maniera cifrata. Per questo motivo, SSH è diventato uno standard di fatto per l'amministrazione remota di sistemi *nix e di molti dispositivi di rete, rendendo obsoleto il protocollo telnet, giudicato troppo pericoloso per la sua mancanza di protezione contro le intercettazioni.
Altro client interessante, venuto recentemente alla ribalta è SSHFS
che permette di montare directory remote ed usarle in tutto e per tutto come directory locali (grazie a FUSE): tutti i programmi possono accedere alla cartella remota in maniera trasparente, ignorando del tutto che essa si trovi su un altro computer!
Su sistemi Debian è possibile installare separatamente un server SSH (sulla macchina a cui si vuole accedere) o un client SSH (sulla macchina da cui si vuole accedere a un server SSH).
Autenticazione e crittografia della connessione
SSH implementa diversi metodi di autenticazione, dal comune metodo della coppia di credenziali utenza/password al più sicuro e sofisticato metodo della coppia di chiavi pubblica/privata. Tralasciando il metodo utenza/password assai noto, risulta più interessante spendere due parole sul secondo.
La criptografia asimmetrica detta anche crittografia a coppia di chiavi o, più semplicemente, a chiave pubblica/privata (o, semplicemente, a chiave pubblica) consiste nella generazione di una coppia di chiavi (chiamate chiave privata e chiave pubblica): la chiave pubblica cripta la comunicazione, mentre la chiave privata è usata per decriptarla. Ogni coppia di chiavi viene generata usando degli algoritmi asimmetrici, per esempio RSA e EdDSA (ed25519): le connessioni che usano tali coppie di chiavi sono dette connessioni SSH. Tali algoritmi, però, servono soltanto per instaurare una connessione criptata fra il client SSH e il server SSH in quanto, per il trasferimento vero e proprio dei dati, si usano degli algoritmi simmetrici, come AES o 3DES, che sono molto più efficienti per questo scopo ovvero per cifrare la comunicazione.
Riassumendo una connessione SSH è una connessione cifrata che utilizza gli algoritmi asimmetrici RSA o DSA soltanto per verificare se una chiave pubblica, memorizzata sul server, derivi da una chiave privata salvata sul client (in modo da garantire la reciproca autenticità del server e del client) in modo da essere utilizzata, per l'intera sessione, per la cifratura simmetrica con algoritmi come AES o 3DES.
Voci correlate sul wiki
Approfondimenti
- Ssh su Wikipedia (it)
- Secure Shell su Wikipedia (en)
- Public-key cryptography su Wikipedia (en): spiega, molto meglio del corrispondente articolo italiano, in cosa consiste la crittografia a chiave pubblica.
- SSH encryption and connection process, pagina che spiega le basi di chiavi pubblica/privata e di come funziona il processo autenticativo di SSH.