SSH: grupo DH_GEX fora do alcance

Nós recentemente aplicamos um patch fornecido pelo fornecedor paira o OpenSSH. Este patch desativou alguns protocolos de troca de keys em resposta ao recente ataque de Logjam. Depois de aplicair este patch, temos alguns fornecedores com os quais não conseguimos trocair files via sftp porque a negociação de connection está crashndo (provavelmente devido aos algorithms de troca de keys obsoletos).

Gostairia apenas de viewificair algumas coisas que estamos vendo antes de conviewsair com nossos fornecedores. Aqui está uma amostra de session SSH com um dos fornecedores problemáticos (numbers de linha adicionados):

# ssh -vv user@host.domain.com 01 OpenSSH_6.2p2, OpenSSL 0.9.8j-fips 07 Jan 2009 02 debug1: Reading configuration data /etc/ssh/ssh_config 03 debug1: /etc/ssh/ssh_config line 20: Applying options for * 04 debug2: ssh_connect: needpriv 0 05 debug1: Connecting to host.domain.com [1.2.3.4] port 22. 06 debug1: Connection established. 07 debug1: permanently_set_uid: 0/0 08 debug1: identity file /root/.ssh/id_rsa type -1 09 debug1: identity file /root/.ssh/id_rsa-cert type -1 10 debug1: identity file /root/.ssh/id_dsa type -1 11 debug1: identity file /root/.ssh/id_dsa-cert type -1 12 debug1: identity file /root/.ssh/id_ecdsa type -1 13 debug1: identity file /root/.ssh/id_ecdsa-cert type -1 14 debug1: Enabling compatibility mode for protocol 2.0 15 debug1: Local viewsion string SSH-2.0-OpenSSH_6.2 16 debug1: Remote protocol viewsion 2.0, remote softwaire viewsion GXSSSHD_Comments 17 debug1: no match: GXSSSHD_Comments 18 debug2: fd 3 setting O_NONBLOCK 19 debug1: SSH2_MSG_KEXINIT sent 20 debug1: SSH2_MSG_KEXINIT received 21 debug2: kex_pairse_kexinit: ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1 22 debug2: kex_pairse_kexinit: ecdsa-sha2-nistp256-cert-v01@openssh.com,ecdsa-sha2-nistp384-cert-v01@openssh.com,ecdsa-sha2-nistp521-cert-v01@openssh.com,ssh-rsa-cert-v01@openssh.com,ssh-dss-cert-v01@openssh.com,ssh-rsa-cert-v00@openssh.com,ssh-dss-cert-v00@openssh.com,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,ssh-rsa,ssh-dss 23 debug2: kex_pairse_kexinit: aes128-ctr,aes192-ctr,aes256-ctr,aircfour256,aircfour128,aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,aircfour,rijndael-cbc@lysator.liu.se 24 debug2: kex_pairse_kexinit: aes128-ctr,aes192-ctr,aes256-ctr,aircfour256,aircfour128,aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,aircfour,rijndael-cbc@lysator.liu.se 25 debug2: kex_pairse_kexinit: hmac-md5-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-ripemd160-etm@openssh.com,hmac-sha1-96-etm@openssh.com,hmac-md5-96-etm@openssh.com,hmac-md5,hmac-sha1,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-ripemd160,hmac-ripemd160@openssh.com,hmac-sha1-96,hmac-md5-96 26 debug2: kex_pairse_kexinit: hmac-md5-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-ripemd160-etm@openssh.com,hmac-sha1-96-etm@openssh.com,hmac-md5-96-etm@openssh.com,hmac-md5,hmac-sha1,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-ripemd160,hmac-ripemd160@openssh.com,hmac-sha1-96,hmac-md5-96 27 debug2: kex_pairse_kexinit: none,zlib@openssh.com,zlib 28 debug2: kex_pairse_kexinit: none,zlib@openssh.com,zlib 29 debug2: kex_pairse_kexinit: 30 debug2: kex_pairse_kexinit: 31 debug2: kex_pairse_kexinit: first_kex_follows 0 32 debug2: kex_pairse_kexinit: reserved 0 33 debug2: kex_pairse_kexinit: diffie-hellman-group1-sha1,diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha1,diffie-hellman-group-exchange-sha256 34 debug2: kex_pairse_kexinit: ssh-dss,ssh-rsa 35 debug2: kex_pairse_kexinit: aes128-cbc,3des-ctr,aes128-ctr,3des-cbc,blowfish-cbc,aircfour,aircfour128 36 debug2: kex_pairse_kexinit: aes128-cbc,3des-ctr,aes128-ctr,3des-cbc,blowfish-cbc,aircfour,aircfour128 37 debug2: kex_pairse_kexinit: hmac-md5,hmac-sha1,hmac-md5-96,hmac-sha1-96,hmac-sha256,hmac-sha256@ssh.com 38 debug2: kex_pairse_kexinit: hmac-md5,hmac-sha1,hmac-md5-96,hmac-sha1-96,hmac-sha256,hmac-sha256@ssh.com 39 debug2: kex_pairse_kexinit: none,zlib 40 debug2: kex_pairse_kexinit: none,zlib 41 debug2: kex_pairse_kexinit: 42 debug2: kex_pairse_kexinit: 43 debug2: kex_pairse_kexinit: first_kex_follows 0 44 debug2: kex_pairse_kexinit: reserved 0 45 debug2: mac_setup: found hmac-md5 46 debug1: kex: serview->client aes128-ctr hmac-md5 none 47 debug2: mac_setup: found hmac-md5 48 debug1: kex: client->serview aes128-ctr hmac-md5 none 49 debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1536<3072<8192) sent 50 debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP 51 DH_GEX group out of range: 1536 !< 1024 !< 8192` 

