Mengapa otentikasi kunci SSH lebih baik daripada otentikasi kata sandi?

45

Ini bukan pertanyaan teknis tetapi konseptual. Saya memahami kriptografi yang digunakan pada kunci SSH jauh lebih kuat daripada kata sandi biasa, tetapi saya tidak mengerti mengapa itu dianggap lebih aman.

Kebanyakan tutorial yang saya baca menyarankan menggunakan otentikasi kunci SSH daripada otentikasi kata sandi. Tetapi pemahaman saya adalah bahwa siapa pun yang kemudian memiliki akses ke mesin klien yang disetujui sebelumnya akan dapat terhubung ke server, yang berarti bahwa tingkat keamanan yang diberikan oleh kunci SSH hanya sekuat tingkat keamanan fisik. mesin klien.

Misalnya, jika saya menyiapkan kunci SSH pada ponsel saya untuk terhubung ke mesin rumah saya, jika saya kehilangan telepon saya dan seseorang berhasil membukanya, mereka akan dapat terhubung ke mesin rumah saya. Saya tahu saya kemudian dapat menghapus kunci untuk telepon saya dari mesin di rumah saya, tetapi saya rentan sampai saya menyadari perangkat klien telah hilang / dilanggar.

Apakah saya salah paham akan sesuatu, atau apakah kekhawatiran itu sah?

BoomShaka
sumber
10
Lakukan keduanya - kunci yang membutuhkan kata sandi. Dengan begitu Anda perlu dua hal untuk diidentifikasi, bukan hanya satu. Anda juga dapat membatalkan kunci yang hilang dengan mudah, dan memiliki beberapa kunci yang diotorisasi untuk kontrol lebih besar atas itu, begitu seterusnya.
Phoshi
2
Ini mungkin harus dipindahkan ke keamanan.
10
@DKGasser: Tidak, seharusnya tidak. Ini pertanyaan yang sangat valid di sini. Hanya karena sesuatu dapat dipindahkan ke situs SE lain tidak berarti harus demikian .
Wuffers
4
@DKGasser: Bisa pergi ke situs itu, itu adalah pertanyaan yang benar-benar valid di sana. Tetapi ini juga pertanyaan yang valid di sini, jadi tidak ada alasan untuk memigrasikannya. Jika pertanyaan ini diambil dari topik di sini, maka ya, itu bisa dimigrasi ke sana. Tapi itu sepenuhnya pada topik di situs ini dan karenanya tidak boleh dimigrasikan.
Wuffers
3
DAN jangan lupa, kunci SSH tidak pernah masuk jaringan. Server jarak jauh TIDAK PERNAH mendapatkan kunci, tidak seperti kata sandi, yang tidak hanya dikirim melalui jaringan, tetapi dikirim ke server jarak jauh. Pikirkan tentang hal itu lain kali Anda tidak yakin kata sandi apa yang digunakan, dan coba beberapa ... yang mungkin digunakan pada akun lain! Kata sandi apa yang Anda kirim ke server itu ???
9mjb

Jawaban:

40

Jika layanan SSH Anda memungkinkan otentikasi berbasis kata sandi, maka server SSH Anda yang terhubung ke Internet akan dipalu siang dan malam oleh botnet yang mencoba menebak nama pengguna dan kata sandi. Bot net tidak memerlukan informasi, cukup coba nama populer dan kata sandi populer. Ada banyak sekali orang bernama john dengan kata sandi qwerty123. Terlepas dari hal lain, ini menyumbat log Anda.

Jika layanan SSH Anda hanya mengizinkan otentikasi kunci publik, penyerang memerlukan salinan kunci pribadi yang sesuai dengan kunci publik yang disimpan di server. Mereka tidak bisa begitu saja melakukan serangan acak, mereka harus memiliki pengetahuan sebelumnya tentang pengguna Anda dan harus mampu mencuri kunci pribadi dari PC pengguna resmi server SSH Anda.

Fakta bahwa kunci privat sering dilindungi oleh pass-phrase yang panjang adalah signifikansi sekunder.

Memperbarui:

Seperti yang ditunjukkan oleh komentar, dan seperti yang saya alami, memindahkan layanan SSH Anda dari port 22 ke port bernomor tinggi membuat perbedaan dramatis dalam jumlah upaya login tanpa izin yang muncul di log Anda. Ini layak dilakukan tetapi saya menganggapnya sebagai bentuk keamanan karena ketidakjelasan (rasa aman yang salah) - cepat atau lambat botnet akan menerapkan pemindaian port secara diam-diam atau Anda akan dengan sengaja ditargetkan. Lebih baik bersiap.

