Security Groups vs Network ACLs
ไฟร์วอลล์ 2 ระดับ: stateful vs stateless
Security Group เหมือน รปภ.ประจำตัวที่ติดตามแต่ละเครื่อง — เขาฉลาดพอที่จะจำได้ว่าใครเดินออกไป พอคนนั้นกลับมาก็จะเปิดให้เข้า. ส่วน NACL เหมือน รปภ.ที่ประตูรั้วหน้าหมู่บ้าน — ไม่จำใครทั้งนั้น ตรวจบัตรทุกคนที่ผ่านเข้า-ออกตามรายชื่ออย่างเคร่งครัด
AWS มีเครื่องมือช่วยกรองทราฟฟิก (Firewall) ให้ 2 ระดับหลักๆ คือ Security Group (กลุ่มความปลอดภัยระดับเครื่อง) และ NACL (Network Access Control List - รายการควบคุมการเข้าถึงระดับเครือข่าย) ซึ่งมีคุณสมบัติที่แตกต่างกันมาก
ไฟร์วอลล์ 2 ชั้น: NACL ที่ขอบ subnet, SG ที่ตัวเครื่อง
Security Group Rule Builder
SG อนุญาตเฉพาะสิ่งที่มีกฎ allow ตรงกัน (ที่เหลือบล็อกหมด) — เพิ่มกฎแล้วลองยิง traffic ทดสอบดู
Inbound Rules
เพิ่มกฎสำเร็จรูป:
ทดสอบ traffic
จุดต่างที่ต้องจำให้แม่น
- Security Group (SG) ป้องกันระดับ เครื่องเซิร์ฟเวอร์ (EC2/ENI) · เป็นแบบ Stateful (จดจำสถานะ) (คือถ้าเราอนุญาตให้คนนอกส่งคำขอเข้ามาได้ คำตอบตอบกลับจะผ่านออกไปได้โดยอัตโนมัติ) · และมีเฉพาะกฎ Allow (อนุญาต) เท่านั้น
- NACL ป้องกันระดับ Subnet (โซนย่อย) · เป็นแบบ Stateless (ไม่จดจำสถานะ) (เราต้องเปิดกฎทั้งขาเข้าและขาออกแบบแยกอิสระ) · มีทั้งกฎ Allow และ Deny (เรียงลำดับประเมินตามตัวเลข)
- ค่าเริ่มต้น: SG จะล็อกประตูขาเข้าทั้งหมด แต่ปล่อยขาออกฟรี / ในขณะที่ NACL พื้นฐานจะอนุญาตผ่านได้หมดทุกอย่าง
สรุป Key Takeaways
- SG = ระดับเครื่อง, stateful, allow อย่างเดียว
- NACL = ระดับ subnet, stateless, มีทั้ง allow/deny
- จะบล็อก IP เจาะจงต้องใช้ NACL; งานทั่วไปใช้ SG
คำถามที่พบบ่อย
Security Group กับ NACL สรุปต่างกัน 3 ข้อที่ออกสอบ
(1) SG ติดที่ตัว resource (ENI) / NACL ติดที่ subnet (2) SG เป็น stateful — ขาออกที่ตอบกลับ inbound ผ่านอัตโนมัติ / NACL stateless ต้องเปิดทั้งสองขา (3) SG มีแต่ rule อนุญาต / NACL มีทั้ง allow และ deny พร้อมลำดับเลข rule — โจทย์ "block IP เจาะจง" ต้องใช้ NACL เพราะ SG deny ไม่ได้
Stateful ของ SG หมายความว่ายังไงในทางปฏิบัติ
ถ้าเปิด inbound 443 ให้คนเรียกเข้า คำตอบที่ตอบกลับออกไปไม่ต้องเปิด outbound เพิ่ม — connection เดียวกันถูกจำได้ ส่วน NACL stateless: เปิด inbound 443 แล้วต้องเปิด outbound ephemeral ports (1024-65535) ให้ขาตอบด้วย ไม่งั้น connection ตั้งไม่สำเร็จ — ข้อสอบชอบเอา ephemeral ports มาหลอก
อ้าง Security Group อื่นใน rule ได้ไหม
ได้และเป็น best practice — เช่น SG ของ database อนุญาต inbound 3306 เฉพาะจาก "SG ของ app server" แทนการระบุ IP ทำให้เครื่อง app เพิ่ม/ลดกี่ตัว rule ก็ยังถูกโดยไม่ต้องแก้
ลองทำ Quiz ท้ายบท
คำถามแนวข้อสอบของโมดูลนี้ 5 ข้อ · เฉลยทันที

