คุณสามารถให้รหัสผ่านหลายบัญชีของบัญชีผู้ใช้ได้หรือไม่


21

ฉันต้องการกำหนดรหัสผ่าน 2 รหัสให้กับบัญชีเดียว สิ่งที่ฉันอยากรู้คือ 1) เป็นไปได้และ 2) ความหมายของความปลอดภัยคืออะไร

เหตุผลที่ฉันต้องการทำเช่นนี้เพราะฉันกำลังยุ่งกับการทดสอบในท้องถิ่นและฉันคิดว่ามันจะสะดวกในบางสถานการณ์ หลังจากการวิจัยบางอย่างฉันพบสิ่งที่เรียกว่าPAMแต่ฉันพยายามค้นหาข้อมูลเกี่ยวกับวิธีการติดตั้ง / การกำหนดค่า

ฉันใช้ Ubuntu 12.04


1
ฉันอาจจะแค่ตั้งค่าsudoให้ผู้ใช้สามารถเรียกใช้คำสั่งในฐานะผู้ใช้ 2 ( sudoไม่ได้มีไว้สำหรับการเรียกใช้คำสั่งในฐานะรูท แต่สามารถเรียกใช้คำสั่งในฐานะผู้ใช้รายใดก็ได้)
cjm

คำตอบ:


16

ใช่แม้ว่าจะค่อนข้างแปลก แต่ก็สามารถทำได้

แทนที่จะพยายามใช้ด้วยตนเองเป็น/etc/password /etc/shadowวิธีการรับรองความถูกต้องตามค่าเริ่มต้นไม่มีข้อกำหนดสำหรับการกำหนดค่าวิธีที่ง่ายกว่าคือการมอบหมายการรับรองความถูกต้องให้กับส่วนหลังที่รองรับรหัสผ่านหลายรายการสำหรับผู้ใช้แล้ว

หนึ่งที่รู้จักกันดีคือLDAPซึ่งuserPasswordแอตทริบิวต์มีหลายค่าตามRFC4519 :

ตัวอย่างของความต้องการค่าหลายค่าในแอตทริบิวต์ 'userPassword' คือสภาพแวดล้อมที่คาดว่าผู้ใช้ทุกเดือนจะใช้รหัสผ่านที่แตกต่างกันซึ่งสร้างขึ้นโดยระบบอัตโนมัติบางระบบ ในช่วงเวลาการเปลี่ยนผ่านเช่นวันสุดท้ายและวันแรกของรอบระยะเวลาอาจจำเป็นต้องอนุญาตให้ใช้รหัสผ่านสองครั้งเพื่อให้รหัสผ่านสองช่วงเวลาต่อเนื่องกันถูกต้องในระบบ

แม้จะมี RFC นี้ แต่คุณอาจต้องเปลี่ยนการกำหนดค่านโยบายรหัสผ่านในการปรับใช้เซิร์ฟเวอร์ไดเรกทอรีส่วนใหญ่เพื่อให้การตั้งค่านี้ได้รับการยอมรับจริง

ในด้าน Linux, ห้ามอะไรที่จะทำมัน (ที่นี่บัญชีที่มีชื่อtestuserได้รับทั้งสองpass1และpass2เป็นuserPasswordค่าแอตทริบิวต์):

$ uname -a
Linux lx-vb 3.8.0-19-generic #29-Ubuntu SMP Wed Apr 17 18:16:28 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
$ grep VERSION /etc/os-release
VERSION="13.04, Raring Ringtail"
$ grep "^passwd" /etc/nsswitch.conf 
passwd: files ldap
$ ldapsearch -LLL -h localhost -p 1389 -D "cn=directory manager" -w xxxxxxxx "uid=testuser" userPassword
dn: uid=testuser,ou=People,dc=example,dc=com
userPassword:: e1NTSEF9b2JWYXFDcjhNQmNJVXZXVHMzbE40SFlReStldC9XNFZ0NU4yRmc9PQ==
userPassword:: e1NTSEF9eDlnRGZ5b0NhKzNROTIzOTFha1NiR2VTMFJabjNKSWYyNkN3cUE9PQ==
$ grep testuser /etc/passwd
$ getent passwd testuser
testuser:*:12345:12345:ldap test user:/home/testuser:/bin/sh
$ sshpass -p pass1 ssh testuser@localhost id
uid=12345(testuser) gid=12345 groups=12345
$ sshpass -p pass2 ssh testuser@localhost id
uid=12345(testuser) gid=12345 groups=12345
$ sshpass -p pass3 ssh testuser@localhost id
Permission denied, please try again.

นี่คือผลกระทบทางเทคนิคและความปลอดภัยที่เกี่ยวข้องกับการกำหนดค่าประเภทนั้น:

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

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

1
@JosephR คุณถูก. ฉันเพิ่งปรับปรุงคำตอบของฉันหลังจากใช้สิ่งที่ฉันแนะนำและประสบกับมัน
jlliagre

