Skip to main content

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

คุณสมบัติNACLSecurity Group
ระดับการทำงานSubnetInstance/ENI
Stateful/StatelessStatelessStateful
ประเภท RuleAllow + DenyAllow เท่านั้น
การประเมิน Ruleตามลำดับ Rule Numberประเมินทุก Rule
การอ้างอิงIP Address เท่านั้นIP Address + SG อื่น
DefaultAllow All (Default NACL)Deny All Inbound
ใช้กับทุก Instance ใน Subnetเฉพาะ Instance ที่ผูก

ตัวอย่างการใช้งานร่วมกัน

  1. NACL ใช้บล็อก IP ที่ไม่ต้องการทั้ง Subnet (เช่น บล็อก IP range ที่เป็น attacker)
  2. Security Group ใช้ควบคุมการเข้าถึงที่ละเอียดกว่า (เช่น เปิดเฉพาะ port 443 จาก ALB Security Group)
  3. Traffic ต้องผ่านทั้ง NACL และ Security Group จึงจะเข้าถึง Instance ได้