FIDO/U8.2F ikki faktorli autentifikatsiya tokenlarini qoʻllab-quvvatlaydigan OpenSSH 2 versiyasi

To'rt oylik rivojlanishdan keyin taqdim etildi reliz OpenSSH 8.2, SSH 2.0 va SFTP protokollari orqali ishlash uchun ochiq mijoz va server ilovasi.

OpenSSH 8.2 versiyasini chiqarishdagi asosiy yaxshilanish bu protokolni qo'llab-quvvatlaydigan qurilmalar yordamida ikki faktorli autentifikatsiyadan foydalanish qobiliyati edi. U2F, alyans tomonidan ishlab chiqilgan Fido. U2F foydalanuvchining jismoniy mavjudligini tekshirish, ular bilan USB, Bluetooth yoki NFC orqali o'zaro aloqa qilish uchun arzon apparat tokenlarini yaratish imkonini beradi. Bunday qurilmalar veb-saytlarda ikki faktorli autentifikatsiya vositasi sifatida ilgari suriladi, ular allaqachon yirik brauzerlar tomonidan qo'llab-quvvatlanadi va turli ishlab chiqaruvchilar, jumladan Yubico, Feitian, Thetis va Kensington tomonidan ishlab chiqariladi.

Foydalanuvchining mavjudligini tasdiqlovchi qurilmalar bilan oʻzaro ishlash uchun OpenSSH-ga “ecdsa-sk” va “ed25519-sk” yangi kalit turlari qoʻshildi, ular SHA-25519 xesh bilan birlashtirilgan ECDSA va Ed256 raqamli imzo algoritmlaridan foydalanadi. Tokenlar bilan oʻzaro ishlash tartib-qoidalari PKCS#11 qoʻllab-quvvatlashi uchun kutubxonaga oʻxshash tarzda yuklangan va kutubxonaning yuqori qismidagi oʻram boʻlgan oraliq kutubxonaga joylashtirilgan. libfido2, bu USB orqali tokenlar bilan bog'lanish uchun vositalarni taqdim etadi (FIDO U2F/CTAP 1 va FIDO 2.0/CTAP 2 protokollari qo'llab-quvvatlanadi). OpenSSH ishlab chiquvchilari tomonidan tayyorlangan libsk-libfido2 oraliq kutubxonasi kiritilgan libfido2 yadrosiga, shuningdek HID haydovchi OpenBSD uchun.

Kalitni autentifikatsiya qilish va yaratish uchun sozlamalarda “SecurityKeyProvider” parametrini belgilashingiz yoki libsk-libfido2.so tashqi kutubxonasiga yo‘lni ko‘rsatuvchi SSH_SK_PROVIDER muhit o‘zgaruvchisini o‘rnatishingiz kerak (eksport SSH_SK_PROVIDER=/path/to/libsk-libfido2. shunday). Qatlam kutubxonasi uchun o'rnatilgan yordam bilan openssh yaratish mumkin (--with-security-key-builtin), bu holda siz "SecurityKeyProvider=ichki" parametrini o'rnatishingiz kerak.
Keyinchalik siz "ssh-keygen -t ecdsa-sk" ni ishga tushirishingiz kerak yoki agar kalitlar allaqachon yaratilgan va sozlangan bo'lsa, "ssh" yordamida serverga ulaning. Ssh-keygen-ni ishga tushirganingizda, yaratilgan kalitlar juftligi "~/.ssh/id_ecdsa_sk" da saqlanadi va boshqa kalitlarga o'xshash tarzda ishlatilishi mumkin.

Ochiq kalit (id_ecdsa_sk.pub) avtorizatsiyalangan_keys faylidagi serverga ko'chirilishi kerak. Server tomonida faqat raqamli imzo tekshiriladi va tokenlar bilan o'zaro aloqa mijoz tomonidan amalga oshiriladi (serverga libsk-libfido2 ni o'rnatishingiz shart emas, lekin server "ecdsa-sk" kalit turini qo'llab-quvvatlashi kerak) . Yaratilgan shaxsiy kalit (id_ecdsa_sk) aslida kalit dastagi bo'lib, faqat U2F token tomonida saqlanadigan maxfiy ketma-ketlik bilan birgalikda haqiqiy kalitni tashkil qiladi. Agar id_ecdsa_sk kaliti tajovuzkorning qo'liga tushsa, autentifikatsiyadan o'tish uchun u apparat tokeniga ham kirishi kerak bo'ladi, ularsiz id_ecdsa_sk faylida saqlangan shaxsiy kalit foydasiz bo'ladi.

