Gli accessi SSH senza password sono più sicuri? [duplicare]

67

Ho avuto una lunga discussione con i miei colleghi sia che l'autenticazione SSH basata su chiave (in particolare per OpenSSH) sia più sicura dell'autenticazione tramite password. I miei colleghi si connettono sempre ai server con password, mentre preferisco accedere a un sistema senza dover inserire una password ogni volta.

Temono che non sia sicuro connettersi senza password. Cosa dovrei dire loro? Per me, le password sono cattive perché potrebbero essere brute-forzate o catturate con un keylogger.

Uso lo strumento ssh-copy-id per copiare la mia chiave pubblica sul server. Quindi mi connetto semplicemente con ssh servername . Infatti, devo inserire la password per la mia chiave privata una volta ogni volta che si avvia il sistema. Se la mia workstation viene eseguita per 3 giorni, non devo mai inserire di nuovo la password, che a loro avviso non è sicura. È vero? So che le chiavi sono migliori, ma non so come spiegarle a loro.

    
posta unthought 19.12.2011 - 22:33
fonte

8 risposte

53

Il login basato su chiave è considerato molto più sicuro degli accessi basati su password quando si guarda dal punto di vista di un tentativo di forza bruta di accedere a un sistema di terze parti: le possibilità di craccare una chiave sono effettivamente pari a zero, mentre le cattive password sono tutte troppo comune

Dal punto di vista di un sistema client compromesso (la tua workstation), non ci sarà alcuna differenza perché se gli hacker possono ottenere la tua chiave privata e / o dirottare una sessione, potrebbero anche installare una specie di key logger, rendendo inutile il vantaggio percepito delle password.

    
risposta data 19.12.2011 - 22:49
fonte
25

È sicuro come il tuo computer. La chiave è seduta, non crittografata, nella RAM; un utente malintenzionato con accesso fisico alla tua macchina o accesso root remoto potrebbe ottenerlo.

Pensaci negli stessi termini come se i tuoi colleghi usassero un programma sicuro per la password e lo lasciasse sullo schermo con il database disponibile senza l'immissione della password; se blocchi la workstation quando ti allontani e tieni al sicuro da attività remote ostili, allora è ragionevolmente sicuro, ma un attacco RAM congelato potrebbe comunque ottenere la chiave in teoria.

Ma qualcuno in quelle posizioni potrebbe facilmente installare anche un keylogger, come hai sottolineato. Finché si presta attenzione alla sicurezza della workstation, non la chiamerei meno sicura delle password; ma i veri vantaggi degli accessi basati su chiavi sono in realtà una protezione contro, ad esempio, attacchi di password a forza bruta contro il server (poiché le chiavi sono quasi impossibili da applicare alla forza bruta).

    
risposta data 19.12.2011 - 22:49
fonte
12

In realtà i tuoi colleghi sono corretti. Pensa a questo .. Le tue postazioni di lavoro si incrinano, è in corso da un paio di giorni e ora gli hacker sfruttano l'intera rete perché non usi una passphrase ssh.

Detto questo, le password condivise non sono mai buone e una delle principali debolezze del sistema. Presumo che tu stia parlando dell'accesso root.

Il punto che sto facendo è che entrambi hanno degli svantaggi e dove la sicurezza deve essere posizionata.

Per tutti i server che gestisco, utilizzo una chiave SSH passphrase. Questo mi dà il meglio di entrambi i mondi. Una password che conosco e che non usa una password condivisa per altri utenti.

