OpenSSH + PuTTY

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.

Autore: Alessandro Pini

Sinclair ZX-81; Commodore VIC-20; Apple ][ Europlus; Apple //e; Amiga 2000 (Motorola 68000); Amiga 4000 (Motorola 68040, 68060, PPC); Sinclair ZX Spectrum; PC compatibile (Intel 8088 @ 4.77 MHz); ... poi ho perso un po' il conto (due o tre, troppo simili l'uno all'altro)... tower assemblato custom "galactica"; tower assemblato custom "pegasus"; IBM Thinkpad [boh? qualcosa] "defiant"; Compaq/HP Pavilion ze4300 "defiant"; virtual machine VMWare Server "phantom" (fu defiant); MSI Wind U100 "defiant"; Nokia e71 *nero* "blackbird"; tower assemblato custom "spaceball1"; HP Pavilion g6 "gunstar"; Raspberry Pi 2 "lamponcino", "rasputin"; virtual machine assortite. Sì, esatto, non ho mai posseduto il Commodore 64. Non sono quel tipo di geek.

2 pensieri riguardo “OpenSSH + PuTTY”

  1. Mi sembra lo stesso problema delle pagine web che guardano l’user agent e si basano su quello… di solito fallendo miseramente..

Spazio per un commento