SSH: sicuro per il client di ospitare la chiave RSA privata?


10

È sicuro generare una coppia di chiavi pubblica / privata sul server, aggiungere la chiave pubblica all'elenco authorized_keys e quindi copiare la chiave privata su ciascun client, come descritto qui ( http://www.rebol.com/docs/ ssh-auto-login.html ) Supponendo di mantenere il controllo permanente su ciascun client? (ovvero lo stesso utente, molti computer).

La procedura tipica è quella di generare la coppia di chiavi pubblica / privata sul client e quindi aggiungere la chiave pubblica del client all'elenco delle chiavi autorizzate sul server come descritto qui ( http://www.linuxproblem.org/art_9.html ). Con questo metodo, se si dispone di più computer client, ognuno di essi deve essere concatenato all'elenco delle chiavi autorizzate e mantenuto nel tempo.

Risposte:


22

Congratulazioni, hai trovato un tutorial su Internet con cattivi consigli.

Il problema con l'utilizzo di una singola coppia di chiavi per più computer si verifica quando uno qualsiasi dei computer è compromesso. Quindi non hai altra scelta che revocare la coppia di chiavi dappertutto e ricomporre ogni singolo computer che utilizzava quella coppia di chiavi. È necessario utilizzare sempre coppie di chiavi uniche per macchina e per utente, per limitare il danno che una chiave compromessa può causare.

Per quanto riguarda quel tutorial, è incredibilmente un cattivo consiglio generare la coppia di chiavi sul server e copiare la chiave privata sul client . Questo è interamente arretrato. Invece, la coppia di chiavi dovrebbe essere generata sul client e la chiave pubblica copiata sul server. Esiste anche uno script di supporto ssh-copy-idche fa esattamente questo, e lungo la strada assicura che tutte le autorizzazioni siano corrette, il client ottiene la chiave host del server, ecc.

Potrebbero effettivamente esserci situazioni in cui si desidera gestire centralmente le chiavi di identità degli utenti, ad esempio per gli script automatici, ma in questo caso è necessario farlo da un terzo host o idealmente da un sistema di gestione della configurazione come un pupazzo.


2
Inoltre, l'utente del computer client deve ricordare che questa particolare chiave non può essere utilizzata in modo sicuro per altri scopi, poiché non si può sapere dove sia stata la chiave privata. Se sai che la chiave segreta è stata generata sul client e non ha mai lasciato il client, è generalmente sicuro utilizzare la stessa chiave per accedere a sistemi diversi.
Kasperd,

7
Mi è venuta in mente un'analogia con la condivisione degli aghi, ma non ero davvero sicuro di voler andare così lontano ...
Michael Hampton,

Non sono sicuro di come otterresti la parte asimmetrica in quell'analogia.
Kasperd,

1
Beh ... dipende da quale estremità dell'ago sei.
Mircea Vutcovici,

3

Il problema più grande con il protocollo descritto in quel tutorial è che non specifica come "scaricare la chiave privata sul computer client" in modo sicuro (cioè, che impedisce di intercettare). Se non si dispone già di un canale sicuro, la chiave verrà presumibilmente trasferita in chiaro su Internet (HTTP, FTP, e-mail, ecc.). È possibile utilizzare HTTPS, ma se non si dispone di un certificato reale, è possibile eseguire il MITM per annusare la chiave. Fallo nel modo in cui dovresti; generare la coppia di chiavi sul computer client, trasferire la chiave pubblica sul server e non dimenticare di verificare un checksum del file per assicurarsi che non sia stato modificato durante il trasferimento.

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.