(e sì ho visto dove una chiave ssh passphraseless è stata usata per compromettere e l'intera rete.

    
risposta data 19.12.2011 - 22:41
fonte
9

Sei sicuro solo quanto il tuo anello più debole. Se i tuoi server remoti consentono sia l'autenticazione basata su password sia quella basata su chiave, sei meno sicuro rispetto a consentire solo uno.

Le tue ulteriori vulnerabilità per un sistema basato su chiave su Password Authentication (PA) sono:

  1. Un utente malintenzionato ottiene una copia della chiave privata protetta da passphrase dicendo di avere accesso fisico a un disco non crittografato su qualsiasi sistema (ad esempio, l'avvio in modalità utente singolo), quindi esegue un attacco di forza bruta offline basato su GPU sulla tua chiave e poi ottiene l'accesso a tutti i tuoi sistemi se la tua passphrase è adeguatamente debole (ad esempio, 4 parole diceware).

  2. Si utilizza qualcosa come ssh-agent che mantiene la passphrase o la chiave privata in memoria per un uso successivo e un hacker è in grado di rimuoverlo dal sistema in qualche modo (ad esempio, un altro utente root era loggato mentre si password in memoria).

  3. La tua chiave era molto meno sicura di quanto pensavi. Ad esempio, la debolezza della chiave OpenSSH; dove l'unica casualità proviene dall'id di processo così sono state generate solo 65536 chiavi. Mentre questi tipi di problemi si spera vengano notati e rattoppato rapidamente, come utente finale è impossibile dire che non ci sono grossi difetti nel generatore di numeri casuali usato per fare le chiavi.

La tua sicurezza extra dall'uso dell'autenticazione basata su chiave:

  1. Gli attacchi di forza bruta non sono fattibili per tutta la vita dell'universo, senza rubare la tua chiave privata (e se era protetta da passphrase, quindi rompere la passphrase).
  2. Gli attacchi MITM non funzioneranno (un host remoto malintenzionato non può capire la chiave privata / passphrase); sebbene ssh avvisi già agli attacchi MITM per avvisare gli amministratori utilizzando le chiavi host e i file known_hosts .

In pratica entrambi sono altrettanto sicuri. Chiunque possa rubare chiavi private ssh dalla RAM, può installare un keylogger per ottenere password / passphrase / chiavi private.

Personalmente, mi piace che la tua soluzione come passphrase sia più comoda (memorizzata nella RAM, sul computer di un utente che si blocca dopo 5 minuti); anche se ho ancora messo la mia chiave privata protetta da passphrase su macchine locali dove sono l'unico utente.

    
risposta data 20.12.2011 - 07:10
fonte
6

Una delle ragioni per cui credo che l'autenticazione basata su chiave abbia un leggero vantaggio in termini di sicurezza è che ci sono volte in cui ho visto entrambi gli utenti, e anche io a volte ho inserito la mia password in un campo username invece che nella password finestra di dialogo (a seconda del client ssh). Oppure premi il tasto invio troppo velocemente e il client ssh si chiude, e la mia password è entrata nella cronologia del mio terminale.

Se non si presta attenzione ogni volta che si immette la password, è possibile che la password venga aggiunta in chiaro a diversi file di registro, potenzialmente alla cronologia della shell o persino a una specie di cavallo di Troia. Nel caso di una chiave senza password o di una chiave che carichi con un agente SSH all'inizio della sessione, non dovresti mai digitare nuovamente la tua password, quindi è improbabile che tu inserisca le tue credenziali in un posto sbagliato e rivelino la tua password per qualcuno o qualcosa che non intendevi.

    
risposta data 20.12.2011 - 00:18
fonte
5

Beh, in un certo senso è 6's. Il primo rischio immediato per la sicurezza di un accesso basato su password sarebbe un utente non autorizzato che ottiene (con qualsiasi mezzo) la password per il server. Allo stesso modo, un accesso basato su chiave ha il rischio per la sicurezza di alcuni utenti non autorizzati che ottengono l'accesso al tuo computer. Se si utilizza una password complessa sul server, si corre il rischio che la password - gli utenti debbano scriverla da qualche parte per ricordarla. Con gli utenti chiave, corri il rischio che si allontanino dalla scrivania con il computer sbloccato.

Molto dipende dal rapporto rischio-usabilità. Ovviamente potresti richiedere password sulle chiavi, consentire solo determinati indirizzi IP per ogni chiave e qualsiasi altro numero di misure di sicurezza a tenuta, ma ciò renderà le persone insoddisfatte.

Ma per rispondere alla tua domanda: se stiamo parlando di una configurazione Vanilla di OpenSSH, gli accessi basati su password e basati su chiavi hanno entrambi i loro punti deboli di sicurezza diversi.

    
risposta data 19.12.2011 - 22:45
fonte
5

Spengo sempre il login della password su ssh per root sui miei sistemi. In questo modo, non c'è alcun modo in cui un utente malintenzionato possa provare a forzare la password.

Dovresti comunque diffidare della sicurezza sui sistemi client. Potresti voler fare in modo che l'agente ssh dimentichi le credenziali della chiave quando lo schermo di blocco si accende. Ciò contribuirebbe a impedire che gli attacchi sul computer client compromettano la tua chiave.

    
risposta data 19.12.2011 - 22:48
fonte
3

Alcune risposte decenti qui, ma tutte sembrano mancare il bersaglio a mio avviso.

L'uso di una coppia di chiavi per l'autenticazione sta sostituendo il "qualcosa che conosci" di un sistema basato su password con un "qualcosa che hai" di un sistema di chiavi o token. Torna a questo in un secondo.

Le chiavi sono molto più complesse. Penso che la maggior parte delle implementazioni SSH siano predefinite alla chiave RSA 2048. Confrontalo con una password di 8 caratteri. Anche se hash in 256 bit, le password, perché non hanno la casualità delle chiavi, possono essere forzate brute. Schneier ha alcune grandi osservazioni su questo; anche le cosiddette password "buone" tendono ad essere solo una combinazione di dati crackabili (una parola con un numero e forse alcune semplici sostituzioni); noi umani siamo troppo prevedibili.

Per quanto riguarda una chiave che è sicura solo quanto la password per accedere, questo non è del tutto corretto. Con il wrapping di una chiave con un'altra password, si migliora notevolmente la sicurezza perché si utilizza essenzialmente l'autenticazione a due fattori; per accedere a qualcosa che hai (la chiave) devi usare qualcosa che conosci (una password). Sì, l'uso della tua password di accesso per racchiudere una chiave comprometterebbe questo.

Quindi al poster originale, direi che sia tu che i tuoi colleghi avete torto. Potresti essere meno di quello che sono, ma la risposta giusta è che dovresti usare sia una chiave che una password.

    
risposta data 19.09.2016 - 16:45
fonte

Leggi altre domande sui tag