SSH / รหัสผ่านเข้าสู่ระบบที่แตกต่างจากรหัสผ่าน SUDO


9

ฉันต้องการใช้รหัสผ่านที่แตกต่างกันเพื่อยกระดับผู้ใช้ของฉันให้เป็นสถานะ sudo กว่ารหัสผ่านที่ฉันใช้ในการเข้าสู่ระบบ (ทั้งผ่าน GUI, เชลล์หรือ SSH) ไปยังบัญชีของฉัน เป็นไปได้ไหม

แก้ไข: เนื่องจากการตั้งค่ารหัสผ่านรูทจะอนุญาตให้เข้าสู่ระบบในฐานะรูทนี่ไม่ใช่วิธีที่ดีที่จะไป ฉันต้องการรหัสผ่าน sudo เฉพาะผู้ใช้มากกว่ารหัสผ่านรูททั้งระบบ


1
คุณสามารถอธิบายรายละเอียดเกี่ยวกับเรื่องนี้ได้ - คุณต้องการทำสิ่งนี้ทำไม
Doug Harris

1
ฉันรู้สึกว่าคำถามอธิบายตัวเองดีพอ แต่เป้าหมายคือเพื่อให้การเข้าสู่ระบบมีความปลอดภัยผ่านรหัสผ่านที่ยาวและยากและจากนั้นใช้รหัสผ่านที่แตกต่างกันสำหรับการเข้าถึง sudo เพื่อให้การบุกรุกบัญชีของผู้ใช้
Richard

ฉันได้ยินมาว่าเป็นไปได้ที่จะทำ sudo ผ่านคีย์ rsa / dsa ซึ่งสามารถมีข้อความรหัสผ่านที่คุณต้องการ
Rob

คำตอบ:


2

จากมนุษย์ 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.

หรือคุณสามารถแบนการล็อกอินด้วยรหัสผ่านผ่าน ssh อย่างสมบูรณ์ ต้องการคีย์รหัสผ่านที่เข้ารหัสสำหรับการล็อกอินระยะไกล จากนั้นคุณมีอิสระที่จะใช้รหัสผ่านสำหรับ sudo ตัวเลือกที่เกี่ยวข้องคือ

จาก man sshd_config

 PasswordAuthentication
         Specifies whether password authentication is allowed.  The default
         is “yes”.

ขอบคุณสำหรับความช่วยเหลือ Chas Owens ฉันกลัวว่าผลข้างเคียงของโซลูชันของคุณคือบัญชีรูทจะมีรหัสผ่านและดังนั้นจึงเป็นไปได้ที่จะเข้าสู่ระบบในฐานะรูทซึ่งไม่ใช่ประตูที่ฉันต้องการเปิด ฉันต้องการรหัสผ่าน sudo เฉพาะผู้ใช้มากกว่ารหัสผ่านรูททั้งระบบ
Richard

คุณสามารถปิดใช้งานการเข้าสู่ระบบรูทจาก sshd_config ได้เช่นกัน
Rob

1

คุณกำลังมองหาสิ่งนี้แทนมนุษย์ 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 ฉันกลัวว่าผลข้างเคียงของโซลูชันของคุณคือบัญชีรูทจะมีรหัสผ่านและดังนั้นจึงเป็นไปได้ที่จะเข้าสู่ระบบในฐานะรูทซึ่งไม่ใช่ประตูที่ฉันต้องการเปิด ฉันต้องการรหัสผ่าน sudo เฉพาะผู้ใช้มากกว่ารหัสผ่านรูททั้งระบบ
Richard

ผู้ใช้นั้นไม่จำเป็นต้องเป็นผู้ใช้รูท แต่เป็นค่าเริ่มต้นที่รูทหากคุณไม่ได้ระบุไว้ คุณสามารถทดลองใช้เพื่อดูว่าเหมาะสำหรับคุณหรือไม่ unix นั้นค่อนข้างเปิดกว้างและหากสิ่งเหล่านี้ยังไม่ได้ผลสำหรับคุณคุณสามารถเขียนสคริปต์ wrapper หรือแก้ไข sudo (ถ้าคุณรู้ว่า c) เพื่อทำสิ่งที่คุณต้องการ
johnshen64

@ johnshen64 ฉันคิดว่าเขาคัดค้านความจริงที่ว่าจะใช้รหัสผ่านเดียวกันสำหรับผู้ใช้ทุกคน
Chas Owens

