SSH : DH_GEX 그룹이 범위를 벗어남


18

최근 OpenSSH에 공급 업체가 제공 한 패치를 적용했습니다. 이 패치는 최근 Logjam 공격에 대응하여 몇 가지 키 교환 프로토콜을 비활성화했습니다. 이 패치를 적용한 후에는 연결 협상이 실패하여 (사용되지 않는 키 교환 알고리즘으로 인해) sftp를 통해 파일을 교환 할 수없는 공급 업체가 몇 군데 있습니다.

공급 업체에 문의하기 전에보고있는 몇 가지 사항을 확인하고 싶습니다. 다음은 문제가있는 공급 업체 중 하나 (행 번호 추가)가있는 샘플 SSH 세션입니다.

# 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 version string SSH-2.0-OpenSSH_6.2
16 debug1: Remote protocol version 2.0, remote software version 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_parse_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_parse_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_parse_kexinit: aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,rijndael-cbc@lysator.liu.se
24 debug2: kex_parse_kexinit: aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,rijndael-cbc@lysator.liu.se
25 debug2: kex_parse_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_parse_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_parse_kexinit: none,zlib@openssh.com,zlib
28 debug2: kex_parse_kexinit: none,zlib@openssh.com,zlib
29 debug2: kex_parse_kexinit:
30 debug2: kex_parse_kexinit:
31 debug2: kex_parse_kexinit: first_kex_follows 0
32 debug2: kex_parse_kexinit: reserved 0
33 debug2: kex_parse_kexinit: diffie-hellman-group1-sha1,diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha1,diffie-hellman-group-exchange-sha256
34 debug2: kex_parse_kexinit: ssh-dss,ssh-rsa
35 debug2: kex_parse_kexinit: aes128-cbc,3des-ctr,aes128-ctr,3des-cbc,blowfish-cbc,arcfour,arcfour128
36 debug2: kex_parse_kexinit: aes128-cbc,3des-ctr,aes128-ctr,3des-cbc,blowfish-cbc,arcfour,arcfour128
37 debug2: kex_parse_kexinit: hmac-md5,hmac-sha1,hmac-md5-96,hmac-sha1-96,hmac-sha256,hmac-sha256@ssh.com
38 debug2: kex_parse_kexinit: hmac-md5,hmac-sha1,hmac-md5-96,hmac-sha1-96,hmac-sha256,hmac-sha256@ssh.com
39 debug2: kex_parse_kexinit: none,zlib
40 debug2: kex_parse_kexinit: none,zlib
41 debug2: kex_parse_kexinit:
42 debug2: kex_parse_kexinit:
43 debug2: kex_parse_kexinit: first_kex_follows 0
44 debug2: kex_parse_kexinit: reserved 0
45 debug2: mac_setup: found hmac-md5
46 debug1: kex: server->client aes128-ctr hmac-md5 none
47 debug2: mac_setup: found hmac-md5
48 debug1: kex: client->server 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`

따라서 키 교환 협상 중에 클라이언트와 서버는 지원되는 알고리즘 목록 (21 및 33 행)을 교환합니다. 이 경우 두 목록에있는 첫 번째 일치 항목을 사용하는 데 동의합니다 diffie-hellman-group-exchange-sha1. 내가 이해하는 것처럼이 알고리즘은 클라이언트와 서버가 협상 해야하는 다양한 비트 길이를 지원합니다. 정상적인 상황에서는, 클라이언트와 서버는 비트 길이에 동의하고에서 DH 소수의 활용 키 교환 moduli예를 들어 파일 /etc/ssh/moduli(나는이 마지막 문장이 알고 매우 "평신도의 말하는"하지만 대략 길고 짧은 그것).

이 경우, 내가 생각하는 것은 비트 길이 협상이 실패한다는 것입니다. 49 행에서 클라이언트 (me)는 "1536과 8192 사이의 비트 길이를 지원하고 3072 비트를 사용하고 싶다"고 말합니다. 그러나 서버가 회신하여 "1024 비트 만 지원합니다"라고 말합니다. 이 시점에서 고객이 포기하고 "당신과 대화 할 수 없습니다"라고 말합니다. 이것이 여기서 일어나는 일에 대한 합리적인 설명입니까?

내가 알기로, 문제는 전적으로 서버 측에 있습니다 (우리가 약한 알고리즘을 협상하지 않는다고 가정 diffie-hellman-group1-sha1). 키 교환 프로세스 중에 더 큰 비트 길이를 지원하도록 서버를 수정해야합니다.

계속하기 전에 이것을 올바르게 이해하고 있는지 확인하고 싶습니다. 의견을 부탁드립니다.


1
당신은 그것을 올바르게 읽고 있습니다. 다른 쪽 끝은 무엇입니까? 그것은 일반적인 ssh 서버처럼 보이지 않습니다.
Michael Hampton

서버가 무엇인지 전혀 모른다. 우리는 서로 다른 두 공급 업체에서 모두 같은 문제를 겪고 있습니다. 두 서버 모두 세션에서 자신을 식별하지 못합니다 (놀랍지 않습니다).
sbrown

당신은 은행이 보안보다 조금 더 많을 것이라고 생각할 것입니다. 그러나 슬프게도 ...
Michael Hampton

2
"GXSSSHD_Comments"를 검색하면 다양한 SFTP 클라이언트 포럼에서 주석이 표시되며, 이는 서버가 GXS MFT 응용 프로그램 임을 암시하는 것 같습니다 .
Castaglia

답변:


21

최신 OpenSSH를 사용하여 더 이상 사용되지 않는 서버에 연결하려는 경우 :

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

무슨 일이 일어나고 있는지 보려면 -v를 추가하고 여전히 작동하지 않으면 -o HostKeyAlgorithms = ssh-dss를 추가하십시오.

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

물론 / etc / ssh / ssh_config 또는 ~ / .ssh / ssh_config를 편집하고 다음을 추가 할 수도 있습니다.

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 는 Mikrotik Routerboards에서 다음 수정 사항을 언급합니다.

/ip ssh set strong-crypto=yes

(이 답변은 유사한 오류 메시지를 찾을 때 웹 검색에서도 나타납니다.)

ssh_config를 편집하거나 SSH 서버를 업데이트하지 않고 Git을 통해 사용하려면 다음을 수행하십시오.

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

2
이것은 sftp에서도 작동합니다.
bao7uo

11

버그에 부딪힌 것 같습니다 .

원인

Diffie-Hellman Group Exchange를 다루는 openssh 패키지가 변경되었습니다. 이전에는 크기가 1024-8192 인 키를 교환 할 수있었습니다. 보안 강화와 "logjam"취약점을 피하기 위해 최소값은 1536으로 증가했습니다. 그러나 1024 만 지원하는 일부 타사 ssh 구현과 함께 사용하면 실패가 발생합니다. 이상적으로 더 큰 키 크기를 사용하려면 타사 ssh 구성 또는 코드를 업데이트해야합니다.

...

링크에서 3 가지 해상도를 찾을 수 있습니다. 관리자 권한이 없거나 더 많은 변경을 수행하기에는 관료주의가 너무 많은 상황에서 서버에서 SHA-2 가용성을 기다리는 동안 문제가있는 알고리즘을 제거하는 것이 나에게 가장 적합한 옵션 인 것 같습니다. $ HOME / .ssh / config 파일에서 사용자 기반 방식으로 수행 할 수도 있습니다.

KexAlgorithms diffie-hellman-group-exchange-sha256,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.