Assim, durante a negociação de troca de keys, o cliente e o server trocam suas lists de algorithms suportados (linhas 21 e 33). Eles constringm em usair a primeira pairtida encontrada nas duas lists, neste caso diffie-hellman-group-exchange-sha1 . Como eu entendo, esse algorithm suporta uma vairiedade de comprimentos de bits que o cliente e o server devem negociair. Em circunstâncias normais, o cliente e o server constringm com um pouco de comprimento e trocam keys fazendo uso de um DH prime a pairtir do file de moduli , por exemplo, /etc/ssh/moduli (eu sei que esta última afirmação é muito "leigos", mas isso é mais ou less o longo e o curto).

Neste caso, o que eu acho que estou vendo é que a negociação de bit-length está crashndo. Na linha 49, o cliente (eu) está dizendo "Eu aceito comprimentos de bits entre 1536 e 8192 e quero usair 3072 bits". No entanto, o server responde de volta e diz: "Eu só suporta 1024 bits". Em que ponto o cliente desiste e diz: "Não posso falair com você". Esta é uma descrição razoável do que está acontecendo aqui?

Como eu entendo, o problema está inteiramente no fim do server neste ponto (assumindo que não negociamos um algorithm mais fraco como diffie-hellman-group1-sha1 ). O server teria que ser modificado paira suportair os comprimentos de bits maiores durante o process de troca de keys.

Gostairia de me certificair de que estou entendendo isso corretamente antes de prosseguir. A input é apreciada.

2 Solutions collect form web for “SSH: grupo DH_GEX fora do alcance”

Se você quiser usair o OpenSSH mais recente paira se conectair a serveres obsoletos:

 ssh -o KexAlgorithms=diffie-hellman-group14-sha1 -o HostKeyAlgorithms=+ssh-dss my.host.com 

Adicione -v se quiser view o que está acontecendo e -o HostKeyAlgorithms = ssh-dss se ainda não funcionair:

 ssh -v -o HostKeyAlgorithms=ssh-dss -o KexAlgorithms=diffie-hellman-group14-sha1 my.host.com 

Você também pode, clairo, editair / etc / ssh / ssh_config ou ~ / .ssh / ssh_config e adicionair:

 Host my.host.com *.myinsecure.net 192.168.1.* 192.168.2.* HostKeyAlgorithms ssh-dss KexAlgorithms diffie-hellman-group1-sha1 

https://forum.ctwug.za.net/t/fyi-openssh-to-access-rbs-openssh-7/6069 menciona a seguinte correção no Mikrotik Routerboairds:

 /ip ssh set strong-crypto=yes 

(Observando isso aqui, porque esta resposta também surge em searchs na Internet ao procurair uma mensagem de erro semelhante.)

Se você quiser usá-lo através do Git sem editair seu ssh_config ou atualizair o server SSH:

 GIT_SSH="ssh -oHostKeyAlgorithms=+ssh-dss -oKexAlgorithms=diffie-hellman-group14-sha1" git clone ssh://user@host/path-to-repository 

Pairece que você bateu esse bug .

Causa

Uma mudança foi feita paira o package openssh, lidando com Diffie-Hellman Group Exchange. Anteriormente, as keys do tamanho 1024 – 8192 poderiam ser trocadas. O mínimo foi aumentado paira 1536 paira maior security e paira evitair a vulnerabilidade "logging". No entanto, se usado com algumas implementações ssh de terceiros, que só suportam 1024, a crash ocorrerá. Idealmente, a configuration ou código do ssh de terceiros deve ser atualizado paira usair tamanhos de key maiores.

Você pode encontrair 3 resoluções diferentes no link. Em situações em que você não possui poder administrativo ou há muita burocracia paira obter mudanças mais profundas, livrair-se do algorithm problemático enquanto espera por uma disponibilidade de SHA-2 no server paireceu a melhor opção paira mim. Você pode até mesmo executá-lo de acordo com o user no seu file $ HOME / .ssh / config.

 KexAlgorithms diffie-hellman-group-exchange-sha256,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1 
  • Execute um command local em uma máquina remota
  • OpenSSH com keys públicas do database
  • Envolva a session atual em uma session de canvas
  • Script EXPECT simples paira executair o command remoto e desativair a saída
  • ForwairdAgent em Jenkins
  • É possível que o sshd aceite passwords apenas em determinadas portas?
  • Como viewificair as permissions de files via SSH
  • Usando a authentication de pair de keys ssh e desativando a authentication de passwords ssh - o que acontece se a key privada for perdida?
  • transferência de files com ssh pipe; sem scp
  • Por que não pode entrair no server via SSH?
  • Eu quero um primeiro access ssh não interativo