Saya selalu menggunakan kalimat sandi yang panjang untuk melindungi kunci pribadi saya, saya kira ini sangat penting pada perangkat seluler yang bisa lebih mudah hilang atau dicuri.

Juga, http://xkcd.com/538/

Keamanan

RedGrittyBrick
sumber
7
+1 kecuali bahwa kunci publik kunci tidak akan melakukan apa pun untuk log Anda yang tersumbat dengan bot yang mencoba untuk terhubung. Untuk menghentikannya, jalankan server SSH Anda pada port tinggi (yaitu 9876, bukan 22). Kemudian jika mereka ingin memukul Anda, mereka harus
mem-portcan
3
Anda tidak bercanda tentang ukuran log - my / var / log / secure beralih dari megabita upaya login, menjadi kilobyte (hanya dengan catatan login saya).
John C
2
+1 Menarik, saya sudah menjalankan dengan auth berbasis kata sandi untuk .. seperti 10 tahun sekarang .. lol .. Memang, port ssh publik saya tidak pernah port 22. Pikirkan botnet akan port memindai saya dan mencoba menerobos pada setiap port yang mereka bisa ?? Info bagus, terima kasih.
James T Snell
2
@ExUmbris daripada mengubah port Anda harus mempertimbangkan menggunakan fwknop: Otorisasi Paket Tunggal dan Port Knocking . Manfaatnya di sini harus jelas: ketika Anda tidak mengizinkan siapa pun untuk melihat bahwa port terbuka di mana pun kecuali mereka telah diberikan akses ke port melalui mengetuk dengan SPA, maka mereka bahkan tidak dapat mencoba menemukannya dengan nmap dan mengeksploitasinya. Itu jauh lebih baik daripada keamanan sederhana melalui ketidakjelasan.
aculich
@aculich Mengubah port bukanlah "keamanan melalui ketidakjelasan". Yang saya lakukan hanyalah mencegah agar log tidak terisi dengan peringatan. Namun, Anda memiliki poin yang valid tentang meningkatkan keamanan dengan SPA.
Ex Umbris
8

Logikanya adalah bahwa ada lebih banyak kombinasi kunci SSH daripada kata sandi sehingga jauh lebih sulit ditebak. Menggunakan kunci SSH juga memungkinkan Anda untuk menonaktifkan otentikasi kata sandi yang berarti bahwa sebagian besar serangan otomatis yang dilakukan di internet tidak akan berguna.

Berkenaan dengan keamanan fisik, tidak ada perbedaan antara menyimpan kata sandi dan memiliki kunci SSH yang tidak terenkripsi pada perangkat Anda jika hilang atau dicuri. Satu-satunya keuntungan yang Anda miliki adalah tidak ada yang memiliki kata sandi dan Anda secara teoritis dapat memastikan bahwa semua perangkat memiliki sertifikat SSH yang berbeda sehingga Anda dapat menonaktifkannya untuk ponsel Anda.

Saya percaya itu juga mungkin untuk melindungi kata sandi kunci SSH.

Matthew Steeples
sumber
Perlu dicatat, bahwa upaya brute-forcing password terhadap sshd dapat dideteksi dan dilindungi (misalnya dengan fail2ban), sedangkan seseorang yang telah mencuri kunci pribadi Anda dapat mencoba kata sandi di atasnya secepat komputer mereka (atau kluster) akan membiarkan mereka. Ini masih bukan serangan hebat , tetapi mereka telah meningkatkan peluang mereka secara drastis versus kebijakan fail2ban yang masuk akal.
Xiong Chiamiov
1

Kata sandi juga dapat dikompromikan dengan keyboard Anda dimonitor "over-your-shoulder". Selain itu, menggunakan kata sandi yang serupa di banyak tempat adalah kelemahan, terutama jika kata sandi tersebut kadang-kadang digunakan pada komputer yang kurang aman dengan potensi keylogger.

Anda benar bahwa kunci yang tidak terenkripsi dapat dibaca dari hard disk jika komputer dicuri - jadi enkripsi dengan kata sandi.

Jika komputer Anda dikompromikan oleh malware, Anda diisi terlepas .. - seseorang dapat memperoleh kunci yang dienkripsi dan keylog kata sandi Anda.

eug
sumber
1
Catatan: tetapi Anda tidak dapat mengenkripsi kunci Anda dengan kata sandi jika ingin digunakan secara terprogram (mis. Dalam skrip).
TheStoryCoder