Rilis OpenSSH 8.2 dengan dukungan untuk token otentikasi dua faktor FIDO/U2F

Setelah empat bulan pengembangan disajikan melepaskan OpenSSH 8.2, implementasi klien dan server terbuka untuk bekerja melalui protokol SSH 2.0 dan SFTP.

Peningkatan utama dalam rilis OpenSSH 8.2 adalah kemampuan untuk menggunakan otentikasi dua faktor menggunakan perangkat yang mendukung protokol U2F, dikembangkan oleh aliansi Fido. U2F memungkinkan pembuatan token perangkat keras berbiaya rendah untuk memverifikasi keberadaan fisik pengguna, berinteraksi dengan mereka melalui USB, Bluetooth, atau NFC. Perangkat tersebut dipromosikan sebagai alat otentikasi dua faktor di situs web, sudah didukung oleh browser utama dan diproduksi oleh berbagai produsen, termasuk Yubico, Feitian, Thetis, dan Kensington.

Untuk berinteraksi dengan perangkat yang mengonfirmasi keberadaan pengguna, jenis kunci baru “ecdsa-sk” dan “ed25519-sk” telah ditambahkan ke OpenSSH, yang menggunakan algoritme tanda tangan digital ECDSA dan Ed25519, dikombinasikan dengan hash SHA-256. Prosedur untuk berinteraksi dengan token ditempatkan di perpustakaan perantara, yang dimuat dengan cara yang mirip dengan perpustakaan untuk dukungan PKCS#11 dan merupakan pembungkus di atas perpustakaan libfido2, yang menyediakan alat untuk berkomunikasi dengan token melalui USB (protokol FIDO U2F/CTAP 1 dan FIDO 2.0/CTAP 2 didukung). Perpustakaan perantara libsk-libfido2 disiapkan oleh pengembang OpenSSH termasuk ke dalam inti libfido2, serta pengemudi tersembunyi untuk OpenBSD.

Untuk mengautentikasi dan menghasilkan kunci, Anda harus menentukan parameter “SecurityKeyProvider” di pengaturan atau mengatur variabel lingkungan SSH_SK_PROVIDER, yang menunjukkan jalur ke perpustakaan eksternal libsk-libfido2.so (ekspor SSH_SK_PROVIDER=/path/to/libsk-libfido2. Jadi). Dimungkinkan untuk membangun openssh dengan dukungan bawaan untuk perpustakaan lapisan (--with-security-key-builtin), dalam hal ini Anda perlu mengatur parameter “SecurityKeyProvider=internal”.
Selanjutnya Anda perlu menjalankan “ssh-keygen -t ecdsa-sk” atau, jika kunci telah dibuat dan dikonfigurasi, sambungkan ke server menggunakan “ssh”. Saat Anda menjalankan ssh-keygen, pasangan kunci yang dihasilkan akan disimpan di “~/.ssh/id_ecdsa_sk” dan dapat digunakan serupa dengan kunci lainnya.

Kunci publik (id_ecdsa_sk.pub) harus disalin ke server dalam file otor_keys. Di sisi server, hanya tanda tangan digital yang diverifikasi, dan interaksi dengan token dilakukan di sisi klien (Anda tidak perlu menginstal libsk-libfido2 di server, tetapi server harus mendukung jenis kunci “ecdsa-sk”) . Kunci pribadi yang dihasilkan (id_ecdsa_sk) pada dasarnya adalah pegangan kunci, membentuk kunci nyata hanya jika dikombinasikan dengan urutan rahasia yang disimpan di sisi token U2F. Jika kunci id_ecdsa_sk jatuh ke tangan penyerang, untuk melewati otentikasi ia juga perlu mendapatkan akses ke token perangkat keras, yang tanpanya kunci pribadi yang disimpan dalam file id_ecdsa_sk tidak akan berguna.

Selain itu, secara default, saat melakukan operasi apa pun dengan kunci (baik selama pembuatan dan selama otentikasi), konfirmasi lokal atas kehadiran fisik pengguna diperlukan, misalnya, diusulkan untuk menyentuh sensor pada token, sehingga menyulitkan untuk melakukannya. melakukan serangan jarak jauh pada sistem dengan token yang terhubung. Sebagai garis pertahanan lainnya, kata sandi juga dapat ditentukan selama fase startup ssh-keygen untuk mengakses file kunci.

Versi baru OpenSSH juga mengumumkan penghentian algoritma yang menggunakan hash SHA-1 karena promosi efektivitas serangan tabrakan dengan awalan tertentu (biaya pemilihan tabrakan diperkirakan sekitar 45 ribu dolar). Dalam salah satu rilis mendatang, mereka berencana untuk menonaktifkan secara default kemampuan untuk menggunakan algoritma tanda tangan digital kunci publik “ssh-rsa”, yang disebutkan dalam RFC asli untuk protokol SSH dan tetap tersebar luas dalam praktiknya (untuk menguji penggunaan dari ssh-rsa di sistem Anda, Anda dapat mencoba menghubungkan melalui ssh dengan opsi “-oHostKeyAlgorithms=-ssh-rsa”).

