Autenticazione a SSH
L'autenticazione richiede due forme primarie, nome utente e password e autenticazione basata su chiave.
Esiste anche un controllo di autenticità eseguito quando il client si collega al daemon SSH confermando che la chiave pubblica attendibile non è cambiata confrontando l'impronta digitale presente nel database attendibile known_hosts
e ciò che il server presenta. Se queste corrispondenze, la connessione continua, il server sfida per l'autenticazione e, una volta convalidato, viene stabilita la sessione completa.
Che cos'è l'autenticazione reciproca?
Prima di parlare di SSH, parliamo dell'autenticazione reciproca in un'implementazione tipica. Un'autenticazione reciproca TLS presenta i certificati sia al server che al client, confermando l'identità. Questo è comunemente usato nelle applicazioni B2B, come gli endpoint API. Ciò fornisce i vantaggi di PKI (crittografia in transito, controllo dell'integrità e revoca tramite responder CRL e OCSP) fornendo al contempo l'autenticazione dell'identità.
Che ne pensi di implementarlo in SSH?
Per impostazione predefinita, questo non funzionerà. Il client SSH si connette a un daemon SSH. Ciò richiederebbe che il server abbia le credenziali del client sul client. Confondere? Facciamo un passo indietro.
Utente (tu) - > Chiave SSH - > Server
Questo è un comportamento normale. Vogliamo capovolgerlo e instaurare fiducia nel retro:
Server - > Chiave SSH diversa - > Utente (tu)
Questo è pericoloso . Ci sono alcuni motivi per cui:
-
Il compromesso del server consentirebbe di eseguire il pivoting sulla rete desktop aziendale o sulla rete domestica di un utente. Entrambe le situazioni sarebbero devastanti.
-
Gli ACL nell'azienda non dovrebbero consentire che ciò accada. Ciò semplifica la rotazione e l'estrazione dei dati per un utente malintenzionato.
Conclusione
Questo è possibile, ma raramente fatto ed è pericoloso.