วิธีการใช้ทั้ง AllowGroups และ AllowUsers ใน sshd_config


28

ฉันพยายามที่จะปรับเปลี่ยน/etc/ssh/sshd_configบนเซิร์ฟเวอร์ debian7 ฉันทุ่มเทกับทั้งสองและAllowUsers AllowGroupsอย่างไรก็ตามฉันไม่สามารถทำให้ทั้งคู่ทำงานร่วมกันได้


การตั้งค่า

  • testuserมีผู้ใช้ที่เรียกว่าเป็น
  • ผู้ใช้นั้นอยู่ในกลุ่มที่เรียกว่าssh-users:

    $ groups testuser
    testuser : testuser ssh-users
    
  • testuserพยายามเชื่อมต่อผ่านssh testuser@<server_ip>และป้อนรหัสผ่าน

  • ฉันsshd_configสามารถพบได้ที่นี่: http://pastebin.com/iZvVDFKL - ฉันคิดว่าโดยทั่วไปการเปลี่ยนแปลงเดียวที่ฉันทำจากค่าเริ่มต้นคือ:
    • เพื่อตั้ง PermitRootLogin no
    • และเพิ่มผู้ใช้สองคนด้วยAllowUsers(ชื่อผู้ใช้จริงแตกต่างกันบนเซิร์ฟเวอร์ของฉัน)
  • service ssh restartsshd_configจะดำเนินการทุกครั้งหลังจากการปรับเปลี่ยน

ปัญหา

  • testuser สามารถเชื่อมต่อเมื่อตั้งค่าด้วยAllowUsers:

    AllowUsers user1 user2 testuser
    
  • testuserไม่สามารถเชื่อมต่อเมื่อตั้งค่าAllowGroupsสำหรับกลุ่ม:

    AllowUsers user1 user2
    AllowGroups ssh-users
    

    ซึ่งส่งผลให้Permission denied, please try again.เมื่อtestuserป้อนรหัสผ่านในพรอมต์รหัสผ่าน ssh


คำถาม

  • ไม่AllowUsersแทนที่AllowGroups?
  • วิธีที่ดีที่สุดในการแก้ไขปัญหานี้โดยไม่ต้องเพิ่มชื่อผู้ใช้ด้วยตนเองAllowUsersคืออะไร เป็นการดีที่ฉันจะสามารถเพิ่มผู้ใช้ในssh-usersกลุ่มในอนาคตโดยไม่ต้องสัมผัสsshd_configอีกครั้ง

5
Ideally I'd like to be able to just add users to the ssh-users group in the future without having to touch sshd_config again.- แล้วทำไมคุณถึงใช้งาน AllowUsers? เพียงแค่ใส่ทุกคนในกลุ่ม / กลุ่ม
Zoredache

คำตอบ:


24

ใช่จะใช้เวลาในช่วงก่อนหน้านี้AllowUsers AllowGroupsหากระบุเฉพาะผู้ใช้ที่ตรงกับรูปแบบที่ระบุในAllowUsersอาจเชื่อมต่อกับอินสแตนซ์ SSHD

ตามsshd_config manpage :

อนุญาต / ปฏิเสธคำสั่งจะถูกประมวลผลในลำดับต่อไปนี้: DenyUsers, AllowUsers, และในที่สุดก็DenyGroupsAllowGroups

ดังนั้นวิธีแก้ไขปัญหาของคุณอาจใช้วิธีใดวิธีหนึ่งอาจเป็นแนวทางการเข้าถึงกลุ่มหากกลุ่มเป็นวิธีที่คุณต้องการในการจัดการผู้ใช้


