GNU/Linux >> Linux Esercitazione >  >> Linux

Come SSH stabilisce una comunicazione sicura

Quando inviamo informazioni/lettere sensibili, vogliamo che siano nascoste al mondo esterno. Quindi, ci siamo assicurati che fosse protetto sigillandolo in una busta e inviandolo a una destinazione utilizzando il servizio postale degli Stati Uniti (USPS). Almeno, questo è il modo in cui inviavamo le informazioni. Non sto nemmeno entrando in una discussione sulla crittografia e sul codice Morse, che utilizzava un livello di segretezza più avanzato.

Ora, poiché noi esseri umani ci siamo evoluti e ci siamo adattati a Internet, ci scambiamo informazioni utilizzando una connessione sicura. In precedenza, utilizzavamo telnet per connetterci a un server remoto utilizzando la porta 23. Il problema era che stavamo inviando le informazioni tramite testo normale, il che significa che chiunque volesse leggere le informazioni poteva annusare la rete e le informazioni erano compromesse (l'equivalente è che potessero aprire la lettera inviata tramite l'USPS e leggerla.)

Questo risultato non è quello che volevamo quando abbiamo inviato il messaggio originale. Ci deve essere un modo sicuro per inviare un messaggio a un server remoto, giusto? Assolutamente, e la soluzione è inviarlo tramite Secure Shell (SSH).

Come SSH invia messaggi crittografati

Quindi, voglio comunicare in modo sicuro utilizzando messaggi crittografati da client a server e viceversa. Lo realizzo con SSH come segue. SSH stabilisce una connessione sicura tra due host tramite la porta 22:Host-1 (il server) e Host (il client). Dopo essersi autenticati a vicenda, hanno abilitato lo scambio sicuro di messaggi.

Tipi di crittografia

SSH utilizza tre diversi tipi di crittografia:

  • Crittografia simmetrica
  • Crittografia asimmetrica
  • Hashing

Spiegherò brevemente questi tipi.

Crittografia simmetrica

Conosciuta anche come crittografia a chiave condivisa, la crittografia simmetrica è solitamente una chiave singola o una coppia di chiavi viene utilizzata sia per la crittografia che per la decrittografia di un messaggio. Questa chiave viene utilizzata per crittografare l'intera sessione di comunicazione tra un client e un server.

Sia il client che il server concordano su un unico metodo e generano una chiave condivisa, che ovviamente non viene mai divulgata a terzi, e quindi viene utilizzata per inviare messaggi di chiave condivisa/segreta. La parte più interessante di questo metodo è che la chiave non viene mai scambiata tra un client e un server. Invece, ogni macchina calcola la chiave condivisa in modo indipendente utilizzando un metodo concordato in precedenza. Anche se un computer di terze parti acquisisce i dati, non è in grado di decrittografarlo perché il metodo utilizzato per crittografare i dati è sconosciuto.

Crittografia asimmetrica

A differenza del metodo precedente, questo metodo utilizza una coppia di chiavi per la crittografia e la decrittografia. Queste sono note come chiavi pubbliche e private. La chiave pubblica, come suggerisce il nome, è ampiamente distribuita. La chiave privata è strettamente correlata alla chiave pubblica in termini di funzionalità, ma non può essere calcolata semplicemente conoscendo la chiave pubblica.

La chiave privata è un fattore importante nell'intera comunicazione poiché la segretezza dipende dal fatto che la chiave privata non viene rivelata a terzi, ed è l'unica chiave in grado di decifrare il messaggio, che è crittografato dalla propria chiave pubblica. Quindi, se qualcuno desidera decifrare e leggere i messaggi, deve possedere la chiave privata.

Proviamo questo metodo usando due sistemi. Inizieremo con la workstation, che ha due coppie di chiavi generate come di seguito:

Quindi avvio la connessione dal server alla workstation:

E quindi, il server memorizza le informazioni della workstation nei suoi known_hosts archiviare come:

Dopo che il server è stato verificato, il server e il client negoziano una chiave di sessione utilizzando l'algoritmo di scambio di chiavi Diffie-Hellman. Questa chiave condivisa viene utilizzata per la crittografia e la decrittografia.

La fase finale è l'autenticazione del client, che viene eseguita utilizzando la coppia di chiavi SSH. Il diagramma seguente mostra come avviene questo processo:

Quando eseguo il comando ssh -v [email protected] , ecco cosa succede:

Conclusione

Lo scopo di questo articolo era di rendere l'utente consapevole di come SSH stabilisce una comunicazione sicura tra due sistemi. Si spera di aver offerto alcune informazioni su questo processo.

[Vuoi saperne di più su SSH? Scarica il cheat sheet SSH avanzato.]


Linux
  1. Come impostare le chiavi SSH

  2. Come eseguire Ssh su un server utilizzando un altro server??

  3. Come configurare le chiavi SSH su Ubuntu 18.04

  4. Come proteggere il servizio SSH con Port Knocking

  5. Come configurare SSH senza password su Linux

Come configurare la chiave SSH su un server Plesk

Come aggiungere la chiave pubblica SSH al server

Come configurare SSH su CentOS e RHEL

Come generare e utilizzare una chiave SSH utilizzando PuTTY

Come eseguire l'SSH sul server tramite Linux

Come proteggere SSH con Fail2Ban