Security Groups vs NACLs
ใน AWS VPC มีระบบรักษาความปลอดภัยสองชั้น ได้แก่ Network ACLs (NACLs) ซึ่งทำงานในระดับ Subnet และ Security Groups (SGs) ซึ่งทำงานในระดับ Instance/ENI
Network ACLs (NACLs)
NACL เป็น Firewall ระดับ Subnet ที่ทำหน้าที่เป็นด่านป้องกันแรก (first line of defense)
- ทำงานแบบ Stateless หมายความว่า traffic ขาเข้า (inbound) และขาออก (outbound) ถูกประเมินแยกกัน ต้องกำหนด rule ทั้งสองทิศทาง
- รองรับทั้ง Allow Rule และ Deny Rule
- Rule ถูกประเมินตาม ลำดับหมายเลข (Rule Number) จากน้อยไปมาก โดย rule แรกที่ตรงจะถูกใช้ทันที
- แนะนำให้ตั้ง rule number เว้นช่วง (เช่น 100, 200, 300) เพื่อให้เพิ่ม rule ภายหลังได้สะดวก
- Default NACL อนุญาต traffic ทั้งหมด (Allow All) ทั้งขาเข้าและขาออก
- Custom NACL ที่สร้างใหม่จะ Deny All โดยค่าเริ่มต้น
- ผูกกับ Subnet (1 Subnet ผูกได้ 1 NACL เท่านั้น แต่ 1 NACL ผูกได้หลาย Subnet)
- Rule ใช้ IP Address เท่านั้น ไม่สามารถอ้างอิง Security Group ได้
Ephemeral Ports
- เมื่อ client เชื่อมต่อกับ server client จะใช้ ephemeral port (port สุ่ม) สำหรับรับ response
- ช่วง ephemeral port ขึ้นอยู่กับ OS เช่น Linux ใช้ port 32768-65535, Windows ใช้ 49152-65535
- ต้องเปิด ephemeral port ใน NACL outbound rule ของ server และ inbound rule ของ client
Security Groups (SGs)
Security Group เป็น Firewall ระดับ Instance/ENI ที่ทำหน้าที่เป็นด่านป้องกันชั้นที่สอง
- ทำงานแบบ Stateful หมายความว่า หาก inbound traffic ถูกอนุญาต response traffic จะถูกอนุญาตโดยอัตโนมัติ (ไม่ต้องกำหนด outbound rule แยก)
- รองรับ Allow Rule เท่านั้น (ไม่มี Deny Rule)
- ทุก Rule ถูกประเมินทั้งหมด ก่อนตัดสินใจ (ไม่มีลำดับ rule)
- Rule สามารถอ้างอิงได้ทั้ง IP Address และ Security Group อื่น
- Default rule คือ Deny All inbound และ Allow All outbound
- สามารถผูกได้หลาย Instance และ Instance หนึ่งก็ผูกได้หลาย Security Group
เปรียบเทียบ NACLs vs Security Groups
| คุณสมบัติ | NACL | Security Group |
|---|---|---|
| ระดับการทำงาน | Subnet | Instance/ENI |
| Stateful/Stateless | Stateless | Stateful |
| ประเภท Rule | Allow + Deny | Allow เท่านั้น |
| การประเมิน Rule | ตามลำดับ Rule Number | ประเมินทุก Rule |
| การอ้างอิง | IP Address เท่านั้น | IP Address + SG อื่น |
| Default | Allow All (Default NACL) | Deny All Inbound |
| ใช้กับ | ทุก Instance ใน Subnet | เฉพาะ Instance ที่ผูก |
ตัวอย่างการใช้งานร่วมกัน
- NACL ใช้บล็อก IP ที่ไม่ต้องการทั้ง Subnet (เช่น บล็อก IP range ที่เป็น attacker)
- Security Group ใช้ควบคุมการเข้าถึงที่ละเอียดกว่า (เช่น เปิดเฉพาะ port 443 จาก ALB Security Group)
- Traffic ต้องผ่านทั้ง NACL และ Security Group จึงจะเข้าถึง Instance ได้