Come eseguire il roll over delle chiavi host ssh?


17

Sto cercando di aggiornare il mio server SSH da chiavi RSA a 2048 bit a chiavi più grandi, poiché i consigli sono di eliminare presto le chiavi a 2048 bit.

Ho generato una nuova chiave, quindi l'ho aggiunta alla configurazione sshd, in questo modo:

HostKey / etc / ssh / ssh_host_rsa_key             (prima la vecchia chiave a 2k bit) 
HostKey / etc / ssh / ssh_host_rsa4096_key         (nuova chiave più grande seconda )

Dopo il riavvio sshd, ho inviato all'host, non ricevo l'avviso di modifica dell'identificazione, tuttavia anche il nuovo non viene memorizzato nella cache ~/.ssh/known_hosts. Se inserisco le righe nell'ordine opposto, ricevo l'avviso di modifica dell'identificazione. Allo stesso modo, quando aggiungo una chiave ed25519, indipendentemente dall'ordine in cui la inserisco, il client non aggiunge la nuova chiave al file hosts noto.

Ciò sembra rendere impossibile il rollover delle chiavi dell'host SSH, difficile da credere, ma in realtà è vero che, considerando la sicurezza, è necessario aggiornare le chiavi.

So che puoi semplicemente scambiare la chiave, quindi ogni client deve eseguire ssh-keygen -Rper rimuovere la vecchia chiave, quindi verificare manualmente e accettare la nuova chiave, ma è una vera seccatura, soprattutto se hai molti client che si connettono o non amministrano tutti i clienti. Per non parlare del fatto che, se non gestisci i client, ci sono ottime possibilità che non controllino effettivamente la chiave host e invece premano semplicemente Y, quindi il tentativo di migliorare la sicurezza probabilmente ti aprirà a man-in attacchi al centro invece.

Esiste un modo per far funzionare gli aggiornamenti delle chiavi host SSH? Cioè, i clienti dovrebbero imparare la nuova chiave più sicura (e speriamo anche di non apprendere la chiave obsoleta). E senza dare alla chiave host un avviso man-in-the-middle modificato.


Si prega di dare un'occhiata a questo . Sebbene non fornisca una soluzione per ciò che desideri in questo momento, potrebbe aiutarti a raggiungere i tuoi obiettivi finali in futuro.
rda,

Risposte:


14

La rotazione della chiave host è supportata da OpenSSH 6.8 (sia il client che il server aggiungono supporto in questa versione).

Quindi il processo dovrebbe funzionare in questo modo:

  • Genera e aggiungi nuove chiavi con l'opzione HostKey newkey(dopo quelle esistenti) su/etc/ssh/sshd_config
  • Ricomincia sshd
  • I client devono impostare UpdateHostKeys yesnella loro configurazione (a livello globale o per host)
  • I client di connessione preleveranno tutte le nuove chiavi
  • Dopo qualche tempo (mesi?) È possibile rimuovere le vecchie chiavi da sshd_confige riavviaresshd
  • I client (connessi durante il periodo di transizione) avranno già le nuove chiavi (la vecchia non verrà rimossa, che è l'unico problema qui) e non mostreranno l'avvertimento di attacco MitM.

I nuovi clienti sufficienti saranno in grado di ritirare le nuove chiavi. Questa funzione non è abilitata per impostazione predefinita, probabilmente perché è abbastanza nuova e presto ha mostrato alcune considerazioni sulla sicurezza. Ma in questi giorni, dovrebbe andare bene usarlo.


-4

sshd usa sempre la prima riga, quindi cancellala, quindi riavvia sshd.


1
... che risulta nella chiave dell'host spaventoso ha cambiato avviso. Cercando di evitarlo, facendo in modo che i clienti apprendano la nuova chiave (e eliminino gradualmente quella vecchia).
derobert

Hai ragione. Non è possibile utilizzare 2 diversi tasti contemporaneamente. ssl non è tls. Non c'è alcuna funzione di aggiunta chiave che sta cambiando.
Ipor Sircer,

4
Non è né SSL né TLS. Il protocollo supporta più chiavi host: ad esempio, in passato tutti avevano entrambe le chiavi RSA e DSA. Ora è in genere chiavi ED25519, ECDSA e RSA.
derobert,
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.