ฉันเห็น แต่ผู้ใช้ที่เป็นผู้ดูแลระบบสามารถสร้างขึ้นสำหรับผู้ใช้แต่ละคนพูด $ {USER} foradmin เพื่อให้ผู้ใช้ระบุ -u $ {USER} foradmin เสมอแม้ว่าจะบังคับใช้ sudo ที่ยังคงต้องถูกแทนที่ด้วยสคริปต์ที่กำหนดเอง
johnshen64

1

วิธีการเกี่ยวกับการปิดการใช้งานการเข้าสู่ระบบรหัสผ่านผ่าน SSH และอนุญาตให้เข้าสู่ระบบกุญแจสาธารณะที่คุณสามารถกำหนดรหัสผ่านที่ยากต่อการเดาของคุณ จากนั้นรหัสผ่านในเครื่องจะสั้นลงและใช้งานโดย sudo

นอกเหนือจากนั้นคุณจะต้องกำหนดค่า/etc/pam.d/sudoให้ใช้โมดูล (หรือเพิ่มเติม) ที่แตกต่างกันได้อย่างรวดเร็วก่อนpam_dialpassอาจอนุญาตสิ่งที่คุณต้องการ

นอกจากนี้คุณยังสามารถกำหนดค่าการกำหนดค่า LDAP สำหรับรหัสผ่านหนึ่งและรหัสผ่านท้องถิ่นสำหรับอีก ทุกอย่างขึ้นอยู่กับการเปลี่ยนแปลงที่คุณสามารถและเต็มใจที่จะทำการเปลี่ยนแปลงโมดูลที่มีให้เป็นต้น


ขอบคุณสำหรับความช่วยเหลือของคุณ Bram ข้อเสนอแนะแรกของคุณจะใช้งานได้บันทึกว่าการรับรองความถูกต้องของรหัสสาธารณะสามารถห้ามมิให้ทำงานได้เว้นแต่ว่าคุณได้เตรียมที่จะถ่ายโอนไฟล์คีย์ไปแล้ว
Richard

1

โซลูชันที่ 1: newgrp

วิธีง่ายๆในการจัดการกรณีการใช้งานของคุณคือใช้:NOPASSWDร่วมกับกลุ่มและรหัสผ่านกลุ่ม:

เพิ่มบรรทัดไปยัง sudoers:

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

สร้างกลุ่มที่มีการป้องกันรหัสผ่าน:

groupadd rudo
gpasswd  rudo # Enter passwd

ตอนนี้เมื่อคุณเข้าสู่ระบบในฐานะผู้ใช้ที่ไม่มีสิทธิพิเศษ (สมมติว่าคุณยังไม่ได้อยู่ในrudoกลุ่ม) เข้าสู่rudoกลุ่มที่จุดนี้คุณจะได้รับพร้อมท์สำหรับรหัสผ่าน

login user
newgrp rudo

ตอนนี้คุณสามารถเรียกใช้sudoรหัสผ่านน้อยกว่าตราบใดที่คุณยังคงเข้าสู่ระบบในกลุ่ม


โซลูชัน 2: runaspw

runaspwวิธีที่ดีกว่าอาจจะเป็นความปลอดภัยมากขึ้นที่จะทำใช้นี้ runaspwมีการเชื่อมโยงกับrunas_defaultตัวเลือกดังนั้นคุณต้องเพิ่มตัวเลือกนั้นด้วย

สมมติว่าคุณมี%sudoรายการกลุ่มเริ่มต้นอยู่แล้ว:

%sudo   ALL=(ALL:ALL) ALL

เพิ่มบรรทัดเหล่านี้ไปยังไฟล์ sudoers:

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

ตอนนี้เพิ่มsudoผู้ใช้ใหม่ด้วยรหัสผ่าน:

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

ตอนนี้ผู้ใช้กลุ่ม sudo จะได้รับพร้อมต์สำหรับ passudo ของผู้ใช้ sudo แต่เฉพาะผู้ใช้ในกลุ่ม sudo เท่านั้นที่จะสามารถ sudo (ซึ่งแตกต่างจากโซลูชันกลุ่มด้านบนซึ่งทุกคนในกลุ่มหรือกลุ่ม passwd สามารถ sudo)

ปัญหาเล็กน้อยคือผู้ใช้ runas ที่เป็นค่าเริ่มต้นอยู่ในขณะนี้sudoดังนั้น sudo ในฐานะ root คุณต้องระบุรูตอย่างชัดเจน:

sudo -u root <cmd>

แต่ง่ายพอที่จะกำหนด alias ( alias sudo='sudo -u root') หรือคำสั่ง sudo ทางอ้อม

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.