3/14/2555

NAT คือ

      ในอดีตการเชื่อมต่อกับอินเทอร์เน็ตนั้น จำเป็นต้องมี Public IP address เป็นการเฉพาะจึงจะสามารถเชื่อมต่อและใช้งานได้ แต่เนื่องจากการเติบโตอย่างรวดเร็วของอินเทอร์เน็ตทำให้ IP ไม่เพียงพอต่อการใช้งาน ดังนั้น NAT จึงเป็นทางออกหนึ่งสำหรับการแก้ไขปัญหานี้ โดยการทำ NAT นั้นทำให้สามารถใช้ private IP เชื่อมต่อและใช้งานอินเทอร์เน็ตได้ และยังเพิ่มความปลอดภัยทางเครือข่าย (network security) อีกด้วย
NAT เป็นมาตรฐานหนึ่งของ RFC ถูกเขียนขึ้นในปี 1994 โดยสามารถแปลง (translation) IP หลายๆ ตัวที่ใช้ภายในเครือข่ายให้ติดต่อกับเครือข่ายอื่นโดยใช้ IP เดียวกัน ซึ่งถ้าดูจากภาพแล้วจะเข้าใจได้ชัดเจนยิ่งขึ้น

จากภาพจะเห็นว่าตัว NAT device มี IP address เป็น 192.168.1.1 สำหรับเครือข่ายภายใน (inside network) และมี IP address เป็น 203.154.207.76 สำหรับเครือข่ายภายนอก (outside network) เมื่อเครื่อง 192.168.1.20 ต้องการสร้างการติดต่อออกไปภายนอก (เช่น อินเทอร์เน็ต) ตัว NAT device ก็จะแปลง IP จาก 192.168.1.20 ไปเป็น 203.154.207.76 ซึ่งถ้ามองจากเครือข่ายภายในแล้วจะเห็นว่า เครื่องในเครือข่ายภายในสามารถ access ออกไปยัง external network ได้โดยตรง ในขณะที่เครื่องจากภายนอกจะไม่สามารถติดต่อเข้ามาได้ถ้าเครื่องจากเครือข่าย ภายในไม่ได้เป็นฝ่ายเริ่มต้นการติดต่อก่อน และข้อมูลขาออกที่ออกไปยัง external network นั้นจะเป็นข้อมูลที่มี source IP address เป็น outside IP address ของ NAT device
คำศัพท์ที่ควรทราบ
Non-Routable Address = IP address ที่อยู่ในช่วงที่ถูกสำรองไว้ ตาม RFC 1597 เพื่อใช้สำหรับ private network ได้แก่ 10.x, 172.16.x - 172.31.x, 192.168.x หรือมักจะถูกเรียกอีกอย่างว่าเป็น private IP address (ภาษาบ้านเราชอบเรียกว่า ไอพีปลอม)
NAT Device = อุปกรณ์ที่สามารถทำ network address translation ได้ เช่น Checkpoint Firewall, Linux box, Cisco 675 DSL router
Outbound Mode = การที่ NAT device ทำงานในลักษณะที่แปลง inside IP address ไปเป็น outside IP adrress และไม่ยินยอมให้ external side เป็นฝ่ายเริ่มการส่ง packet ก่อน
Bi-directional Mode = เมื่อ NAT device อนุญาตให้ external side สามารถเป็นฝ่ายเริ่มต้นส่งข้อมูลเข้ามายัง internal side ได้ โดย NAT จะทำการแปลง พอร์ตและ/หรือ address เรียกกันอีกอย่างว่า Port Address Translation (PAT)
NAT มีขั้นตอนการทำงานอย่างไร
เมื่อ NAT เริ่มทำงาน มันจะสร้างตารางภายในซึ่งมีไว้สำหรับบรรจุข้อมูล IP address ของเครื่องในเครือข่ายภายในที่ส่ง packet ผ่าน NAT device และจากนั้นมันก็จะสร้างตารางไว้สำหรับเก็บข้อมูลหมายเลขพอร์ต (port number) ที่ถูกใช้ไปโดย outside IP address (ในที่นี้คือ 203.154.207.76) และเมื่อมีการส่ง packet จากเครือข่ายภายในไปยังเครือข่ายภายนอก NAT device จะมีกระบวนการทำงานดังต่อไปนี้ :
1. มันจะบันทึกข้อมูล source IP adress และ source port number ไว้ในตารางที่เกี่ยวข้อง
2. มันจะแทนที่ IP ของ packet ด้วย IP ขาออกของ NAT device เอง (ในที่นี้คือ 203.154.207.76)
3. มันจะ assign หมายเลขพอร์ตใหม่ให้กับ packet และบันทึกค่าพอร์ตนี้ไว้ในตาราง และกำหนดค่านี้ลงไปใน source port number ของ packet นั้น
4. จากนั้นจะคำนวณหา IP, TCP checksum อีกครั้งเพื่อตรวจสอบความถูกต้อง
และเมื่อ NAT device ได้รับ packet ย้อนกลับมาจาก external network มันจะตรวจสอบ destination port number ของ packet นั้นๆ แล้วนำมาเปรียบเทียบกับข้อมูล source port number ในตารางที่บรรจุข้อมูลไว้ ถ้าเจอข้อมูลที่ตรงกันมันก็จะเขียนทับ destination port number, destination IP address ของ pakcet นั้นๆ แล้วจึงส่ง packet นั้นไปยังเครื่องอยู่ภายในเครือข่ายภายในที่เป็นผู้สร้าง packet นี้ขึ้นมาในครั้งแรก
ข้อดีของ Outbound Mode NAT เมื่อเปรียบเทียบกับ Firewall
อันตรายของอินเทอร์เน็ตในปัจจุบันนี้ก็คือ เมื่อเราเชื่อมต่อเข้ากับอินเทอร์เน็ต โอกาสที่เครื่องของเราจะถูก scan หรือ probe มีโอกาสสูงมาก เพราะ hackers, crackers หรือ script kiddies ต่างก็จ้องที่จะฉกฉวยข้อมูลไปจากเครื่องของเราตลอดเวลา
บริษัทต่างๆ มักจะใช้ไฟร์วอลล์เป็นตัวป้องกันอันตรายจากอินเทอร์เน็ต ไฟร์วอลล์เป็นอุปกรณ์ที่พิจารณา network traffic โดยจะดูในส่วนของ destination IP, source IP, destination port number, source port number หรือข้อมูล header อื่นๆ ว่าจะให้ผ่านหรือไม่ให้ผ่านตัวไฟร์วอลล์ไป ข้อเสียของไฟร์วอลล์ก็คือความยากในการเขียน rule และการบำรุงรักษา เพราะต้องใช้ความรู้เรื่องเครือข่ายเยอะพอสมควร และการบำรุงรักษานั้นถือเป็นเรื่องที่มีความสำคัญเพราะไฟร์วอลล์ที่มี rule set ที่ซับซ้อนและยุ่งยากมากอาจจะมีช่องโหว่ที่ไม่รู้ตัวก็เป็นได้
NAT ทำงานได้ในระดับเดียวกันกับไฟร์วอลล์แต่สามารถลดค่าใช้จ่ายและไม่ต้องการ ความรู้ด้านเทคนิคมากมายนัก NAT สามารถซ่อน internal network IP address จากเครือข่ายภายนอกไว้ได้ ซึ่งผู้ที่อยู่ภายนอกจะมองเห็นแค่เพียง outside IP address ของ NAT device เท่านั้น ดังนั้นโอกาสในการ broadcast หรือ hack หรือ spoof จึงแทบไม่มีโอกาสเป็นไปได้
ข้อดีอีกอย่างหนึ่งของ NAT คือทำให้ลดภาระของผู้ดูแลระบบลง จากเดิมที่ต้องดูแลทั้ง NAT device และเครื่องต่างๆ ในเครือข่ายภายใน การใช้ NAT ทำให้ผู้ดูแลระบบให้ความสนใจเพียง NAT device เพียงเท่านั้น ซึ่งทำให้ผู้ที่อยู่ภายนอกไม่สามารถส่ง packet เข้ามาได้ ถ้าไม่มีการเริ่มส่งจากเครือข่ายภายในก่อน และทุก packet จะต้องส่งผ่าน NAT device เสมอ
ความง่ายในการดูแลเครือข่ายที่ใช้ NAT
เนื่องจากเราสามารถใช้ non-routable address ในเครือข่ายภายใน ซึ่งสามารถใช้ได้อย่างมากมาย จึงทำให้ลดค่าใช้จ่ายสำหรับ routable address ลงไปได้
สามารถแบ่งเครือข่ายให้เล็กลงได้อย่างง่าย และการเพิ่มเข้า-ลดออกของเครื่องคอมพิวเตอร์ในเครือข่ายก็ไม่มีผลกระทบต่อระบบ
NAT device รุ่นใหม่ๆ สามารถทำหน้าที่เป็น DHCP server ได้ด้วย
NAT device บางยี่ห้อ สามารถจำกัดการเข้าถึงอินเทอร์เน็ตได้ เช่นให้ใช้เฉพาะ HTTP เท่านั้น
มี traffic logging คือมีการบันทึกข้อมูลลงล็อกไฟล์ ทำให้สามารถตรวจสอบรายงานการใช้งานได้
NAT device บางตัวสามารถทำ routing ได้ด้วย ซึ่งทำให้เราสามารถสร้างเครือข่ายที่เป็น sub-network ได้
แต่ NAT สามารถทำงานได้ในหลายโหมด
เมื่อ NAT ทำงานใน outbound mode ทำให้ผู้ที่อยู่ภายนอกไม่สามารถส่ง packet เข้ามาได้ ถ้าไม่มีการเริ่มส่งจากเครือข่ายภายในก่อน การทำงานในลักษณะนี้ยังมีจุดอ่อนในเรื่องของความปลอดภัยดังต่อไปนี้คือ
ถ้า internal side user เรียกใช้เว็บที่มีโค้ดที่เป็นอันตราย (malicious code) เช่น IIS web server ที่ติดไวรัส Nimda หรือ malicious ActiveX code หรือ malicious Java code ซึ่งตัว NAT device เองจะไม่สามารถป้องกันอันตรายในลักษณะนี้ได้
มีโปรแกรมบางตัวที่อยู่ใน เครื่องของ internal side พยายามส่ง packet ออกไป external side เช่น ม้าโทรจัน ซึ่งในกรณีนี้ NAT ก็ไม่สามารถป้องกันได้เช่นเดียวกัน
NAT ไม่ได้ปกป้องข้อมูลภายใน internal host เสมอไป เราสามารถตรวจสอบล็อกไฟล์ในบางเซิร์ฟเวอร์ (เช่น Windows Streaming Media Server) ซึ่งสามารถค้นพบว่า มีข้อมูลของ non-routable address และเวอร์ชั่นของระบบปฏิบัติการปรากฏอยู่
มีความเป็นไปได้ที่จะมีการส ร้าง IP packet ปลอม เพื่อหลอก NAT device ว่า packet นี้ถูกเริ่มสร้างจาก internal IP address จากนั้นตัว NAT device ก็จะ forward packet นี้ไปยัง internal network
และแน่นอนที่สุด NAT ไม่สามารถป้องกันไวรัสได้
เมื่อ NAT ทำงานใน bi-directional mode หรือ PAT mode ตัว NAT device จะมีตารางซึ่งใช้เก็บข้อมูลเพื่อ map external address, port ไปเป็น internal address, port ซึ่งในกรณีนี้จะอนุญาตให้เราเซ็ทอัพ internet IP address, port ได้ที่ external side ของ NAT device จากนั้นก็จะทำ statically map ไปยัง private address, port ซึ่งอยู่ที่ internal side ของ NAT device ยกตัวอย่างเช่น เราสามารถตั้งเว็บเซิร์ฟเวอร์ที่ internal side โดยมี IP address เป็น 192.168.1.20 ที่พอร์ต 80 และมีค่า internet IP address เป็น 203.154.207.76 พอร์ต 80 ที่ external side เมื่อมี request จากภายนอกเข้ามายังexternal address ที่พอร์ต 80 มันจะถูกส่งต่อไปยังพอร์ต 80 ของ internal address และเมื่อมี request มาที่พอร์ตอื่นนอกเหนือจาก 80 แล้ว ข้อมูลนั้นจะถูกทิ้งไป
คำถามคือ NAT ยังมีความปลอดภัยเพียงพอหรือไม่
มีหลายคนที่ยังเข้าใจผิดเรื่อง NAT โดยมักจะคิดว่าถ้ามี NAT แล้วก็ไม่จำเป็นต้องมีไฟร์วอลล์ ซึ่งจริงๆ แล้ว NAT ยังมีช่องโหว่ที่ต้องพิจารณาอีก ในกรณีที่ NAT ทำงานใน bi-directional mode นั้น จะต้องมีการเปิดพอร์ตสำหรับให้บริการเสมอ เช่น 20-21 (FTP), 23(TELNET), 25 (SMTP), 53 (DNS), 80 (HTTP), 110 (POP), 143 (IMAP) ซึ่งพอร์ตเหล่านี้เป็นที่รู้จักกันดี และมี exploit code ที่รันได้บนพอร์ตเหล่านี้ ซึ่งมักจะมีช่องโหว่อยู่เสมอ และ NAT ไม่สามารถป้องกันอันตรายในลักษณะนี้ได้เลย นอกจากนี้ NAT device ยังมีข้อเสียที่การเก็บข้อมูลลงล็อกไฟล์ ซึ่งการโจมตีดังที่กล่าวไปข้างต้นนั้น NAT device (บางยี่ห้อ)จะไม่บันทึกข้อมูลลงล็อกไฟล์เลย ดังนั้นเราอาจจะโดนโจมตีโดยไม่รู้ตัวก็เป็นได้
นอกจากนี้การที่ user ใน internal network รันโปรแกรมบนเครื่องตัวเอง ซึ่งโปรแกรมนั้นอาจจะเป็นม้าโทรจันก็เป็นไปได้ จากนั้นม้าโทรจันก็จะส่ง packet ออกไป external network ซึ่ง NAT ก็จะปล่อยให้ packet ผ่านไปได้เพราะถือว่าเป็นการ request จาก internal side ในกรณีนี้ก็จะเห็นได้ว่า NAT ไม่ได้ช่วยอะไรได้เลย
บทสรุป
NAT ไม่ใช่ทางเลือกที่ดีสำหรับ security แน่นอนว่ามันสามารถป้องกันข้อมูลด้าน internal network ได้ มันปิดทุกพอ์รตที่เราไม่ได้ตั้งใจเปิดไว้ แต่มันก็ยังคงมีจุดอ่อนดังที่กล่าวมาแล้ว จำเป็นที่จะต้องมีไฟร์วอลล์, DMZ และ Intrusion Detection System ซึ่งได้รับการออกแบบให้เหมาะสมกับทรัพยากรที่มีอยู่ พร้อมกับการได้รับการดูแลจากผู้ดูแลระบบอย่างสม่ำเสมอ
เอกสารอ้างอิง
http://www.thaicert.org/paper/firewall/nat.php
http://www.sans.org/infosecFAQ/firewall/net_add.htm
http://www.sans.org/infosecFAQ/firewall/net_add2.htm
http://www.vicomsoft.com/knowledge/reference/nat.html

0 ความคิดเห็น:

แสดงความคิดเห็น