it-swarm-id.com

Apakah login SSH tanpa kata sandi lebih aman?

Saya telah berdiskusi panjang dengan rekan kerja saya apakah otentikasi SSH berbasis kunci (terutama untuk OpenSSH) lebih aman daripada otentikasi menggunakan kata sandi. Rekan kerja saya selalu terhubung ke server dengan kata sandi, sementara saya lebih suka masuk ke sistem tanpa harus memasukkan kata sandi setiap saat.

Mereka takut tidak aman terhubung tanpa kata sandi. Apa yang harus saya katakan kepada mereka? Bagi saya, kata sandi itu buruk karena mereka bisa dipaksa atau ditangkap dengan keylogger.

Saya menggunakan ssh-copy-id alat untuk menyalin kunci publik saya ke server. Saya kemudian cukup terhubung dengan ssh servername. Bahkan, saya hanya perlu memasukkan kata sandi untuk kunci pribadi saya sekali setiap kali sistem saya boot. Jika workstation saya berjalan selama 3 hari, saya tidak perlu memasukkan kata sandi lagi, yang mereka katakan tidak aman. Benarkah? Saya tahu bahwa kunci lebih baik, tetapi saya tidak tahu bagaimana menjelaskannya kepada mereka.

68
Daniel

Login berbasis kunci dianggap jauh lebih aman daripada login berbasis kata sandi ketika melihat dari perspektif upaya brute-force untuk mendapatkan akses dari sistem pihak ketiga: Peluang untuk memecahkan kunci secara efektif nol, sedangkan kata sandi yang buruk terlalu umum.

Dari perspektif sistem klien yang dikompromikan (workstation Anda), tidak akan ada perbedaan karena jika penyerang bisa mendapatkan kunci pribadi Anda dan/atau Membajak sesi, mereka kemungkinan juga dapat menginstal semacam logger kunci, membuat yang dirasakan Keuntungan kata sandi tidak berguna.

54
Sven

Ini seaman komputer Anda. Kuncinya adalah duduk, tidak dienkripsi, dalam RAM; penyerang dengan akses fisik ke mesin Anda, atau akses root jarak jauh, bisa mendapatkannya.

Pikirkan itu dalam istilah yang sama seperti jika rekan kerja Anda menggunakan program kata sandi aman dan meninggalkannya di layar dengan database tersedia tanpa entri kata sandi; jika Anda mengunci workstation saat Anda berjalan pergi dan tetap aman dari aktivitas jarak jauh yang bermusuhan, maka itu cukup aman, tetapi serangan beku RAM masih bisa secara teoritis mendapatkan kunci.

Tetapi seseorang di posisi itu dapat dengan mudah menginstal keylogger, seperti yang Anda tunjukkan. Selama Anda berhati-hati tentang keamanan workstation Anda, saya tidak akan menyebutnya kurang aman daripada kata sandi; tetapi manfaat nyata untuk login berbasis kunci benar-benar untuk perlindungan terhadap, misalnya, serangan kata sandi brute force terhadap server (karena kunci hampir mustahil untuk brute force).

25
Shane Madden

Sebenarnya rekan kerja Anda benar. Pikirkan ini .. Stasiun kerja Anda menjadi retak, sudah habis selama beberapa hari dan sekarang peretas membajak seluruh jaringan Anda karena Anda tidak menggunakan kata sandi ssh.

Karena itu, kata sandi bersama tidak pernah baik dan merupakan kelemahan utama sistem. Saya akan berasumsi bahwa Anda berbicara tentang akses root.

Maksud saya adalah mereka berdua memiliki kelemahan dan di mana keamanan perlu tempat.

Untuk semua server yang saya admin saya menggunakan kunci sandi SSH passphrase. Itu memberi saya yang terbaik dari kedua dunia. Hanya kata sandi yang saya tahu, dan tidak menggunakan kata sandi bersama untuk pengguna lain.