Bunga qo'shimcha ravishda, sukut bo'yicha, kalitlar bilan har qanday operatsiyalarni amalga oshirishda (yaratish paytida ham, autentifikatsiya paytida ham) foydalanuvchining jismoniy mavjudligini mahalliy tasdiqlash talab qilinadi, masalan, tokendagi sensorga teginish taklif etiladi, bu esa ishlashni qiyinlashtiradi. ulangan tokenli tizimlarga masofaviy hujumlarni amalga oshirish. Boshqa himoya chizig'i sifatida kalit faylga kirish uchun ssh-keygen ishga tushirish bosqichida parol ham ko'rsatilishi mumkin.

OpenSSH-ning yangi versiyasi, shuningdek, SHA-1 xeshlaridan foydalangan holda algoritmlarning yaqinda bekor qilinishini e'lon qildi. rag'batlantirish berilgan prefiks bilan to'qnashuv hujumlarining samaradorligi (to'qnashuvni tanlash narxi taxminan 45 ming dollarga baholanadi). Kelgusi nashrlarning birida ular SSH protokoli uchun original RFCda eslatib o'tilgan va amalda keng tarqalgan (foydalanishni sinab ko'rish uchun) "ssh-rsa" raqamli imzo algoritmining ochiq kalitidan foydalanish imkoniyatini sukut bo'yicha o'chirib qo'yishni rejalashtirmoqdalar. Tizimingizda ssh-rsa dan foydalansangiz, “-oHostKeyAlgorithms=-ssh-rsa” opsiyasi bilan ssh orqali ulanishga harakat qilishingiz mumkin).

OpenSSH-da yangi algoritmlarga o'tishni yumshatish uchun kelajakdagi versiyada UpdateHostKeys sozlamalari sukut bo'yicha yoqiladi, bu esa mijozlarni ishonchliroq algoritmlarga avtomatik ravishda o'tkazadi. Migratsiya uchun tavsiya etilgan algoritmlar orasida RFC2 RSA SHA-256 asosidagi rsa-sha512-8332/2 (OpenSSH 7.2 dan beri qoʻllab-quvvatlanadi va sukut boʻyicha ishlatiladi), ssh-ed25519 (OpenSSH 6.5 dan beri qoʻllab-quvvatlanadi) va ecdsa-sha2-nistp256/384 asosida ishlaydi. RFC521 ECDSA da (OpenSSH 5656 dan beri qo'llab-quvvatlanadi).

OpenSSH 8.2 da "ssh-rsa" yordamida ulanish imkoniyati hali ham mavjud, ammo bu algoritm yangi sertifikatlarni raqamli imzolash uchun ruxsat etilgan algoritmlarni belgilaydigan CASignatureAlgorithms ro'yxatidan olib tashlangan. Xuddi shunday, diffie-hellman-group14-sha1 algoritmi qo'llab-quvvatlanadigan standart kalit almashinuvi algoritmlaridan olib tashlandi. Ta'kidlanishicha, SHA-1-dan sertifikatlarda foydalanish qo'shimcha xavf bilan bog'liq, chunki tajovuzkor mavjud sertifikat uchun to'qnashuvni qidirish uchun cheksiz vaqtga ega, xost kalitlariga hujum qilish vaqti esa ulanish vaqti (LoginGraceTime) bilan cheklangan. ).

Endi ssh-keygenni ishga tushirish standarti OpenSSH 2 da qo‘llab-quvvatlanadigan rsa-sha512-7.2 algoritmiga mos keladi, bu esa eski OpenSSH relizlari bilan ishlaydigan tizimlarda OpenSSH 8.2 da imzolangan sertifikatlarni qayta ishlashga urinishda moslik muammolarini keltirib chiqarishi mumkin (qachon qachon muammoni hal qilish uchun). imzo yaratishda siz "ssh-keygen -t ssh-rsa" ni aniq belgilashingiz yoki OpenSSH 2 dan beri qo'llab-quvvatlanadigan ecdsa-sha256-nistp384/521/5.7 algoritmlaridan foydalanishingiz mumkin).

