วันศุกร์ที่ 12 กุมภาพันธ์ พ.ศ. 2553

การทำงาน ของ Network Address Translation (NAT) (ต่อ)

NAT มีขั้นตอนการทำงานอย่างไร
เมื่อ NAT เริ่มทำงาน มันจะสร้างตารางภายในซึ่งมีไว้สำหรับบรรจุข้อมูล IP addressของเครื่องในเครือข่ายภายในที่ส่ง packet ผ่าน NATdevice และจากนั้นมันก็จะสร้างตารางไว้สำหรับเก็บข้อมูลหมายเลขพอร์ต (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 networkIP addressจากเครือข่ายภายนอกไว้ได้ ซึ่งผู้ที่อยู่ภายนอกจะมองเห็นแค่เพียง outside IP address ของ NAT device เท่านั้น ดังนั้นโอกาสในการ broadcast หรือ hack หรือ spoof จึงแทบไม่มีโอกาสเป็นไปได้
ข้อดีอีกอย่างหนึ่งของ NAT คือทำให้ลดภาระของผู้ดูแลระบบลง จากเดิมที่ต้องดูแลทั้ง NAT device และเครื่องต่างๆ ในเครือข่ายภายใน การใช้ NATทำให้ผู้ดูแลระบบให้ความสนใจเพียง NAT device เพียงเท่านั้น ซึ่งทำให้ผู้ที่อยู่ภายนอกไม่สามารถส่ง packet เข้ามาได้ ถ้าไม่มีการเริ่มส่งจากเครือข่ายภายในก่อน และทุก packet จะต้องส่งผ่าน NATdevice เสมอ
ความง่ายในการดูแลเครือข่ายที่ใช้ NAT
• เนื่องจากเราสามารถใช้ non-routable address ในเครือข่ายภายใน ซึ่งสามารถใช้ได้อย่างมากมาย จึงทำให้ลดค่าใช้จ่ายสำหรับ routable address ลงไปได้
• สามารถแบ่งเครือข่ายให้เล็กลงได้อย่างง่าย และการเพิ่มเข้า-ลดออกของเครื่องคอมพิวเตอร์ในเครือข่ายก็ไม่มีผลกระทบต่อระบบ
NATdevice รุ่นใหม่ๆ สามารถทำหน้าที่เป็น DHCP server ได้ด้วย
NATdevice บางยี่ห้อ สามารถจำกัดการเข้าถึงอินเทอร์เน็ตได้ เช่นให้ใช้เฉพาะ HTTP เท่านั้น
• มี traffic logging คือมีการบันทึกข้อมูลลงล็อกไฟล์ ทำให้สามารถตรวจสอบรายงานการใช้งานได้
NATdevice บางตัวสามารถทำ routing ได้ด้วย ซึ่งทำให้เราสามารถสร้างเครือข่ายที่เป็น sub-network ได้
แต่ NATสามารถทำงานได้ในหลายโหมด
เมื่อ NATทำงานใน outbound mode ทำให้ผู้ที่อยู่ภายนอกไม่สามารถส่ง packet เข้ามาได้ ถ้าไม่มีการเริ่มส่งจากเครือข่ายภายในก่อน การทำงานในลักษณะนี้ยังมีจุดอ่อนในเรื่องของความปลอดภัยดังต่อไปนี้คือ
1. ถ้า internal side user เรียกใช้เว็บที่มีโค้ดที่เป็นอันตราย (malicious code) เช่น IIS web server ที่ติดไวรัส Nimda หรือ malicious ActiveX code หรือ malicious Java code ซึ่งตัว NATdevice เองจะไม่สามารถป้องกันอันตรายในลักษณะนี้ได้
2. มีโปรแกรมบางตัวที่อยู่ในเครื่องของ internal side พยายามส่ง packet ออกไป external side เช่น ม้าโทรจัน ซึ่งในกรณีนี้ NAT ก็ไม่สามารถป้องกันได้เช่นเดียวกัน
3. NATไม่ได้ปกป้องข้อมูลภายใน internal host เสมอไป เราสามารถตรวจสอบล็อกไฟล์ในบางเซิร์ฟเวอร์ (เช่น Windows Streaming Media Server) ซึ่งสามารถค้นพบว่า มีข้อมูลของ non-routable address และเวอร์ชั่นของระบบปฏิบัติการปรากฏอยู่
4. มีความเป็นไปได้ที่จะมีการสร้าง IPpacket ปลอม เพื่อหลอก NATdevice ว่า packet นี้ถูกเริ่มสร้างจาก internal IP addressจากนั้นตัว NAT device ก็จะ forward packet นี้ไปยัง internal network
5. และแน่นอนที่สุดNATไม่สามารถป้องกันVirusได้
เมื่อ 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 ไม่สามารถป้องกันอันตรายในลักษณะนี้ได้เลย นอกจากนี้ NATdevice ยังมีข้อเสียที่การเก็บข้อมูลลงล็อกไฟล์ ซึ่งการโจมตีดังที่กล่าวไปข้างต้นนั้น NATdevice (บางยี่ห้อ)จะไม่บันทึกข้อมูลลงล็อกไฟล์เลย ดังนั้นเราอาจจะโดนโจมตีโดยไม่รู้ตัวก็เป็นได้
นอกจากนี้การที่ user ใน internal networkรันโปรแกรมบนเครื่องตัวเอง ซึ่งโปรแกรมนั้นอาจจะเป็นม้าโทรจันก็เป็นไปได้ จากนั้นม้าโทรจันก็จะส่ง packet ออกไป external networkซึ่ง NATก็จะปล่อยให้ packet ผ่านไปได้เพราะถือว่าเป็นการ request จาก internal side ในกรณีนี้ก็จะเห็นได้ว่า NATไม่ได้ช่วยอะไรได้เลย
สรุป
NAT ไม่ใช่ทางเลือกที่ดีสำหรับ securityแน่นอนว่ามันสามารถป้องกันข้อมูลด้าน internal network ได้ มันปิดทุกพอ์รตที่เราไม่ได้ตั้งใจเปิดไว้ แต่มันก็ยังคงมีจุดอ่อนดังที่กล่าวมาแล้ว จำเป็นที่จะต้องมีไฟร์วอลล์, DMZ และ Intrusion Detection System ซึ่งได้รับการออกแบบให้เหมาะสมกับทรัพยากรที่มีอยู่ พร้อมกับการได้รับการดูแลจากผู้ดูแลระบบอย่างสม่ำเสมอ

ไม่มีความคิดเห็น:

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