วิธีการให้ผู้ใช้เปลี่ยนรหัสผ่านแซมบ้า


10

ฉันมีเซิร์ฟเวอร์ Samba สำหรับผู้ใช้ประมาณ 5 คน (ความปลอดภัย = ผู้ใช้) และฉันต้องการวิธีที่ผู้ใช้เหล่านี้จะเปลี่ยนรหัสผ่านโดยไม่ต้องมีส่วนร่วมของฉันดังนั้นฉันจึงมีความคิดดังต่อไปนี้ ปลอดภัยไหม มีวิธีที่ดีกว่า (เหมือนง่ายกว่า) หรือไม่ เราเคยมีหน่วย SWAT สำหรับเรื่องนี้ แต่ไม่มาก


บนเซิร์ฟเวอร์: สร้างผู้ใช้ที่ถูก จำกัด (/ bin / rbash + PATH ไปยังไดเรกทอรีเดียว)

$ sudo adduser --shell /bin/rbash pwchange

$ cat /etc/passwd
  pwchange:x:1001:1001:pwchange,,,:/home/pwchange:/bin/rbash

$ sudo vi /home/pwchange/.bashrc
  Add:
  export PATH=/usr/local/pwchange

$ sudo ln -s /usr/bin/smbpasswd /usr/local/pwchange/smbpasswd

แนวคิดนี้คือว่าคำสั่ง sambpasswd เท่านั้นที่สามารถรันได้โดยผู้ใช้ pwchange บัญชี unix สำหรับผู้ใช้ Samba ไม่มีรหัสผ่าน (เช่นเข้าสู่ระบบผ่านบัญชีเหล่านี้ไม่ได้รับอนุญาต) ผู้ใช้แซมบ้าจะสามารถใช้บัญชีที่ถูก จำกัด นี้สำหรับการเปลี่ยนรหัสผ่านด้วยตนเองของแซมบ้าได้ด้วยตนเอง ... ไม่มีการสำรวจเซิร์ฟเวอร์!


ลูกค้า: เปลี่ยนรหัสผ่าน Samba ผ่าน Terminal หรือ Putty (Windows)

user1@A3700:~$ ssh pwchange@192.168.1.14

pwchange@V220:~$ smbpasswd -U user1
Old SMB password:
New SMB password:
Retype new SMB password:
Password changed for user user1

แต่ฉันคิดว่าsmbpasswdมีไว้สำหรับผู้ใช้และผู้ดูแลระบบเหมือนกันในการเปลี่ยนรหัสผ่าน ... นั่นคือสิ่งที่คุณต้องการหรือไม่
George Udosen

ในกรณีนี้บัญชี Unix ของผู้ใช้ไม่มีรหัสผ่านดังนั้น user1 ไม่สามารถเข้าสู่ระบบในฐานะ user1@192.168.1.14 เซิร์ฟเวอร์ Samba ได้รับการตั้งค่าเป็น "ความปลอดภัย = ผู้ใช้" และข้อ จำกัด ของไฟล์ถูกตั้งค่าใน smb.conf ผู้ใช้ไม่ได้รับอนุญาตให้เข้าสู่ระบบ Unix เนื่องจากสิทธิ์ของไฟล์ Unix พื้นฐานนั้นได้รับอนุญาตมากกว่าการรวมกันของการอนุญาตไฟล์ Samba และ Unix (ไม่ได้ใช้ Unix ACLs ที่ขยายเพิ่ม)
brucehohl

ที่วิทยาลัยของฉันเรามีพอร์ทัลที่ให้บริการตัวเองซึ่งผู้ใช้สามารถรับรองความถูกต้องโดยใช้การตรวจสอบรหัสและ SMS และในพื้นหลังเราได้ออกคำสั่ง smbpasswd
Rabin

คำตอบ:


1

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

สิ่งที่ดูเหมือนว่าคุณต้องการคือการอนุญาตให้พวกเขาเรียกใช้smbpasswdคำสั่งจากบัญชีผู้ใช้ของตนเองเท่านั้นในขณะที่ยังคงเทียบเท่ากับnologinบัญชี

สามารถทำได้ด้วยการใช้ตัวเลือก "ForceCommand" ใน sshd_config ของคุณ

ลองสิ่งนี้:

  1. ให้สิทธิ์ผู้ใช้แต่ละคนด้วยการเป็นสมาชิกบัญชี Samba ให้กับกลุ่มเดียวกัน สำหรับตัวอย่างของเราสมมุติว่า "sambaOnly":

    #From Root
    groupadd sambaOnly
    usermod -a -G sambaOnly Joe
    
  2. ต่อไปเราต้องการเปลี่ยนไฟล์ sshd_config ของเราเพื่อให้มีสิ่งต่อไปนี้:

    #From Root
    cat << EOF >> /etc/ssh/sshd_config
    Match Group sambaOnly
        ForceCommand smbpasswd
    EOF
    

โอมเพี้ยง จากความเข้าใจของฉัน (และการทดสอบสั้น ๆ ) หมายความว่าเมื่อพวกเขาเข้าสู่ระบบผ่าน SSH พวกเขาจะมีการsmbpasswdเรียกใช้คำสั่งโดยอัตโนมัติและพวกเขาจะได้รับแจ้งตาม พวกเขาจะไม่ได้รับโอกาสในการเข้าถึงเชลล์ หลังจากคำสั่งเสร็จสิ้นคำสั่งจะถูกตัดการเชื่อมต่อโดยอัตโนมัติอีกครั้งจะไม่มีโอกาสได้รับสิทธิ์เข้าถึงเชลล์

ฉันไม่แน่ใจ 100% ว่าสิ่งนี้จะลบการเข้าถึงเครื่องทั้งหมดจากระยะไกล ตัวอย่างเช่นหากคุณใช้เซิร์ฟเวอร์ SSH ที่แตกต่างกันในเครื่องเดียวกับที่ไม่ใช้ForceCommandพวกเขาก็สามารถเข้าสู่ระบบผ่านขึ้นอยู่กับการกำหนดค่าการควบคุมการเข้าถึง

นอกจากนี้หากพวกเขามีโอกาสเข้าถึงทางกายภาพไปยังเทอร์มินัลพวกเขาสามารถเข้าสู่ระบบได้

อย่างไรก็ตามฉันคิดว่าในสถานการณ์ส่วนใหญ่นี่คือการควบคุมการเข้าถึงที่ค่อนข้างแข็งแกร่ง

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