FIDO/U8.2F iki faktörlü kimlik doğrulama belirteçlerini destekleyen OpenSSH 2 sürümü

Dört aylık geliştirme sürecinin ardından gönderilen serbest OpenSSH 8.2, SSH 2.0 ve SFTP protokolleri aracılığıyla çalışmaya yönelik açık bir istemci ve sunucu uygulaması.

OpenSSH 8.2 sürümündeki önemli bir gelişme, protokolü destekleyen cihazları kullanarak iki faktörlü kimlik doğrulamayı kullanma yeteneğiydi U2Fittifak tarafından geliştirildi FIDO. U2F, kullanıcının fiziksel varlığını doğrulamak ve onlarla USB, Bluetooth veya NFC aracılığıyla etkileşime geçmek için düşük maliyetli donanım belirteçlerinin oluşturulmasına olanak tanır. Bu tür cihazlar web sitelerinde iki faktörlü kimlik doğrulama aracı olarak tanıtılıyor, halihazırda büyük tarayıcılar tarafından destekleniyor ve Yubico, Feitian, Thetis ve Kensington gibi çeşitli üreticiler tarafından üretiliyor.

Kullanıcının varlığını doğrulayan cihazlarla etkileşim kurmak için, SHA-25519 karma değeriyle birlikte ECDSA ve Ed25519 dijital imza algoritmalarını kullanan yeni "ecdsa-sk" ve "ed256-sk" anahtar türleri OpenSSH'ye eklendi. Belirteçlerle etkileşime yönelik prosedürler, PKCS#11 desteği için kitaplığa benzer şekilde yüklenen ve kitaplığın üstünde bir sarmalayıcı olan bir ara kitaplığa yerleştirilir. libfido2USB üzerinden belirteçlerle iletişim kurmak için araçlar sağlayan araçlar sağlar (FIDO U2F/CTAP 1 ve FIDO 2.0/CTAP 2 protokolleri desteklenir). OpenSSH geliştiricileri tarafından hazırlanan libsk-libfido2 ara kütüphanesi dahil libfido2 çekirdeğine ve ayrıca HID sürücüsü OpenBSD için.

Kimlik doğrulamak ve bir anahtar oluşturmak için ayarlarda "SecurityKeyProvider" parametresini belirtmeniz veya libsk-libfido2.so harici kitaplığının yolunu belirten SSH_SK_PROVIDER ortam değişkenini ayarlamanız gerekir (export SSH_SK_PROVIDER=/path/to/libsk-libfido2.xml). Bu yüzden). Katman kitaplığı için yerleşik destekle openssh oluşturmak mümkündür (--with-security-key-builtin), bu durumda “SecurityKeyProvider=internal” parametresini ayarlamanız gerekir.
Daha sonra "ssh-keygen -t ecdsa-sk" komutunu çalıştırmanız veya anahtarlar zaten oluşturulmuş ve yapılandırılmışsa "ssh" kullanarak sunucuya bağlanmanız gerekir. ssh-keygen'i çalıştırdığınızda, oluşturulan anahtar çifti “~/.ssh/id_ecdsa_sk” dizinine kaydedilecek ve diğer anahtarlarla benzer şekilde kullanılabilir.

Ortak anahtar (id_ecdsa_sk.pub), yetkili_anahtarlar dosyasındaki sunucuya kopyalanmalıdır. Sunucu tarafında yalnızca dijital imza doğrulanır ve istemci tarafında tokenlarla etkileşim gerçekleştirilir (sunucuya libsk-libfido2 kurmanıza gerek yoktur, ancak sunucunun “ecdsa-sk” anahtar tipini desteklemesi gerekir) . Oluşturulan özel anahtar (id_ecdsa_sk) aslında bir anahtar tanıtıcısıdır ve yalnızca U2F belirteci tarafında depolanan gizli diziyle kombinasyon halinde gerçek bir anahtar oluşturur. id_ecdsa_sk anahtarı bir saldırganın eline geçerse, kimlik doğrulamayı geçmek için saldırganın donanım belirtecine de erişmesi gerekecektir; bu olmadan id_ecdsa_sk dosyasında saklanan özel anahtar işe yaramaz.

