Sebagian besar panduan untuk konfigurasi OpenSSH menyarankan untuk menonaktifkan otentikasi kata sandi yang mendukung otentikasi berbasis kunci. Tetapi menurut saya otentikasi kata sandi memiliki keunggulan yang signifikan: kemampuan untuk terhubung dari mana saja tanpa kunci. Jika digunakan selalu dengan kata sandi yang kuat, ini seharusnya bukan risiko keamanan. Atau haruskah itu?
security
ssh
authentication
ssh-keys
Septagram
sumber
sumber
Jawaban:
Ada pro dan kontra untuk otentikasi berbasis pw atau kunci.
Dalam beberapa kasus, misalnya, otentikasi berbasis kunci kurang aman daripada otentikasi kata sandi. Dalam kasus lain, berbasiskan-nya yang kurang aman. Dalam beberapa kasus, yang satu lebih nyaman, yang lain kurang.
Itu semua bermuara pada ini: Ketika Anda melakukan otentikasi berbasis kunci, Anda harus mengamankan kunci Anda dengan frasa sandi. Kecuali Anda menjalankan ssh-agent (ssh-agent membebaskan Anda dari memasukkan frasa sandi setiap saat), Anda tidak memperoleh apa-apa dari segi kenyamanan. Keamanan tidak dapat diperdebatkan: vektor serangan sekarang bergeser dari server ke ANDA, atau akun Anda, atau mesin pribadi Anda, (...) - yang mungkin atau mungkin tidak lebih mudah dipatahkan.
Pikirkan di luar kotak ketika memutuskan ini. Apakah Anda mendapatkan atau kehilangan dalam hal keamanan tergantung pada seluruh lingkungan Anda dan tindakan lain.
sunting: Oh, baru saja melihat bahwa Anda berbicara tentang server rumah. Saya berada dalam situasi yang sama, "kata sandi" atau "USB stick dengan kunci di atasnya" selalu bersama saya? Saya memilih yang pertama tetapi mengubah port mendengarkan SSH menjadi sesuatu yang berbeda dari 22. Itu menghentikan semua skrip kiddies brute yang memaksa seluruh rentang jaringan.
sumber
Menggunakan kunci ssh memang memiliki satu fitur unik dibandingkan dengan login kata sandi: Anda dapat menentukan perintah yang diizinkan. Ini dapat dilakukan dengan memodifikasi
~/.ssh/authorized_keys
file di server.Sebagai contoh,
hanya akan mengizinkan perintah `/usr/local/bin/your_backup_script.sh" dengan kunci itu.
Anda juga dapat menentukan host yang diizinkan untuk kunci:
Atau kombinasikan keduanya:
Dengan kunci, Anda juga dapat memberikan akses sementara ke beberapa pengguna (misalnya, seorang konsultan) ke server tanpa mengungkapkan kata sandi untuk akun tersebut. Setelah konsultan menyelesaikan pekerjaannya, kunci sementara dapat dihapus.
sumber
Anda bisa mendapatkan yang terbaik dari kedua dunia dengan hanya membolehkan otentikasi kata sandi dari dalam jaringan Anda. Tambahkan yang berikut ini ke ujung Anda
sshd_config
:sumber
Anda telah sebagian menjawab pertanyaan Anda - semakin banyak penyerang yang dapat terhubung, semakin banyak kemungkinan dia harus membobol server Anda dengan bruteforcing (pertimbangkan DDoS).
Bandingkan juga panjang kata sandi Anda dengan ukuran kunci (biasanya ribuan bit).
sumber
mywifesnameisangelaandshehasanicebutt
tidak dapat diserang serangan kamus, sangat kuat, dan sangat mudah diingat, tetapi tidak mungkin ditebak. Dan itu datang dengan bonus jika brownies menunjuk jika Anda perlu memberikan kata sandi Anda kepada istri Anda.Ketika Anda masuk dengan kata sandi, Anda mengirimkan kata sandi Anda ke server. Ini berarti bahwa operator server dapat memodifikasi SSHD untuk mendapatkan akses ke kata sandi Anda. Dengan otentikasi kunci publik, mereka tidak dapat memperoleh kunci pribadi Anda karena hanya kunci publik Anda yang masuk ke server.
sumber
ssh keys mencegah man in the middle based attack pada kata sandi Anda.
ketika Anda mencoba masuk dengan kunci, server akan membuat tantangan berdasarkan kunci publik Anda dan mengirimkannya ke klien Anda. yang akan mendekripsi dan membangun respons yang tepat untuk dikirim.
Kunci pribadi Anda tidak pernah dikirim ke server dan siapa pun yang mendengarkan tidak dapat melakukan apa pun kecuali memotong satu sesi itu.
dengan kata sandi, mereka akan memiliki kredensial Anda.
Solusi saya adalah memiliki kunci ssh portabel dalam format yang sesuai pada partisi terenkripsi pada kunci usb. ini memungkinkan saya untuk:
dengan mudah menarik kembali kunci itu jika hilang.
batasi server mana yang memungkinkan saya mengakses
dan masih membawanya
meskipun menginstal perangkat lunak mount adalah menyakitkan (truecrypt)
sumber
Ini adalah trade-off, seperti yang dikatakan @MartinVejmelka.
Alasan Anda menggunakan autent berbasis kunci adalah bahwa kuncinya jauh di atas memaksa saat ini atau dalam waktu dekat memaksa bahwa Anda harus berasal dari PC Anda sendiri, atau memiliki kunci pada stik USB atau sejenisnya.
Kata sandi memiliki masalah berikut:
Kuncinya adalah urutan besarnya lebih lama, dan tidak ditampilkan pada titik mana pun sehingga menghindari tiga masalah ini.
sumber
08Forging2?seminal*^Rajas-(Posed/|
. Ini dibuat secara acak tetapi saya tidak kesulitan mengingatnya. Dan semoga berhasil selancar bahu atau brute-force.Poin bagus sudah disebutkan di sini.
Apa yang saya anggap risiko terbesar, mengingat Anda telah menjaga dasar-dasarnya dengan kata sandi yang kuat, adalah bahwa banyak komputer yang menginstal keyloggers tanpa disadari oleh pengguna. Bahkan ada orang yang membuat seluruh situs utilitas bermanfaat yang berisi trojan, sehingga itu bisa terjadi pada yang terbaik dari kita. Seorang keylogger misalnya akan mengirim email rincian login ke peretas yang kemudian dapat dengan mudah mengakses server.
Saya baru-baru ini diperingatkan oleh Norton tentang mengunduh installer Zombee Mod (bukan toples, installer) untuk menambahkan penerbangan ke toples Minecraft. Saya melihat rinciannya dan Norton mendaftarkan banyak utilitas di situs ini yang ditandai berisi trojan. Saya tidak tahu apakah ini benar atau tidak, tapi itu cukup spesifik dengan nama file. Ini juga merupakan fakta yang diketahui bahwa trojan dimasukkan ke dalam (beberapa) warez sebelum didistribusikan.
sumber
Salah satu potensi manfaat SSH daripada kata sandi adalah jika Anda tidak menentukan frasa sandi SSH, maka Anda tidak perlu mengetikkan kata sandi lagi ... komputer Anda secara intrinsik dipercaya di server karena memiliki kunci. Yang mengatakan, saya biasanya selalu menggunakan frasa sandi SSH jadi saya mengesampingkan manfaat itu.
Saya menemukan jawaban terbaik mengapa panduan pengguna sering merekomendasikan SSH atas otentikasi kata sandi berasal dari manual Ubuntu untuk SSHOpenSSHKeys. Saya mengutip,
Intinya jika Anda memiliki kata sandi panjang padat yang padat dengan tanda baca, huruf besar dan kecil, dan angka ... Anda mungkin akan baik-baik saja dengan otentikasi kata sandi. Juga jika Anda berencana untuk memonitor log Anda, dan tidak melakukan hal-hal "super aman" di seluruh jaringan ... yaitu menggunakannya untuk server rumah. Kemudian dengan segala cara, kata sandi berfungsi dengan baik.
sumber
Metode autentik Passwd benar-benar tidak aman (imho). Dengan mekanisme ini, kata sandi akan dikirimkan ke server sshd (seperti yang sudah dikatakan @ramon). Ini berarti bahwa beberapa individu dapat memodifikasi server sshd untuk mengambil kata sandi. Dengan serangan Man-In-The-Middle ini sangat mudah dilakukan di dalam jaringan lokal.
Anda bisa menambal server sshd dengan menginstal tambalan ini ( https://github.com/jtesta/ssh-mitm ). Gunakan
arpspoof
daniptables
untuk menempatkan server Anda yang telah di-patch antara klien dan server sshd asli.Harap nonaktifkan kata sandi auth: buka file konfigurasi
/etc/ssh/ssh_config
dan tambahkan barisPasswordAuthentication no
.sumber
Anda dapat memotong
-o StrictHostKeyChecking=no
opsi dengan. Ini sangat berguna saat menggunakan ssh dalam skrip shell.sumber