0Pricing
AWS Solutions Architect · บทเรียน

ACL เครือข่ายเทียบกับกลุ่มความปลอดภัย

เปรียบเทียบ ACL เครือข่ายแบบไม่เก็บสถานะกับกลุ่มความปลอดภัยแบบเก็บสถานะ และเรียนรู้ว่าเมื่อใดควรใช้แต่ละแบบเพื่อการป้องกันเครือข่ายหลายชั้น

ACL เครือข่ายเทียบกับกลุ่มความปลอดภัย เป็นบทเรียน AWS Solutions Architect ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน AWS Solutions Architect และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส AWS Solutions Architect มีบทเรียนทั้งหมด 4 บทเรียน

การรักษาความปลอดภัยเครือข่ายสองชั้น

AWS มีกลไกไฟร์วอลล์สองรูปแบบที่แตกต่างกันภายใน VPC Security Groups ทำงานในระดับ อินสแตนซ์ (ในทางเทคนิคคือระดับ ENI) และมีสถานะ ส่วน Network Access Control Lists (NACLs) ทำงานในระดับ ซับเน็ต และไม่มีสถานะ กลไกทั้งสองจะได้รับการประเมินสำหรับข้อมูลทุกชนิดที่เข้าสู่หรือออกจากซับเน็ตและอินสแตนซ์ที่เชื่อมโยง การใช้ทั้งสองกลไกร่วมกันช่วยสร้างการป้องกันเชิงลึก โดยใช้ NACL เป็นแนวป้องกันแรกที่ขอบเขตซับเน็ต และใช้กลุ่มความปลอดภัยเป็นไฟร์วอลล์สำหรับแต่ละอินสแตนซ์ ข้อสอบ SAA-C03 มักเปรียบเทียบกลไกทั้งสองนี้

NACL: ไฟร์วอลล์ไร้สถานะระดับซับเน็ต

Network ACL (NACL) คือรายการกฎที่มีหมายเลข ซึ่งใช้กับข้อมูลทั้งหมดที่ข้ามขอบเขตของซับเน็ต NACL เป็นแบบ ไม่มีสถานะ โดยจะประเมินแต่ละแพ็กเก็ตแยกจากกัน หากคุณอนุญาต TCP ขาเข้าพอร์ต 80 คุณต้องอนุญาตข้อมูลตอบกลับขาออก (พอร์ตชั่วคราว 1024-65535) อย่างชัดเจนด้วย เพื่อให้การตอบกลับออกจากซับเน็ตได้ ระบบจะประเมินกฎตามลำดับตัวเลข (หมายเลขน้อยที่สุดก่อน) และใช้กฎแรกที่ตรงกัน โดยจะไม่ตรวจสอบกฎถัดไป ทุก VPC มาพร้อม NACL เริ่มต้นที่อนุญาตข้อมูลขาเข้าและขาออกทั้งหมด

# Deny all traffic from a specific IP in the NACL
aws ec2 create-network-acl-entry \
  --network-acl-id acl-12345678 \
  --ingress \
  --rule-number 90 \
  --protocol tcp \
  --cidr-block 203.0.113.10/32 \
  --rule-action deny \
  --port-range From=0,To=65535

การกำหนดหมายเลขและลำดับกฎของ NACL

ระบบจะประเมินกฎ NACL ตามลำดับ หมายเลขกฎ จากน้อยไปมาก (1 ถึง 32766) และหยุดทันทีที่มีกฎตรงกัน ดังนั้นกฎ Allow ที่มีหมายเลขน้อยกว่าสามารถถูกกฎ Deny ที่มีหมายเลขน้อยกว่านั้นอีกซึ่งใช้กับข้อมูลเดียวกันแทนที่ได้ AWS แนะนำให้กำหนดหมายเลขกฎโดยเพิ่มครั้งละ 10 หรือ 100 เพื่อเว้นที่สำหรับแทรกกฎในภายหลัง NACL ทุกชุดจะลงท้ายด้วยกฎเริ่มต้น (* DENY) ซึ่งปฏิเสธข้อมูลทั้งหมดที่ไม่ตรงกับกฎที่กำหนดไว้อย่างชัดเจน กฎครอบคลุมทั้งหมดนี้ไม่สามารถแก้ไขหรือลบได้

# Example NACL ruleset:
# Rule 100: Allow  HTTPS (443) from 0.0.0.0/0
# Rule 200: Allow  HTTP (80)  from 0.0.0.0/0
# Rule 300: Deny   All         from specific-bad-IP
# Rule *:   Deny   All         from 0.0.0.0/0 (default, implicit)

