9.06.2023

ssh-rsa algorithm is disabled

Linux sunucularda oturum açmak için kullandığım görece "yeni" bir rsa anahtarım vardı. Yeni kurulum yaptığım bir sunucuya da bu anahtarı aktarıp ssh ile oturum açmaya çalıştığımda kabul etmedi, loglarda

sshd[xxxxx]: main: sshd: ssh-rsa algorithm is disabled

gibi bir satır gördüm. Niye acaba ssh-rsa devre dışı bırakılmış olabilir diye bir arama yapmak yerine bunu ChatGPT'ye sormak istedim:

Özetle ssh-rsa, SHA1 hash işlevlerini kullandığı için, SHA1'in ise artık güvensiz kabul edildiğinden [1] dolayı, devre dışı geliyormuş. Bu konuda ilginç görüşler [2] de var ama camia güvensiz diyorsa güvensizdir.

SHA1'in güvensiz kabul edildiğini biliyordum, ama RSA'nın SHA1 kullandığını bilmiyordum. Son 1 yılda kurulmuş bir sunucu (Debian) üzerinde oluşturduğum ssh anahtarımın da ssh-rsa olduğunu öğrenince şaşırdım.

İki seçeneğim var; ya sunucuda (güvenlik uyarılarını göz ardı ederek) ssh-rsa desteğini etkinleştireceğim, ya da ssh anahtarımı sha512 desteği olacak şekilde yenileyeceğim. İlk yöntemi denemek istemesem de serverfault.com'da ve redhat.com'da şu şekilde bir yöntem belirtilmiş:

# update-crypto-policies --set DEFAULT:SHA1

Ayrıca stackexchange.com'da da bir yöntem buldum, ama RockyLinux'ta işe yaramadı.

Gelelim önerilen yönteme. ssh-keygen'in sha512 kullanmasını söyleyen bir parametre yok. Ama çeşitli kaynaklardan [3,4] bulduğum yöntem ssh-keygen'e -t ile anahtar tipini ecdsa olarak belirtmek ve bit uzunluğunu 521 (evet, ilginç) seçmek.

$  ssh-keygen -t ecdsa -b 521

man ssh-keygen'de parametreler hakkında şu bilgiler var:

-t dsa | ecdsa | ecdsa-sk | ed25519 | ed25519-sk | rsa
             Specifies the type of key to create.  The possible values are “dsa”, “ecdsa”, “ecdsa-sk”, “ed25519”, “ed25519-sk”, or “rsa”.

-b bits
             Specifies the number of bits in the key to create.  For RSA keys, the minimum size is 1024 bits and the default is 3072 bits.  Gener‐
             ally, 3072 bits is considered sufficient.  DSA keys must be exactly 1024 bits as specified by FIPS 186-2.  For ECDSA keys, the -b
             flag determines the key length by selecting from one of three elliptic curve sizes: 256, 384 or 521 bits.  Attempting to use bit
             lengths other than these three values for ECDSA keys will fail.  ECDSA-SK, Ed25519 and Ed25519-SK keys have a fixed length and the -b
             flag will be ignored.

Bir genel anahtarın içine bakarak ne tür bir algoritma kullandığını görebiliriz:

$ cat id_ecdsa.pub

ecdsa-sha2-nistp521  ...

---

[1] https://www.computerworld.com/article/3173616/the-sha1-hash-function-is-now-completely-unsafe.html

[2] https://www.quora.com/Does-SHA-1s-insecurity-have-any-effect-on-Git

[3] https://cloud.ibm.com/docs/hp-virtual-servers?topic=hp-virtual-servers-generate_ssh 

[4] https://www.ssh.com/academy/ssh/keygen#choosing-an-algorithm-and-key-size

 

Hiç yorum yok: