Saya telah menyiapkan .ssh / berwenang_keys dan saya dapat masuk dengan "pengguna" baru menggunakan kunci pub / privat ... Saya juga telah menambahkan "pengguna" ke daftar sudoers ... masalah yang saya miliki sekarang adalah ketika Saya mencoba menjalankan perintah sudo, sesuatu yang sederhana seperti:
$ sudo cd /root
itu akan meminta saya untuk kata sandi saya, yang saya masukkan, tetapi tidak berfungsi (saya menggunakan kata sandi kunci pribadi yang saya tetapkan)
Juga, saya telah menonaktifkan kata sandi pengguna menggunakan
$ passwd -l user
Apa yang saya lewatkan?
Di suatu tempat, pernyataan awal saya disalahpahami ...
Saya mencoba mengeraskan sistem saya ... tujuan utamanya adalah menggunakan kunci pub / pribadi untuk melakukan login versus otentikasi kata sandi sederhana. Saya telah menemukan cara mengatur semua itu melalui file Authorized_key.
Selain itu saya pada akhirnya akan mencegah login server melalui akun root. Tetapi sebelum saya melakukan itu saya perlu sudo bekerja untuk pengguna kedua (pengguna yang saya akan masuk ke sistem dengan semua waktu).
Untuk pengguna kedua ini saya ingin mencegah login kata sandi reguler dan hanya memaksa login kunci priv / pub, jika saya tidak mengunci pengguna melalui "passwd -l user ... maka jika saya tidak menggunakan kunci, saya masih bisa masuk ke server dengan kata sandi biasa.
Tapi yang lebih penting saya perlu membuat sudo bekerja dengan pub / setup kunci pribadi dengan pengguna yang passwordnya dinonaktifkan.
Sunting: Oke, saya pikir saya sudah mendapatkannya (solusinya):
1) Saya telah menyesuaikan / etc / ssh / sshd_config dan mengatur PasswordAuthentication no
Ini akan mencegah login kata sandi ssh (pastikan untuk memiliki pengaturan kunci publik / pribadi yang berfungsi sebelum melakukan ini
2) Saya telah menyesuaikan daftar sudoers visudo
dan menambahkan
root ALL=(ALL) ALL
dimas ALL=(ALL) NOPASSWD: ALL
3) root adalah satu-satunya akun pengguna yang akan memiliki kata sandi, saya menguji dengan dua akun pengguna "dimas" dan "sherry" yang tidak memiliki set kata sandi (kata sandi kosong, passwd -d user
)
Hal di atas pada dasarnya mencegah semua orang masuk ke sistem dengan kata sandi (kunci publik / pribadi harus disiapkan).
Selain itu pengguna dalam daftar sudoers memiliki kemampuan admin. Mereka juga dapat su
ke akun yang berbeda. Jadi pada dasarnya "dimas" dapat sudo su sherry
, namun "dimas TIDAK dapat melakukan su sherry
. Demikian pula setiap pengguna TIDAK dalam daftar sudoers TIDAK dapat melakukan su user
atau sudo su user
.
CATATAN Pekerjaan di atas tetapi dianggap keamanannya buruk. Setiap skrip yang dapat mengakses kode sebagai pengguna "dimas" atau "sherry" akan dapat menjalankan sudo untuk mendapatkan akses root. Bug di ssh yang memungkinkan pengguna jarak jauh untuk masuk meskipun ada pengaturan, eksekusi kode jarak jauh dalam sesuatu seperti Firefox, atau kesalahan lain yang memungkinkan kode yang tidak diinginkan dijalankan karena pengguna sekarang dapat dapat berjalan sebagai root. Sudo harus selalu memerlukan kata sandi atau Anda juga dapat login sebagai root alih-alih beberapa pengguna lain.
passwd -l
menghapus kata sandi dalam arti bahwa akun tersebut TERKUNCI - artinya, kata sandi tidak akan berfungsi. Anda ingin mematikan otentikasi kata sandi di sudo.Apa yang ingin Anda lakukan adalah mungkin tetapi itu akan memerlukan beberapa pengalaman karena Anda harus mengkompilasi modul PAM yang disebut pam-ssh-agent-auth .
Prosesnya cukup sederhana:
Edit konfigurasi sudo:
Tambahkan yang berikut ini:
Lanjutkan dengan mengubah pengaturan PAM sudo:
Tambahkan (tepat di atas garis sertakan @):
sumber
/etc/pam.d/sudo
instruksi) sudah ketinggalan zaman untuk versi Ubuntu saat ini. Saya telah memberikan instruksi yang diperbarui dalam jawaban saya.Jawaban Andre de Miranda memberikan solusi yang bagus menggunakan pam_ssh_agent_auth , tetapi bagian-bagiannya sudah ketinggalan zaman. Terutama
/etc/pam.d/sudo
instruksi ketika menggunakan banyak versi Linux saat ini.Jika Anda menjalankan Ubuntu 12.04 tepat, saya sebenarnya telah menyederhanakan prosesnya dengan menyediakan pam_ssh_agent_auth yang dibuat dari ppa: ppa: cpick / pam-ssh-agent-auth .
Anda dapat menginstal paket dengan menjalankan:
Setelah instalasi, jika Anda ingin menggunakan modul PAM ini dengan sudo Anda harus mengkonfigurasi pengaturan sudo dan konfigurasi PAM, di Ubuntu 12,04 tepatnya Anda dapat melakukannya dengan membuat dua file berikut:
/etc/sudoers.d/pam-ssh-agent-auth:
/etc/pam.d/sudo:
Jika Anda menggunakan chef, proses di atas dapat diotomatiskan dengan buku masak saya, ditemukan di salah satu dari dua lokasi berikut:
https://github.com/cpick/pam-ssh-agent-auth
http: //community.opscode .com / buku masak / pam-ssh-agent-auth .
Direktori buku masak
files
berisi file/etc/pam.d/sudo
dan/etc/sudoers.d/pam-ssh-agent-auth
dijelaskan di atas yang bekerja dengan Ubuntu 12.04 tepat dan harus menjadi titik awal yang bermanfaat ketika menggunakan versi / distro lain.sumber
Satu-satunya cara yang saya tahu untuk memotong kata sandi adalah dengan menonaktifkannya di
sudoers
file Anda .Sesuatu seperti ini akan memberi
root
dan semua anggota akseswheel
penuh tanpa kata sandi:Ini sama sekali tidak disarankan . Jika Anda memiliki perintah khusus untuk dijalankan oleh server ini, beri mereka akses hanya ke perintah itu. Atau lebih baik lagi, temukan cara lain untuk mencapai apa yang ingin Anda lakukan yang tidak perlu membuat lubang keamanan.
sumber