Aggiornamento: bugfixes, alla fine del post.
Un veloce appunto, vado un po’ di corsa.
È uscita da poco la versione 6.9 di OpenSSH. Potrebbe darvi dei problemi con PuTTY.
Questi due capisaldi della sicurezza hanno sempre avuto una relazione, come dire, un po’ travagliata, poiché vengono sviluppati indipendentemente. Di conseguenza, più le opzioni di sicurezza lato server e lato client sono restrittive ed esigenti, più è possibile che client e server non riescano a mettersi d’accordo.
Nella fattispecie, OpenSSH 6.9, se configurato in maniera simile a quanto suggerito per esempio da Secure Secure Shell, impedisce a PuTTY 0.64 di connettersi.
Questo è quanto riesco a capire della faccenda dopo un po’ di analisi a tempo perso (sto seguendo altri affari allo stesso tempo).
Il log di OpenSSH indica che OpenSSH riconosce nome e cognome di PuTTY, e di conseguenza imposta una maschera di compatibilità fatta apposta per lui:
match: PuTTY_Release_0.64 pat PuTTY-Release-0.5*,PuTTY_Release_0.5*,PuTTY_Release_0.60*,PuTTY_Release_0.61*,PuTTY_Release_0.62*,PuTTY_Release_0.63*,PuTTY_Release_0.64* compat 0x00004000
Più avanti, si prepara il key exchange:
compat_kex_proposal: original KEX proposal: curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group14-sha1 [preauth]
Per problemi di compatibilità, si scarta un algoritmo:
Compat: skipping algorithm "diffie-hellman-group-exchange-sha256" [preauth]
Il risultato presentato a PuTTY:
compat_kex_proposal: compat KEX proposal: curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group14-sha1 [preauth]
PuTTY a questo punto ha un’ampia scelta. Ne sceglie uno, e via col vento.
Ora, blindando un po’ il server, il risultato è invece questo:
compat_kex_proposal: original KEX proposal: curve25519-sha256@libssh.org,diffie-hellman-group-exchange-sha256 [preauth] Compat: skipping algorithm "diffie-hellman-group-exchange-sha256" [preauth] compat_kex_proposal: compat KEX proposal: curve25519-sha256@libssh.org [preauth]
PuTTY a questo punto ha una scelta limitata a una sola opzione. Per quella opzione non è (ancora) attrezzato, e quindi non si può connettere.
Da notare che questa interazione non si presentava con OpenSSH 6.8 e PuTTY 0.64.
Si può girare attorno al problema utilizzando la pre-release della versione 0.65 (con tutti i possibili problemi che utilizzare la pre-release di una beta comporta). Questa non viene riconosciuta da OpenSSH, che quindi non imposta le opzioni di compatibilità e non castra la lista di algoritmi di kex disponibili:
no match: PuTTY_Prerelease_0.65:20150704.95501a1
Immagino che questo sia solo un palliativo temporaneo (con i prossimi aggiornamenti di OpenSSH, la 0.65 di PuTTY potrebbe essere riconosciuta e “compatibilizzata”), ma per ora funziona.
Tutto questo l’ho scritto abbastanza di fretta, per cui se trovate errori e/o soluzioni, siete i benvenuti qui. Grazie.
Un aggiunta qualche giorno dopo: aggiornando anche Cygwin, ho fatto caso a quanto dichiarato nelle descrizioni dei bugfix (che provengono da upstream):
* ssh(1), sshd(8): deprecate legacy SSH2_MSG_KEX_DH_GEX_REQUEST_OLD message and do not try to use it against some 3rd-party SSH implementations that use it (older PuTTY, WinSCP).
Prima del mio problema originale ero andato a controllare, ma non avevo fatto due più due. “Secure SHell versione 2 _ MeSsaGe _ Key EXchange _ Diffie-Hellman _ Group EXchange _ eccetera”. Mea culpa.
Più tardi andrò a cercare le migliorie di PuTTY 0.65, sperando di trovare crittografia aggiornata.
Lascia un commento