Boshqa o'zgarishlar:

  • sshd_config ga Include direktivasi qo'shildi, bu sizga konfiguratsiya faylining joriy holatiga boshqa fayllar tarkibini kiritish imkonini beradi (fayl nomini belgilashda glob maskalaridan foydalanish mumkin);
  • ssh-keygen-ga “tegishsiz” opsiyasi qo'shildi, bu kalitni yaratishda tokenga kirishni jismonan tasdiqlash zaruratini o'chiradi;
  • sshd_config ga PubkeyAuthOptions direktivasi qo'shildi, u umumiy kalit autentifikatsiyasi bilan bog'liq turli xil variantlarni birlashtiradi. Hozirda token autentifikatsiyasi uchun jismoniy mavjudligi tekshiruvlarini o‘tkazib yuborish uchun faqat “tegishsiz” bayroq qo‘llab-quvvatlanadi. O'xshashlik bo'yicha, avtorizatsiyalangan_kalitlar fayliga "tegish kerak emas" opsiyasi qo'shildi;
  • Kalitlarni yaratishda qo'shimcha FIDO attestatsiya sertifikatlarini yozishga ruxsat berish uchun ssh-keygenga "-O write-attestation=/path" opsiyasi qo'shildi. OpenSSH hali bu sertifikatlardan foydalanmaydi, lekin keyinchalik ular kalit ishonchli apparat do'koniga joylashtirilganligini tekshirish uchun ishlatilishi mumkin;
  • Ssh va sshd sozlamalarida endi IPQoS direktivasi orqali trafikni ustuvorlashtirish rejimini o'rnatish mumkin. LE DSCP (Lower-Effort Per-Hop Behavior);
  • Ssh-da, “AddKeysToAgent=yes” qiymatini o'rnatishda, agar kalitda sharh maydoni bo'lmasa, u izoh sifatida kalitga yo'lni ko'rsatuvchi ssh-agentga qo'shiladi. IN
    ssh-keygen va ssh-agent ham endi kalitdagi izohlar sifatida kutubxona yoʻli oʻrniga PKCS#11 teglari va X.509 mavzu nomidan foydalanadi;

  • DSA va ECDSA kalitlari uchun PEM-ni ssh-keygen-ga eksport qilish imkoniyati qo'shildi;
  • FIDO/U2F tokenlariga kirish kutubxonasini ajratish uchun foydalaniladigan yangi bajariladigan, ssh-sk-helper qo'shildi;
  • Zlib kutubxonasi yordamida kompilyatsiya qilish uchun ssh va sshd-ga “--with-zlib” qurish opsiyasi qo‘shildi;
  • RFC4253 talablariga muvofiq, ulanish vaqtida ko'rsatilgan bannerda MaxStartups chegaralaridan oshib ketganligi sababli kirishni blokirovka qilish haqida ogohlantirish berilgan. Diagnostikani soddalashtirish uchun ps yordam dasturidan foydalanganda ko'rinadigan sshd jarayon sarlavhasi hozirda autentifikatsiya qilingan ulanishlar sonini va MaxStartups chegarasi holatini ko'rsatadi;
  • Ssh va ssh-agentda $SSH_ASKPASS orqali ko'rsatilgan ekranda taklifnomani ko'rsatish uchun dasturga qo'ng'iroq qilganda, taklif turiga ega bayroq endi qo'shimcha ravishda uzatiladi: "tasdiqlash" - tasdiqlash dialogi (ha/yo'q), "yo'q" ” - axborot xabari, “bo'sh” — parol so'rovi;
  • Belgilangan raqamli imzo bilan bog'langan foydalanuvchi uchun ruxsat etilgan imzolovchilar faylini qidirish uchun ssh-keygen-ga yangi "find-principals" raqamli imzo operatsiyasi qo'shildi;
  • Seccomp mexanizmidan foydalangan holda Linuxda sshd jarayonini izolyatsiya qilish uchun yaxshilangan yordam: IPC tizimi qo'ng'iroqlarini o'chirish, clock_gettime64(), clock_nanosleep_time64 va clock_nanosleep() ga ruxsat berish.

Manba: opennet.ru

a Izoh qo'shish