หากใครต้องนำระบบขึ้น 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
ทำให้ตัว SSH Service เชื่อเฉพาะ AllowUsers
ครับ ทำให้ user ibmbackup ใช้งานได้อย่างเดียวครับ ส่วน user อื่นตายหมดครับ 5555 และที่สำคัญ เราโดน CIS มันหลอกเรื่องลำดับครับAllowUsers
ถ้าไป man ดู sshd_config ลำดับไม่เหมือนกันอีก ต้องเชื่อลำดับการทำงานของ SSH ครับ แต่มันก็ให้ Hardening ยากขึ้นไปอีกครับ เพราะต้องเช้าใจการทำงานของ OS และต้องมาทำให้ได้ตามข้อกำหนดของ CIS ด้วยครับ
สำหรับการแก้ไข
ทำได้ 2 วิธีครับ แต่ต้องสอบถามความจริงกับทีมงานให้เรียบร้อยก่อนครับ
- วิธีแรก สลับ
กับAllowUsers
AllowGroups
- วืธีสอง เลิอกใช้
หรือAllowUsers
จะเห็นว่าการกำหนด user matrix สำคัญมากครับAllowGroups
ของผมเลือกวิธีให้เอา user ibmbackup เข้า group staff แทนครับ และเอา AllowUsers
ออกไปครับ
Discover more from naiwaen@DebuggingSoft
Subscribe to get the latest posts sent to your email.