[RHEL] เมื่อกำหนด User / Group ที่ใช้สำหรับ SSH แล้วไม่สามารถ Connect ได้

หากใครต้องนำระบบขึ้น Production ทุกคนคงรู้จักขั้นตอนนึงที่สำคัญ และเป็นขั้นตอนที่ทำ App หรือ Service พังได้เลยครับ ขั้นตอนที่ว่านั้น คือ การ Hardening เพื่อเพิ่มความแข็งแรงให้ระบบครับ แต่ต้องมีความเข้าใจด้วยครับ ไม่งั้นระบบมีปัญหาได้ครับ อย่างของผมการแก้ SSH มีผลให้

  • Admin / Developer ที่ดูแลระบบ SSH เข้า Server ไม่ได้ครับ ต้องไปเข้าผ่าน VMware ExSI แทนครับ
  • ระบบไม่สามารถรับส่ง File ผ่าน Protocal SFTP ไม่ได้ครับ

ส่วนสาเหตุ มันมาจาก CIS RedHat 8 V1.0.0

จาก CIS RedHat 8 V1.0.0 หมวด 5.2 SSH Server Configuration ข้อ 5.2.2 Ensure SSH access is limited (Scored) โดยมีสาระสำคัญ ดังนี้

  • ทุก user บน OS ต้องมีการกำหนดว่าใครสามารถเข้าถึง Server ผ่าน SSH ได้ครับ โดยมีค่าที่ต้องกำหนดใน /etc/ssh/sshd_config โดยมี Option ที่ต้องกำหนด ดังนี้ครับ
    • DenyUsers : กำหนดไม่ให้ user ไหนเข้า
    • AllowUsers : กำหนดให้ user ไหนเข้า
    • DenyGroups : กำหนดไม่ให้ group ไหนเข้า
    • AllowGroups. : กำหนดให้ group ไหนเข้า
  • การกำหนด แต่ละ Option ต้องเรียงตามลำดับจากดังนี้ DenyUsers > AllowUsers > DenyGroups  > AllowGroups แต่จากปัญหาที่กล่าวมาข้างต้นครับ ผมเจอสาเหตุแล้วครับ ทีม Dev ในส่วนของ Backup ไปมีไปแก้ไฟล์ sshd_config ครับ

จากรูปข้างต้น เราพบว่าไฟล์ sshd_config ลำดับของ AllowGroups มาก่อน AllowUsers ทำให้ตัว SSH Service เชื่อเฉพาะ AllowUsers ครับ ทำให้ user ibmbackup ใช้งานได้อย่างเดียวครับ ส่วน user อื่นตายหมดครับ 5555 และที่สำคัญ เราโดน CIS มันหลอกเรื่องลำดับครับ

CIS วางยา

ถ้าไป man ดู sshd_config ลำดับไม่เหมือนกันอีก ต้องเชื่อลำดับการทำงานของ SSH ครับ แต่มันก็ให้ Hardening ยากขึ้นไปอีกครับ เพราะต้องเช้าใจการทำงานของ OS และต้องมาทำให้ได้ตามข้อกำหนดของ CIS ด้วยครับ

สำหรับการแก้ไข

ทำได้ 2 วิธีครับ แต่ต้องสอบถามความจริงกับทีมงานให้เรียบร้อยก่อนครับ

  • วิธีแรก สลับ AllowUsers กับ AllowGroups
  • วืธีสอง เลิอกใช้ AllowUsers หรือ AllowGroups จะเห็นว่าการกำหนด user matrix สำคัญมากครับ

ของผมเลือกวิธีให้เอา user ibmbackup เข้า group staff แทนครับ และเอา AllowUsers ออกไปครับ


Discover more from naiwaen@DebuggingSoft

Subscribe to get the latest posts sent to your email.