NACL แบบไร้สถานะ: พอร์ตชั่วคราว

เนื่องจาก NACL ไม่มีสถานะ คุณจึงต้องพิจารณา ทั้งสองทิศทาง ของทุกการเชื่อมต่อ เมื่อไคลเอ็นต์บนอินเทอร์เน็ตเชื่อมต่อกับอินสแตนซ์ EC2 ของคุณผ่านพอร์ต 443 อินสแตนซ์จะส่งการตอบกลับกลับไปยังพอร์ตชั่วคราวของไคลเอ็นต์ (พอร์ตสูงแบบสุ่ม โดยทั่วไปคือ 1024-65535 บน Linux และ 49152-65535 บน Windows) กฎขาออกของ NACL ต้องอนุญาตช่วงพอร์ตนี้อย่างชัดเจน ข้อผิดพลาดที่พบบ่อยในการกำหนดค่า NACL คือสร้างกฎ Allow สำหรับพอร์ต 443 ขาเข้า แต่ลืมอนุญาตพอร์ตชั่วคราวขาออก ส่งผลให้การเชื่อมต่อเริ่มต้นได้ แต่การตอบกลับถูกทิ้งโดยไม่มีการแจ้งเตือน

# NACL outbound rule allowing return traffic on ephemeral ports
aws ec2 create-network-acl-entry \
  --network-acl-id acl-12345678 \
  --egress \
  --rule-number 100 \
  --protocol tcp \
  --cidr-block 0.0.0.0/0 \
  --rule-action allow \
  --port-range From=1024,To=65535

สรุป Security Groups

ทบทวนอีกครั้งว่า กลุ่มความปลอดภัย เชื่อมโยงกับอินสแตนซ์ (หรือ ENI) และอนุญาตเฉพาะกฎ Allow ที่ระบุไว้อย่างชัดเจนเท่านั้น (ไม่มี Deny) กลุ่มความปลอดภัยมี สถานะ (การตอบกลับข้อมูลขาเข้าที่ได้รับอนุญาตจะได้รับอนุญาตให้ออกโดยอัตโนมัติโดยไม่ต้องมีกฎ) และประเมินกฎที่เชื่อมโยงทั้งหมดร่วมกันโดยใช้ตรรกะ OR คุณสามารถอ้างอิง ID ของกลุ่มความปลอดภัยอื่นเป็นแหล่งที่มาหรือปลายทางได้ ซึ่งดูแลรักษาได้ง่ายกว่าช่วง IP กลุ่มความปลอดภัยเป็นกลไกหลักสำหรับควบคุมการเข้าถึงระดับอินสแตนซ์ ส่วน NACL จะเพิ่มชั้นการรักษาความปลอดภัยระดับซับเน็ต

ความแตกต่างสำคัญ: NACL กับ Security Groups

การเปรียบเทียบที่สำคัญสำหรับข้อสอบ:

  • ระดับ: NACL = ซับเน็ต; SG = อินสแตนซ์ (ENI)
  • สถานะ: NACL = ไม่มีสถานะ; SG = มีสถานะ
  • กฎ: NACL = Allow และ Deny; SG = อนุญาตเท่านั้น (ปฏิเสธโดยปริยาย)
  • การประเมิน: NACL = ตามลำดับ (กฎแรกที่ตรงกันมีผล); SG = ประเมินทุกกฎ (Allow ใด ๆ มีผล)
  • ขอบเขต: NACL ใช้กับอินสแตนซ์ทั้งหมดในซับเน็ต; SG ใช้เฉพาะกับอินสแตนซ์ที่เชื่อมโยง
  • ขาเข้า/ขาออก: NACL ต้องมีกฎอย่างชัดเจนทั้งสองทิศทาง; SG มีสถานะ (ต้องมีกฎขาเข้าเท่านั้นสำหรับการตอบกลับ)

กรณีที่ควรใช้ NACL