Untuk memperlancar transisi ke algoritme baru di OpenSSH, pada rilis mendatang, setelan UpdateHostKeys akan diaktifkan secara default, yang secara otomatis akan memigrasikan klien ke algoritme yang lebih andal. Algoritme yang disarankan untuk migrasi mencakup rsa-sha2-256/512 berdasarkan RFC8332 RSA SHA-2 (didukung sejak OpenSSH 7.2 dan digunakan secara default), ssh-ed25519 (didukung sejak OpenSSH 6.5) dan berbasis ecdsa-sha2-nistp256/384/521 pada RFC5656 ECDSA (didukung sejak OpenSSH 5.7).

Di OpenSSH 8.2, kemampuan untuk terhubung menggunakan “ssh-rsa” masih tersedia, namun algoritma ini telah dihapus dari daftar CASignatureAlgorithms, yang mendefinisikan algoritma yang diperbolehkan untuk menandatangani sertifikat baru secara digital. Demikian pula, algoritma diffie-hellman-group14-sha1 telah dihapus dari algoritma pertukaran kunci default yang didukung. Perlu dicatat bahwa penggunaan SHA-1 dalam sertifikat dikaitkan dengan risiko tambahan, karena penyerang memiliki waktu tidak terbatas untuk mencari tabrakan pada sertifikat yang ada, sedangkan waktu serangan terhadap kunci host dibatasi oleh batas waktu koneksi (LoginGraceTime ).

Menjalankan ssh-keygen sekarang secara default menggunakan algoritma rsa-sha2-512, yang didukung sejak OpenSSH 7.2, yang dapat menimbulkan masalah kompatibilitas ketika mencoba memproses sertifikat yang ditandatangani di OpenSSH 8.2 pada sistem yang menjalankan rilis OpenSSH yang lebih lama (untuk mengatasi masalah ketika Ketika menghasilkan tanda tangan, Anda dapat secara eksplisit menentukan “ssh-keygen -t ssh-rsa” atau menggunakan algoritma ecdsa-sha2-nistp256/384/521, yang didukung sejak OpenSSH 5.7).

Perubahan lainnya:

  • Direktif Sertakan telah ditambahkan ke sshd_config, yang memungkinkan Anda untuk memasukkan konten file lain pada posisi file konfigurasi saat ini (masker glob dapat digunakan saat menentukan nama file);
  • Opsi “tidak diperlukan sentuhan” telah ditambahkan ke ssh-keygen, yang menonaktifkan kebutuhan untuk mengonfirmasi akses secara fisik ke token saat membuat kunci;
  • Direktif PubkeyAuthOptions telah ditambahkan ke sshd_config, yang menggabungkan berbagai opsi terkait autentikasi kunci publik. Saat ini, hanya tanda "tidak perlu disentuh" ​​yang didukung untuk melewati pemeriksaan kehadiran fisik untuk autentikasi token. Dengan analogi, opsi “tidak perlu disentuh” telah ditambahkan ke file otor_keys;
  • Menambahkan opsi "-O write-attestation=/path" ke ssh-keygen untuk memungkinkan sertifikat pengesahan FIDO tambahan ditulis saat membuat kunci. OpenSSH belum menggunakan sertifikat ini, namun nantinya dapat digunakan untuk memverifikasi bahwa kunci ditempatkan di toko perangkat keras tepercaya;
  • Dalam pengaturan ssh dan sshd, sekarang dimungkinkan untuk mengatur mode prioritas lalu lintas melalui arahan IPQoS LE DSCP (Perilaku Per-Hop dengan Upaya Rendah);
  • Di ssh, saat menyetel nilai “AddKeysToAgent=yes”, jika kunci tidak berisi kolom komentar, maka akan ditambahkan ke ssh-agent yang menunjukkan jalur ke kunci sebagai komentar. DI DALAM
    ssh-keygen dan ssh-agent juga sekarang menggunakan label PKCS#11 dan nama subjek X.509 alih-alih jalur perpustakaan sebagai komentar di kunci;

  • Menambahkan kemampuan untuk mengekspor PEM untuk kunci DSA dan ECDSA ke ssh-keygen;
  • Menambahkan executable baru, ssh-sk-helper, yang digunakan untuk mengisolasi perpustakaan akses token FIDO/U2F;
  • Menambahkan opsi build “--with-zlib” ke ssh dan sshd untuk kompilasi dengan dukungan perpustakaan zlib;
  • Sesuai dengan persyaratan RFC4253, peringatan tentang pemblokiran akses karena melebihi batas MaxStartups diberikan dalam spanduk yang ditampilkan selama koneksi. Untuk menyederhanakan diagnostik, header proses sshd, yang terlihat saat menggunakan utilitas ps, sekarang menampilkan jumlah koneksi yang saat ini diautentikasi dan status batas MaxStartups;
  • Di ssh dan ssh-agent, ketika memanggil program untuk menampilkan undangan di layar, ditentukan melalui $SSH_ASKPASS, sebuah flag dengan jenis undangan sekarang juga dikirimkan: "konfirmasi" - dialog konfirmasi (ya/tidak), "tidak ada" ” - pesan informasi, "kosong" — permintaan kata sandi;
  • Menambahkan operasi tanda tangan digital baru "find-principals" ke ssh-keygen untuk mencari file penanda tangan yang diizinkan untuk pengguna yang terkait dengan tanda tangan digital tertentu;
  • Peningkatan dukungan untuk isolasi proses sshd di Linux menggunakan mekanisme seccomp: menonaktifkan panggilan sistem IPC, mengizinkan clock_gettime64(), clock_nanosleep_time64 dan clock_nanosleep().

Sumber: opennet.ru

Tambah komentar