[Update] การตั้งค่าสำหรับจำกัดการเข้าถึง SSH ใน 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) ครับ !
บทความที่เกี่ยวข้อง
- Option settings (ภาษาอังกฤษ)
- aws:autoscaling:scheduledaction (ภาษาอังกฤษ)
- Brute-force attack (ภาษาอังกฤษ)
- [Update] ทดลอง Deploy PHP ใน Elastic Beanstalk และเชื่อมต่อกับ RDS
- [Update] ทดลอง Deploy Laravel ใน Elastic Beanstalk และเชื่อมต่อกับ RDS
- [Update] การตั้งค่าที่จำเป็นเพื่อ Deploy Laravel ใน Elastic Beanstalk
- [Update] วิธีเพิ่ม Timezone ใน Elastic Beanstalk
- [Update] วิธีเพิ่ม Swap Memory ใน Elastic Beanstalk