Ek olarak, varsayılan olarak, anahtarlarla herhangi bir işlem gerçekleştirirken (hem oluşturma sırasında hem de kimlik doğrulama sırasında), kullanıcının fiziksel varlığının yerel olarak doğrulanması gerekir; örneğin, belirteç üzerindeki sensöre dokunmanız önerilir, bu da bunu zorlaştırır. Bağlı bir jetonla sistemlere uzaktan saldırılar gerçekleştirin. Başka bir savunma hattı olarak, anahtar dosyasına erişim için ssh-keygen'in başlangıç ​​aşamasında bir şifre de belirtilebilir.

OpenSSH'nin yeni sürümü ayrıca SHA-1 karmalarını kullanan algoritmaların kullanımdan kaldırılacağını da duyurdu. arttırmak belirli bir önekle çarpışma saldırılarının etkinliği (bir çarpışma seçmenin maliyetinin yaklaşık 45 bin dolar olduğu tahmin edilmektedir). Gelecek sürümlerden birinde, SSH protokolü için orijinal RFC'de bahsedilen ve pratikte yaygın olarak kalan (kullanımı test etmek için) genel anahtar dijital imza algoritması "ssh-rsa"yı kullanma yeteneğini varsayılan olarak devre dışı bırakmayı planlıyorlar. Sistemlerinizde ssh-rsa varsa, “-oHostKeyAlgorithms=-ssh-rsa” seçeneğiyle ssh aracılığıyla bağlanmayı deneyebilirsiniz.

OpenSSH'de yeni algoritmalara geçişi kolaylaştırmak için gelecekteki bir sürümde, istemcileri otomatik olarak daha güvenilir algoritmalara geçirecek olan UpdateHostKeys ayarı varsayılan olarak etkinleştirilecektir. Geçiş için önerilen algoritmalar arasında RFC2 RSA SHA-256'yi temel alan rsa-sha512-8332/2 (OpenSSH 7.2'den beri desteklenir ve varsayılan olarak kullanılır), ssh-ed25519 (OpenSSH 6.5'ten beri desteklenir) ve ecdsa-sha2-nistp256/384/521 tabanlı bulunur. RFC5656 ECDSA'da (OpenSSH 5.7'den beri desteklenmektedir).

OpenSSH 8.2'de "ssh-rsa" kullanarak bağlanma yeteneği hala mevcuttur, ancak bu algoritma, yeni sertifikaların dijital olarak imzalanması için izin verilen algoritmaları tanımlayan CASignatureAlgorithms listesinden kaldırılmıştır. Benzer şekilde diffie-hellman-group14-sha1 algoritması da desteklenen varsayılan anahtar değişim algoritmalarından çıkarılmıştır. Saldırganın mevcut bir sertifika için çarpışma aramak için sınırsız süresi olduğundan, ana bilgisayar anahtarlarına saldırı süresi bağlantı zaman aşımı (LoginGraceTime) ile sınırlı olduğundan, sertifikalarda SHA-1 kullanımının ek riskle ilişkili olduğu belirtilmektedir. ).

Ssh-keygen'i çalıştırmak artık varsayılan olarak OpenSSH 2'den beri desteklenen rsa-sha512-7.2 algoritmasını kullanıyor; bu, eski OpenSSH sürümlerini çalıştıran sistemlerde OpenSSH 8.2'de imzalanan sertifikaları işlemeye çalışırken uyumluluk sorunları yaratabilir (ne zaman soruna geçici bir çözüm bulmak için) bir imza oluştururken açıkça "ssh-keygen -t ssh-rsa"yı belirtebilir veya OpenSSH 2'den beri desteklenen ecdsa-sha256-nistp384/521/5.7 algoritmalarını kullanabilirsiniz.

