Domanda:
Gli accessi SSH senza password sono più sicuri?
Daniel
2011-12-20 03:33:56 UTC
view on stackexchange narkive permalink

Ho discusso a lungo con i miei colleghi se 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 io 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 forzate o catturate con un keylogger.

Uso lo strumento ssh-copy-id per copiare la mia chiave pubblica sul server . Quindi mi collego semplicemente con ssh servername . In effetti, devo solo inserire la password per la mia chiave privata una volta ogni volta che il mio sistema si avvia. Se la mia workstation funziona per 3 giorni, non devo mai più inserire la password, che dicono non è sicura. È vero? So che le chiavi sono migliori, ma non so come spiegarglielo.

Possibilmente interessante: [gnome-keyring ssh agent timeout] (http://ubuntuforums.org/showthread.php?t=1271580) - fai in modo che il portachiavi "dimentichi" la tua password quando lo screensaver si avvia. Puoi anche fare `ssh-add -t3600` per fare in modo che ssh-agent rilasci la tua chiave dopo un'ora.
Scusa, devo fare l'avvocato del diavolo: se non puoi spiegarlo, non lo sai. Sei sicuro di non rigurgitare solo quello che hai sentito? Forse dovresti permetterti di essere illuminato dalle meraviglie degli accessi senza chiave. Ci sono pro e contro in entrambi gli approcci.
Ti manca un punto: anche se usi le chiavi, il tuo account ha anche una password. E l'accesso tramite password è abilitato per i tuoi colleghi. La password può essere forzata, indipendentemente dal fatto che la si utilizzi o meno.
Questa domanda dovrebbe interessare (quasi un duplicato): http://security.stackexchange.com/q/3887/2435
Se qualcuno provasse a scaricare i tasti dall'agente, non avrebbe bisogno di aspettare che l'utente si allontani dalla tastiera per farlo.
Otto risposte:
SvenW
2011-12-20 03:49:34 UTC
view on stackexchange narkive permalink

L'accesso basato su chiave è considerato molto più sicuro degli accessi basati su password quando si guarda dalla prospettiva di un tentativo di forza bruta di ottenere l'accesso da un sistema di terze parti: le possibilità di violare una chiave sono effettivamente zero, mentre le password sbagliate sono tutte troppo comune.

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

Sebbene se il sistema fosse configurato per consentire sia password che chiavi (come apparentemente gli OP), l'attaccante non sarebbe in grado di forzare anche la sua password?
Sì. Questo è il motivo per cui disabiliterei completamente gli accessi basati su password.
Shane Madden
2011-12-20 03:49:57 UTC
view on stackexchange narkive permalink

È 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.

Pensalo negli stessi termini come se i tuoi colleghi usassero un programma protetto da password e lo lasciassero sullo schermo con il database disponibile senza inserimento di password; se blocchi la tua workstation quando ti allontani e la mantieni al sicuro da attività remote ostili, allora è ragionevolmente sicuro, ma un attacco RAM congelato potrebbe ancora teoricamente ottenere la chiave.

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

Squidly
2011-12-20 03:41:47 UTC
view on stackexchange narkive permalink

In realtà i tuoi colleghi hanno ragione. Pensa a questo ... Le tue postazioni di lavoro si rompono, è attivo da un paio di giorni e ora gli hacker pwnano 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 di accesso root.

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

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

(e sì, ho visto dove una chiave SSH senza passphrase è stata utilizzata per compromettere l'intera rete.

Perché sono stato votato?
Non ti ho votato contro Squidly. Qualcun altro deve averlo.
Votato per compensare: tutte le risposte qui contengono essenzialmente gli stessi punti, quindi non sono sicuro del motivo per cui hai ottenuto il meno. A proposito: benvenuto! Grazie per aver contribuito con la tua esperienza e non stressarti per i voti negativi casuali di tanto in tanto: i voti positivi li superano di gran lunga.
Ok quindi ogni volta che ti connetti a un server, devi fornire la ** tua ** passphrase, non la password dal sistema remoto? Anche questo mi renderebbe felice. Non mi piacciono gli elenchi di password o il ricordo di oltre 30 password. Come potrei farlo? La mia chiave ha una passphrase, ma viene richiesta solo una volta per sessione "Desktop"
Dipende dal sistema in uso. Personalmente non ho installato niente come il portachiavi di gnome. Inoltre sono d'accordo I HATE elenchi di password. Non ricordo 1/8 delle password che ho là fuori. @ Shane Grazie :)
@Daniel Un qualche tipo di software agente SSH lo tiene in memoria; puoi farlo invece per sessione semplicemente usando `ssh -i / path / to / key`.
@ShaneMadden Non mi viene richiesta una password se uso l'opzione `-i` ... Metto la mia chiave pubblica nel file` authorized_keys` del server
@Daniel Lo indicherai alla tua chiave privata; probabilmente è ancora in memoria dal software dell'agente chiave. Come accennato da Squidly, hai qualcosa sulla falsariga di gnome-portachiavi che gestisce la tua chiave?
@ShaneMadden Hmm ok, se uccido `ssh-agent`, chiederà la password. Ma ancora solo una volta. Immagino che ssh-agent abbia alcune opzioni di configurazione. Sarebbe buono salvarlo in memoria solo per un po 'di tempo, come 5 minuti circa
È improbabile che la workstation sia 1) sempre attiva e 2) accessibile da Internet in generale. Ciò mitiga * molto * i rischi di cracking, a differenza di un server con connessione alla rete, dove il flusso di tentativi di cracking automatizzati è letteralmente infinito.
Cosa succede quando la tua workstation viene violata e la tua password viene inserita nel keylog? In che modo l'utilizzo di una password fornisce maggiore sicurezza rispetto all'utilizzo di una chiave?
dr jimbob
2011-12-20 12:11:00 UTC
view on stackexchange narkive permalink

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

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

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

  2. Usi qualcosa come ssh-agent che mantiene la tua passphrase o chiave privata in memoria per un utilizzo successivo e un utente malintenzionato è in grado di rimuoverla dal tuo sistema in qualche modo (ad esempio, un'altra root l'utente è stato connesso mentre avevi la password in memoria).

  3. La tua chiave era molto meno sicura di quanto pensavi. Ad esempio, la debolezza chiave di OpenSSH; dove l'unica casualità proveniva dall ' id di processo, quindi sono state generate solo 65536 chiavi. Anche se si spera che questi tipi di problemi vengano notati e risolti rapidamente, come utente finale è impossibile dire che non ce ne sono alcuni grave difetto nel generatore di numeri casuali utilizzato per creare le chiavi.

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

  1. Bruto gli attacchi forzati 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 dannoso può " t capire la tua chiave privata / passphrase); sebbene ssh segnali già gli attacchi MITM per avvisare gli amministratori utilizzando chiavi host e file known_hosts .

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

