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

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

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

ครั้งนี้ ผมจะมาแนะนำวิธีการตั้งค่าสำหรับจำกัดการเข้าถึง 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 ทั้งหมด จะทำให้การเชื่อมต่อ Type:SSHมีความเสี่ยงที่จะถูกโจมตีด้วย BRUTE FORCE ได้ครับ ดูรายละเอียดเพิ่มเติมได้ที่ลิงก์ด้านล่างนี้

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


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

เราจะมาสร้างไฟล์ 00_option_settings.config ในโฟลเดอร์ .ebextensions กันครับ

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

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

แล้ว Copy 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 จากบริษัท Classmethod (Thailand) ครับ !

Link อ้างอิง

ดูรายละเอียดเพิ่มเติมได้ที่นี่ สอบถามเพิ่มเติมเกี่ยวกับ AWS คลิกที่นี่