ดังนั้นจะมีAllowGroups user1 user2 ssh-usersงานทำ? ฉันต้องการการยืนยันของคุณก่อนที่จะทำการทดสอบเนื่องจากฉันได้รับมันเกิดขึ้นก่อนที่ฉันจะลบสิทธิพิเศษ ssh ของฉันออกไปโดยไม่ตั้งใจ แล้วMatchบล็อกล่ะ ฉันขอคำแนะนำจากที่นั่นแม้ว่าฉันจะดูหน้าคน แต่ฉันไม่มีสัญชาตญาณ / ประสบการณ์ที่จะรู้ว่ามันจะทำงานอย่างไรในทางปฏิบัติ ยกตัวอย่างเช่นคำสั่งของการประมวลผลฉันคิดตั้งแต่ AllowGroups มาหลังจาก AllowUsers ก็จะแทนที่มันเมื่อประมวลผล แต่สัญชาตญาณของฉันเป็นความผิดมี :)
โยฮันเน

2
หากทั้ง 3 กลุ่มเป็นกลุ่มในระบบของคุณมันควรจะทำงานได้ หาก user1 และ user2 เป็นเพียงผู้ใช้คุณสามารถเพิ่มผู้ใช้ไปยัง ssh-users และเข้าใช้งานด้วย AllowGroups ssh-users
Jeff-Inventor ChromeOS

@Johannes เมื่อคุณทำการทดสอบสิ่งนั้น Juste ให้แน่ใจว่าคุณเปิดเปลือกบนเครื่อง การเริ่มต้นใหม่ sshd จะไม่ทำลายเซสชันของคุณและถ้าคุณไม่สามารถเปิดใหม่คุณสามารถแก้ไขระเบียบด้วยเดิม
Jean-Bernard Jansen

6

คำตอบของ Jeff ครอบคลุมรายละเอียดเฉพาะของคำถามดังกล่าว แต่ฉันพบว่าคำถามนี้ต้องการใช้AllowUsersและAllowGroupsในสถานการณ์ที่แตกต่างกันเล็กน้อย ฉันต้องการ จำกัด การเชื่อมต่อเข้ากับผู้ใช้ในกลุ่ม (ssh) ที่มาจากเครือข่ายย่อยที่เฉพาะเจาะจง

กฎการเชื่อมต่อในsshd_configเป็นตัวกรอง - เนื่องจากมีการใช้กฎเพิ่มเติมแต่ละกฎชุดของผู้ใช้ที่ยอมรับได้สามารถลดลงได้เท่านั้น PATTERNSในssh_config (5)อธิบายรูปแบบของกฎเหล่านั้น

นอกจากนี้ตามAllowUsersส่วนของsshd_config:

หากรูปแบบนั้นใช้รูปแบบ USER @ HOST ดังนั้น USER และ HOST จะถูกตรวจสอบแยกกัน จำกัด การเข้าสู่ระบบให้กับผู้ใช้เฉพาะจากโฮสต์ที่เฉพาะ เกณฑ์ HOST อาจมีที่อยู่ที่จะจับคู่เพิ่มเติมในรูปแบบที่อยู่ / รูปแบบของ CIDR

AllowGroups ไม่ยอมรับฟอร์ม USER @ HOST

ดังนั้นเพื่อยอมรับผู้ใช้ 1) ในกลุ่ม ssh และ 2) จากซับเน็ต / โฮสต์เฉพาะ:

AllowUsers *@192.168.1.0/24 *@*.example.com *@1.2.3.4
AllowGroups ssh

AllowGroups doesn't accept the USER@HOST form. ไม่แน่ใจว่าคุณหมายถึงอะไรและไม่แน่นอนว่าไฟล์ config หรือเอกสารพูดอะไร อนุญาตให้กลุ่มอนุญาตให้คุณเข้าสู่ระบบโดยใช้ ssh username@example.com
AndrewD

1
@AndrewD AllowGroups ยอมรับเฉพาะชื่อกลุ่ม - AllowGroups ssh@example.comเช่นคุณไม่สามารถทำ HOST คือแหล่งที่มาที่คุณต้องการไป
bjacobowski

3

นี่เป็นวิธีการแก้ปัญหาที่เราพบว่าทำงานได้:

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