Personalmente, mi piace la tua soluzione in quanto una passphrase è più conveniente (memorizzata nella RAM; su una macchina monoutente che si blocca dopo 5 minuti); anche se ho ancora messo la mia chiave privata protetta da passphrase solo su macchine locali in cui sono l'unico utente.

"In pratica entrambi sono ugualmente sicuri" - obiezione PRINCIPALE: le probabilità di rotture della workstation e tentativi di forza bruta del server sono diversi ordini di grandezza. Non vedo ninja che cercano di entrare nella mia postazione di lavoro (ovviamente no, sono ninja; o)); OTOH, vedo molti rapporti denyhosts dai miei server.
@Piskvor - Sono d'accordo una password ragionevole sul lato più debole (diciamo quattro parole diceware o 8 lettere minuscole casuali) ~ 2 ^ 36 è uno spazio molto più piccolo del tipico spazio della chiave privata ~ 2 ^ 1000. Tuttavia, se fail2ban limita i tentativi errati a ~ 100 / h per indirizzo IP, la tua password sopravviverebbe per ~ 4 miliardi di anni da un indirizzo IP (o richiederebbe ~ 40 milioni di indirizzi IP per attaccare per 100 anni senza che tu te ne accorga). Pertanto, in pratica sono più o meno altrettanto sicuri in quanto il rischio nella pratica non è essere forzati, ma un'altra via (accesso fisico alla tua macchina; installazione di malware; ecc.).
Punto valido; tuttavia, "password ragionevole" può essere un presupposto troppo generoso nella maggior parte dei casi. "Beh, perché non puoi semplicemente impostarlo su password123?" è praticamente il grido di battaglia dei miei cow-orkers (e dopo un po 'di brontolio, vanno avanti e lo impostano su PassWord123 stessi (o qualcosa di leggermente diverso che pasce il filtro della password zoppa)).
@Piskvor - Se costringi gli idioti che usano "PassWord123" a usare le chiavi ssh; troveranno un modo per essere insicuri. Ad esempio, perché ho bisogno di una passphrase sulla mia chiave ssh - è scomodo (o ho una frase banale come "questo è divertente") e quindi lasciare la chiave su sistemi multiutente root o eseguire il backup della loro chiave ssh in luoghi pubblici ( gmail / dropbox / ecc.). Almeno al momento, non mi sono imbattuto in questi idioti che necessitano dei privilegi di root sui miei sistemi.
Non ho detto niente su root, vero? ;)
Un altro punto per utilizzare la chiave privata, se ti connetti a un server compromesso, è abbastanza banale per l'attaccante ottenere il testo normale della tua passphrase perché SSH invia la tua password all'interno del tunnel crittografato. Tuttavia, una chiave privata non viene mai inviata al server. Se riutilizzi la stessa password su più macchine, l'aggressore potrebbe riutilizzare la password che ha rubato su un'altra macchina.
Zoredache
2011-12-20 05:18:15 UTC
view on stackexchange narkive permalink

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 finali e anche io a volte ho inserito la mia password in un campo nome utente 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 stai attento ogni volta che inserisci la password, è possibile che la tua password venga aggiunta in chiaro possibilmente a diversi file di registro, potenzialmente alla cronologia della shell, o anche a qualche tipo di cavallo di Troia. Nel caso di una chiave senza password o di una chiave caricata con un agente SSH all'inizio della sessione, non dovresti mai ridigitare la password, quindi è improbabile che tu digiti le tue credenziali nel posto sbagliato e riveli le tue password a qualcuno o qualcosa che non intendevi.

