sudo tanpa kata sandi saat login dengan kunci pribadi SSH

23

Apakah mungkin membuat perintah sudo untuk mendukung kunci pribadi SSH, sehingga ketika pengguna login menggunakan kunci pribadi maka ia bisa sudo tanpa mengetikkan kata sandi.

Ini akan memungkinkan menyimpan kata sandi UNIX sysadmin di cold storage terenkripsi dan tidak perlu mengaksesnya, dengan asumsi pengguna menggunakan kunci SSH pribadi aman selalu untuk login di server.

Mikko Ohtamaa
sumber
askubuntu.com/a/135838 Jika Anda menempatkan pengguna tersebut ke dalam grup, Anda pasti bisa!
Rob
coba sudo visudodan ubah kata sandi Anda untuk NOPASSWD: ALLmelihat apakah itu berhasil
pneumatik
3
@AlanTuring Itu juga akan berfungsi untuk pengguna dalam grup yang mengidentifikasi melalui kata sandi.
Xyon
@AlanTuring Itu secara efektif akan mengurangi keamanan server - Saya hanya ingin pengguna tertentu, tidak semua, sudo
Mikko Ohtamaa
Dimungkinkan untuk memberikan hak istimewa kepada pengguna tertentu. Lihat jawaban saya.
Isaac Rabinovitch

Jawaban:

10

Opsi untuk melakukannya telah ada sejak (setidaknya) April 2014 .

Anda perlu menginstal paket yang disebut pam_ssh_agent_auth(tersedia untuk Centos 7 di luar kotak, YMMV), lalu konfigurasikan /etc/pam.d/sudountuk menerimanya sebagai metode otorisasi. Terakhir, Anda mungkin perlu menambahkan SSH_AUTH_SOCKke daftar variabel lingkungan yang bertahan selama sudo.

Wiki Gentoo memiliki detail untuk langkah-langkah ini.

Liam Dawson
sumber
1
Bagus, terima kasih Liam. Sayang sekali saya belum pernah ke sysadmin selama bertahun-tahun!
Mikko Ohtamaa
1

Ini tidak dimungkinkan tanpa beberapa perubahan kode serius ke sudo dan sshd. Sudo tidak tahu tentang metode login, dan ssh tidak mempublikasikan ke program lain apa pun yang akan menunjukkan apakah kunci publik, kata sandi, atau mekanisme lain digunakan untuk login.

Seperti kata orang lain, Anda dapat menggunakan opsi NOPASSWD di sudoers - ini akan berlaku untuk pengguna yang ditentukan selalu, meskipun, tidak hanya ketika mereka menggunakan ssh dengan kunci pribadi.

Jika Anda benar-benar ingin, mungkin ada trik yang dapat Anda lakukan dengan program suid yang memeriksa log sshd dan mengunci / mengedit file sudoers untuk membiarkan pengguna itu melakukan sudo tanpa kata sandi, dan tugas berkala untuk mencabut izin ini.

Semua yang dikatakan, saya pikir ini adalah ide yang buruk. Membutuhkan kata sandi untuk perintah istimewa memiliki beberapa manfaat bagus yang tidak dimiliki SSH kunci pribadi. Khususnya, ini memungkinkan Anda memiliki batas waktu untuk auth (kata sandi harus dimasukkan kembali, tidak berlaku untuk sesi ssh), memungkinkan Anda memiliki minimum dan rotasi kata sandi (tidak seperti kunci ssh, yang memiliki frasa sandi di luar kendali server).

Dagon
sumber
11
"Itu tidak bisa dilakukan" bukanlah jawaban, terutama ketika itu bisa dilakukan.
Isaac Rabinovitch
Mengubah jawaban yang benar berisi informasi baru.
Mikko Ohtamaa
1

Beberapa jawaban Arahkan ke sudo tanpa Kata Sandi pengguna yang terpisah. Anda harus menyadari bahwa ini akan mengurangi keamanan Anda.

Untuk pengguna yang sudah sangat terotentikasi dengan sertifikat, ini mungkin tidak menjadi masalah karena ia dalam posisi sertifikat yang secara teoritis bisa membuatnya root.

Namun, jika Anda berpikir tentang kerentanan yang akan memberikan penyerang dengan shell pengguna terbatas dan pengguna ini memiliki NOPASSWD yang diatur dalam file sudoers, penyerang adalah root tanpa memiliki kredensial ke Sistem sama sekali.

Jika sudo memerlukan kata sandi dari pengguna, penyerang perlu waktu dan keberuntungan untuk meningkatkan hak istimewanya untuk melakukan root.

Sebastian Brabetz
sumber