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

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

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

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 อ้างอิง