คำตอบที่ยอดเยี่ยมใช้งานได้อย่างมีเสน่ห์ในขณะนี้ ขอบคุณ :)
รวม

7

ฉันพยายามสร้าง 2 รายการสำหรับผู้ใช้ใน/etc/shadowไฟล์และมันไม่ทำงาน รายการใดที่เคยเป็นครั้งแรกคือรายการรหัสผ่านที่ใช้

ตัวอย่าง

สร้างผู้ใช้ทดสอบ

$ useradd -d /home/newuser newuser

ตั้งรหัสผ่านเป็น "super123":

$ passwd newuser

แก้ไข/etc/shadowไฟล์ด้วยตนเองและสร้างรายการที่สอง:

newuser:$6$....password #1...:15963:0:99999:7:::
newuser:$6$....password #2...:15963:0:99999:7:::

จากนั้นพยายามเข้าสู่ระบบด้วยบัญชีโดยใช้รหัสผ่าน 2 ตัว

su - newuser

รายการแรกใน/etc/shadowสิ่งที่ถูกนำไปใช้รายการในตำแหน่งที่สองไม่ทำงานถ้าคุณพลิกสิ่งเหล่านี้เพื่อ:

newuser:$6$....password #2...:15963:0:99999:7:::
newuser:$6$....password #1...:15963:0:99999:7:::

จากนั้นรหัสผ่านที่สองใช้งานได้และรหัสผ่านตัวแรกไม่ได้

ใช้ sudo

วิธีนี้เป็นแฮ็คทั้งหมดฉันจะใช้sudoมันเป็นเพียงบางส่วนที่sudoมีอยู่

คุณสามารถเพิ่มรายการนี้ลงในไฟล์ sudoers ของคุณ ( /etc/sudoers) ซึ่งจะอนุญาตให้ผู้ใช้ joe ได้รับอนุญาตให้ทำสิ่งใดตามที่คุณ

joe ALL=(yourusername) ALL

ฉันลืมไปแล้วว่าsudoสามารถทำได้ .. +1
รวม

4

หากคุณสามารถทำได้คุณอาจไม่ควรทำ

การกำหนดค่า PAM ค่อนข้างซับซ้อนและมีความจริงอย่างหนึ่งเกี่ยวกับกลไกการตรวจสอบความถูกต้อง: มีชุด จำกัด ของการกำหนดค่าที่ถูกต้อง แต่ชุดการกำหนดค่าที่ไม่ปลอดภัยไม่มีที่สิ้นสุด สิ่งนี้ทำให้มั่นใจได้ว่าหากคุณพยายามเปลี่ยนสิ่งต่าง ๆ และไม่รู้ว่าคุณกำลังทำอะไรอยู่

หากตัวเลือกอยู่ระหว่างการรักษาความปลอดภัยและ "สะดวกสบายในบางสถานการณ์" ให้เลือกแบบเก่า


+1 สำหรับ "ความปลอดภัยต่อความสะดวกสบาย" (ซึ่งฉันเห็นด้วยอย่างเต็มที่) แต่ฉันเป็นคนประเภทที่ต้องการทดสอบทุกอย่างแม้ว่าจะเป็นเพียงประสบการณ์เท่านั้นดังนั้นไม่ใช่คำตอบที่ฉันต้องการ 100%
รวม

2

คุณสามารถตั้งชื่อผู้ใช้ที่แตกต่างกันสองชื่อโดยใช้รหัสผ่านสำหรับบัญชีเดียวกัน เรียกใช้vipwเพื่อแก้ไข/etc/passwdด้วยตนเองทำซ้ำบรรทัดที่มีอยู่สำหรับบัญชีที่คุณสนใจและเปลี่ยนชื่อผู้ใช้ (และถ้าคุณชอบฟิลด์ Gecos , โฮมไดเร็กตอรี่และเชลล์) เรียกใช้และซ้ำบรรทัดสำหรับผู้ใช้ที่อยู่ในvipw -s /etc/shadowเข้าสู่ระบบภายใต้ชื่อผู้ใช้ใหม่และเรียกใช้passwdเพื่อเปลี่ยนรหัสผ่านสำหรับชื่อผู้ใช้ใหม่ ตอนนี้คุณมีชื่อผู้ใช้ที่แตกต่างกันสองชื่อพร้อมรหัสผ่านที่แตกต่างกันสำหรับบัญชีเดียวกัน (ID ผู้ใช้คือสิ่งที่กำหนดบัญชี)

นี่อาจไม่ใช่ความคิดที่ดี วิธีการอื่นอาจเหมาะสมกว่าขึ้นอยู่กับสิ่งที่คุณพยายามทำ:

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

    user1 ALL = (user2) ALL
    
  • สร้างคีย์ SSH สำหรับบัญชีที่อนุญาตให้เรียกใช้คำสั่งเฉพาะคำสั่งเดียวเท่านั้น

คุณจะคัดลอกข้อความนี้ไปที่ herehttp: //askubuntu.com/questions/567139/2-password-1-account-login ไหม
Rinzwind
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.