ใช้ NACL สำหรับ: การบล็อก IP ที่ระบุ (กลุ่มความปลอดภัยไม่สามารถปฏิเสธได้ ทำได้เพียงอนุญาตเท่านั้น ส่วน NACL สามารถเพิ่มกฎ Deny อย่างชัดเจนเพื่อบล็อก IP อันตรายหรือโปรแกรมเก็บข้อมูลที่ทราบแล้ว) กฎที่ครอบคลุมทั้งซับเน็ต (ใช้กฎเดียวกันกับอินสแตนซ์ทั้งหมดในซับเน็ต โดยไม่ต้องแก้ไขกลุ่มความปลอดภัยแต่ละรายการ) และ ชั้นการป้องกันเพิ่มเติม (หากการกำหนดค่ากลุ่มความปลอดภัยผิดพลาดจนเปิดการเข้าถึงโดยไม่ตั้งใจ กฎ Deny ของ NACL ที่ขอบเขตซับเน็ตยังสามารถบล็อกข้อมูลได้ ในทางปฏิบัติ ทีมส่วนใหญ่จัดการการเข้าถึงผ่านกลุ่มความปลอดภัยเป็นหลัก และใช้ NACL เฉพาะสำหรับการบล็อก IP อย่างชัดเจน

NACL เริ่มต้นกับ NACL แบบกำหนดเอง

NACL เริ่มต้น (สร้างขึ้นพร้อมกับทุก VPC) อนุญาตข้อมูลขาเข้าและขาออกทั้งหมด โดยมีกฎ 100 Allow All Inbound และ 100 Allow All Outbound ซับเน็ตที่ไม่ได้เชื่อมโยงกับ NACL แบบกำหนดเองอย่างชัดเจนจะใช้ NACL เริ่มต้น หากคุณสร้าง NACL แบบกำหนดเอง ระบบจะเริ่มต้นด้วยกฎ Deny-All เริ่มต้นเพียงกฎเดียว (กฎ *) ซึ่งบล็อกข้อมูลทั้งหมดจนกว่าคุณจะเพิ่มกฎ Allow อย่างชัดเจน นั่นหมายความว่าการเชื่อมโยง NACL แบบกำหนดเองใหม่กับซับเน็ตจะบล็อกข้อมูลทั้งหมดทันที ดังนั้นโปรดเพิ่มกฎ Allow ก่อนเชื่อมโยงกับซับเน็ตที่ใช้งานจริง

# Create a custom NACL (starts with DENY ALL)
aws ec2 create-network-acl --vpc-id vpc-12345678

# Associate it with a subnet
aws ec2 replace-network-acl-association \
  --association-id aclassoc-12345678 \
  --network-acl-id acl-custom-id

ลำดับการประเมิน: NACL และ Security Groups

สำหรับข้อมูลขาเข้าที่ไปยังอินสแตนซ์ EC2 ข้อมูลจะผ่าน NACL ที่ขอบเขตซับเน็ตก่อน (ประเมินตามลำดับกฎ) หาก NACL อนุญาตข้อมูล ข้อมูลจะไปถึง กลุ่มความปลอดภัย ของอินสแตนซ์ จากนั้นกลุ่มความปลอดภัยต้องอนุญาตข้อมูลดังกล่าวด้วย ทั้งสองส่วนต้องอนุญาตข้อมูลจึงจะไปถึงอินสแตนซ์ได้ สำหรับข้อมูลขาออก ระบบจะประเมินกลุ่มความปลอดภัยก่อน (มีสถานะ และอนุญาตหากเป็นการตอบกลับข้อมูลขาเข้าที่ได้รับอนุญาต) จากนั้นจึงประเมิน NACL (ไม่มีสถานะ และต้องมีกฎ Allow ขาออกอย่างชัดเจน) การเข้าใจลำดับนี้ช่วยอธิบายว่าทำไมจึงต้องมีกฎสำหรับข้อมูลตอบกลับใน NACL ที่ไม่มีสถานะ แม้จะใช้กลุ่มความปลอดภัยที่มีสถานะก็ตาม

การแก้ไขปัญหาด้วย NACL

NACL เป็นสาเหตุที่พบบ่อยของปัญหาเครือข่ายที่แก้ไขได้ยาก เนื่องจากไม่มีสถานะ อาการที่พบ ได้แก่ การเชื่อมต่อเริ่มต้นได้แต่ข้อมูลหยุดไหล (ไม่มีกฎพอร์ตชั่วคราวขาออก) ข้อมูลไหลได้เพียงทิศทางเดียว (ลืมกฎขาเข้าหรือขาออก) และ IP บางรายการไม่สามารถเชื่อมต่อได้ (กฎ Deny ที่มีหมายเลขต่ำกว่าตรงกันก่อนกฎ Allow) วิธีแก้ไขคือใช้ VPC Flow Logs เพื่อตรวจสอบว่าแพ็กเก็ตเป็น ACCEPT หรือ REJECT ที่ระดับ NACL บันทึกการไหลของข้อมูลจะแสดงแพ็กเก็ตที่ถูกปฏิเสธพร้อมต้นทางและปลายทาง ซึ่งช่วยระบุกฎที่ขาดหายไปได้

# Athena query to find NACL-rejected flows
SELECT sourceaddress, destinationaddress, destinationport, action
FROM vpc_flow_logs
WHERE action = 'REJECT'
  AND interfaceid LIKE 'eni-%'
LIMIT 100;

สถาปัตยกรรมความปลอดภัยแบบหลายชั้น

รูปแบบที่แนะนำสำหรับความปลอดภัยของ VPC แบบหลายระดับ: NACLs ในซับเน็ตสาธารณะอนุญาตเฉพาะพอร์ต 80, 443 และพอร์ตชั่วคราวที่จำเป็นจากอินเทอร์เน็ต และปฏิเสธทุกอย่างที่เหลือ กลุ่มความปลอดภัยของซับเน็ตสาธารณะ บน ALB อนุญาตพอร์ต 80/443 จาก 0.0.0.0/0 กลุ่มความปลอดภัยของแอปพลิเคชันในซับเน็ตส่วนตัว อนุญาตการเชื่อมต่อจาก ID ของกลุ่มความปลอดภัย ALB เท่านั้น กลุ่มความปลอดภัยของข้อมูลในซับเน็ตส่วนตัว อนุญาตการเชื่อมต่อจาก ID ของกลุ่มความปลอดภัยของแอปพลิเคชันเท่านั้น แนวทางการป้องกันเชิงลึกนี้ช่วยให้แม้ชั้นหนึ่งจะกำหนดค่าผิดพลาด ชั้นอื่นก็ยังช่วยป้องกันได้ ซึ่งเป็นหลักการที่เรียกว่า การจำกัดสิทธิ์การเข้าถึงในทุกชั้น

ตรวจสอบความเข้าใจอย่างรวดเร็ว

ทดสอบความเข้าใจแนวคิด AWS Solutions Architect (SAA-C03) จากบทเรียนนี้

สรุปบทเรียน

ในบทเรียนนี้ คุณได้เรียนรู้ว่า NACLs เป็นไฟร์วอลล์ระดับซับเน็ตแบบไร้สถานะที่รองรับกฎ Allow และ Deny ซึ่งประเมินตามลำดับหมายเลข, กลุ่มความปลอดภัยเป็นไฟร์วอลล์ระดับอินสแตนซ์แบบมีสถานะที่รองรับเฉพาะกฎ Allow โดยประเมินกฎทั้งหมดร่วมกัน และ ควรใช้ NACLs สำหรับการบล็อก IP อย่างชัดเจนและกฎที่มีผลทั่วทั้งซับเน็ต และใช้กลุ่มความปลอดภัยสำหรับควบคุมการเข้าถึงอินสแตนซ์อย่างละเอียด เนื้อหานี้เป็นการจบโมดูลพื้นฐาน VPC ต่อไปเราจะเจาะลึก RDS และฐานข้อมูลเชิงสัมพันธ์บน AWS

คำถามที่พบบ่อย

บทเรียน “ACL เครือข่ายเทียบกับกลุ่มความปลอดภัย” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “ACL เครือข่ายเทียบกับกลุ่มความปลอดภัย” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส AWS Solutions Architect ให้อัปเกรดเป็น CoddyKit PRO คอร์ส AWS Solutions Architect มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “ACL เครือข่ายเทียบกับกลุ่มความปลอดภัย”

เปรียบเทียบ ACL เครือข่ายแบบไม่เก็บสถานะกับกลุ่มความปลอดภัยแบบเก็บสถานะ และเรียนรู้ว่าเมื่อใดควรใช้แต่ละแบบเพื่อการป้องกันเครือข่ายหลายชั้น คุณปฏิบัติ AWS Solutions Architect ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน AWS Solutions Architect หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน AWS Solutions Architect บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน

บทเรียน “ACL เครือข่ายเทียบกับกลุ่มความปลอดภัย” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน AWS Solutions Architect นี้ได้ไหม

ได้ บทเรียน AWS Solutions Architect ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. สถาปัตยกรรม VPC และบล็อก CIDR
  2. เกตเวย์อินเทอร์เน็ตและตารางเส้นทาง
  3. เกตเวย์ NAT และซับเน็ตส่วนตัว
  4. ACL เครือข่ายเทียบกับกลุ่มความปลอดภัย
← กลับไปที่ AWS Solutions Architect