- ข้ออ้างที่ว่า IPv4 ปลอดภัยกว่าเพราะใช้ NAT เป็นค่าเริ่มต้น เกิดจาก การสับสนระหว่างความปลอดภัยกับการแปลงที่อยู่
- NAT (Network Address Translation) ไม่ใช่ฟังก์ชันด้านความปลอดภัย แต่เป็น กลไกประหยัดที่อยู่ เพื่อแก้ปัญหาการขาดแคลนที่อยู่ IPv4
- การทำงานของ NAT เป็นเพียงการทำให้อุปกรณ์หลายเครื่องแชร์ public IP เดียวกันโดยอาศัยการแมปพอร์ต
- ในความเป็นจริง หน้าที่บล็อกทราฟฟิกจากภายนอกไม่ใช่ NAT แต่คือ stateful firewall
- แม้ในสภาพแวดล้อม IPv6 โดยพื้นฐานแล้ว ไฟร์วอลล์จะบล็อกทราฟฟิกที่ไม่ได้รับอนุญาต ดังนั้นการไม่มี NAT จึงไม่ได้หมายความว่าความปลอดภัยจะลดลง
ความสับสนระหว่าง NAT กับความปลอดภัย
- ข้ออ้างที่ว่า IPv4 ปลอดภัยกว่าเพราะใช้ NAT เป็น ความเข้าใจที่ไม่ถูกต้อง
- NAT ไม่ใช่ฟังก์ชันด้านความปลอดภัย แต่เป็นเทคโนโลยีเพื่อ การประหยัดที่อยู่ (address conservation)
- ใน IPv6 ก็สามารถใช้ NAT ได้เช่นกัน แต่ไม่ได้ช่วยเพิ่มความปลอดภัย
- NAT ทำให้อุปกรณ์หลายเครื่องในเครือข่ายภายใน แชร์ public IP address เดียวกัน
- ทำการเราต์โดย เขียน destination IP ใหม่ (rewrite) ตาม destination port ของแพ็กเก็ต
- ทำงานตามกฎ port mapping หรือ port forwarding ที่ผู้ดูแลเครือข่ายตั้งค่าไว้
วิธีการทำงานจริงของ NAT
- ในสภาพแวดล้อมที่ใช้ NAT ทราฟฟิกที่เข้ามาจากภายนอกจะไม่ถูกส่งต่อไปยังอุปกรณ์ภายใน หากมี destination port ที่ไม่ตรงกับที่คาดไว้
- ทราฟฟิกดังกล่าวจะค้างอยู่ที่อุปกรณ์ที่มี public IP และจะไม่ถูกเราต์เข้าเครือข่ายภายใน
- ด้วยเหตุนี้ NAT จึงดูเหมือนบล็อกการเข้าถึงจากภายนอก แต่จริง ๆ แล้วเป็นเพียง ผลข้างเคียง ไม่ใช่เป้าหมายด้านการออกแบบเพื่อความปลอดภัย
บทบาทของไฟร์วอลล์
- ผลด้านความปลอดภัยที่มักเข้าใจผิดว่า NAT เป็นผู้ให้ แท้จริงแล้วมาจาก stateful firewall
- เราเตอร์สมัยใหม่ส่วนใหญ่มีนโยบายไฟร์วอลล์ที่ บล็อกทราฟฟิกขาเข้าเป็นค่าเริ่มต้น ไม่ว่าจะใช้ NAT หรือไม่ก็ตาม
- ไฟร์วอลล์จะ ทิ้ง (drop) ทราฟฟิกปลายทางที่ไม่คาดหมายก่อนที่จะมีการเขียนแพ็กเก็ตใหม่หรือทำการเราต์
- ตัวอย่างเช่น กฎไฟร์วอลล์ IPv6 เริ่มต้นของ เราเตอร์ UniFi มีดังนี้
- อนุญาตทราฟฟิก Established/Related (ทราฟฟิกตอบกลับขาออก)
- บล็อกทราฟฟิก Invalid
- บล็อกทราฟฟิกอื่นทั้งหมด
ความปลอดภัยในสภาพแวดล้อม IPv6
- แม้ในเครือข่าย IPv6 กฎไฟร์วอลล์พื้นฐานจะบล็อกทราฟฟิกขาเข้าที่ไม่ได้รับอนุญาต
- จึงได้รับการปกป้องในระดับเดียวกันแม้จะไม่ใช้ NAT
- หากต้องการ อนุญาตทราฟฟิกที่ไม่ได้ถูกร้องขอ จากภายนอกเข้าสู่อุปกรณ์ IPv6 จะต้องเพิ่มกฎไฟร์วอลล์อย่างชัดเจน
- เรื่องนี้ใช้เหมือนกันไม่ว่าจะใช้ NAT หรือไม่ก็ตาม
สรุป
- ข้ออ้างที่ว่า IPv6 ปลอดภัยน้อยลงเพราะไม่ใช้ NAT นั้น ไม่มีมูลความจริง
- ความปลอดภัยที่แท้จริงถูกกำหนดโดย นโยบายไฟร์วอลล์และกฎการควบคุมทราฟฟิก ไม่ใช่ NAT
- แม้ในสภาพแวดล้อม IPv6 ก็ยังคงรักษากลยุทธ์ความปลอดภัยแบบ default-deny ได้ด้วยการตั้งค่าไฟร์วอลล์ที่เหมาะสม
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
แนะนำให้อ่าน RFC 4787 section 5 ก่อนเข้าร่วมการถกเถียง
แม้ NAT จะ ไม่ใช่ไฟร์วอลล์ แต่ก็มีการกรองทราฟฟิก และด้วยเหตุนี้จึงให้ คุณสมบัติด้านความปลอดภัย ได้ในระดับหนึ่ง
ในโลกความเป็นจริง NAT ได้พัฒนาจนเกินกว่าการแปลงที่อยู่อย่างเดียว และแม้ IPv6 จะไม่ใช้ NAT ก็สามารถใช้ไฟร์วอลล์เพื่อทำการกรองแบบเดียวกันได้
Linux netfilter รองรับทั้ง NAT และไฟร์วอลล์ โดยกฎ DNAT/SNAT ในตาราง
natทำหน้าที่เป็น NAT และกฎ REJECT/DROP ในตารางfilterทำหน้าที่เป็นไฟร์วอลล์หากใช้เฉพาะกฎ NAT ทราฟฟิกที่ไม่ได้อยู่ในคอนเนกชันเดิมก็จะผ่านเข้าไปได้ตามปกติ
กล่าวถึงกระบวนการที่ NAT สร้าง state table เมื่อมีการเชื่อมต่อออกไปภายนอก และอนุญาตแพ็กเก็ตขาเข้าที่สอดคล้องกัน
กล่าวคือ “filtering” ในเอกสารนี้ไม่ได้หมายถึงการเชื่อมต่อขาเข้าที่ไม่ได้ร้องขอ
IPv6 สามารถปลอดภัยได้เท่ากับ IPv4 แต่ก็ขึ้นอยู่กับการตั้งค่า
การที่วิศวกรระบบและแอปพลิเคชันไม่เข้าใจปัญหาแบบองค์รวม และพึ่ง NAT กับไฟร์วอลล์ที่ขอบเครือข่าย เป็นนิสัยด้านความปลอดภัยที่ไม่ดี
โดยเฉพาะเมื่อห่างจากการใช้งานจริงมากขึ้น ความน่าเชื่อถือของ RFC ก็ลดลง
ในเครือข่ายมือถือของสหรัฐฯ มีการใช้ที่อยู่ IPv6 โดยไม่ต้องมี NAT
ตัวอย่างเช่น T-Mobile ใช้ 464XLAT เพื่อทำ tunnel IPv4 บน IPv6
สิ่งนี้แสดงให้เห็นว่าสามารถใช้งาน stateful firewall ในระดับใหญ่ได้แม้ไม่มี NAT
ทดสอบด้วย Termux และ netcat โดย IPv4 อยู่หลัง CGNAT แต่ IPv6 เชื่อมต่อได้โดยตรง
ถ้าความจุของเครือข่ายไม่พอ ก็ควรแก้ปัญหานั้น
เมื่อ IPv6 แพร่หลาย ผู้คนจะมองว่าการสื่อสารกันโดยตรงเป็นเรื่องปกติ
สิ่งแรกที่ได้เรียนรู้ในฐานะวิศวกรเครือข่ายคือความสัมพันธ์ระหว่าง NAT กับความปลอดภัย
ที่อยู่ private ของ IPv4 (192.168.0.1) เข้าถึงจากภายนอกได้ยาก แต่ ที่อยู่ global ของ IPv6 อาจเปิดเผยข้อมูลของอุปกรณ์ได้
IPv6 มีทางเลือกอย่าง Prefix Translation ที่ช่วยคงข้อดีบางส่วนของ NAT ไว้พร้อมกับยังเข้าถึงได้อย่างโปร่งใส
ต้องเทียบให้ตรงกันว่าเป็นที่อยู่ภายในหรือภายนอกทั้งคู่จึงจะยุติธรรม
ในสภาพแวดล้อม CGNAT การเชื่อมต่อขาเข้าเป็นไปไม่ได้ ดังนั้นใน IPv6 ก็สามารถจำกัดแบบเดียวกันได้
จะซ่อน prefix ด้วย NAT66 ก็ได้ แต่ประโยชน์ด้านความปลอดภัยจริง ๆ ไม่มาก
แฮ็กเกอร์จำนวนมากสับสนระหว่าง NAT กับไฟร์วอลล์
NAT ไม่ได้มีไว้เพื่อความปลอดภัย และไฟร์วอลล์ต่างหากที่ให้ความปลอดภัย
NAT คือ namespacing ส่วนไฟร์วอลล์คือ ความปลอดภัยตามนโยบาย
ตัว namespacing เองก็มีคุณสมบัติด้านความปลอดภัยที่ทรงพลัง เพราะทำให้ผู้โจมตี “ไม่รู้แม้แต่ชื่อ” ของทรัพยากร
ไฟร์วอลล์ IPv6 อาจเปิดเผยสู่ทั้งโลกได้ด้วยกฎที่ผิดเพียงบรรทัดเดียว
ต่อให้ไม่มีไฟร์วอลล์ NAT เพียงอย่างเดียวก็สามารถปกป้องทรัพยากรภายในได้
NAT ช่วยลดพื้นผิวการโจมตีของเครือข่ายในบ้านให้เหลือเพียงเราเตอร์ตัวเดียว
ขณะที่ไฟร์วอลล์อาจมีค่าเริ่มต้นต่างกัน ทำให้ IPv6 ถูกมองว่าเป็นการถอยหลังด้านความปลอดภัยสำหรับผู้ใช้ทั่วไป
การอ้างว่า UPnP ทำลายความปลอดภัยของ NAT ก็เหมือนกับการบอกว่า PCP ทำลายไฟร์วอลล์
ต่อข้ออ้างที่ว่าคุณสมบัติบล็อกโดยค่าเริ่มต้นของ NAT คือข้อได้เปรียบด้านความปลอดภัยของ IPv4
กฎบล็อกโดยค่าเริ่มต้นของ IPv6 ก็ให้ระดับความปลอดภัยเดียวกัน ดังนั้นจึงไม่มี ความต่างด้านความปลอดภัยเชิงโครงสร้าง
IPv4 NAT และกฎบล็อกโดยค่าเริ่มต้นของ IPv6 รักษาเงื่อนไขคงที่แบบเดียวกัน
ทั้งคู่สามารถเปราะบางได้เหมือนกันหากตั้งค่าผิด
เคยชะล่าใจเพราะคิดว่ามี NAT แล้ว แต่สุดท้าย SBC ถูกแฮ็กเพราะ ไม่ได้ตั้งค่าไฟร์วอลล์ IPv6
สาเหตุไม่ใช่ NAT แต่เป็นความผิดพลาดในการตั้งค่า IPv6
NAT เองก็สร้างปัญหาด้านความปลอดภัยได้เช่นกัน
เกิด reflection attack หรือความยากในการติดตามจากการแยก address กับ endpoint
ในอดีต AOL เคยมีกรณีที่ใช้ egress address ร่วมกันเพียงไม่กี่ตัว ทำให้บล็อกผู้ใช้บางรายได้ยาก
แต่เมื่อเวลาผ่านไป NAT กลับถูกมองเหมือน ความเชื่อด้านความปลอดภัยแบบ cargo cult
ผลของ NAT แตกต่างกันไปตามการตั้งค่าของ ISP และเราเตอร์
NAT ไม่ได้ถูกออกแบบมาเป็นฟีเจอร์ด้านความปลอดภัย แต่ให้ ผลด้านความปลอดภัยโดยอ้อม
ใน IPv6 เมื่อแต่ละอุปกรณ์ได้รับที่อยู่โดยตรง ก็จำเป็นต้องมีไฟร์วอลล์แบบบล็อกโดยค่าเริ่มต้น
ลิงก์สเปก UPnP
ต่อความเห็นที่ว่าคนที่ยืนยันว่า NAT คือพื้นฐานของความปลอดภัยเป็นคนที่ไม่รู้เรื่องเครือข่าย
พร้อมแชร์กรณีที่ ปัญหาการสะสมของ privacy address ทำให้ SIP server ล้มเหลว
การถกเถียงที่เกี่ยวข้องใน เธรด Reddit VOIP ก็ยังคงใช้ได้อยู่
ต่อข้ออ้างที่ว่า NAT ไม่ได้ทิ้งทราฟฟิกขาเข้า
NAT ทำเพียงแค่แปลงที่อยู่ และ ไม่ได้ทิ้งแพ็กเก็ต
และมีการบอกว่าได้แก้ไขบทความให้สะท้อนข้อเสนอแนะนี้แล้ว