บทนำ
AWS SSM Session Manager เป็นเครื่องมือที่ทำให้สามารถ Remote เข้าไปยัง EC2 Instances ได้โดยไม่ต้องเปิดการเข้าถึงจาก Internet ซึ่งถือเป็น Best Practice ที่ทาง Amazon Web Services (AWS) แนะนำ แทนการใช้ Secure Shell (SSH) เนื่องจากความเสี่ยงในการเปิด Port SSH ให้เข้าถึงได้จาก Internet
SSM Session Manager มีหลายฟีเจอร์ โดยหนึ่งใน feature คือ port forwarding ที่ช่วยสร้างช่องทางการเชื่อมต่อผ่าน SSM Service ระหว่างผู้ใช้งานกับ EC2 Instances ได้อย่างปลอดภัยโดยไม่ต้องมีการเปิด Port ใด ๆ
อย่างไรก็ตามฟีเจอร์นี้ ถ้ามีการตั้งค่าผิดพลาด หรือใช้งานอย่างไม่เหมาะสม อาจทำให้เกิดความเสี่ยงทางด้านความปลอดภัย เช่น การใช้ข่องทางนี้เพื่อเชื่อมต่อไปยังเครื่องอื่น ๆ ภายใน AWS Cloud ที่ติดตั้ง SSM Agent
บทความนี้จะนำเสนอถึงความเสี่ยงที่อาจเกิดขี้นจาการใช้งานฟีเจอร์ Pord Forwarding และวิธีการป้องกันเพื่อเพิ่มความปลอดภัยให้กับระบบ
ความเสี่ยงที่อาจจะเกิดขึ้น ?
เมื่อ AWS SSM Port Forwarding ถูกตั้งค่าอย่างไม่เหมาะสม อาจนำไปสู่สถานการณ์ต่อไปนี้:
- การเข้าถึง EC2 Instances โดยไม่ได้รับอนุญาต : ผู้โจมตีอาจสามารถใช้ SSM Port Forwarding เพื่อเข้าถึง EC2 Instances ที่ไม่ได้รับการป้องกัน ซึ่งอาจนำไปสู่การเปลี่ยนแปลง หรือการเข้าถึงข้อมูลโดยไม่ได้รับอนุญาต
- การขโมยข้อมูล : ผู้โจมตีอาจสามารถสร้าง secure tunnel เพื่อขโมยข้อมูลที่มีความสำคัญออกจาก EC2 Instances โดยไม่ถูกตรวจจับ เช่น การใช้ SCP เพื่อถ่ายโอนข้อมูลที่มีความสำคัญ
- การโจมตีต่อไปภายในระบบ (Lateral Movement): ผู้โจมตีอาจใช้ SSM Port Forwarding เพื่อเชื่อมต่อไปยัง Internal Server หรือระบบอื่น ๆ ในเครือข่าย เพื่อขยายผลการโจมตี และเข้าถึงข้อมูลที่มีความสำคัญเพิ่มเติม
เหตุการณ์เหล่านี้แสดงให้เห็นถึงความเสี่ยงที่อาจเกิดขึ้น หากไม่มีการตั้งค่า และใช้งาน SSM Port Forwarding อย่างเหมาะสม
AWS SSM Manager คื่ออะไร ?
AWS Systems Manager Session Manager เป็นบริการ Managed service จาก AWS ที่ช่วยให้สามารถจัดการ EC2 Instances ได้อย่างปลอดภัย โดยไม่จำเป็นต้องใช้การเข้าถึงผ่าน SSH หรือ Bastion Host โดยผู้ดูแลระบบสามารถสร้างการเข้าถึงแบบ Shell หรือ Command Line ไปยัง EC2 Instances ผ่านทาง AWS Management Console, AWS CLI หรือ SDKs โดยไม่ต้องเปิด Instances ให้เข้าถึงได้จาก Internet
AWS SSM Port Forwarding คืออะไร ?
AWS SSM Port Forwarding เป็นฟีเจอร์ที่ทำงานคล้ายกับ SSH Tunneling แต่แทนที่จะใช้ SSH เป็นการใช้ SSM Agent ในสร้างการเขื่อมต่อ (Tunnel) ระหว่างเครื่องผู้ใช้งาน (Local Machine) และ EC2 Instance ที่อยู่บน Cloud
โดยผู้ใช้งานต้องมีสิทธิ์ต่อไปนี้ :
- สิทธิ์ IAM User ที่เหมาะสม
- การติดตั้ง AWS CLI กับ Session Manager Plugin บนเครื่อง Local Machine
ประโยชน์ของ SSM Port Forwarding :
- ไม่จำเป็นต้องใช้ Public IP หรือเปิด Port : ช่วยลดความเสี่ยงจากการโจมตีผ่าน Internet
- ไม่ต้องกำหนด Inbound Security Group (Firewall Policy) : เพิ่มความปลอดภัยให้กับระบบโดยรวม
- ใช้ Debug Application ที่อยู่ใน Private Subnet : สามารถเชื่อมต่อเพื่อแก้ไขปัญหาได้โดยไม่ต้องเปิด Endpoint ให้เข้าถึงได้จาก Internet
- ใช้จัดการ Database : เช่น การเชื่อต่อไปยัง Database ที่ไม่มี Public Endpoint
รายละเอียดเชิงเทคนิคเกี่ยวกับความผิดพลาดที่อาจเกิดขึ้น :
- การเข้าถึง EC2 Instances โดยไม่ได้รับอนุญาต
หนึ่งในความผิดพลาดที่พบบ่อยของ Developer หรือ Administrator คือการเขียน IAM Policy ที่มี Resource: ""* ซึ่งไม่ได้จำกัดการเข้าถึงอย่างรัดกุม ทำให้ผู้ใช้งานสามารถเข้าถึง และสร้างการเชื่อมต่อ (Tunnel) ไปยัง EC2 Instances ได้ทุกเครื่องใน AWS Account ซึ่งอาจนำไปสู่ปัญหาด้านความปลอดภัย เช่น การเข้าถึงข้อมูลโดยไม่ได้รับอนุญาต หรือการโจมตีต่อไปยังภายในระบบแบบ Lateral Movement
ตัวอย่าง IAM Policy ที่ไม่ปลอดภัย
การตั้งค่าลักษณะนี้ทำให้ผู้ใช้งานสามารถเริ่ม Session Manager กับ EC2 Instances ได้โดยไม่มีการควบคุมว่าเป็น Instance ใด ซึ่งเป็นช่องโหว่ที่สำคัญในด้านการตั้งค่าความปลอดภัย
- การขโมยข้อมูล (Data Exfiltration)
ผู้โจมตีอาจสามารถใช้คำสั่ง ssm start-session เพื่อสร้างการเชื่อมต่อ (Tunnel) ไปยัง port 22 บน EC2 Instance ซึ่งเป็นพอร์ตที่ใช้สำหรับ SSH โดยเฉพาะ โดยการเชื่อมต่อนี้จะช่วยให้ผู้โจมตีสามารถเข้าถึง และ Copy ไฟล์ข้อมูลสำคัญออกจากเครื่องได้อย่างง่ายดาย
ตัวอย่างคำสั่ง :
1. สร้างการเชื่อมต่อ (Tunnel) ผ่าน SSM : คำสั่งนี้เป็นการสร้างการเชื่อมต่อจาก port 22 บน EC2 Instance ไปยัง port 1022 บนเครื่อง Local
2. Copy ไฟล์ผ่าน SCP : คำสั่งนี้ใช้ SCP เพื่อคัดลอกไฟล์ secret-data.tar จาก EC2 Instance มายังเครื่อง Local ผ่านการเชื่อมต่อที่สร้างไว้
การโจมตีรูปแบบนี้สามารถเกิดขึ้นได้หาก IAM Policy ของ SSM ไม่ได้จำกัดสิทธิ์อย่างรัดกุม และผู้ใช้งานสามารถเข้าถึง SSM Document AWS-StartPortForwardingSession และ Port SSH ได้
- การโจมตีต่อไปยังภายในระบบ (Lateral Movement)
ในสถานการณ์นี้ ผู้โจมตีสามารถเจาะระบบ และเข้าถึง IAM User ได้ แต่สิทธิ์ที่ได้รับยังไม่เพียงพอที่จะเข้าถึง Internal Server โดยตรง ผู้โจมตีจึงใช้ Jump Host เป็นตัวกลางในการสร้างการเชื่อมต่อ (Tunnel) เพื่อเชื่อมต่อไปยัง Internal Server และดำเนินการโจมตีต่อไปยังภายในระบบในลักษณะ Lateral Movement
ขั้นตอนการโจมตี :
1. สร้างการเชื่อมต่อ (Tunnel) ผ่าน SSM : ผู้โจมตีใช้คำสั่งด้านล่างเพื่อสร้างช่องทางการเชื่อมต่อระหว่างเครื่อง Local และ Internal Server โดยผ่าน Jump Host
2. ใช้ SSH เพื่อ Remote ไปยัง Internal Server : เมื่อช่องทางการเชื่อมต่อพร้อมใช้งาน ผู้โจมตีสามารถใช้คำสั่ง SSH เพื่อเข้าถึง Internal Server
ความเสี่ยงจากการ Lateral Movement
การโจมตีแบบนี้อาจทำให้ผู้โจมตีสามารถ :
- ขยายสิทธิ์ : เจาะเข้าถึงทรัพยากรที่ไม่ได้ป้องกันอย่างเพียงพอในเครือข่าย
- เข้าถึงข้อมูลสำคัญ : เช่น ฐานข้อมูล, ไฟล์การตั้งค่า, private keys
- เพิ่ม foothold ในระบบ : สร้างช่องทางอื่นสำหรับการโจมตีในอนาคต
วิธีการป้องกันโดยใช้หลักการ Least Privilege
หนึ่งในวิธีสำคัญในการป้องกันการใช้ Port Forwarding ผ่าน SSM คือการใช้หลักการ Least Privilege โดยจำกัดสิทธิ์ในคำสั่ง ssm:StartSession ให้เข้าถึงได้เฉพาะ EC2 Instances ที่ต้องการเท่านั้น และไม่ให้เข้าใช้ SSM Documents ที่เกี่ยวข้องกับ Port Forwarding
SSM Documents ที่ควรระวัง
ผู้โจมตีสามารถใช้ SSM Documents ต่อไปนี้เพื่อทำ Port Forwarding :
- AWS-StartPortForwardingSession
- AWS-StartPortForwardingSessionToSocket
- AWS-StartPortForwardingSessionToRemoteHost
การจำกัดสิทธิ์ไม่ให้เข้าถึง SSM Documents เหล่านี้เป็นขั้นตอนสำคัญในการลดความเสี่ยงจากการโจมตี
ตัวอย่าง IAM Policy ที่ปลอดภัย
Policy ด้านล่างนี้จำกัดสิทธิ์ ssm:StartSession ให้ใช้ได้กับ EC2 Instance ที่ระบุเท่านั้น โดยไม่อนุญาตให้เข้าถึง SSM Documents
หรือถ้าอยากให้ผู้ใช้ Remote ได้แค่เฉพาะบาง EC2 Instance ที่มี Tag สามารถเขียนเงื่อนไขโดยใช้ Tag ได้ดังนี้
สรุป
AWS SSM Session Manager เป็น Service ที่มีประโยชน์อย่างมาก ช่วยลดความเสี่ยงจากการเปิด EC2 Instances ให้เข้าถึงได้จาก Internet แต่หากผู้ใช้งานขาดความเข้าใจเกี่ยวกับ Service และไม่ได้กำหนด IAM Policy อย่างเหมาะสม อาจทำให้เกิดช่องโหว่ที่ผู้โจมตีสามารถใช้ประโยชน์ได้
การใช้งาน SSM อย่างปลอดภัยจำเป็นต้องอาศัยการออกแบบ Policy ที่รัดกุม และการเรียนรู้เกี่ยวกับฟีเจอร์ต่าง ๆ ของ Service อย่างต่อเนื่อง เพื่อป้องกันความเสี่ยงที่อาจเกิดขึ้นในระบบ
อ้างอิง
You must be logged in to post a comment.