Apakah SSH Key Exchange lebih aman daripada otentikasi kata sandi?

9

Pengguna jarak jauh terhubung ke beberapa layanan di kantor utama kami melalui internet menggunakan SSH. Kata sandi SSH disinkronkan dengan akun LAN A / D mereka.

Apakah membuat pengguna membawa salinan kunci SSH pulang menggunakan sesuatu seperti CD atau selembar kertas lebih aman daripada meminta pengguna mengetikkan kata sandi mereka? Atau haruskah saya meminta keduanya?

Pertanyaan saya mungkin bisa dirumuskan ulang sebagai berikut: apakah ada kerentanan dalam protokol otentikasi kata sandi SSH?

Pesan inilah yang membuat saya ragu:

The authenticity of host 'xxx.xxx.xxx.xxx (xxx.xxx.xxx.xxx)' can't be established.
RSA key fingerprint is xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:.
Are you sure you want to continue connecting (yes/no)?
srmark
sumber

Jawaban:

22

Pesan yang Anda lihat adalah masalah terpisah. Ia meminta Anda untuk mengonfirmasi bahwa host yang Anda hubungkan benar-benar yang Anda harapkan. Dari server, Anda bisa mendapatkan sidik jari dengan menjalankan ssh-keygen -l -f /etc/ssh/ssh_host_rsa_key.pub. Kemudian, ketika Anda menghubungkan dari jarak jauh untuk pertama kalinya, Anda dapat memastikan bahwa sidik jari cocok.

Kunci host, terlihat beraksi di sini, mengatasi masalah manusia dalam serangan tengah - mungkin DNS telah ditumbangkan, dan Anda terhubung ke mesin pesaing, bukan milik Anda. Mesin itu mengumpulkan kredensial Anda dan secara transparan meneruskan koneksi Anda ke server nyata, mencuri informasi Anda tanpa Anda sadari. Memastikan kunci host yang cocok mencegah hal ini terjadi kecuali jika penyerang benar-benar mencuri kunci publik server Anda.

Masalah tetap ada - bagaimana Anda tahu kunci mana yang benar? Setelah koneksi pertama, kunci publik disimpan dalam ~/.ssh/known_hostsfile Anda , jadi koneksi selanjutnya baik-baik saja. Tetapi pertama kali, Anda perlu beberapa cara out-of-band untuk mendapatkan sidik jari, atau Anda mengikuti model "TOFU": trust-on-first-use.

Tapi semua ini tidak ada hubungannya dengan kata sandi vs. kunci, kecuali bahwa kedua kunci dan kata sandi dapat dicuri melalui serangan ini - dalam arti, itu adalah kerentanan yang Anda minta.

Ada (setidaknya) tiga alasan kata sandi lebih buruk daripada kunci:

  1. Mereka bisa menjadi kasar. Kata sandi 8 karakter yang dipilih pengguna memiliki sekitar 30 bit menebak-entropi. Pasangan kunci publik / pribadi ssh adalah 1024 bit atau lebih besar. Secara efektif tidak mungkin untuk memaksa kunci ssh, tetapi tebak kata sandi otomatis terjadi setiap saat.
  2. Mereka bisa bodoh. Pengguna secara rutin memilih kata sandi yang mengerikan, bahkan dengan pembatasan di tempat, dan mereka cenderung menggunakan kata sandi yang lebih sulit di banyak tempat. Ini jelas membuat serangan lebih mudah.
  3. Kata sandi dapat dicuri dari jarak jauh. Ketika Anda menggunakan SSH, kata sandi dienkripsi pada kabel, tetapi sangat umum untuk server ssh untuk diganti pada sistem yang dikompromikan dengan yang login semua kata sandi. Dengan kunci, kunci pribadi tetap berada pada sistem lokal dan tidak pernah dikirim sama sekali, sehingga tidak dapat dicuri tanpa benar-benar membahayakan mesin klien.

Selain itu, kunci ssh menawarkan kenyamanan ketika digunakan dengan sesuatu seperti ssh-agent- Anda mendapatkan pengoperasian tanpa gangguan tanpa harus mengautentikasi ulang setiap kali, sambil tetap mempertahankan tingkat keamanan yang wajar.

Tidak ada keuntungan yang signifikan dalam meminta keduanya, karena seseorang yang memiliki akses yang cukup untuk mencuri kunci pribadi dapat dengan mudah mencuri kata sandi pengguna juga. Jika Anda membutuhkan keamanan lebih dari ini, pertimbangkan untuk mencari ke dalam sistem otentikasi dua faktor seperti RSA SecurID atau WiKID .

mattdm
sumber
Jawaban yang bagus Persis apa yang saya cari. Terima kasih!
srmark
mengenai nomor 3) Jika Anda masuk ke server yang sudah dikompilasi ... mengapa seseorang menginginkan kata sandi Anda? Satu-satunya alasan yang bisa saya pikirkan adalah jika Anda menggunakan kata sandi yang sama di mana-mana.
Sirex
Sirex - benar; mereka mencuri kata sandi Anda dan menggunakannya di sistem lain. Perhatikan dalam pertanyaan bahwa kata sandi digunakan sebagai "LAN A / D". Jadi, mereka mencuri kata sandi Anda dari server login ssh dan kemudian memiliki akses ke server Windows juga. Selain itu, sekarang, setiap kali sistem dikompromikan, Anda harus menjalani latihan "baik-baik saja, semua orang mengubah kata sandi Anda lagi".
mattdm
Juga, seperti yang tercantum dalam nomor 2, pengguna yang menggunakan password yang sama di mana-mana. Mendesah.
mattdm
turun dengan pengguna sial! :(
Sirex
1

yang sebenarnya Anda tanyakan adalah, "adalah satu faktor yang lebih baik daripada di luar", topiknya adalah otentikasi multi-faktor dan Anda sebaiknya disarankan untuk melihat ke dalam topik.

Biasanya "faktor" adalah sesuatu yang Anda ketahui (kata sandi), sesuatu yang Anda miliki (file ssh atau kartu gesek kunci), atau sesuatu Anda (sidik jari).

Seseorang tidak lebih baik dari pada orang lain, mereka gratis. Kehilangan cd dengan keyfile sama buruknya dengan membocorkan kata sandi Anda jika itu saja yang Anda butuhkan. Untuk lingkungan yang aman, otentikasi dua faktor adalah umum.

Sirex
sumber
Ya, saya mengerti apa yang Anda katakan. Namun dalam hal ini, saya hanya mencoba mencari tahu apakah otentikasi kata sandi dapat diretas menggunakan sesuatu seperti orang di tengah.
srmark
untuk ssh sebagai contoh spesifik, tidak, karena bagian pemberian kata sandi dienkripsi juga, dan tombol berubah selama sesi (30 detik saya percaya). Itu bukan cerminan dari kata sandi vs passkey
Sirex