Diğer değişiklikler:

  • Sshd_config'e, diğer dosyaların içeriğini yapılandırma dosyasının geçerli konumuna eklemenize olanak tanıyan bir Include yönergesi eklenmiştir (dosya adını belirtirken glob maskeleri kullanılabilir);
  • Ssh-keygen'e "dokunuş gerektirmeyen" seçeneği eklendi; bu, anahtarı oluştururken belirtece erişimi fiziksel olarak onaylama ihtiyacını devre dışı bırakır;
  • Genel anahtar kimlik doğrulamasıyla ilgili çeşitli seçenekleri birleştiren sshd_config'e bir PubkeyAuthOptions yönergesi eklendi. Şu anda, belirteç kimlik doğrulaması için fiziksel varlık kontrollerini atlamak amacıyla yalnızca "dokunmaya gerek yok" bayrağı desteklenmektedir. Benzer şekilde, yetkili_anahtarlar dosyasına "dokunmaya gerek yok" seçeneği eklendi;
  • Anahtarlar oluşturulurken ek FIDO doğrulama sertifikalarının yazılmasına izin vermek için ssh-keygen'e "-O write-attestation=/path" seçeneği eklendi. OpenSSH henüz bu sertifikaları kullanmamaktadır ancak bunlar daha sonra anahtarın güvenilir bir donanım deposuna yerleştirildiğini doğrulamak için kullanılabilir;
  • Ssh ve sshd ayarlarında artık trafik önceliklendirme modunu IPQoS direktifi aracılığıyla ayarlamak mümkün LE DSCP (Atlama Başına Daha Düşük Çaba Davranışı);
  • Ssh'de “AddKeysToAgent=yes” değeri ayarlanırken, anahtarda yorum alanı yoksa, anahtarın yolunu yorum olarak belirten ssh-agent'a eklenecektir. İÇİNDE
    ssh-keygen ve ssh-agent da artık anahtardaki açıklamalar olarak kitaplık yolu yerine PKCS#11 etiketlerini ve X.509 konu adını kullanıyor;

  • DSA ve ECDSA anahtarları için PEM'i ssh-keygen'e aktarma yeteneği eklendi;
  • FIDO/U2F belirteç erişim kitaplığını izole etmek için kullanılan yeni bir yürütülebilir dosya olan ssh-sk-helper eklendi;
  • Zlib kitaplığı desteğiyle derleme için ssh ve sshd'ye “--with-zlib” oluşturma seçeneği eklendi;
  • RFC4253 gerekliliği uyarınca bağlantı sırasında görüntülenen banner'da MaxStartups sınırlarının aşılması nedeniyle erişimin engellenmesine ilişkin bir uyarı verilmektedir. Tanılamayı kolaylaştırmak için, ps yardımcı programını kullanırken görünen sshd işlem başlığı artık geçerli olarak doğrulanmış bağlantıların sayısını ve MaxStartups sınırının durumunu gösteriyor;
  • Ssh ve ssh-agent'ta, $SSH_ASKPASS aracılığıyla belirtilen bir daveti ekranda görüntülemek için bir program çağrıldığında artık ek olarak davet türünü içeren bir bayrak iletilir: "onayla" - onay iletişim kutusu (evet/hayır), "yok" ” - bilgi mesajı, “boş” — şifre talebi;
  • Belirli bir dijital imzayla ilişkili kullanıcı için izin verilen imzalayanlar dosyasını aramak üzere ssh-keygen'e yeni bir dijital imza işlemi olan "principals" eklendi;
  • Linux'ta seccomp mekanizması kullanılarak sshd işlem izolasyonu için geliştirilmiş destek: IPC sistem çağrılarının devre dışı bırakılması, Clock_gettime64(), Clock_nanosleep_time64 ve Clock_nanosleep()'e izin verilmesi.

Kaynak: opennet.ru

Yorum ekle