[Update] การตั้งค่าสำหรับจำกัดการเข้าถึง SSH ใน Elastic Beanstalk

การตั้งค่าสำหรับจำกัดการเข้าถึง SSH ใน Elastic Beanstalk ในโปรเจกต์เว็บไซต์ที่ต้อง Deploy ไปยัง Elastic Beanstalk มีความปลอดภัยในการใช้งานมาก จึงจะมาแนะนำเนื้อหาไปพร้อมกับการใช้งานจริงครับ

สวัสดีครับ POP จากบริษัท Classmethod (Thailand) ครับ

หากต้องการเพิ่มความปลอดภัยในการใช้งานเว็บไซต์ที่ต้อง Deploy ไปยัง Elastic Beanstalk สามารถตั้งค่าจำกัดการเข้าถึง SSH ใน Elastic Beanstalk ได้

สิ่งที่ต้องมี

  • มี Application และ Environment ใน Elastic Beanstalk แล้ว

ในบทความนี้จะละเว้นการอธิบายในส่วนของการสร้าง Application และ Environment ใน Elastic Beanstalk
หากต้องการเรียนรู้วิธีการเริ่มต้นใช้งาน Elastic Beanstalk ขอแนะนำให้อ่านบทความด้านล่างนี้ครับ

ขั้นตอน

เมื่อเริ่มต้นระบบ Elastic Beanstalk ไปแล้ว EC2 Instance จะถูกกำหนดค่า Security Group (awseb-e-xxxxxxxxxx-stack-AWSEBSecurityGroup-XXXXXXXXXXXXX) โดยอัตโนมัติ

Security Group นี้จะเปลี่ยนไปตามการตั้งค่า แต่โดยส่วนใหญ่การตั้งค่าจะเป็นดังนี้

Type Protocol Port Source
SSH TCP 22 0.0.0.0/0
HTTP TCP 80 0.0.0.0/0

เมื่อ SSH นี้ยอมรับการเชื่อมต่อจาก IP Address ทั้งหมด จะทำให้การเชื่อมต่อ "Type: SSH" มีความเสี่ยงที่จะถูกโจมตีด้วย BRUTE FORCE ได้ โปรดดูรายละเอียดเพิ่มเติมได้ที่ลิงก์ด้านล่างนี้

ผมจะมาอธิบายวิธีตั้งค่าเพื่อหลีกเลี่ยงในสถานการณ์ที่กล่าวมานี้
เราสามารถจำกัดการตั้งค่า IP Address ของการเชื่อมต่อผ่าน SSH ได้โดยตั้งค่า .ebextensions ใน Project ที่จะ Deploy ใน Elastic Beanstalk
ครั้งนี้เราจะมาตั้งค่าเพื่อให้สามารถเชื่อมต่อ SSH ได้จากภายใน VPC เท่านั้นครับ

เตรียมไฟล์สำหรับ Deploy เพื่อใช้ตั้งค่าใน Elastic Beanstalk

เตรียมไฟล์สำหรับ Deploy เพื่อใช้ตั้งค่าใน Elastic Beanstalk โดยสร้างไฟล์ 00_option_settings.config ในโฟลเดอร์ .ebextensions กันครับ

ก่อนอื่นให้เข้ามาที่ Service VPC และเลือก Your VPCs จากเมนูด้านซ้าย
แล้วตรวจสอบ CIDR ของ VPC เช่น 172.31.0.0/16 แล้วคัดลอกเตรียมไว้

ต่อไปสร้าง [โฟลเดอร์: .ebextensions] และ [ไฟล์: 00_option_settings.config] ในโปรเจกต์ของเราเตรียมไว้ใช้อัปโหลดใน Elastic Beanstalk
Path: ".ebextensions/00_option_settings.config"

แล้วคัดลอก Code ด้านล่างนี้วางในไฟล์ 00_option_settings.config
และเปลี่ยนข้อมูลใน value ที่ [your-cidr-vpc] ที่คุณกำลังใช้งานอยู่

option_settings:
  - namespace: aws:autoscaling:launchconfiguration
    option_name: SSHSourceRestriction
    value: tcp, 22, 22, [your-cidr-vpc]

Deploy Project

เมื่อเตรียมไฟล์เสร็จแล้ว ให้ทำการ Deploy โปรเจกต์ของเราไปยัง Elastic Beanstalk ได้เลย

สำหรับการ Deploy โปรเจกต์ Laravel สามารถดูตัวอย่างได้ที่บทความด้านล่างนี้ครับ

ตรวจสอบการตั้งค่า Config ใน EC2 Instance

เข้ามาที่ Service EC2 แล้วเลือกเมนู Instances จากด้านซ้าย แล้วคลิกเข้าไปที่ Instance ของเรา
แล้วเลื่อนลงมาประมาณตรงกลาง แล้วเลือกแท็บ Security และดูที่ Inbound rules จะเห็นว่ามีสถานะเป็นไปตามที่เราได้ตั้งค่าไว้ในไฟล์ 00_option_settings.config ดังนี้

Type Protocol Port Source
SSH TCP 22 172.31.0.0/16

เพียงเท่านี้ก็จะทำให้สามารถยอมรับการเข้าถึง SSH จากภายใน VPC เท่านั้นได้ด้วยการตั้งค่าเหล่านี้ครับ

สรุป

การตั้งค่าสำหรับจำกัดการเข้าถึง SSH ใน Elastic Beanstalk นี้จะช่วยหลีกเลี่ยงการถูกโจมตีด้วย BRUTE FORCE ได้ นอกจากนี้ยังทำให้การเชื่อมต่อ SSH ของเรามีความปลอดภัยมากยิ่งขึ้นครับ

ผมหวังว่าบทความนี้จะเป็นประโยชน์ให้กับผู้อ่านได้นะครับ

POP (Tinnakorn Maneewong) จากบริษัท Classmethod (Thailand) ครับ !

บทความที่เกี่ยวข้อง