SSH: DH_GEX grubu aralık dışında


18

Kısa bir süre önce OpenSSH için satıcı tarafından sağlanan bir yama uyguladık. Bu yama, son Logjam saldırısına yanıt olarak birkaç anahtar değişim protokolünü devre dışı bıraktı. Bu yamayı uyguladıktan sonra, bağlantı anlaşması başarısız olduğu için (muhtemelen kullanımdan kaldırılmış anahtar değişim algoritmaları nedeniyle) sftp yoluyla dosya alışverişi yapamadığımız birkaç tedarikçimiz var.

Satıcılarımızla konuşmadan önce gördüğümüz birkaç şeyi doğrulamak istiyorum. Sorunlu satıcılardan biriyle örnek bir SSH oturumu (satır numaraları eklendi):

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

Anahtar değişimi görüşmesi sırasında, istemci ve sunucu desteklenen algoritmaların listesini değiştirir (satır 21 ve 33). Bu durumda, iki listede bulunan ilk maçı kullanmayı kabul ederler diffie-hellman-group-exchange-sha1. Anladığım kadarıyla, bu algoritma istemci ve sunucunun görüşmesi gereken bir dizi bit uzunluğunu destekler. Normal şartlar altında, istemci ve sunucu biraz uzunluk üzerinde anlaşmaya ve bir DH asal yararlanarak değişim tuşları moduliörneğin dosyası, /etc/ssh/moduli(bu son ifade olduğunu biliyorum çok "rahip olmayan kimse konuşmak," ama bu kabaca uzun ve kısa o).

Bu durumda, gördüğümü düşündüğüm şey, bit uzunluk müzakerelerinin başarısız olması. 49. satırda, müşteri (ben) "1536 ve 8192 arasındaki bit uzunluklarını destekliyorum ve 3072 bit kullanmak istiyorum" diyor. Ancak, sunucu yanıt verir ve "Ben sadece 1024 bit destekliyorum" diyor. Hangi noktada müşteri vazgeçer ve "Seninle konuşamam" der. Bu, burada olanların makul bir açıklaması mı?

Anladığım kadarıyla, sorun bu noktada tamamen sunucu ucundadır (daha zayıf bir algoritma gibi pazarlık yapmadığımızı varsayarsak diffie-hellman-group1-sha1). Anahtar değiştirme işlemi sırasında sunucunun daha büyük bit uzunluklarını destekleyecek şekilde değiştirilmesi gerekir.

Devam etmeden önce bunu doğru anladığımdan emin olmak istiyorum. Girdi takdir edilmektedir.


1
Doğru okuyorsun. Diğer tarafta ne var? Bu herhangi bir ortak ssh sunucusu gibi görünmüyor.
Michael Hampton

Sunucunun ne olduğu hakkında hiçbir fikrim yok. Her ikisi de banka olan iki farklı tedarikçi ile aynı sorunu yaşıyoruz. Her iki sunucu da oturumda kendisini tanımlamaz (bu şaşırtıcı değildir).
sbrown

Bankaların güvenliğin üstünde biraz daha fazla olacağını düşünürdünüz, ama ne yazık ki ...
Michael Hampton

2
"GXSSSHD_Comments" araması, çeşitli SFTP istemci forumlarında yorumları açar ve bu da sunucunuzun GXS MFT uygulaması olduğunu düşündürür - çok girişimci.
Castaglia

Yanıtlar:


21

Kullanımdan kaldırılmış sunuculara bağlanmak için daha yeni OpenSSH kullanmak istiyorsanız:

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

Ne olduğunu görmek için -v ve hala çalışmıyorsa -o HostKeyAlgorithms = ssh-dss ekleyin:

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

Elbette, / etc / ssh / ssh_config veya ~ / .ssh / ssh_config öğelerini düzenleyebilir ve şunları ekleyebilirsiniz:

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 Yönlendiricilerde aşağıdaki düzeltmeden bahseder:

/ip ssh set strong-crypto=yes

(Benzer bir hata mesajı ararken bu yanıt web aramalarında da geldiğinden buraya dikkat edin.)

Ssh_config dosyanızı düzenlemeden veya SSH sunucusunu güncellemeden Git üzerinden kullanmak istiyorsanız:

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

2
Bu sftp için de çalışır
bao7uo

11

Görünüşe göre bu hataya çarptınız .

Sebep olmak

Diffie-Hellman Group Exchange ile ilgilenen openssh paketinde bir değişiklik yapıldı. Daha önce 1024 - 8192 büyüklüğündeki anahtarlar değiştirilebiliyordu. Ek güvenlik ve "logjam" güvenlik açığından kaçınmak için minimum 1536'ya yükseltildi. Ancak, yalnızca 1024'ü destekleyen bazı üçüncü taraf ssh uygulamalarıyla birlikte kullanılırsa hata oluşur. İdeal olarak, 3. taraf ssh yapılandırması veya kodu daha büyük anahtar boyutlarını kullanacak şekilde güncellenmelidir.

...

Bağlantıda 3 farklı çözünürlük bulabilirsiniz. Yönetici gücünüzün olmadığı veya daha derin değişiklikler elde etmek için çok fazla bürokrasinin olduğu durumlarda, sunucudaki bir SHA-2 kullanılabilirliğini beklerken sorunlu algoritmadan kurtulmak benim için en iyi seçenek gibi görünüyordu. Hatta $ HOME / .ssh / config dosyanızda kullanıcı tabanlı bir şekilde de gerçekleştirebilirsiniz.

KexAlgorithms diffie-hellman-group-exchange-sha256,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.