Lo scambio di chiavi SSH è più sicuro dell'autenticazione con password?


9

Gli utenti remoti si connettono a diversi servizi presso la nostra sede principale su Internet tramite SSH. La password SSH è sincronizzata con il loro account A / D LAN.

Fare in modo che gli utenti portino a casa una copia di una chiave SSH usando qualcosa come un CD o un pezzo di carta sarebbe più sicuro che avere utenti che digitano la loro password? O dovrei richiedere entrambi?

La mia domanda potrebbe probabilmente essere riformulata come segue: esiste qualche vulnerabilità nel protocollo di autenticazione della password di SSH?

È questo messaggio che mi fa dubitare:

The authenticity of host 'xxx.xxx.xxx.xxx (xxx.xxx.xxx.xxx)' can't be established.
RSA key fingerprint is xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:.
Are you sure you want to continue connecting (yes/no)?

Risposte:


22

Il messaggio che vedi è un problema separato. Ti sta chiedendo di confermare che l'host a cui ti stai connettendo è davvero quello che ti aspetti che sia. Dal server, è possibile ottenere l'impronta digitale eseguendo ssh-keygen -l -f /etc/ssh/ssh_host_rsa_key.pub. Quindi, quando ti connetti in remoto per la prima volta, puoi assicurarti che le impronte digitali corrispondano.

Le chiavi host, viste in azione qui, risolvono il problema degli attacchi man in the middle : forse il DNS è stato sovvertito e ti stai collegando alla macchina di un concorrente anziché alla tua. Quella macchina raccoglie le tue credenziali e inoltra in modo trasparente la tua connessione al server reale, rubando le tue informazioni a tua insaputa. Assicurarsi che le corrispondenze della chiave host impediscano che ciò accada a meno che l'attaccante non abbia effettivamente rubato la chiave pubblica del server.

Rimane comunque un problema: come fai a sapere quale chiave è corretta? Dopo la prima connessione, la chiave pubblica viene archiviata nel ~/.ssh/known_hostsfile, quindi le connessioni successive vanno bene. Ma la prima volta, o hai bisogno di un modo fuori banda per ottenere l'impronta digitale, oppure segui il modello "TOFU": la fiducia al primo utilizzo.

Ma nulla di tutto ciò ha a che fare con password e chiavi, tranne che sia le chiavi che le password potrebbero essere rubate tramite questo attacco - in un certo senso, è la vulnerabilità che stai chiedendo.

Esistono (almeno) tre motivi per cui le password sono peggiori delle chiavi:

  1. Possono essere forzati. Una tipica password di 8 caratteri selezionata dall'utente ha circa 30 bit di ipotesi-entropia. Una coppia di chiavi ssh pubbliche / private è di 1024 bit o superiore. È effettivamente impossibile forzare bruscamente una chiave ssh, ma l'individuazione automatica della password avviene continuamente.
  2. Possono essere stupidi. Gli utenti selezionano regolarmente password orribili, anche con restrizioni in atto, e tendono a utilizzare password più difficili in più punti. Questo ovviamente rende gli attacchi più facili.
  3. Le password possono essere rubate da remoto. Quando si utilizza SSH, la password è crittografata sul cavo, ma è molto comune che il server ssh venga sostituito su sistemi compromessi con uno che registra tutte le password. Con le chiavi, la chiave privata rimane sul sistema locale e non viene mai inviata, quindi non può essere rubata senza compromettere effettivamente la macchina client.

Inoltre, le chiavi ssh offrono comodità se utilizzate con qualcosa del genere ssh-agent: si ottiene l'operazione di connessione senza problemi senza ripetere l'autenticazione ogni volta, pur mantenendo un ragionevole livello di sicurezza.

Non c'è alcun vantaggio significativo nel chiedere entrambi, poiché qualcuno che ha abbastanza accesso per rubare la chiave privata può anche facilmente rubare la password dell'utente. Se hai bisogno di più sicurezza di questo, considera la possibilità di esaminare un sistema di autenticazione a due fattori come RSA SecurID o WiKID .


Bella risposta. Esattamente quello che stavo cercando. Grazie!
firma il

per quanto riguarda il numero 3) Se accedi a un server già compreso ... perché qualcuno dovrebbe desiderare la tua password? L'unica ragione a cui riesco a pensare è se usi la stessa password ovunque.
Sirex,

Sirex: giusto; rubano la tua password e la usano su altri sistemi. Si noti nella domanda che le password sono utilizzate come "LAN A / D". Quindi, rubano la tua password dal server di accesso ssh e quindi hanno accesso anche al server Windows. Inoltre, ora, ogni volta che il sistema è compromesso, è necessario passare all'esercitazione antincendio "ok, tutti cambiano di nuovo la password".
mattdm,

Inoltre, come indicato nel numero 2, gli utenti stanno utilizzando la stessa password ovunque. Sospiro.
mattdm,

giù con fastidiosi utenti! :(
Sirex,

1

quello che stai davvero chiedendo è "è un fattore migliore di un altro", l'argomento è l'autenticazione a più fattori e in realtà ti consigliamo di esaminare l'argomento.

Tipicamente un "fattore" è qualcosa che conosci (password), qualcosa che hai (file ssh o carta magnetica) o qualcosa che sei (impronta digitale).

Uno non è meglio di un altro di per sé, sono gratuiti. Perdere un cd con il file di chiavi è dannoso quanto divulgare la password se è tutto ciò che serve. Per gli ambienti sicuri l'autenticazione a due fattori è comune.


Sì, capisco quello che stai dicendo. In questo caso, tuttavia, sto solo cercando di scoprire se è possibile hackerare l'autenticazione con password usando qualcosa come man in the middle.
firma il

per ssh come esempio specifico, no, poiché anche la sezione di inserimento password è crittografata e le chiavi cambiano durante la sessione (credo 30 secondi). Questo non è un riflesso di password vs passkey però
Sirex
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.