Terapkan kata sandi kunci SSH?

9

Saya melihat menghapus login berbasis kata sandi untuk SSH. Namun, saya tidak ingin mengizinkan kunci ssh tanpa kata sandi, karena itu akan lebih buruk.

Bagaimana saya bisa memastikan bahwa hanya kunci SSH yang memiliki kata sandi yang dapat terhubung?

Jika ini tidak dapat dilakukan, apakah ada alternatif, seperti mengelola generasi kunci SSH secara terpusat, dan mencegah pengguna membuat dan / atau menggunakan kunci mereka sendiri? Sesuatu seperti PKI, kurasa.

Lee B
sumber

Jawaban:

20

Frasa sandi yang dapat ditetapkan pada kunci pribadi tidak terkait dengan server SSH atau koneksi ke sana. Menyetel frasa sandi ke kunci privat hanyalah tindakan pengamanan yang dapat diambil pemilik kunci untuk mencegah akses ke shell jarak jauh oleh pihak ketiga jika kunci privat dicuri.

Sayangnya, Anda tidak dapat memaksa pengguna untuk mengamankan kunci pribadi mereka dengan frasa sandi. Terkadang, kunci pribadi yang tidak dilindungi diperlukan untuk mengotomatiskan akses ke server SSH jarak jauh. Satu kebiasaan yang baik Saya sangat merekomendasikan untuk kasus-kasus tersebut adalah untuk menyarankan pengguna untuk hash yang known_hosts berkas (disimpan di ~ / .ssh / known_hosts ), yang menyimpan informasi tentang host remote menghubungkan pengguna ke, dengan menggunakan perintah berikut:

ssh-keygen -H -f ~/.ssh/known_hosts

Dengan cara ini, bahkan jika pihak ketiga mendapatkan akses ke kunci privat yang tidak dilindungi, akan sangat sulit untuk mengetahui host jarak jauh mana yang memiliki kunci ini. Tentu saja, membersihkan sejarah shell adalah wajib untuk teknik ini bernilai apa pun.

Selain itu, hal lain yang harus selalu Anda ingat, adalah tidak mengizinkan root untuk login dari jarak jauh dengan menambahkan berikut ini di konfigurasi server SSH Anda (sshd_config):

PermitRootLogin no

Di sisi lain, jika Anda ingin mencegah pengguna menggunakan kunci untuk mengautentikasi, tetapi menggunakan kata sandi, Anda harus menambahkan yang berikut ini ke sshd_config Anda :

PasswordAuthentication yes
PubkeyAuthentication no
Lahir untuk berkendara
sumber
8

Itu tidak mungkin.

Pengguna dapat melakukan apa saja dengan kunci file mereka, mengubahnya menjadi tanpa kata sandi bahkan jika Anda membuatnya sebagai contoh.

siposa
sumber
3

Kamu tidak bisa Setelah pengguna memiliki data kunci yang mereka miliki, Anda tidak dapat menghentikan mereka menghapus frasa sandi. Anda harus mencari cara lain untuk melakukan otentikasi Anda.

womble
sumber
2

Untuk mendapatkan kontrol atas kunci pengguna, semua kunci harus dipindahkan ke direktori yang dimiliki root di mana kunci dapat dibaca tetapi tidak dapat dimodifikasi oleh pengguna akhir. Ini dapat dilakukan dengan memperbarui sshd_config.

Setelah file kunci berada di lokasi yang terkontrol, Anda akan memerlukan antarmuka manajemen untuk memperbarui (dan menerapkan kebijakan kata sandi) diikuti dengan distribusi kunci ke host yang diperlukan. Gulung sendiri atau lihat produk-produk seperti FoxT / Tectia dll.

PT
sumber
... yang memecah manfaat kunci publik
Patwie
0

Salah satu mitigasi adalah dengan menggunakan plugin modul PAM google authenticator. Biasanya tersedia dalam paket resmi.

Ini akan membuat 2FA tersedia melalui kode 6 digit pada ponsel cerdas Anda.

Petunjuk Di Sini: Cara Mengatur Otentikasi Multi-Faktor untuk SSH di Ubuntu 16.04

Basil A
sumber
1
Anda harus mencatat bahwa ini tidak langsung menjawab pertanyaan, tetapi merupakan alternatif (baik).
ceejayoz
1
@ceejayoz Anda benar. Saya menambahkan "Satu peringanan akan digunakan .." di awal jawaban tadi untuk memperjelas bahwa ini adalah alternatif.
Basil A
-1

SEDERHANA, Anda hanya perlu memperpanjang protokol SSH sehingga klien SSH atau agen SSH melaporkan / menetapkan tanda untuk mengatakan apakah kunci pribadi asli dienkripsi atau tidak (mungkin sisi server bahkan dapat mengajukan pertanyaan) - karena sisi klien memiliki visibilitas kunci pribadi dan bahkan sudah meminta frasa sandi saat kunci dienkripsi.

walabi
sumber