SSH: Nhóm DH_GEX nằm ngoài phạm vi


18

Gần đây chúng tôi đã áp dụng một bản vá do nhà cung cấp cung cấp cho OpenSSH. Bản vá này đã vô hiệu hóa một vài giao thức trao đổi quan trọng để đối phó với cuộc tấn công Logjam gần đây. Sau khi áp dụng bản vá này, chúng tôi có một vài nhà cung cấp mà chúng tôi không thể trao đổi các tệp qua sftp vì việc đàm phán kết nối không thành công (có thể do thuật toán trao đổi khóa không dùng nữa).

Tôi chỉ muốn xác minh một vài điều chúng ta đang thấy trước khi nói chuyện với các nhà cung cấp của chúng tôi. Đây là phiên SSH mẫu với một trong những nhà cung cấp có vấn đề (đã thêm số dòng):

# 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`

Vì vậy, trong quá trình đàm phán trao đổi khóa, khách hàng và máy chủ trao đổi danh sách các thuật toán được hỗ trợ của họ (dòng 21 và 33). Họ đồng ý sử dụng trận đấu đầu tiên được tìm thấy trong hai danh sách, trong trường hợp này diffie-hellman-group-exchange-sha1. Theo tôi hiểu, thuật toán này hỗ trợ một phạm vi độ dài bit mà máy khách và máy chủ sau đó phải thương lượng. Trong những trường hợp bình thường, client và server đồng ý trên một chiều dài bit và phím trao đổi cách sử dụng một thủ DH từ modulitập tin, ví dụ /etc/ssh/moduli(Tôi biết tuyên bố cuối cùng này là rất "speak cư sĩ tại gia", nhưng đó là xấp xỉ dài và ngắn nó).

Trong trường hợp này, những gì tôi nghĩ rằng tôi đang thấy là cuộc đàm phán dài bit đang thất bại. Trên dòng 49, ứng dụng khách (tôi) đang nói "Tôi hỗ trợ độ dài bit trong khoảng từ 1536 đến 8192 và muốn sử dụng 3072 bit". Tuy nhiên, máy chủ trả lời lại và nói "Tôi chỉ hỗ trợ 1024 bit." Tại thời điểm đó, khách hàng bỏ cuộc và nói "Tôi không thể nói chuyện với bạn." Đây có phải là một mô tả hợp lý về những gì đang xảy ra ở đây?

Theo tôi hiểu, vấn đề hoàn toàn nằm ở phần cuối máy chủ vào thời điểm này (giả sử chúng ta không đàm phán một thuật toán yếu hơn như thế nào diffie-hellman-group1-sha1). Máy chủ sẽ phải được sửa đổi để hỗ trợ độ dài bit lớn hơn trong quá trình trao đổi khóa.

Tôi muốn chắc chắn rằng tôi hiểu chính xác điều này trước khi tiếp tục. Đầu vào được đánh giá cao.


1
Bạn đang đọc đúng. Điều gì trên trái đất là ở đầu kia? Trông không giống bất kỳ máy chủ ssh thông thường nào.
Michael Hampton

Không biết máy chủ là gì. Chúng tôi đang gặp vấn đề tương tự với hai nhà cung cấp khác nhau, cả hai đều là ngân hàng. Không máy chủ nào tự nhận dạng trong phiên (điều này không gây ngạc nhiên).
sbrown

Bạn sẽ nghĩ rằng các ngân hàng sẽ có thêm một chút về an ninh, nhưng than ôi ...
Michael Hampton

2
Tìm kiếm "GXSSSHD_Comments" sẽ đưa ra các bình luận trong các diễn đàn khách hàng SFTP khác nhau, điều này dường như cho thấy rằng máy chủ của bạn là ứng dụng GXS MFT - rất khó hiểu.
Castaglia

Câu trả lời:


21

Nếu bạn muốn sử dụng OpenSSH mới hơn để kết nối với các máy chủ không dùng nữa:

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

Thêm -v nếu bạn muốn xem những gì đang xảy ra và -o HostKeyAlerskyms = ssh-dss nếu nó vẫn không hoạt động:

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

Tất nhiên, bạn cũng có thể chỉnh sửa / etc / ssh / ssh_config hoặc ~ / .ssh / ssh_config và thêm:

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 đề cập đến cách khắc phục sau đây trên Bảng định tuyến Mikrotik:

/ip ssh set strong-crypto=yes

(Lưu ý điều này ở đây vì câu trả lời này cũng xuất hiện trên các tìm kiếm trên web khi tìm kiếm một thông báo lỗi tương tự.)

Nếu bạn muốn sử dụng nó qua Git mà không cần chỉnh sửa ssh_config hoặc cập nhật máy chủ SSH:

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

2
cái này cũng hoạt động cho sftp
bao7uo

11

Có vẻ như bạn đã gặp lỗi này .

Nguyên nhân

Một thay đổi đã được thực hiện đối với gói openssh, giao dịch với Diffie-Hellman Group Exchange. Trước đây, các khóa có kích thước 1024 - 8192 có thể được trao đổi. Mức tối thiểu được nâng lên 1536 để tăng cường bảo mật và để tránh lỗ hổng "logjam". Tuy nhiên, nếu được sử dụng với một số triển khai ssh của bên thứ 3 chỉ hỗ trợ 1024, sẽ xảy ra lỗi. Tốt nhất, nên cập nhật cấu hình hoặc mã ssh của bên thứ 3 để sử dụng kích thước khóa lớn hơn.

...

Bạn có thể tìm thấy 3 độ phân giải khác nhau trong liên kết. Trong trường hợp bạn không có quyền quản trị hoặc có quá nhiều quan liêu để có được những thay đổi sâu sắc hơn, loại bỏ thuật toán có vấn đề trong khi chờ đợi tính khả dụng của SHA-2 trong máy chủ có vẻ là lựa chọn tốt nhất đối với tôi. Bạn thậm chí có thể thực hiện nó theo cách dựa trên người dùng trong tệp $ HOME / .ssh / config của bạn.

KexAlgorithms diffie-hellman-group-exchange-sha256,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.