Saya menyiapkan beberapa ubuntu
kotak, dan menggunakan opscode chef
sebagai alat konfigurasi. Akan cukup mudah untuk menginstal kunci publik untuk setiap pengguna di masing-masing server ini, dan menonaktifkan otentikasi kata sandi.
Namun, para pengguna juga harus memiliki sudo
hak istimewa, yang secara default memerlukan kata sandi.
Jika saya ingin menggunakan kunci publik pengguna sebagai metode manajemen akses dan memungkinkan pengguna sudo
hak istimewa, apakah itu berarti saya juga harus menyiapkan pengguna dengan NOPASSWD: ALL
di visduo
, atau apakah ada cara yang pengguna dapat mengubah password mereka sendiri jika mereka hanya memiliki otentikasi kunci publik?
man sudoers
akan menghasilkan info tentang memiliki perintah tertentu yang dapat dijalankan dengan sudo tanpa perlu kata sandi pengguna sama sekali. Anda bahkan dapat menambahkan shellscript ke / etc / sudoers yang memungkinkan pengaturan "kata sandi" per pengguna tanpa perlu kata sandi sebelumnya.NOPASSWD: ALL
yang menjadi bagian dari anggota tim. Jika Anda dapat menyarankan solusi yang lebih baik, silakan posting sebagai jawaban.Jawaban:
Sudo, dalam konfigurasi yang paling umum, mengharuskan pengguna untuk mengetikkan kata sandi. Biasanya, pengguna sudah menggunakan kata sandi untuk mengautentikasi ke dalam akun, dan mengetik kata sandi lagi adalah cara untuk mengonfirmasi bahwa pengguna yang sah tidak meninggalkan konsolnya dan dibajak.
Dalam pengaturan Anda, kata sandi pengguna hanya akan digunakan untuk otentikasi ke sudo. Secara khusus, jika kunci SSH pengguna dikompromikan, penyerang tidak akan dapat meningkatkan hak root di server. Penyerang dapat menanam logger kunci ke dalam akun, tetapi logger kunci ini dapat dideteksi oleh pengguna lain, dan bahkan dapat ditonton secara otomatis.
Seorang pengguna biasanya perlu mengetahui kata sandi saat ini untuk mengubahnya menjadi kata sandi yang berbeda. The
passwd
Program memverifikasi ini (dapat dikonfigurasi untuk tidak, tapi ini tidak berguna atau sama sekali diinginkan dalam skenario Anda). Namun, root dapat mengubah kata sandi pengguna mana pun tanpa mengetahui yang lama; karenanya pengguna dengan kekuatan sudo dapat mengubah kata sandi sendiri tanpa memasukkannya saatpasswd
diminta dengan menjalankansudo passwd $USER
. Jikasudo
dikonfigurasi untuk memerlukan kata sandi pengguna, maka pengguna harus tetap mengetikkan kata sandisudo
.Anda dapat menonaktifkan otentikasi kata sandi secara selektif. Dalam situasi Anda, Anda akan menonaktifkan otentikasi kata sandi di ssh, dan mungkin di layanan lain. Sebagian besar layanan di sebagian besar kesatuan modern (termasuk Ubuntu) menggunakan PAM untuk mengonfigurasi metode otentikasi. Di Ubuntu, file konfigurasi PAM hidup
/etc/pam.d
. Untuk menonaktifkan otentikasi kata sandi, komentariauth … pam_unix.so
baris masuk/etc/pam.d/common-auth
. Selain itu, pastikan Anda memilikiPasswordAuthentication no
dalam/etc/ssh/sshd_config
untuk built-in otentikasi password menonaktifkan sshd ini.Anda mungkin ingin mengizinkan beberapa pengguna administratif untuk masuk dengan kata sandi, atau untuk mengizinkan otentikasi kata sandi di konsol. Ini dimungkinkan dengan PAM (ini cukup fleksibel), tetapi saya tidak bisa memberi tahu Anda seberapa jauh dari kepala saya; ajukan pertanyaan terpisah jika Anda memerlukan bantuan.
sumber
sudo passwd
akan mengubah kata sandi untuk pengguna saat ini, bukan untuk pengguna sudo?sudo
dapat mengubah kata sandi mereka sendiri. Perintah yang tepat tidak terlalu penting, tetapi untuk lebih detail, itu adalah disudo passwd bob
manabob
nama pengguna, atau sesuatu yang setara. Tanpa argumen,sudo passwd
memang akan mengubah kata sandi untuk root.Anda dapat menggunakan modul pam_ssh_agent_auth . Cukup mudah untuk dikompilasi, dan kemudian tambahkan saja entri
sebelum entri lain
auth
(atauinclude
) di/etc/pam.d/sudo
dan
ke
/etc/sudoers
(melaluivisudo
).Sekarang setiap pengguna dapat mengotentikasi
sudo
melalui agen SSH (diteruskan atau lokal) atau kata sandi mereka. Mungkin bijaksana untuk meminta pengguna Anda untuk menggunakanssh-add -c
sehingga setiapsudo
panggilan setidaknya akan memerlukan konfirmasi.sumber
Ya, ini sangat tidak aman dan juga memungkinkan pengguna untuk mengakses kata sandi pengguna lain, tetapi karena mereka memiliki sudo, tidak banyak yang dapat Anda lakukan.
Pada dasarnya, Anda melakukan hal berikut:
$ sudo -i
Sekarang, kita root. Kami memiliki akses ke semuanya.
# passwd $username
$ username bisa menjadi nama pengguna siapa pun.
Boom, kata sandi berubah. Sekali lagi, sangat tidak aman karena Anda dapat mengubah siapa pun, tetapi berhasil, tetapi berhasil. Saya tidak merekomendasikannya, tetapi menawarkan jawaban ini sebagai contoh apa yang tidak boleh dilakukan.
sumber
sudo -i
tanpa kata sandi pengguna saat ini.sudo bash
bisa tanpa password mengingat pengaturan itu dalam/etc/sudoers
file. Saya pikir @jrg seperti yang dikatakan lebih fokus pada masalah ketidakamanan dengan sudo di sinisudo -i
, Anda dapat langsung beralih kesudo passwd $username
@Miro, Anda tidak perlu tahu kata sandi pengguna saat ini. Anda hanya perlu tahu kata sandi root untuk menggunakan sudoMaksud kata sandi adalah untuk memastikan bahwa peretas yang mendapatkan kunci pengguna, atau menemukan terminal tanpa pengawasan tidak dapat memperoleh akses root. Untuk alasan ini saya tidak akan merekomendasikan solusi apa pun yang melibatkan sudo tanpa kata sandi.
Saya sarankan Anda tetap sederhana: mungkin email pengguna password default dengan instruksi ketat untuk mengubah ASAP, atau masukkan script di mereka
.profile
atau.login
atau sesuatu seperti itu menuntut password baru pada login pertama mereka. Itu bisa menonaktifkan dirinya sendiri ketika selesai, dan Anda bisa menggunakanexpect
untuk memasukkan kata sandi yang sudah ada sehingga mereka tidak perlu mengetahuinya.sumber
> Ini seharusnya memungkinkan Anda memiliki pengguna yang hanya bisa masuk menggunakan kunci publik dan tidak bisa menggunakan kata sandi untuk masuk. Namun dia akan dipaksa untuk mengubah kata sandi saat pertama kali dia masuk ... tetapi tanpa harus memberitahunya suatu hari nanti kata sandi di depan ... Pengguna hanya akan diminta untuk mengatur ulang kata sandi dan selanjutnya mereka dapat menggunakannya hanya untuk sudo tetapi tidak akan bisa masuk (ssh) menggunakan kata sandi itu. Perhatikan bahwa triknya di sini adalah untuk tidak memberi tahu pengguna beberapa kata sandi boneka yang kemudian mereka harus masukkan pada saat masuk begitu mereka diminta untuk mengubah kata sandi mereka ... Pada dasarnya tidak ada komunikasi dari admin (root) untuk pengguna yang sebenarnya diperlukan.
sumber