SSH / Kata Sandi Masuk Berbeda Dari SUDO Kata Sandi

9

Saya ingin menggunakan kata sandi yang berbeda untuk meningkatkan status sudo pengguna saya daripada kata sandi yang saya gunakan untuk masuk (baik melalui GUI, shell, atau SSH) ke akun saya. Apakah ini mungkin?

EDIT: Karena mengatur kata sandi root akan memungkinkan masuk sebagai root, ini bukan cara yang baik untuk melanjutkan. Saya lebih suka kata sandi sudo khusus pengguna, daripada kata sandi root seluruh sistem.

Richard
sumber
1
Bisakah Anda menguraikan ini - mengapa Anda ingin melakukan ini?
Doug Harris
1
Saya merasa pertanyaannya menjelaskan dirinya dengan cukup baik, tetapi tujuannya adalah untuk membuat login aman melalui kata sandi yang panjang dan sulit dan kemudian menggunakan kata sandi yang berbeda untuk akses sudo, sehingga kompromi akun pengguna tidak secara otomatis menyediakan akses sudo.
Richard
Saya pernah mendengar bahwa mungkin untuk melakukan sudo melalui kunci rsa / dsa, yang dapat memiliki frasa sandi apa pun yang Anda inginkan.
Rob

Jawaban:

2

dari man sudoers:

rootpw          If set, sudo will prompt for the root password instead of the
                password of the invoking user.  This flag is off by default.

runaspw         If set, sudo will prompt for the password of the user defined
                by the runas_default option (defaults to root) instead of the
                password of the invoking user.  This flag is off by default.

Atau Anda bisa saja melarang login berbasis kata sandi melalui ssh sepenuhnya. Membutuhkan kunci terenkripsi frasa sandi untuk login jarak jauh. Maka Anda bebas menggunakan kata sandi untuk sudo. Opsi yang relevan adalah

dari man sshd_config

 PasswordAuthentication
         Specifies whether password authentication is allowed.  The default
         is “yes”.
Chas. Owens
sumber
Terima kasih atas bantuan Anda, Chas. Owens. Saya khawatir efek samping dari solusi Anda adalah bahwa akun root akan memiliki kata sandi dan karena itu mungkin untuk masuk sebagai root, yang bukan pintu yang ingin saya buka. Saya lebih suka kata sandi sudo khusus pengguna, daripada kata sandi root seluruh sistem.
Richard
Anda dapat menonaktifkan login root dari sshd_config juga
Rob
1

Apakah Anda mencari ini sebagai gantinya pria sudoers?

   targetpw        If set, sudo will prompt for the password of the user
                   specified by the -u option (defaults to root) instead of the
                   password of the invoking user. 
johnshen64
sumber
Terima kasih atas bantuan Anda, johnshen64. Saya khawatir efek samping dari solusi Anda adalah bahwa akun root akan memiliki kata sandi dan karena itu mungkin untuk masuk sebagai root, yang bukan pintu yang ingin saya buka. Saya lebih suka kata sandi sudo khusus pengguna, daripada kata sandi root seluruh sistem.
Richard
bahwa pengguna tidak harus menjadi pengguna root, itu hanya default untuk root jika Anda tidak menentukannya. Anda dapat mencobanya untuk melihat apakah itu cocok untuk Anda. unix cukup terbuka dan jika ini masih tidak bekerja untuk Anda, Anda bahkan dapat menulis skrip wrapper atau bahkan memodifikasi sudo (jika Anda tahu c) untuk melakukan apa yang Anda inginkan.
johnshen64
@ johnshen64 Saya pikir dia keberatan dengan fakta bahwa kata sandi yang sama akan digunakan untuk semua pengguna.
Chas. Owens
Saya mengerti, tetapi pengguna admin dapat dibuat untuk setiap pengguna, katakan $ {USER} foradmin, sehingga pengguna selalu menentukan -u $ {USER} foradmin, meskipun untuk memastikan bahwa sudo masih perlu diganti dengan skrip khusus.
johnshen64
1

Bagaimana menonaktifkan logon kata sandi melalui SSH dan mengizinkan masuk kunci publik tempat Anda dapat mengatur kata sandi yang sulit ditebak. Kemudian kata sandi lokal bisa lebih pendek dan digunakan oleh sudo.

Selain itu Anda harus mengkonfigurasi /etc/pam.d/sudountuk menggunakan modul yang berbeda (atau tambahan), sekilas pam_dialpassmungkin memungkinkan apa yang Anda butuhkan.

Anda juga dapat mengonfigurasi konfigurasi LDAP untuk satu dan kata sandi lokal untuk yang lain. Itu semua akan tergantung pada seberapa banyak perubahan yang Anda bisa dan mau lakukan, modul apa yang tersedia dll.

Bram
sumber
Terima kasih atas bantuan Anda, Bram. Saran pertama Anda akan berhasil, kecuali bahwa otentikasi kunci publik dapat menjadi penghalang untuk dikerjakan, kecuali jika Anda sudah siap untuk mentransfer file-file kunci.
Richard
1

SOLUSI 1: newgrp

Cara sederhana untuk mengatasi kasus penggunaan Anda adalah menggunakan :NOPASSWDdalam kombinasi dengan grup dan sandi grup:

Tambahkan baris ke sudoers:

%rudo   ALL=(ALL:ALL) NOPASSWD:ALL

Buat grup yang dilindungi sandi:

groupadd rudo
gpasswd  rudo # Enter passwd

Sekarang ketika Anda login sebagai pengguna yang tidak berhak (dengan asumsi Anda belum masuk dalam rudogrup), login ke rudogrup, di mana Anda akan diminta kata sandi.

login user
newgrp rudo

Sekarang Anda dapat menjalankan tanpa sudokata sandi, selama Anda tetap masuk ke grup.


SOLUSI 2: runaspw

Cara yang lebih baik, mungkin lebih aman untuk melakukan ini menggunakan runaspw. runaspwdikaitkan dengan runas_defaultopsi sehingga Anda harus menambahkan opsi itu juga.

Dengan asumsi Anda sudah memiliki %sudoentri grup default :

%sudo   ALL=(ALL:ALL) ALL

tambahkan baris ini ke file sudoers:

Defaults:%sudo  runas_default=sudo
Defaults:%sudo  runaspw

Sekarang tambahkan sudopengguna baru dengan kata sandi:

useradd sudo -d /nonexistent -s /usr/sbin/nologin -MNr
passwd sudo

Sekarang pengguna grup sudo akan diminta untuk passwd pengguna sudo tetapi hanya pengguna dalam grup sudo yang dapat sudo (tidak seperti dengan solusi grup di atas, di mana siapa pun dalam grup atau dengan passwd grup dapat sudo).

Masalah kecil adalah runas default pengguna sekarang sudojadi untuk sudo sebagai root Anda harus secara eksplisit menentukan root:

sudo -u root <cmd>

Tapi cukup mudah untuk mendefinisikan alias ( alias sudo='sudo -u root') atau perintah sudo tidak langsung.

spinkus
sumber