(dan ya saya telah melihat di mana kunci ssh passphraseless telah digunakan untuk kompromi dan seluruh jaringan.

12
Squidly

Anda hanya seaman tautan terlemah Anda. Jika server jarak jauh Anda memungkinkan otentikasi berbasis kata sandi dan kunci, Anda kurang aman dibandingkan dengan hanya memperbolehkannya.

Kerentanan ekstra Anda untuk sistem berbasis kunci melalui Otentikasi Kata Sandi (PA) adalah:

  1. Seorang penyerang mendapatkan salinan kunci pribadi Anda yang dilindungi frasa sandi dengan mengatakan memiliki akses fisik ke disk yang tidak dienkripsi pada sistem apa pun (misalnya, boot ke mode pengguna tunggal), kemudian jalankan serangan brute force offline berbasis GPU pada kunci Anda dan kemudian dapatkan akses ke semua sistem Anda jika frasa sandi Anda sangat lemah (mis., 4 kata diklik).

  2. Anda menggunakan sesuatu seperti ssh-agent yang menyimpan frasa sandi atau kunci pribadi Anda di memori untuk penggunaan di lain waktu dan penyerang dapat mengeluarkannya dari sistem Anda entah bagaimana (mis., Pengguna root lain masuk saat Anda memasukkan kata sandi di memori).

  3. Kunci Anda jauh lebih tidak aman daripada yang Anda kira. E.g., kelemahan utama OpenSSH; di mana satu-satunya keacakan berasal dari proses id jadi hanya 65536 kunci dihasilkan. Sementara masalah semacam ini mudah-mudahan diperhatikan dan ditambal dengan cepat, sebagai pengguna akhir tidak mungkin untuk mengatakan bahwa tidak ada beberapa cacat utama dalam generator nomor acak yang digunakan untuk membuat kunci Anda.

Keamanan ekstra Anda dari menggunakan otentikasi berbasis kunci:

  1. Serangan brute force tidak mungkin dilakukan selama kehidupan alam semesta, tanpa mencuri kunci pribadi Anda (dan jika itu passphrase dilindungi; maka melanggar passphrase).
  2. Serangan MITM tidak akan berfungsi (Host remote berbahaya tidak dapat menemukan kunci/frasa sandi pribadi Anda); meskipun ssh sudah memberitahu serangan MITM untuk mengingatkan admin dengan menggunakan kunci Host dan known_hosts file.

Dalam praktiknya keduanya sama-sama aman. Siapa pun yang dapat mencuri ssh private-key dari RAM, dapat menginstal keylogger untuk mendapatkan kata sandi/frasa sandi/kunci pribadi Anda.

Secara pribadi, saya suka solusi Anda karena frasa sandi lebih nyaman (disimpan dalam RAM; pada mesin satu pengguna yang terkunci setelah 5 menit); meskipun saya masih hanya meletakkan kunci pribadi yang dilindungi frasa sandi saya pada mesin lokal di mana saya satu-satunya pengguna.

9
dr jimbob

Satu alasan yang saya yakini membuat otentikasi berbasis kunci memiliki sedikit keuntungan keamanan adalah ada kalanya saya melihat kedua pengguna akhir, dan bahkan saya kadang-kadang memasukkan kata sandi saya di bidang nama pengguna alih-alih di kotak dialog kata sandi ( tergantung pada ssh client). Atau tekan tombol enter terlalu cepat dan klien ssh keluar, dan kata sandi saya masuk ke riwayat terminal saya.

Jika Anda tidak berhati-hati setiap kali memasukkan kata sandi, maka ada kemungkinan kata sandi Anda ditambahkan secara jelas ke beberapa file log, berpotensi sejarah Shell, atau bahkan ke beberapa jenis trojan-horse. Dalam kasus kunci tanpa kata sandi, atau kunci yang Anda muat dengan agen SSH di awal sesi Anda, Anda tidak boleh mengetik ulang kata sandi Anda, jadi Anda tidak mungkin mengetikkan kredensial Anda di tempat yang salah dan mengungkapkan Anda kata sandi untuk seseorang atau sesuatu yang tidak Anda maksudkan.

6
Zoredache

Dalam beberapa hal, ini adalah 6-an. Risiko keamanan langsung pertama dari login berbasis kata sandi adalah pengguna yang tidak sah yang memperoleh (dengan cara apa pun) kata sandi ke server. Demikian juga, login berbasis kunci memiliki risiko keamanan dari beberapa pengguna yang tidak sah yang mendapatkan akses ke komputer Anda. Jika Anda menggunakan kata sandi yang kompleks di server, Anda berisiko pengguna kata sandi harus menuliskannya di suatu tempat untuk mengingatnya. Dengan pengguna utama, Anda berisiko mereka berjalan menjauh dari meja mereka dengan komputer tidak terkunci.

Banyak yang turun ke rasio risiko-kegunaan. Tentu saja Anda bisa memerlukan kata sandi pada kunci, hanya membolehkan alamat IP tertentu pada basis per kunci, dan sejumlah tindakan pengamanan ketat lainnya, tetapi kemudian hal itu membuat orang-orang Anda tidak bahagia.

Tetapi untuk menjawab pertanyaan Anda: Jika kita berbicara tentang konfigurasi Vanilla OpenSSH, login berbasis kata sandi dan kunci keduanya memiliki titik lemah keamanan yang berbeda.

5
Safado

Saya selalu mematikan login kata sandi melalui ssh untuk root pada sistem saya. Dengan begitu, tidak ada cara bagi penyerang untuk mencoba memaksakan kata sandi.

Anda harus tetap waspada terhadap keamanan pada sistem klien. Anda mungkin ingin membuat agen ssh melupakan kredensial kunci Anda ketika layar kunci Anda menyala. Ini akan membantu mencegah serangan pada mesin klien Anda dari kompromi kunci Anda.

5
Jeff Strunk

Beberapa jawaban yang layak di sini tetapi semua tampaknya tidak sesuai dengan pandangan saya.

Menggunakan pasangan-kunci untuk otentikasi menggantikan "sesuatu yang Anda ketahui" dari sistem berbasis kata sandi dengan "sesuatu yang Anda miliki" dari sistem kunci atau token. Kembali ke ini sebentar lagi.

Kunci jauh lebih kompleks. Saya pikir sebagian besar implementasi SSH standar untuk 2048 kunci RSA. Bandingkan dengan kata sandi 8 karakter. Bahkan jika di-hash menjadi 256 bit, kata sandi, karena tidak memiliki keacakan kunci dapat menjadi kasar. Schneier memiliki beberapa pengamatan besar tentang ini; bahkan kata sandi yang dianggap "baik" cenderung hanya kombinasi dari data yang dapat di-crack (kata dengan angka dan mungkin beberapa pergantian sederhana); kita manusia terlalu mudah ditebak.

Mengenai kunci yang hanya seaman kata sandi untuk masuk, ini tidak sepenuhnya benar. Dengan membungkus kunci dengan kata sandi lain, Anda sangat meningkatkan keamanan karena pada dasarnya Anda menggunakan otentikasi dua faktor; untuk mengakses sesuatu yang Anda miliki (kunci), Anda harus menggunakan sesuatu yang Anda tahu (kata sandi). Ya, menggunakan kata sandi login Anda untuk membungkus kunci akan merusak ini.

Jadi untuk poster aslinya, saya katakan Anda dan rekan kerja Anda salah. Anda mungkin kurang dari mereka, tetapi jawaban yang tepat adalah Anda harus menggunakan kunci dan kata sandi.

3
JoePete