introduzione a ssh
This commit is contained in:
36
networking/035-ssh.md
Normal file
36
networking/035-ssh.md
Normal file
@@ -0,0 +1,36 @@
|
||||
# SSH
|
||||
|
||||
`SSH`, acronimo di *Secure Shell*, è un protocollo di rete dell'application layer che consente l'accesso remoto sicuro a host remoti.
|
||||
|
||||
## Caratteristiche principali
|
||||
|
||||
- SSH *utilizza la crittografia* per proteggere le comunicazioni tra il client e il server
|
||||
- SSH si basa su TCP ed è associato alla well-known port 22
|
||||
- Supporta diversi metodi di autenticazione, tra cui:
|
||||
- Username/password
|
||||
- Chiave pubblica: un metodo più sicuro che utilizza una coppia di chiavi crittografiche (pubblica e privata) per autenticare l'utente senza la necessità di trasmettere una password
|
||||
|
||||
## Architettura SSH
|
||||
|
||||
SSH è un protocollo dell'application layer, ma la sua architettura è strutturata in moduli distinti che operano tra l'Application layer e il Transport layer:
|
||||
|
||||
### Connection Layer Protocol
|
||||
|
||||
Questo modulo gestisce le sessioni e la comunicazione client/server all'interno della connessione SSH. Sfrutta il protocollo SSH per implementare diverse funzionalità, come SFTP (Secure File Transfer Protocol), tunneling SSH ecc.
|
||||
|
||||
### User Authentication Protocol
|
||||
|
||||
Questo modulo si occupa dell'autenticazione degli utenti, implementando diversi metodi:
|
||||
|
||||
- **Username/password**
|
||||
- **Chiave pubblica**: lato client, viene sempre utilizzata la crittografia asimmetrica. Il client genera una coppia di chiavi (pubblica e privata) e memorizza la chiave pubblica nel file `.ssh/authorized_keys` del server. Durante il processo di autenticazione, il server crea un messaggio randomico, cifrato con la chiave pubblica del client, e lo invia a quest'ultimo. Solo il client, utilizzando la sua chiave privata, putrá decifrare il messaggio. Se il messaggio decifrato corrisponde a quello inviato, il server può confermare l'identità del client, a meno che la chiave privata non sia stata compromessa.
|
||||
|
||||
### Transport Layer Protocol
|
||||
|
||||
Questo modulo è specifico di SSH e non deve essere confuso con il Transport layer del modello ISO/OSI. È un insieme di standard e procedure finalizzate a stabilire un canale di comunicazione cifrato. Le sue principali funzionalità includono:
|
||||
|
||||
- **Autenticazione del server**: il server verifica la propria identità mediante crittografia asimmetrica. Genera una coppia di chiavi, fornendo la chiave pubblica ai client che desiderano connettersi. La chiave privata rimane sul server e viene utilizzata per autenticarlo. Durante lo scambio delle chiavi, il server invia un messaggio randomico, firmato con la chiave privata, al client. Il client utilizza la chiave pubblica per decifrare il messaggio, confermando così l'identità del server. Questo processo protegge il client da attacchi man-in-the-middle, anche se non offre una garanzia assoluta, poiché le chiavi potrebbero essere state rigenerate o il server manomesso.
|
||||
- **Scambio dei messaggi**: viene utilizzata la crittografia simmetrica a chiave singola per lo scambio dei messaggi, in quanto meno onerosa dal punto di vista computazionale
|
||||
- **Cifratura**: SSH supporta vari algoritmi di cifratura
|
||||
- **Compressione**: Vengono utilizzati algoritmi di compressione per ottimizzare lo scambio dei dati
|
||||
- **Integrità dei Pacchetti**: SSH implementa meccanismi per garantire che i pacchetti di dati non vengano alterati durante la trasmissione
|
Reference in New Issue
Block a user