ข้ามไปเนื้อหาหลัก
เครือข่าย· ~16 นาที· อัปเดตล่าสุด

Security Groups vs Network ACLs

ไฟร์วอลล์ 2 ระดับ: stateful vs stateless

รปภ.ประจำตัว vs รปภ.หน้าหมู่บ้าน

Security Group เหมือน รปภ.ประจำตัวที่ติดตามแต่ละเครื่อง — เขาฉลาดพอที่จะจำได้ว่าใครเดินออกไป พอคนนั้นกลับมาก็จะเปิดให้เข้า. ส่วน NACL เหมือน รปภ.ที่ประตูรั้วหน้าหมู่บ้าน — ไม่จำใครทั้งนั้น ตรวจบัตรทุกคนที่ผ่านเข้า-ออกตามรายชื่ออย่างเคร่งครัด

AWS มีเครื่องมือช่วยกรองทราฟฟิก (Firewall) ให้ 2 ระดับหลักๆ คือ Security Group (กลุ่มความปลอดภัยระดับเครื่อง) และ NACL (Network Access Control List - รายการควบคุมการเข้าถึงระดับเครือข่าย) ซึ่งมีคุณสมบัติที่แตกต่างกันมาก

ไฟร์วอลล์ 2 ชั้น: NACL ที่ขอบ subnet, SG ที่ตัวเครื่อง

Traffic
NACL (ระดับ subnet · stateless)
SG (ระดับเครื่อง · stateful)
EC2
Security Group — stateful (จำ connection ขาเข้า-ออก), มีแต่ allow
NACL — stateless (ต้องเปิดทั้งขาเข้า/ออก), มีทั้ง allow และ deny

Security Group Rule Builder

SG อนุญาตเฉพาะสิ่งที่มีกฎ allow ตรงกัน (ที่เหลือบล็อกหมด) — เพิ่มกฎแล้วลองยิง traffic ทดสอบดู

Inbound Rules

ALLOW · port 443 · 0.0.0.0/0

เพิ่มกฎสำเร็จรูป:

ทดสอบ traffic

ถูกบล็อก — ไม่มีกฎ allow ที่ตรงกัน
เพิ่มกฎแล้วลองยิง 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 ข้อ · เฉลยทันที

อ่านจบแล้วอย่าลืมทำเครื่องหมาย