Ryan M.
2011-12-20 03:45:02 UTC
view on stackexchange narkive permalink

In un certo senso sono 6. 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 presenta il rischio per la sicurezza che alcuni utenti non autorizzati ottengano l'accesso al tuo computer. Se si utilizza una password complessa sul server, si corre il rischio che gli utenti della password 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 chiave e qualsiasi altro numero di misure di sicurezza a prova di blocco, ma questo rende i tuoi dipendenti infelici.

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

`Ovviamente potresti richiedere password sulle chiavi` Presumo tu intenda frasi di accesso per le tue chiavi, ma come puoi imporlo a un utente?
Sì, intendevo la passphrase. È possibile applicare la procedura dicendo "Usa una passphrase quando generi la tua chiave, altrimenti la chiave non si avvia sul server".
Non dimenticare che qualcuno può rimuovere la passphrase dopo aver inserito la chiave sul server.
Ah. Intendevo come puoi * verificare * che hanno usato una passphrase sulla loro chiave? Avevo l'impressione che non potessi. Renderlo una politica è interessante e non c'è modo di applicarlo AFAIK.
Hai ragione. L'ho guardato oltre.
Jeff Strunk
2011-12-20 03:48:26 UTC
view on stackexchange narkive permalink

Disattivo sempre il login tramite password su ssh per root sui miei sistemi. In questo modo, non è possibile che un utente malintenzionato possa tentare di forzare la password.

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

JoePete
2016-09-19 19:45:02 UTC
view on stackexchange narkive permalink

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

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

Le chiavi sono molto più complesse. Penso che la maggior parte delle implementazioni SSH abbia come impostazione predefinita la chiave 2048 RSA. Confrontalo con una password di 8 caratteri. Anche se hash a 256 bit, le password, poiché mancano della casualità delle chiavi, possono essere forzate. Schneier ha alcune ottime osservazioni su questo; anche le password presumibilmente "buone" tendono ad essere solo una combinazione di dati crackabili (una parola con un numero e forse alcune semplici sostituzioni); noi umani siamo semplicemente troppo prevedibili.

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

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

Ti manca il punto.La discussione non è se dovresti crittografare la tua chiave SSH con una password (dovresti chiaramente!), Ma se utilizzare solo l'accesso basato su password è più o meno sicuro rispetto all'accesso basato su chiave.Dal punto di vista di un utente malintenzionato esterno che non ha ottenuto la chiave, è irrilevante se la chiave è protetta da password o meno.Nota: richiesta sia della chiave che della password ([link] (http://security.stackexchange.com/questions/17931/possible-to-use-both-private-key-and-password-authentication-for-ssh-login)) per accedere è ancora un altro problema.
La domanda è un po 'come chiedere se uso la normale serratura o il catenaccio.La risposta corretta è don
Sbagliato il limite di 5 minuti, ma chiedermi se devo usare una password o una chiave rivela, a mio avviso, un malinteso di autenticazione.Queste sono mele e fattori arancioni.Nello scenario di un attacco esterno, tieni presente che con un sistema basato su chiavi, compromettere l'host del client garantisce l'accesso a un server SSH.Mentre con una password l'accesso dovrà essere forzato (mitigato con un blocco).Tieni presente anche che un amministratore di sistema non può controllare ciò che un utente fa con le sue chiavi private.Quindi ancora, mele e arance.


Questa domanda e risposta è stata tradotta automaticamente dalla lingua inglese. Il contenuto originale è disponibile su stackexchange, che ringraziamo per la licenza cc by-sa 3.0 con cui è distribuito.
Loading...