Come sapere quando si è verificato un rekey OpenSSH e come attivarne uno?

3

Ho una doppia domanda su come reinnestare OpenSSH. Io uso OpenSSH 6.4 sul lato server e la connessione tra client e server è una connessione SSH2.

Le domande:

  • Come faccio a sapere quando è successo un rekey? Devo controllare i registri o qualsiasi output specifico? L'esecuzione di sshd in debug more (-d) non mi mostra alcunché relativo alla rekeying.
  • Come posso attivare un rekey?
posta Pandrei 26.04.2016 - 15:40
fonte

2 risposte

3

How do I know when a rekey has happened? Should I check any logs, or any specific output? Running sshd in debug more (-d) does not show me anything related to rekeying.

Viene stampato solo in modalità di debug, perché non dovrebbe essere una cosa di cui ti dovresti preoccupare. Dovrebbe funzionare fuori dalla scatola così com'è. Ad ogni modo, puoi aumentare il livello di log dal tuo client usando:

  • -vvv passa al tuo comando ssh ( DEBUG3 )
  • LogLevel DEBUG3 opzione di configurazione nel tuo ~/.ssh/config
  • ~v sequenza di escape durante la sessione

How can I trigger a rekey?

La Rekey è gestita dall'opzione di configurazione RekeyLimit sia nella configurazione client che in quella server (anche se un po ' non funziona fino a openssh-7.2). Se imposti un valore basso, dovrebbe rekey più spesso, ma non ha senso farlo.

Mano nella sessione, puoi attivare uno, per sequenza di escape ~R . Successivamente (in almeno DEBUG log level o -v , vedrai molti messaggi di debug:

[root@f24 ~]# ~?
Supported escape sequences:
 ~.   - terminate connection (and any multiplexed sessions)
 ~B   - send a BREAK to the remote system
 ~C   - open a command line
 ~R   - request rekey
 ~V/v - decrease/increase verbosity (LogLevel)
 ~^Z  - suspend ssh
 ~#   - list forwarded connections
 ~&   - background ssh (when waiting for connections to terminate)
 ~?   - this message
 ~~   - send the escape character by typing it twice
(Note that escapes are only recognized immediately after newline.)

[root@f24 ~]# ~v [LogLevel VERBOSE]
~v [LogLevel DEBUG]
[root@f24 ~]# ~R
debug1: SSH2_MSG_KEXINIT sent
debug1: rekeying in progress
debug1: SSH2_MSG_KEXINIT received
debug1: kex: algorithm: [email protected]
debug1: kex: host key algorithm: ecdsa-sha2-nistp256
debug1: kex: server->client cipher: [email protected] MAC: <implicit> compression: none
debug1: kex: client->server cipher: [email protected] MAC: <implicit> compression: none
debug1: kex: [email protected] need=64 dh_need=64
debug1: kex: [email protected] need=64 dh_need=64
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
debug1: rekeying in progress
debug1: rekeying in progress
debug1: Server host key: ecdsa-sha2-nistp256 SHA256:E9HuzpVQJ/5DavNIZhWzJrADNj5Ntw69RJ1obXJtlGo
debug1: set_newkeys: rekeying, input 5156 bytes 167 blocks, output 5864 bytes 0 blocks
debug1: rekey after 134217728 blocks
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: set_newkeys: rekeying, input 5168 bytes 0 blocks, output 5864 bytes 0 blocks
debug1: rekey after 134217728 blocks
debug1: SSH2_MSG_NEWKEYS received
    
risposta data 26.04.2016 - 19:16
fonte
3

In base a questa domanda stackexchange La proprietà RekeyLimit in sshd_config applica la re-keying / key-re-exchange? è necessario rendere il debug più loquace (-ddd). La modalità di debug (anche con una singola -d ) è sufficiente. Tutto quello che devi fare è attivare il processo di rekeying.
Quando usi OpenSSH come client, inserisci semplicemente ~ R (capitale R!) E la rekeying avverrà. Sul lato server vedrai

debug1: SSH2_MSG_KEXINIT received
debug1: SSH2_MSG_KEXINIT sent
debug1: kex: client->server aes128-ctr hmac-md5 none
debug1: kex: server->client aes128-ctr hmac-md5 none
debug1: expecting SSH2_MSG_KEX_ECDH_INIT
debug1: set_newkeys: rekeying
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: set_newkeys: rekeying
debug1: SSH2_MSG_NEWKEYS received

Quando usi PuTTY come client, puoi forzare la rekeying con "Comando speciale" - > 'Ripeti scambio chiave' che si tradurrà in un registro server simile:

debug1: SSH2_MSG_KEXINIT received
debug1: SSH2_MSG_KEXINIT sent
debug1: kex: client->server aes256-ctr hmac-sha2-256 none
debug1: kex: server->client aes256-ctr hmac-sha2-256 none
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST received
debug1: SSH2_MSG_KEX_DH_GEX_GROUP sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_INIT
debug1: SSH2_MSG_KEX_DH_GEX_REPLY sent
debug1: set_newkeys: rekeying
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: set_newkeys: rekeying
debug1: SSH2_MSG_NEWKEYS received
    
risposta data 26.04.2016 - 17:17
fonte

Leggi altre domande sui tag