Upload
others
View
2
Download
0
Embed Size (px)
Citation preview
ระบบจดการรกษาความปลอดภย ภายในกอง 2 ศนยรกษาความปลอดภย กองบญชาการกองทพไทย
Web management security forArmed Force Security Center
ฤทธเดช แสงแจม Rittidech Sangjam
สารนพนธฉบบนเปนสวนหนงของการศกษาตามหลกสตรวทยาศาสตรมหาบณฑต
สาขาเทคโนโลยสารสนเทศ บณฑตวทยาลยมหาวทยาลยเทคโนโลยมหานคร
ปการศกษา 2553
หวขอโครงงาน ระบบจดการรกษาความปลอดภย ภายใน กอง 2 ศนยรกษาความปลอดภย กองบญชาการกองทพไทยนกศกษา ฤทธเดช แสงแจมรหสนกศกษา 5217680013ปรญญา วทยาศาสตรมหาบณฑตสาขา เทคโนโลยสารสนเทศพ.ศ. 2553อาจารยควบคมโครงงาน ดร.วรพล ลลาเกยรตสกล
บทคดยอ
ปรญญานพนธฉบบนนำาเสนอเพอศกษาการทำางานของระบบ ไฟรวอลล บนระบบปฎบตการ ลนกส ใหทำางานรวมกบระบบ Layer7 Fitltering ในการวเคราะหโปรโตคอลทสนใจ และตรวจสอบขอมลทผานเขาออกทงหมด ในระบบเครอขาย เพอเพมประสทธภาพของระบบเครอขาย และ รกษาความปลอดภย จาก โปรโตคอลทไมตองการใหใชงานในระบบเครอขาย และทำาการสกดกนมให เขามาในระบบเครอขายตอไป
I
Project Title Web management security for Armed Force Security Center
Student Rittidech SangjamStudent ID 5217680013Degree Master of ScienceProgram Information TechnologyYear 2010Thesis Advisor Dr.Woraphon Lilakiatsakun
ABSTRACT
This project is to present A performance study of Linux-Based on Firewall the system can use coporate Layer7 Fitltering. The method analyze performance of specific protocol and detect all data input and output to system. And fixing some protocol about problem protocol reject form system.
II
กตตกรรมประกาศ
ในการจดทำาปรญญานพนธเรอง ระบบจดการรกษาความปลอดภยเพอศกษาการทำางานของระบบ ไฟรวอลล บนระบบปฎบตการ ลนกส ในการวเคราะหโปรโตคอลทสนใจ และตรวจสอบขอมลทผานเขาออกทงหมด ในระบบเครอขาย เพอเพมประสทธภาพของระบบเครอขาย และ รกษาความปลอดภย จาก โปรโตคอลทไมตองการใหใชงานในระบบเครอขาย และทำาการสกดกนมให เขามาในระบบเครอขายตอไป โดยไดรบความชวยเหลอและคำาแนะนำาตาง ๆ จากบคคลมากมายจนทำาใหโครงงานสำาเรจลลวงไปไดดวยด ทางคณะผจดทำา จงขอกราบของพระคณบคคลตอไปนอยางสง
ขอกราบขอบพระคณบดามารดาอยางสง ผทใหกำาเนดและใหการอบรมดแล อกทงยงคอยใหกำาลงใจ ความหวงใยและความเขาใจเสมอมา
ขอกราบขอบพระคณ ดร.วรพล ลลาเกยรตสกล อาจารยประจำา ภาควชาเทคโนโลยสารสนเทศ คณะวทยาการสารสนเทศศาสตร มหาวทยาลยเทคโนโลยมหานคร และ อาจารย ทปรกษาโครงงานทใหคำาแนะนำา คำาปรกษา ความชวยเหลอตางๆ ตลอดระยะเวลาทพฒนาโครงงาน
ฤทธเดช แสงแจม ผจดทำา
III
สารบญ
บทคดยอภาษาไทย...................................................................................................... บทคดยอภาษาองกฤษ................................................................................................. กตตกรรมประกาศ………………………………………………………………………….. สารบญ……………………………………………………………………………………….สารบญ (ตอ).……………………………………………………………………………….. สารบญรป…………………………………………………………………………………… สารบญรป (ตอ) …….………………………………………………………………………
บทท 1 บทนำา……………………………………………………………………………….. 1.1 กลาวนำา…………………………………………………………………… 1.2 วตถประสงคของโครงงาน………………………………………………...1.3 แนวทางการดำาเนนงาน....………………………………………………..1.4 ขอบเขตของโครงงาน.....……………..………………………………….
1.5 โครงสรางของโครงงาน…………………………………………………..
บทท 2 ทฤษฎทเกยวของกบโครงงาน…………………………………………………….. 2.1 ทฤษฎทเกยวของกบโครงงาน…………………………………………… 2.1.1 ลนกซคออะไร…………………………………………….. 2.1.2 โปรโตคอล TCP/IP……………………….......................
2.1.3 ไฟลวอลล (Firewall)……………………………………… 2.1.4 Network Address Translation (NAT)………………….. 2.1.5 การใชงานคำาสง iptables………………………………… 2.1.6 Linux Traffic Control....................................................
2.1.7 Sudo……………………….………………………………
บทท 3 วธการดำาเนนงาน...........................……………………………………………..3.1 ความตองการพนฐานของโครงงาน……………………………………… 3.2 วธการดำาเนนงานโครงงาน.……………………………………………… 3.3 โครงสรางของระบบ...........……………………………………………… 3.3.1 การกำาหนดไอพบนเครองแมขาย.................................... 3.3.2 การ Compile Kernel Linux ใหมเพอรองรบ Protocol Layer7 Filter……………………………………………..
หนาIIIIIIIVVVIVII
111112
3334
2225262939
4242424242
43
IV
สารบญ (ตอ)
3.3.3 การทดลองคำาสง Layer 7……………….........................3.3.4 การตดตง Portsentry……………………………………..
3.3.5 การเปดการทำางานของ IP_FORWARD......................... 3.3.6 การทำา IP Masquerading ……………………………….
3.3.7 การใชคำาสง tc ในการกำาหนด Bandwidth Limiting....... 3.3.8 การใชคำาสง iptable L7protocol Bandwidth Limiting.....
3.3.9 การจดทำา Web configuration……………………......... 3.4 การใชงาน Web Management……..……………………………………
3.4.1 การเปด Web Configuration ……..………….................3.4.2 การใชงาน Block with Iptable.......................................3.4.3 การใชงาน Block Service with TCPWarppers..............3.4.4 การใชงาน Send Mail Alert to admin...........................3.4.5 การใชงานปม Report Portsentry...................................3.4.6 การใชงานแทบ Firewall………………………………….3.4.7 การใชงานแทบ QoS……………………………………...
บทท 4 การทดลองการทำางาน…………………………………………………………….4.1 โครงสรางของระบบ...……………………………………………………
4.2 การทดลอง...............…………………………………………………… 4.2.1 ผลการทดลองระบบ NetworkAddressTranslator (NAT)
4.2.2 การใชงาน Iptables TCPWarppers และ Sendmail Alert to Admin................................................................
4.2.3 การใชงาน Web-base เพอจดการ Iptable.....................4.2.4 การจดการ QoS…………………………………………..
บทท 5 สรปผลการทดลอง..........................………………………………………………5.1 สรปผลการทดลอง..............................................................................
5.2 ขอเสนอแนะ……………………………………………………………….. 5.3 แนวทางในการพฒนาตอ…………………………………………………..
เอกสารอางอง………………………………………………………………………………..
สารบญรป
หนา464747484849505050515151525253
54545455
566063
65656565
66
V
รปท 2.1 TCP/IP Layer……………………………………………………………………. รปท 2.2 เลเยอรของโปรโตคอลตางๆในชด TCP/IP……………………………………... รปท 2.3 IP Header………………………………………………………………………... รปท 2.4 ARP Packet format…………………………………………………………… รปท 2.5 การ Encapsulate ICMP………………………………………………………… รปท 2.6 ICMP Message………………………………………………………………….. รปท 2.7 UDP Encapsulation…………………………………………………………….. รปท 2.8 UDP header…………………………………………………………………… รปท 2.9 ฟลดทใชในการคำานวณหา UDP checksum…………………………………… รปท 2.10 Encapsulation ของขอมล TCP ใน IP datagram…………………………….. รปท 2.11 TCP Header……………………………………………………………………. รปท 2.12 บลอกไดอะแกรมแสดงการทำางานของระบบไฟลวอลลและ NAT………….......รปท 2.14 Classful Qdisc............................................................................................รปท 2.15 Classless and Classful Combined.............................................................รปท 2.16 FIFO Queuing Discipline...........................................................................รปท 2.17 SFQ Queuing Discipline............................................................................รปท 2.18 PRIO Queuing Discipline...........................................................................รปท 2.19 Flat Link-sharing........................................................................................ รปท 3.1 แสดงระบบเครอขายทใชทดลอง…………………………………………………รปท 3.2 ผลลพธจากคำาสง # iptables –t nat –L…………………………………………. รปท 3.3 ไดอะแกรมของคลาสทสรางในระบบ Linux Traffic Control…..………………. รปท 3.4 แสดงการแกไขไฟล sudoers …………………………………………………… รปท 3.5 แสดง web Interface Traffic Control ………………………..………………… รปท 3.6 แสดงวามการคอนฟกท Block with Iptable…………………………………….รปท 3.7 แสดงวามการคอนฟก TCPWarppers ………………………………………….รปท 3.8 แสดงวามการคอนฟก Send Mail ……………………………………………….รปท 3.9 แสดงรายละเอยดหมายเลขไอพทเขามา สแกนพอรตในระบบ…………………รปท 3.10 แสดงการคอนฟกท Chain Forward……………………………………………รปท 3.11 แสดงการคอนฟกท Chain
หนา469
1213141516172021243233343637384248485050515152525353535455
VI
Input……………………………………………….รปท 3.12 แสดงการคอนฟกทแทป Qos…………………………………………………..รปท 4.1 แสดงระบบเครอขายทใชในการทดลอง……………………..………………….. รปท 4.2 รายละเอยดของการสงแพคเกต………………………………………………….
สารบญรป(ตอ)
รปท 4.3 แสดงการใชงาน Iptable TCPWarppers และ Sendmail Alert to Admin……รปท 4.4 แสดงผลหลงการ setup ให Iptables TCPWarppers และ Sendmail Alert to Admin ทำางาน……………………………………………………………………………………รปท 4.5 แสดงผลการ setup Iptable………………………………………………………รปท 4.6 แสดงผลการ setup TCPWarppers…………………………………………….. รปท 4.7 แสดงผลการ setup Sendmail Alert to admin…………………………………รปท 4.8 แสดงการ Scan Port โดยใชโปรแกรม Nmap………………………………….รปท 4.9 แสดงผลการ Drop IP 58.8.105.4 ของ Iptables……………………………….รปท 4.10 แสดงผลการ Drop IP 58.8.105.4 ของ Portsentry…………………………..รปท 4.11 แสดงอเมลลแจงเตอนการ Scan Port…………………………………………รปท 4.12 แสดงรายละเอยดภายในอเมลลแจงเตอนการ Scan Port……………………รปท 4.13 แสดงการใชงาน Web-base เพอจดการ Iptable…………………………….รปท 4.14 แสดงการสราง Policy ใน Chain FORWARD………………………………รปท 4.15 แสดงการใชงานคอนฟกทแทป Chain Input………………………………..รปท 4.16 แสดงการสราง Policy ใน Chain Input………………………………………รปท 4.17 ผลลพธการใชคำาสง iptable L7protocol Drop Protocal Bittorrent………...รปท 4.18 ผลลพธกอนการใชคำาสง iptable Accept Port 22……………………………รปท 4.19 ผลลพธหลงการใชคำาสง iptable Accept Port 22…………………………….รปท 4.20 แสดงการใชงาน Web-base เพอจดการ QoS………………………………..รปท 4.21 แสดงการสราง Policy ใน Chain Postrouting………………………………..รปท 4.22 แสดงผลการวด Traffic ใน Class ท 2………………………………………..
หนา56
56565757585859596060616161626263636464
VII
บทท 1 บทนำำ (INTRODUCTION)
1.1 กลาวนำาปจจบนอนเตอรเนตมบทบาทสำาคญตอการดำาเนนกจกรรมตางๆ เปนอยางมาก ไมวาจะเปนดาน
การตดตอสอสาร ธรกจ การศกษา หรอวาเพอความบนเทง องคกรตางๆ ทงภาครฐและเอกชน ตางกนำาเอาเนตเวรกของตนเชอมตอเขากบอนเตอรเนตเพอทจะไดรบประโยชนเหลาน การนำาเอาเนตเวรกไปเชอมตอกบอนเตอรเนตนน ทำาใหใครกไดบนอนเตอรเนตสามารถเขามายงเนตเวรกนนๆ ได ปญหาทตามมากคอความปลอดภยของระบบเนตเวรก เชน ทำาใหเกดความเสยงตอการถกเจาะระบบ และ ขโมยขอมล เปนตน รวมไปถงการนำาเครอขายไปใชผดวตถประสงคและใชแบนดวธไปจำานวนมากจนสงผลกระทบกบเครอขายภายในองคกร
จากปญหาดงกลาวจงมแนวคดในการจดทำาระบบรกษาความปลอดภยในเครอขายดวยระบบปฏบตการลนกซ เนองจากระบบปฏบตการดงกลาวเปน open source ซงเรมมการใชงานอยางแพรหลายและประหยดงบประมาณของหนวยงาน1.2 วตถประสงคของโครงงำน
1. ศกษาการจดการรกษาความปลอดภยในเครอขายดวยลนกซ2. พฒนาระบบการรกษาความปลอดภยของเครอขายภายในกอง 2 ศรภ.บก.กองทพไทย
ใหมประสทธภาพและประหยดงบประมาณของราชการ 1.3 แนวทำงกำรดำำเนนงำน
1. ศกษาการรกษาความปลอดภยของระบบเครอขายโดยใช PortSentry 2. ศกษาการรกษาความปลอดภยของระบบเครอขายโดยใช Iptable 3. ศกษาการรกษาความปลอดภยของระบบเครอขายโดยใช TCP Wrappers4. ศกษาการทำางานของคณภาพของการใหบรการ (Quality of Service / QoS)5. ทดสอบประสทธภาพการทำางานระบบรกษาความปลอดภยของเครอขาย6. วเคราะหและสรปผลการทดสอบ7. พฒนาจดทำา Web-Based เพออำานวยความสะดวกในการจดการกบระบบรกษาความปลอดภย8. จดทำาเอกสารโครงงาน
1.4 ขอบเขตของโครงงำน1. ใชควบคมระบบรกษาความปลอดภยผานระบบเวบเบสอนเทอรเฟส2. ปองกนการเขาถงเวบไซตทไมตองการ3. ปองกนการบกรกระบบและตรวจสอบผบกรก4. กำาหนดความเรวของอนเทอรเนตของผใชงาน
1
1.5 โครงสรำงของโครงงำนโครงงานนจะแบงเนอหาออกเปน 5 บท โดยสรปไดดงนบทท 1 เปนการกลาวถงภาพรวมของปญหา แรงจงใจ วตถประสงคของการทำาโครงงาน รวมถง
ประโยชนทคาดวาจะไดรบบทท 2 เปนการกลาวถงทฤษฎพนฐานทนำามาใชในการทำาโครงงานบทท 3 เปนการกลาวถงวธการดำาเนนงานรวมไปถงการตดตงระบบและวธการใชงานบทท 4 เปนการกลาวถงการทดสอบระบบบทท 5 เปนการสรปผลการทดลองและเสนอแนะแนวทางในการพฒนาโครงงานตอไปในอนาคต
2
บทท 2ทฤษฎทเกยวของกบโครงงาน
2.1 ทฤษฎทเกยวของกบโครงงานในสวนของทฤษฎทเกยวของกบโครงงานโดยหลก ๆ แลว ผพฒนาจะอธบายถง
ระบบปฏบตการลนกซ เรองเกยวกบการเครอขายคอมพวเตอรรวมไปจนถงโปรแกรมสำาเรจรปตาง ๆ ทตองใชซงมรายละเอยดดงตอไปน
2.1.1 ลนกซคออะไรอ.บณฑต จามรภต [1],[2] กลาววา ลนกซระบบปฏบตการแบบ 32 บต
(ในปจจบนนมเวอรช น 64 บตแลว) ทเปนยนกซโคลน สำาหรบเครองพซและแจกจายใหใชฟร สนบสนนการใชงานแบบหลากงานหลายผใช (MultiUser-MultiTasking) มระบบเอกซวนโดวส (X Window) ซงเปนระบบการตดตอผใชแบบกราฟฟกทไมขนกบโอเอสหรอฮารดแวรใด ๆ (มกใชกนมากในระบบยนกซ) และมาตรฐานการสอสาร TCP/IP ทใชเปนมาตรฐานการสอสารในอนเทอรเนตมาใหในตว
ลนกซมความเขากนได (Compatible) กบ มาตรฐาน POSIX ซงเปนมาตรฐานอนเทอรเฟสทระบบยนกซสวนใหญจะตองม และมรปแบบบางสวนทคลายกบระบบปฏบตการ ยนกซจากคาย Berkeley และ System V โดยความหมายทางเทคนคแลวลนกซ เปนเพยงเคอรเนล (kernel) ของระบบปฏบตการซงจะทำาหนาทในดานของการจดสรรและบรหารโพรเซส (Process) งาน การจดการไฟลและอปกรณ I/O ตาง ๆ แตผใชท ว ๆ ไปจะรจกลนกซผานทางแอพพลเคชนและระบบอนเทอรเฟสทเขาเหลานนเหน (เชน Shell หรอ X วนโดวส)
ลนกซถอกำาเนดขนในฟนแลนด ป คศ. 1980 โดยลนส โทรวลดส (Linus Trovalds) นกศกษาภาควชาวทยาการคอมพวเตอร (Computer Science) ในมหาวทยาลยเฮลซงก ลนส เหนวาระบบมนกซ (Minix) ทเปนระบบยนกซบนพซในขณะนน ซงทำาการพฒนาโดย ศ. แอนดรว ทาเนนบาวม (Andrew S. Tanenbaum) ยงมความสามารถไมเพยงพอแกความตองการ จงไดเรมตนทำาการพฒนาระบบยนกซของตนเองขนมาโดยจดประสงคอกประการ คอ ตองการทำาความเขาใจในวชาระบบปฏบตการคอมพวเตอรดวย เมอเขาเรมพฒนาลนกซไปชวงหนงแลว เขากไดทำาการชกชวนใหนกพฒนาโปรแกรมอน ๆ มาชวยทำาการพฒนาลนกซ ซงความรวมมอสวนใหญกจะเปนความรวมมอผานทางอนเทอรเนต
ลนกซจะเปนคนรวบรวมโปรแกรมทผพฒนาตาง ๆ ไดรวมกนทำาการพฒนาขนมาและแจกจายใหทดลองใชเพอทดสอบหาขอบกพรอง ทนาสนใจกคองานตาง ๆ เหลานผคนทงหมดตางกทำางานโดยไมคดคาตอบแทน และทำางานผานอนเทอรเนตทงหมด
ปจจบนเวอรชนลาสดของระบบลนกซทไดประกาศออกมาคอ เวอรชน 2.6.2 ขอสงเกตในเรองเลขรหสเวอรชนนกคอ ถารหสเวอรชนหลงทศนยมตวแรกเปนเลขคเชน 2.0.x, 2.2.x เวอรชนเหลานจะถอวาเปนเวอรชนทเสถยรแลวและมความมนคงในระดบหนง แตถาเปน
3
เลขคเชน 2.1.x, 2.3.x จะถอวาเปนเวอรชนทดสอบ ซงในเวอรชนเหลานจะมการเพมเตมความสามารถใหม ๆ ลงไป และยงตองทำาการทดสอบหาขอผดพลาดตาง ๆ อย
2.1.2 โปรโตคอล TCP/IP เรองไกร รงสพล [3] กลาววา โปรโตคอล TCP/IP เปนชดของโปรโตคอลทมการ
พฒนามาตงแตป 1960 โดยมวตถประสงคใหสามารถใชสอสารจากตนทางขามเนตเวรกไปยงปลายทางได และสามารถหาเสนทางทจะสงขอมลไปไดโดยอตโนมต ถงแมวาในระหวางทางอาจจะผานเนตเวรกทมปญหา โปรโตคอลกยงคงหาเสนทางสงผานขอมลไปใหถงปลายทางจนได ในระยะเรมตนโปรโตคอลนใชกนในวงแคบๆ เฉพาะราชการและสถานศกษาของอเมรกา จนในชวงป 1990 จงมการนำามาใชกนในวงแคบ ๆ จดเรมตนของอนเทอรเนตในปจจบน
จากทกลาวมาขางตนจะเหนไดวา TCP/IP นมการออกแบบมาเปนเวลานาน และตงแตป 1960 กมการใชไปปรบปรงไปอยเรอยๆ เพอใหสามารถใชงานไดหลากหลายและมประสทธภาพมากขน แตอยางไรกตามโปรโตคอลนกยงคงมจดบกพรองอกมากมาย ซงจดบกพรองเหลานบางสวนกมไดมผลกระทบรนแรงเทาไรนกในมมมองของนกคอมพวเตอรโดยทวไป แตกลบกลายเปนเครองมอนทรงอานภาพของบรรดาเหลาแฮกเอรทงหลายทหยบฉวยขอบกพรองเหลานมาใชในการโจมตผอน โดยเฉพาะการโจมตแบบ D0S นนลวนแตใชขอบกพรองของ TCP/IP แทบทงสน
การแบงชน (Layering) : TCP/IP เปนชดของโปรโตคอลทประกอบดวยโปรโตคอลยอยหลายตว โดยแตละตวกจะทำาหนาทในแตละชนหรอเลเยอร (layer) ซงรบผดชอบและแปรความหมายของขอมลในแตละระดบของการสอสาร ซงในภาพรวมแลว TCP/IP แบงออกเปน 4 เลเยอรดงรป
Application
Transport
Network
Link
Physical
รปท 2.1 TCP/IP Layer
4
หนาทความรบผดชอบแตละเลเยอรมดงน- Link Layer ในเลเยอรนจะเปนดไวซไดรเวอรททำางานอยบนระบบปฏบตการแตละ
ระบบทำาหนาทรบผดชอบในการรบสงขอมลตงแตระดบกายภาพ,สญญาณไฟฟา จนถงการแปลความจากระดบสญญาณไฟฟาจนเปนขอมลทางคอมพวเตอร โปรโตคอลระดบน เชน Ethernet และ SLIP (Serial Line Internet Protocol)
- Network Layer รบผดชอบในการรบ-สงขอมลในเนตเวรก สงตอขอมลไปจนถงจดหมายปลายทาง โปรโตคอลระดบน ไดแก IP,ICMP,IGMP
- Transport Layer รบผดชอบในการรบสงขอมลระหวางเครองหนง (Host) ไปยงอกโฮสตหนง และจะสงขอมลขนไปให Application Layer นำาไปใชงานตอ มโปรโตคอลทจดอยในเลเยอรนคอ TCP และ UDP ซงมลกษณะในการรบสงขอมลทแตกตางกนออกไป
- Application Layer เปนเลเยอรทแอพพลเคชนเรยกใชโปรโตคอลระดบลางๆ ลงไปเพอวตถประสงคแตกตางกน เชน
FTP (File Transfer Protocol) : ใชสำาหรบรบสงแฟมขอมลระหวางโฮสตSMTP (Simple Mail Transfer Protocl) : ใชรบสงจดหมายอเลกทรอนคสระหวางโฮสตTelnet : ใชสำาหรบการควบคมเครองระยะไกลHTTP (Hypertext Transfer Protocol) : เปนโปรโตคอลทใชรบสงขอมลเวบเพจ
ระหวางบราวเซอรและเวบเซรฟเวอรPOP (Post Office Protocol) :ใชสำาหรบดาวนโหลดอเมลจากเมลเซรฟเวอรมาไวท
เครองเมล ไคลเอนต (PC) ของผใชTCP/IP Layering ในชดของโปรโตคอล TCP/IP ประกอบดวยโปรโตคอลหลายตวทำางานรวมกนใน
เลเยอรตางๆ และมหนาทแตกตางกนออกไป ตามรปแสดงใหเหนถงโปรโตคอลในแตละเลเยอรทเมอรวมกนเปนชดของ TCP/IP ซงหลกในภาพกคอ
5
UserProcess
UserProcess
UserProcess
UserProcess
TCP UDP
IPICMP IGMP
HardwareInterface
ARP RARP
Application
Transport
Network
Link
Media
รปท 2.2 เลเยอรของโปรโตคอลตางๆในชด TCP/IP
TCP : อยในทรานสปอรตเลเยอร ทำาหนาทจดการและควบคมการรบสงขอมลใหมเสถยรภาพและเชอถอได UDP : อยในทรานสปอรตเลเยอร ทำาหนาทจดการและควบคมการรบสงขอมลเชนเดยวกนแตไมมกลไกการรบสงทมเสถยรและเชอถอไดโดยปลอยหนาทนใหกบแอพพลเคชนเลเยอรเปนผทำาหนาทแทน
IP : อยในเนตเวรกเลเยอร เปนโปรโตคอลหลกในการสอสารขอมล ซงกลไกสำาคญททำาใหขอมลสามารถเคลอนทไปยงปลายทางไดกคอโปรโตคอล IP นเอง
ICMP : (Internet Control Message Protocol) อยในเนตเวรกเลเยอร ทำาหนาทเสรมใหการทำางานของ IP ใหสมบรณ โดยจะเปนโปรโตคอลทคอยสงขาวสารและแจงความผดพลาดใหแก IP แตในบางโอกาสแอพพลเคชนเลเยอรกเรยกฝ ง ICMP โดยตรงเพอใชประโยชนจากความสามารถของ ICMP ดวยเชนกน
ARP : (Address Reservation Protocol) อยในลงคเลเยอร ทำาหนาทเปลยนระหวางแอดเดรสทใชโดย IP ใหเปนแอดเดรสของ Network Interface
RARP : (Reverse ARP) อยในลงคเลเยอรเชนกน แตทำาหนาทกลบกนกบ ARP คอ เปลยนระหวางแอดเดรสของ Network Interface ใหเปนแอดเดรสทใชโดย IP
6
IP : (Internet Protocol) เปนโปรโตคอลททำาหนาทรบภาระในการนำาขอมลไปสงยงจดหมายปลายทางไมวาทใดๆ ในอนเทอรเนต โปรโตคอลตางๆ ใน TCP/IP Suite ทง TCP,UDP,ICMP ตางกตองอาศยระบบนทงสน เนองจากตวโปรโตคอล IP นมกลไกทคอนขางฉลาดในการหาเสนทางขนสงขอมลรจกทจะซอกแซกหาชองทางไปยงจดหมายปลายทกทางทเปนไปได โปรโตคอลอนทอยเลเยอรสงขนไปเลยไมรบภาระปวดหวในการหาวธสงขอมลไปยงจดหมายอกขอเพยงแคเตรยมขอมลใหเสรจสรรพแลวสงให IP กนอนใจไดวา IP จะพยายามอยางสดความสามารถทจะหาทางไปใหถงจดหมายใหจงได
ถงแมวา IP จะเปนโปรโตคอลทเชยวชาญในการขนสงขอมลไปไดไกลๆ แตกมจดดอยคอ IP เปนโปรโตคอลท unreliable และ connectionless (เปรยบเสมอนเปนระบบขนสงทชำานาญรวดเรวแตไมรบประกนวาขอมลจะถงปลายทางหรอไม) การท IP มขอดอย 2 ประการน ดงนนโปรโตคอลเลเยอรอนทใช IP เปนตวสงขอมลจำาเปนตองหาหนทางในการลดขอดอยเหลานลงไป เพอใหการรบสงขอมลมเสถยรภาพและเชอถอได ซงกคอจะตองมกลไกในการรบประกนการรบสงขอมลอกชนนนเอง การสงขอมลดวย IP เปรยบเสมอนการสงจดหมายทวไปทเราจาหนาซองเรยบรอย ตดแสตมป แลวนำาไปหยอนในตไปรษณย โดยสวนใหญแลวบรษไปรษณยกจะทำาหนาทอยางสมำาเสมอคอนำาจดหมายทมอยสงไปตามชองทางไปจนถงปลายทางเสมอ โดยในขนสดทายบรษไปรษณยกจะนำาจดหมายไปทบานเลขทตามจาหนาซอง แลวกหยอนลงไปในตรบจดหมายของผรบ ซงจะเหนวาดวยการทำางานปกตจดหมายนาจะถงจดหมายปลายทางเสมอ แตโอกาสทจะเกดอปสรรคทำาใหจดหมายไมถงตรบจดหมายกเปนไปได หรอแมกระทงจดหมายไปถงจดหมายปลายทางแลวแตไมมคนรบไป ปลอยใหทงคางอยในตรบจดหมายกเปนได จดสำาคญทยกตวอยางการสงจดหมายเปรยบเทยบกบการใชโปรโตคอล IP คอผสงไมสามารถทราบสถานะการสงของตนเองไดวาตกลงแลวขอมลของตนเองไดวาตกลงแลวขอมลทสงไปถงปลายทางหรอไม ไมมการยนยนตอบกลบจาก IP วาถงหรอไมถงปลายทาง ถงแมวาโดยสวนใหญแลวขอมลจะสงถงปลายทางกตาม ซงการยนยนนนเปนสงสำาคญเพราะคนสงขอมลจะไดไมตองรออยางไมมเปาหมาย ถาขอมลถงปลายทางกจะไดสอสารกนตอ ถาสงไมถงกจะไดไปทำาอยางอนไมตองรอสำาหรบความหมายจรงๆของ unreliable และ connectionless ในแงของ IP คอ
Unreliable : ดวยตวโปรโตคอล IP เองมกลไกในการหาเสนทางเดนของขอมล (routing) ไปยงปลายทาง โดยจะพยายามใชกลไกเหลานนในการสงขอมลไปถงปลายทางใหจงได แตไมมการตรวจสอบวาปลายทางไดรบขอมลหรอไม กลไกการแจงกลบมเพยงในกรณทม ปญหาเกดขนระหวางการเดนทาง เชน เราเตอรมปญหา, หาเสนทางไมได กจะใช ICMP สงขอความกลบมาใหผสงทราบ ซงอาจจะถงผสงหรอไมกได ดงนนหากสงดวย IP แลวไมมการตอบกลบมากอาจจะเปนไปไดวาขอมลถงปลายทางอยางสมบรณ หรอวาขอมลไปไมถงแตสง error message กลบมาไมได
7
Connectionless : หมายถง IP จะไมมสถานะเหมอนการเชอมตอกนระหวางตนทางกบปลายทาง โดยทวไปการทโฮสตสองโฮสตจะมการเชอมตอกนไดนนจะตองทำาอยางไร อนดบแรกสดกจะตองเอาสายมาเชอมตอใหถงกนกอน หลงจากนนกจงจะสามารถรบสงขอมลไดและเรากสามารถรบสงขอมลกนไดตลอดตราบใดทสายยงตอกนอย เราอาจจะตอสายคางไวกไดอยากสงขอมลเมอไรกทำาไดทนท สำาหรบโปรโตคอลระดบ IP แลวสายทตอถงกนทวานนหมายถงการเชอมตอแบบลอจคลไมใชสายจรงๆ (ฟสคล) แตการบอกวา IP มการเชอมตอแบบ connectionless นนคอหากรบสงขอมลผาน IP จะตองทำาการตอสายใหมทกครงทจะรบสงขอมล 1 IP ดาตาแกรม เมอสงเสรจกถอวาเสรจและทำาการถอดสายออก ในระดบ IP กจะรจกขอมลเพยงแตในดาตาแกรมเดยวเทานน จะไมรจกดาตาแกรมอนทสงกอนหนาหรอตามมาและจะไมรวาดาตาแกรมแตละอนมความสมพนธกนหรอไมอยางไร ภารกจ IP ตองทำาใหสำาเรจคอ ทำาการตอสายไปยงปลายทางใหไดแลวสงขอมลดาตาแกรมนนไปใหถงแลวกถอดสายออกเปนอยางนเรอยไป
อาจจะมกรณทดเหมอนวา IP มการสอสารอยางตอเนองและมความสมพนธกนระหวางดาตาแกรม กคอกรณของ Fragmentation ทมการกระจายขอมลออกเปนหลายแพกเกจและเมอแพกเกจสงถงปลายทางแลวจะตองนำามารวมกนอกครงหนงตามลำาดบ ซงแสดงวา IP นาจะมความสมพนธกนระหวางดาตาแกรมแททจรงแลวความสมพนธดงกลาวมใชความสมพนธกนระหวางดาตาแกรมแตอยางใด เปนความสมพนธภายในดาตาแกรมเดยวกนแตถกกระจายออกจากกนและนำากลบมารวมกนใหมใหเปนดาตาแกรมเดยวเหมอนเดม มใชการนำาขอมลดาตาแกรมอนมาเชอมโยงรวมกนแตอยางใด ขอมลหนงดาตาแกรมไมจำาเปนตองสงเพยงครงเดยวหากความยาวเกนกวาทจะสงไดในแตละครงนนดาตาแกรมสามารถทจะแบงยอยเพอใหขนาดของแพกเกจมขนาดเหมาะสมได
IP Header : จากภาพแสดงใหถง IP Header ขนาดของ IP Header โดยปกตจะมขนาด 20 ไบต ยกเวนในกรณทมการเพมเตมออปชนบน IP Header จากภาพจะแสดงเปนทอนละ 32 บต คอ 4 ไบต โดยการสงขอมลจะเรยงลำาดบใหไบตแรกกอนแลวคอยตามดวยไบตถดไป สำาหรบขอมลแตละสวนในเฮดเดอรมความหมายดงน
8
4-bitVersion
4-bit headerlength 8-bit type of service 16-bit total length (in bytes)
16-bit identification 3-bitflags Fragment offset
8-bit time to live(TTL) 8 bit protocal 16-bit header checksum
32-bit source IP address
32-bit destinatation IP address
option (if any)
data
รปท 2.3 IP Header
บต 0-3 เวอรช นของ : ปจจบนเปนเวอรชน 4บต 4-7 Header Length : ความยาวของเฮดเดอร โดยทวไปถาไมมออปชนคาในสวนน
จะเปน 5 หมายความวาความยาวขอมลมขนาด 5*32 บต หรอเทากบ 20 ไบตนนเองบต 8-15 Type of Service (TOS) : ปจจบนไมไดใชงานแลว ถกกออกแบบมาเพอเกบ
คาของ Minimize delay , Maximize Throughput , Maximize reliability , Mimimize Monetary cost เพอใชเปนตวบงชใหเราเตอรตดสนใจในการเลอกเราขอมลแตละดาตาแกรม อยางไรกตามปจจบนไมมการนำาสวนนไปใชงานแตอยางใด
บต 16-31 Total length : เปนฟลดทบอกจำานวนไบตทงหมดของ IP Datagram ดวยขนาด 16 บตของฟลดนแสดงวาขนาดความยาวขอมลของ IP ดาตาแกรมจะมขนาดไดสงสด 65535 ไบต ขนอยกบขนาดของ MTU โดยทวไปแลวถงแมวาเราจะสามารถสงขอมลใน 1 ดาตาแกรมไดสงสดถง 65535 ไบต แตเมอขอมลถกสงลงไปเลเยอรลางกจะถกแฟรกเมนตกอนทำาการสงจรงอยดและแอพพลเคชนเลเยอรสวนใหญกจะรบสงขอมลครงละ 512 ไบตใน 1 ดาตาแกรม เพอทำาใหสามารถถอดขอมลออกมาได
บต 32-47 Identification : เปนหมายเลขของดาตาแกรมทสงในกรณทมการกระจายของดาตาแกรมและนำากลบมารวมกนใหมจะไดวามาจากดาตาแกรมเดยวกน
บต 48-50 แฟลก : ใชในกรณทมการแฟรกเมนตของดาตาแกรมบต 51-63 Fragment offset : ใชในการกำาหนดตำาแหนงของขอมลใน 1 ดาตาแกรมท
ถกแฟลกเมนตกลบมาตอเรยงกนในตำาแหนงของขอมลทถกตองบต 64-71 Time To Live (TTL) : เปนฟลดทกำาหนดจำานวนครงสงสดทดาตาแกรมนจะ
ถกเราต (route) เพอปองกนมใหดาตาแกรมถกเราตไปโดยไมมทส นสดดวยคณสมบตของ IP ทจะถกเราตไปเรอยๆ จนกวาจะถงปลายทาง ซงในบางครงอาจจะยงหาเสนทางไมได TTL จะเปนตวบอกจำานวนสงสดของการเราตหาหากวาจำานวนครงทดาตาแกรมถกเราตไปเทากบ TTL แลวยงไมถงปลายทางกใหทำาการดรอปดาตาแกรมนทง แลวแจงกลบมายงตนทางวา Time out
9
คอหมดเวลากอน ทงนในการเราตผานเราเตอร 1 ครงคา TTL จะลดลง 1 หากเมอคา TTL ลดลงจนถง 0 เมอใดแสดงวาดาตาแกรมนนไทมเอาทไปแลวและจะไมถกเราตอกตอไป
บต 72-79 Protocol : อยางทไดกลาวไปแลวขางตนวามโปรโตคอลยอยหลายตวทอาศย IP ในการขนสงขอมล ดงนนเพอระบวาขอมลท IP กำาลงสงอยนเปนของโปรโตคอลอะไรกตองระบไวในฟลดน เชน TCP,UDP,ICMP เปนตน
บต 80-95 Header Checker : เปนสวนตรวจสอบความถกตองของขอมลในเฮดเดอรเพอปองกนการผดพลาดในการสงขอมล ซงจะปองกนเฉพาะขอมลในเฮดเดอรเทานนมใชขอมลทงหมดในดาตาแกรม
บต 96-127 Source IP Address : คอ IP Address ของผสงขอมลดาตาแกรมบต 128-163 Destination IP Address : คอ IP Address ของปลายทางผรบขอมล
ดาตาแกรมIP Header เปนสวนสำาคญทสดของ IP ดาตาแกรม กอนทเราจะศกษาถงชองวางและ
จดบกพรองของ IP จำาเปนตองเขาใจการทำางานปกตของ IP เสยกอน แลวจากนนเมอเหนการโจมตทระดบ IP กจะสามารถปองกนและเขาใจการโจมตนนไดไมยากนก คาตางๆ ในแตละฟลดของ IP Header ลวนเปนกลไกทควบคมการเดนทางของดาตาแกรมในทางกลบกนเมอนำามาใชผดวธกอาจจะกลายเปนเครองมอในการบกรกได
ARP ( Address Resolution Protocol ) : จาก IP ทเราไดศกษามากอนหนาน คณสมบตอนหนงทสำาคญของ IP คอ ทก IP Datagram จะตองระบแอดเดรสของผสงและผรบเพอระบตนทางและปลายทางของขอมล ถาเราดเฉพาะในระดบ IP กเปนอนวาหากตงคาของ IP Address ไดถกตองกจะสอสารไดแตสำาหรบการศกษา IP ใหลกซงเพอจะเขาใจทกกลไกของการทำางานของ TCP/IP นนจำาเปนตองศกษาละเอยดและลกลงไปกวาระดบ IP
จงอยาลมวาการท IP จะสงขอมลลงไปไดนนจำาเปนตองสงลงไปในระดบ Link Layer คอ Ethernet กอน และในระดบ Ethernet นนยอมมอง IP Datagram ทงหมดวาเปนแค Ethernet Frame หนง Frame แนนอนวา Ethernet ไมรจก Source Address , Destination Address ใดๆ ในระดบ IP จงตองมกระบวนการทมำาใหระดบ Link Layer กบระดบ IP มความสมพนธเชอมโยงกนได
ARP (Address Resolution Protocol) เปนกระบวนการเปลยนคาระหวาง IP ไปเปน Ethernet Address (หรอทเรารจกกนในชอ MAC Address คอแอดเดรสทางฮารดแวรของอปกรณ เชนการด LAN) IP Address นนเปนลอจคลแอดเดรสทผใชกำาหนดขนมาใหสำาหรบโฮสตตวใดตวหนงอาจจะเปลยนคาเปนแอดเดรสอนเมอไรหรออยางไรกไดตามทผใชตองการ การตงคา IP Address ผดกเพยงแตทำาใหไมสามารถสอสารได แตเมอใดผใชตงคา IP ไดถกตองโฮสตนนกจะกลบมาสอสารไดอกครง การสอสารขอมลไดหรอไมในระดบ IP จงเปนเพยงสภาวะทางลอจคลไมตายตวตางกบในระดบอเธอรเนตซงอปกรณทกชนดจะมหมายเลขประจำาตว (Ethernet Address) ซงเปนเลขทระบตดตวอยกบอปกรณนนๆ เปนเลขขนาด 48 บต (6
10
ไบต) จะสามารถมทแตกตางกนได =281,474,976,710,656 คาและอปกรณ Ethernet ทกชนทผลตขนมาในโลกใบนจะไมม Ethernet Address ทซำากนเลย
กอนทจะศกษาไปถงกระบวนการในการเปลยน IP Address กบอเธอรเนตแอดเดรสนนจะขอใหดกระบวนการ Encapsulation จาก IP เปน Ethernet เสยกอนจะทำาใหสามารถเขาใจไดงายและเรวขน
กลบมาทเรอง ARP ตอจากการ Encapsulate ทง 2 วธกจะเหนวา IP Address จะถกฝงอยใน IP Datagram และเมอจะทำาการสงใน Link Layer นนจะตองมอเธอรเนตแอดเดรสของทงตนทางและปลายทางทถกตองจงจะสามารถรบสงขอมลได กระบวนการในการหา MAC Address ของ IP Address ทระบมดงน - หาก IP Address ของปลายทางอยในเนตเวรกเดยวกนกบตนทาง โฮสตตนทางจะสงขอมลไปยงโฮสตปลายทางโดยตรง หาก IP Address ของปลายทางอยคนละเนตเวรกกน โฮสตตนทางจะสงขอมลไปยงเราเตอร แตทง 2 เงอนไขตางกจะตองเปลยน IP Address เปน MAC Address ทงคเพยงแตเราจะเลอก IP ของปลายทางหรอ IP ของเราเตอรเทานน
- เมอจะเรมตนสงรบขอมลในครงแรกโปรโตคอล ARP กจะถกเรยกขนมาทำางาน- ARP จะสง Ethernet Frame ทเรยกวา ARP Request ไปยงทกโฮสตทอยบน
เนตเวรค (เรยกวาการบรอดคาสต) เพอถามวา Host เครองใดม IP Address ตรงกบทตองการและขอใหตอบ MAC Address กลบมา - เมอโฮสตทเปนเจาของ IP Address ทมผสอบถามถงไดรบ ARP Request กจะตองตอบดวย ARP Reply ซงในคำาตอบกจะมทง IP Address และ MAC Address ของตนเองตอบกลบไป - เมอโฮสตทสง ARP Request ไดรบ ARP Reply กลบมากจะทราบ MAC Address ของโฮสตปลายทางไดจงนำาคา MAC Address ทไดรบมาใสใน Ethernet Header ในกระบวนการ Encapsulate แลวจงสง IP Datagram นนไปยง Host ปลายทางไดอยางถกตอง และการสอสารขอมลผาน Ethernet ในระดบ IP กจะเรมตนขน
ARP Cache : จะเหนวากระบวนการ ARP จะเกดขนเสมอกอนทดาตาแกรมของ IP จะถก Encapsulate ลงบน Ethernet และกระบวนการ ARP Request-Reply กจะใชเวลาระยะหนงและใชแบนดวดธของเนตเวรกบางสวนไปดวยทำาใหประสทธภาพในการรบสงลดลง จงมการออกแบบโฮสตเกบตารางทจบคระหวาง MAC กบ IP Address ไวเปนการชวคราว เพอใหไมตองทาการ ARP Request ใหมทกครง ตารางนเรยกวา ARP Cache โดยกนอท ARP จะทำาการกระจายรเควสทออกไปทกโฮสตนนใหตรวจดขอมลใน Cache เสยกอนวามคาเดมอยแลวหรอไม หากวามคา MAC Address อยแลวกใหนำาไปใชเลยไมตองถามใหม หากไมมจงคอยถามและเมอถามไดคำาตอบมาแลวกใหเกบลงใน Cache เพอครงตอไปจะไดไมตองถามอก
อยางทกลาวไวตงแตตนวา IP Address เปนลอจคลและสามารถเปลยนแปลงไดโดยผใชดงนนคาระหวาง MAC-IP Address ใน ARP Cache กอาจจะเปนคาทผดพลาดได ถามการ
11
เปลยน IP Address ทโฮสตปลายทาง ดงนนเพอปองกนปญหานจงมการกำาหนดอายของขอมลใน ARP Cache กลาวคอขอมลใน ARP Cache จะยงคงเชอถอไดในเวลาหนงเทานน หากเวลาลวงเลยไปมากกวาจบคระหวาง MAC-IP อาจจะเปลยนไปแลวกได ซงจะตองมการนำา ARP Request ใหมเพอใหไดขอมลปจจบนและทนสมยทสด โดยทวไปอายของขอมลใน ARP Cache จะเกบไว 20 นาท หากเลยจากนนคาใน Cache กจะถกลบทงนนหมายถงหากตองการตดตอกจะตองทำา ARP Request ใหมนนเอง
Ethernetdestination addr
Ethernetsource addr
Frametype
Hardtype
Prottype
Senderethernet addr
SenderIP addr
targetEthernet addr
target IPaddr
port sizehard size
รปท 2.4 ARP Packet format
ในแพกเกตของ ARP จะประกอบดวยไบต 0-5 : Ethernet Destination Address สำาหรบ Ethernet ทวไปจะหมายถง
แอดเดรสของปลายทาง แตสำาหรบกรณของ ARP เนองจากเปนการสงขอมลถงทกโฮสตทอยบนเนตเวรกหรอทเรยกวาบรอดคาสตดงนนทกบตของฟลดนจงตองเปน”1”ทงหมดคอ FF FF FF FF FF FF
ไบต 6-11 : Ethernet Source Address เปนแอดเดรสของผทสง ARP Request เองเพอใหโฮสตทตองการตอบกลบสามารถตอบกลบมาไดอยางถกตอง
ไบต 12-13 : Ethernet Frame Type ระบถงโปรโตคอลท Encapsulate อยใน Ethernet Frame นสำาหรบ ARP จะตองเปน 0x0806
ไบต 14-15 : Hard Type ระบประเภทของ Hardware Address ท ARP กำาลงถามอยในกรณนคอ Ethernet Address คาจะตองเปน 1
ไบต 16-17 : Prot Type ระบโปรโตคอลทตองการถามหมายถงตองการถาม Hardware Address ของโปรโตคอลอะไรกรณนกคอ IP
ไบต 18 : Hard Size ระบขนาดของฮารดแวรแอดเดรส = 6 สำาหรบ Ethernet Addressไบต 19 : Port Size ระบขนาดของแอดเดรสในโปรโตคอลทถาม = 4 สำาหรบ IPไบต 20-21 : OP Field เปนการระบวาเปน ARP ชนดใด
1 = ARP Request2 = ARP Reply3 = RARP Request4 = RARP Reply
ไบต 22-27 : Sender Ethernet Address คา Ethernet Address ของผสงซงจะมคาซำากบในไบต 6-11
12
ไบต 28-31 : Sender IP Address คอคา IP Address ของผสงไบต 32-37 : Target Ethernet Address จะวางไวสำาหรบ ARP Request เพราะยงไมร
(ถารแลวคงไมตองทำา ARP Request อก)ไบต 38-41 : Target IP Address คอคา IP Address ทกำาลงตองการหาคา Ethernet
AddressARP Reply : หลงจากมการสงกระจาย ARP Request ลงไปยงเนตเวรกแลวโฮสตทก
ตวทอยบนเนตเวรกจะไดรบ ARP Request นซงกจะนำาคาในไบตท 38-41 มาเปรยบเทยบกบ IP Address ของตนเองหากไมตรงกนกอยเฉยๆ ไมตองทำาอะไร (ถาขนตอบกคงวนวายนาดเพราะเนตเวรกคงตองเตมดวยคำาตอบแน ๆ หากทกๆ โฮสตทไดรบบรอดคาสตแลวพรอมใจกนตอบ) ถาตรงกนกจะตอบกลบดวย ARP Reply โดยใชแพกเกจเดมของ ARP Reply โดยใชแพกเกจเดมของ ARP ทอธบายตอนตนแตจะเปลยนคาของขอมลดงน
- เปลยนคาใน OP field จาก 1 เปน 2 แสดงวาเปน ARP Reply - นำาคาใน Source Address ทง Hardware และ IP ไปใสลงใน Target Address
ทง Hardware และ IP (เพอเปนการสงกลบไปยงผสง ARP Request มา)- นำาคา Hardware Address และ IP แอดเดรสของตนเองใสลงในฟลด Ethernet
Sorce Address และ Sender IP Addressเมอมการ ARP Request และมผสง ARP Reply นนหมายถงกระบวนการหา Ethernet
Address ของ IP Address ไดเสรจสมบรณตอไปกจะเรมสง IP Datagram ไดในการ ARP Request นนหากไมมโฮสตใดตอบกลบมากจะถอวาไมมโฮสตทม IP Address นนอยบนเนตเวรกและโปรโตคอลเลเยอรสงขนไปไมวา TCP , UDP , ICMP จะไมสามารถสอสารได ในการนำา ARP ไปใชงานนนโปรโตคอลเลเยอรสงขนไปจะเปนผตดสนใจเองวาหาก ARP แลวไมมผตอบจะทำาอยางไรด เชน เลกตดตอ , คอยเปนเวลาเทากบ X วนาท หรอวาคดพยายามทำา ARP ใหมอกสกครง ซงในสวนนจะไมตายตว
ICMP (Internet Control Message Protocol) : เปนโปรโตคอลหนงทอยในชดของ TCP/IP Suite มหนาทสงขาวสารและคำาสงควบคมของ IP โดยเฉพาะการรบสง Error Message ดวยลกษณะของ ICMP แลวนบไดวาอยท งในเลเยอรเดยวกบ IP หรอเลเยอรทสงกวา IP คอเทยบเทา TCP และ UDP กได ขนอยกบลกษณะของ Message ท ICMP ทำาการสอสารทงน ICMP ใช IP เปนตวสงขอมลเชนเดยวกบ TCP และ UDP (ดวยเหตนกอาจถอไดวา ICMP อยในเลเยอรเดยวกบ TCP และ UDP)
IP header ICMP Message
IP datagram
รปท 2.5 การ Encapsulate ICMP
13
จะเหนไดวาในสวนของ IP Header กยงคงใชเฮดเดอรตามปกตของ IP ทำาใหกลไกในการรบสงขอมลจากตนทางไปยงปลายทางสามารถใชกลไกปกตของ IP ไดทนทสำาหรบภายใน ICMP Message จะเกบขอมลอะไรมความหมายอยางไรบางนนจะแสดงในภาพ
8-bit Type 8-bit code 16-bit checksum
�o° ¤¼£µ¥Ä��¹Ê���Type ¨ ³ Code (�¼�µ¦ µ�)
0 7 8 15 16 32
รปท 2.6 ICMP Message
ความหมายของขอมลใน ICMP Messageบตท 0-7 : (ไบตท 0) ICMP Type เปนฟลดขนาด 8 บตบอกถงประเภทของ ICMP ท
กำาลงสอสารอยบตท 8-15 : (ไบตท 1 ) ICMP Code เปนฟลดขนาด 8 บตทเกบขอมลรหสของ ICMP
Messageบตท 16-31 : (ไบตท 2-3) Check sum ใชเปนตวตรวจสอบความถกตองของ ICMP
Message ทงหมดโดยทวไปความยาวของ ICMP Message จะไมคงทแนนอนขนอยกบลกษณะของ ICMP Message นนๆ วาจะมขอมลตามหลงมามากนอยแคไหน
การใชงานของ ICMP โดยทวไป ICMP จะใชงานเพอสองลกษณะคอ- Query ใชสำาหรบสอบถามสถานะระหวางกน- Error ใชสำาหรบรายงานขอผดพลาดทเกดขน
จากตารางจะเหนวา ICMP Message สวนใหญจะทำาหนาทรายงานความผดพลาดทเกดขนของ IP แตอยางทกลาวในตอนตนวา ICMP นนอาจจะอยไดทงเลเยอรเดยวกบ IP และสงกวา IP ไมตายตว โดยเฉพาะในกรณท ICMP Message นนทำาหนาทรายงานความผดพลาด ในลกษณะน ICMP จะทำาหนาทในเลเยอรเดยวกบ IP ในขณะเดยวกนกยงคงอาศย IP เปนตวสง ICMP Message ไปยงปลายทางอยด (ในลกษณะนจะเหนวาถาหาก ICMP อยเลเยอรบนของ IP โดยสนเชงแลว ICMP Message จะตองไมสามารถสงได เพราะในระดบ IP ม Error เสยแลว ดงนน ICMP จงตองลงมาทำาการรบขอมลในระดบ IP เสยเอง) และสำาหรบการรายงานความผดพลาดนน ICMP จะไมรายงานความผดพลาดของการสงขอมลในกรณตางๆ เหลาน เพอปองกนการรายงานขอผดพลาดทไมรจบ
- เกดขอผดพลาดในการสง ICMP Error Message เสยเองถงแมวา ICMP เปนตวทคอยรายงานความผดพลาดของ IP แตตว ICMP เองกตองอาศย IP เปนตวนำามนกลบไปยง
14
ปลายทางอยด การท ICMP อาจจะเดนทางกลบไมถงปลายทางดวยเหตใดกแลวแตยอมเปนสงทมโอกาสเกดขนได เชนการท Host A ตองการสงขอมลไปยง Host B แต Host B ไมไดเปดใชงานอย ดงนนเราเตอรตวทตออยกบ Host B จะตองสง ICMP Type 3 Code 1 (Host Unreachable) กลบไปยง Host A แตเราเตอรระหวางทางนนมเราตตงเทเบลทไมถกตองทำาให ICMP แพกเกตไมสามารถสงตอกลบไปยง Host A ไดดวยเชนกน ในกรณนหากไมมขอกำาหนดไวกจะทำาใหเกด ICMP ยอนกลบไปมาไมรจบ
- ขอมลท IP Address ปลายทางไมไดเฉพาะเจาะจงโฮสตตวเดยวแตเปนปลายทางประเภทบรอดคาสต (ทกๆโฮสตในเนตเวรก) และมลตคาสต (โฮสตหลายตวพรอมกน)
- ดาตาแกรมททำาหนาทเหมอนการบรอดคาสตของ Link Layer- ดาตาแกรมทแพกเกจถกแฟรกเมนตมา (แยกมาเปนหลายแพกเกจ ยกเวนดาตา
แกรมแรกเทานน เนองจากดาตาแกรมทถกแฟรกเมนตมานนจรงๆ แลวมทมาจากดาตาแกรมขนาดใหญเพยงอนเดยว ดงนนหากมปญหาในการสอสารการแจงกลบไปกควรแจงเพยงครงเดยวไมควรแจงตอบกลบทกแฟรกเมนต
- ดาตาแกรมทตนทางไมไดเฉพาะเจาะจงโฮสต ดงนนแอดเดรสในลกษณะนเมอนำามาใชเปนแอดเดรสตนทางกจะไมไดรบ ICMP Message เชน แอดเดรสตนทางเปนศนยทงหมด แอดเดรสทเปน loop back (สงเขาหาตวเอง) แอดเดรสทเปนบรอดคาสตหรอมลตคาสตแอดเดรสเหลานจะเปนแอดเดรสทไมไดระบถงโฮสตใดโฮสตหนงจรงๆ ดงนน ICMP จงไมทำาการสง Message ไปให
IPheader
UDPheader
UDP Data
UCP datagram
IP datagram
รปท 2.7 UDP Encapsulation
UDP (User Datagram Protocol) : เปนโปรโตคอลพนฐานทอาศย IP เปนพาหนะในการสงขอมล โดยตว UDP นนจดอยใน Transport Layer ลกษณะของโปรโตคอลจะจดการครงละ 1 ชดของขอมลทเรยกวา UDP datagram โดยขอมลแตดาตาแกรมจะไมมความสมพนธกน (ในความรบรของ UDP) เพราะความสมพนธระหวางดาตาแกรมจะถกจดการโดยโปรโตคอลอนในแอพพลเคชนเลเยอรแทน
UDP ดาตาแกรมจะถก Encapsulate ลงใน IP ดาตาแกรมดงแสดงในภาพ โดยเมอ Encapsulate แลว 20 ไบตแรกจะเปนของ IP Header และในไบตท 9 ของ IP Header จะตองมคา = 17 ดวยคณสมบตสำาคญของ UDP คอจดรปแบบขอมลอยางงายใหอยในรปของ UDP Datagram และสง-รบขอมลชดนใหถงปลายทางเทานน ไมมกลไกใดๆ ในการตรวจสอบยนยน
15
การรบสงในตวของ UDP เอง ดงนนแอพพลเคชนทใช UDP จะตองระลกเสมอวา UDP เปนโปรโตคอลทไมมเสถยรภาพและไมรบประกนการสง-รบขอมล (Unreliable) และจะตองเสรมกลไกในสวนทรบประกนการรบสงขอมลในแอพพลเคชนนนเสมอ โดยทวไปแอพพลเตชนทม ความจำาเปนในเรองเสถยรภาพและความถกตองของขอมลนนควรจะหลกเลยงการใช UDP เพราะแอพพลเคชนจะตองเสยเวลาในการจดการเรองนมากจงทำางานได โดยสวนใหญควรจะใช TCP แทนซงจะลดปญหานได แตอยางไรกตามแอพพลชนบางประเภททอาจจะไมตองการความถกตองของขอมลมากนกกอาจจะเลอกใชโปรโตคอลนเพออาศยประสทธภาพในการสอสารขอมลเรวกวาได
16-bit source port number 16-bit destination port number
16-bit UDP length 16-bit UDP checksum
Data (�oµ¤ )
15 16 31
udpheader
รปท 2.8 UDP header
จากภาพจะเหนวา UDP Header ไดมการกำาหนดฟลดไวอยางงายๆ มขนาดทงหมดของเฮดเดอรเพยง 8 ไบตเทานน โดยแตละฟลดมความหมายดงน
ไบต 0-1 : Source Port Number หมายเลขพอรตของตนทางทสงขอมลดาตาแกรมไบต 2-3 : Destination Port Number หมายเลขพอรตของปลายทางทจะเปนผรบขอมล
ดาตาแกรมไปใชงานไบต 4-5 : UDP Length เปนฟลดทระบความยาวของ UDP ดาตาแกรม คอ UDP
Header+UDP data ขนาดตำาสดของ UDP Length = 8 หมายถง ดาตาแกรมนมเฉพาะ UDP Header ซงเทากบ 8 ไบตและไมม UDP Data เลย
ไบต 6-7 : UDP Checksum ทำาหนาทตรวจสอบความถกตองของ UDP ดาตาแกรมทงหมดถงแมวา UDP จะถก Encapsulate อยใน IP ดาตาแกรมและม IP Checksum คมอยแลวกตาม แต IP Checksum นนจะทำาหนาทเฉพาะตรวจสอบความถกตองของ IP Header เทานนมไดครอบคลมทง IP ดาตาแกรมแตอยางใด นนหมายถงหากมความผดพลาดในสวนของทเปนขอมลของ IP ดาตาแกรม IP กจะไมสามารถทราบได ซงตางจาก UDP Checksum ซงทำาหนาทตรวจสอบความถกตองทง UDP ดาตาแกรมและเปนกลไกของ UDP เองแยกตางหากจาก IP ดงนนการตรวจสอบความถกตองดวย Checksum เมอใช UDP กจะม 2 ขนตอน คอการตรวจสอบความถกตองในระดบ IP Header โดยใช Checksum ของ IP หลงจากนนจงคอยทำาการตรวจสอบความถกตองของ UDP โดยใช UDP Checksum อกทหนง
16
32 bit source IP address32 bit destination IP address
zero 8-bit protocal(17) 16-bit UDP length16-bit source port number 16-bit destination port number
16-bit UDP length 16-bit UDP checksum
Pad byte (0)data
UCP pseudo header
UDP header
รปท 2.9 ฟลดทใชในการคำานวณหา UDP checksum
กลไกในการหาคา checksum เพอใชตรวจสอบความถกตองของ UDP จะคลายกบการหาคา checksum ของ IP คอคา checksum ทไดจะเปนคาผลรวมของขอมลขนาด 16 บตทงหมดและแปลงเปน one’s compliment แตจะมจดแตกตางจากการหาคา checksum ของ IP อย 2 ประการคอ
- ขนาดของ UDP ดาตาแกรมจะไมคงทเนองจากขนาดของสวนทเปน Data อาจเปลยนแปลงไดตามขนาดของขอมลจรง
- ถงแมวาจรงๆ แลว UDP Header จะมขนาด 8 ไบต แตในการหาคา checksum นนจะนำาบางคาใน IP Header มารวมเปนสวนหนงของ UDP Header (เรยกวา UDP Pseudo Header) จากนนจงหาคา checksum ทงหมดอกทหนง
ฟลดท UDP นำามาจาก IP Header ดงแสดงในภาพ ไดแก Source IP Address , Destination IP Address , Zero , Protocol , UDP length ทงนเพอใหคา UDP Checksum ไดทำาการตรวจสอบซำาในสวนทสำาคญสำาหรบ UDP ดวยวาทำาการรบ-สงถกตองทงตนทางและปลายทาง
กลไกในการตรวจสอบโดย checksum ของ UDP นเพอเปนการปองกนขอมลทอาจจะถกแกไขหรอมความผดพลาดระหวางการสงและหากเกดเหตการณดงกลาวปลายทางจะไดทราบวามขอผดพลาดแตเปนการตรวจสอบเพยงฝายเดยวเทานน โดยในขอกำาหนดของ UDP หากพบวา checksum Error กใหผรบปลายทางทำาการทงขอมลนนเสยแตไมมการแจงกลบไปยงผสงแตอยางใดจดนเองททำาให UDP ไดชอวา UDP เปนโปรโตคอลทไมมเสถยรภาพและเชอถอไมคอยได การสง-รบขอมลแตละครงหากมขอผดพลาดในระดบ IP เชนสงไมถง ,หมดเวลา ผสงจะไดรบ Error Message จากระดบ IP เปน ICMP Error Message แตเมอขอมลสงถงปลายทางถกตองแตเกดขอผดพลาดในสวนของ UDP เองกลบไมมการยนยนหรอแจงใหทราบแตอยางใด
17
ในบางระบบทนำา UDP ไปใชงานอาจกำาหนดให checksum เปน option คอเลอกทจะมหรอไมม checksum ไดโดยหวงผลในแงประสทธภาพในการรบ-สงขอมลจะสงขนเพราะไมตองเสยเวลาในการตรวจสอบ checksum และปลอยหนาทในการปองกนความผดพลาดของขอมลใหเปนของ Datalink Layer ซงกไดผลในแงของการชวยเพมประสทธภาพ แตใน Datalink Layer เองกจะมขอผดพลาดเกดขนพอสมควรจะทำาใหระบบโดยรวมไมมเสถยรภาพมาก ดงนนการใชงาน UDP ควรจะตอง Enable checksum เสมอ
ขนาดของ UDP Datagram : ในทางทฤษฎแลว UDP Datagram จะมขนาดไดสงสดเทากบ 65535 ไบต โดยแบงเปน IP Header เสย 20 ไบต และเปน UDP Header อก 8 ไบต คงเหลอสวนทเปนขอมลเทากบ 65507 ไบต อยางไรกตามการนำา UDP ไปใชงานสวนใหญจะใชขนาดของดาตาแกรมทตำากวาน โดยทวไปขดจำากดของ UDP Datagram จะมอย 2 ประการคอ
Application : ในการรบสงขอมลแตละครงแอพพลเคชนจะตองทำาการจองพนทหนวยความจำาเพอทำาการรบ-สงขอมลใหเหมาะสมกบสภาพของโฮสตและคณสมบตของตวแอพพลเคชนเองดวย เชน หากกำาหนดขนาดใหญเกนไปกจะทำาใหเปลองหนวยความจำา หรอการรบสงขอมลแตละครงของแอพพลเคชนนนๆ อาจจะตองการขอมลจำานวนหนงเทานนมไดตองการเตมทง 64K ดงนนโดยทวไหขนาดของ UDP Datagram จะถกตงคาไวเทากบ 8192 ไบต
ขนาดของ IP Datagram : โดยสวนใหญการนำา TCP/IP ไปใชงานกบระบบปฏบตการตางๆ จะมการกำาหนดขนาดของ IP ดาตาแกรมใหตำากวา 64K จงทำาให UDP ดาตาแกรมซงตองอาศยอยใ IP ดาตาแกรมอกชนหนงถกจำากดขนาดไปดวยโดยปรยาย
TCP (Transmission Control Protocol) : เปนโปรโตคอลอนทกลาวถงในบทกอนหนานจะเหนไดวาโปรโตคอลในระดบ IP หรอแมกระทง UDP จะสนใจขอมลเพยว 1 ดาตาแกรม กลไกของโปรโตคอลจะมหนาทตรวจสอบความถกตองเพยงเฉพาะดาตาแกรมนน ๆ อยางเดยว เมอจะทำาการสงดาตาแกรมใหมกจะถอวาเปนขอมลชดใหมทไมมความสมพนธใด ๆ กบขอมลดาตาแกรมอน (การสอสาร 1 ครงจงใชเพยง 1 ดาตาแกรม) แตสำาหรบ TCP แลวจะเหนวาขอมลนนเปน stream คอมความสมพนธตอเนองกนมกลไกในการตรวจสอบทงดานสงและดานรบเพอใหแนใจวาทง 2 ฝ งมความพรอมและสามารถสอสารกนไดจรงจงจะมการสงรบขอมลเกดขนจนมการรบ-สงขอมลแลวกจะมการยนยนความถกตองทกครงของการสอสาร เพอรบประกนวาขอมลทรบ-สงนนถกตองตรงกนทง 2 ฝาย ดวยลกษณะเชนนการสอสารดวย TCP จงเสมอนวาทง 2 ฝายคอฝายรบและฝายสงไดทำาการตอสายเนตเวรกถงกน (connected) ตลอดเวลาทการรบสงขอมลจนกระทงการสอสารทงหมดเสรจสนจงจะทำาการยกเลกการเชอมตอนนเสย
ดวยกลไกทกลาวถงขางตน TCP จงจำาเปนตองใช IP ดาตาแกรมมากกวา 1 ดาตาแกรมในการรบสงแตละครง รวมทงการม TCP เฮดเดอรททำางานสมพนธกน เพอควบคมการสอสารทงฝายรบฝายสงและในแตละ IP ดาตาแกรมทใชควบคมนนกจะมจงหวะและขนตอนในการสงทแนนอนและสมพนธกนดวย
18
TCP Service : จดเดนประการสำาคญของ TCP ทกลาวถงอยเสมอคอ ความมเสถยรภาพและความถกตองของการสอสารทมความเชอถอไดสง คณสมบตททำาให TCP มขอดดงกลาวคอ
- ขอมลทจะสงผาน TCP จะถกนำามาแตกยอยออกเปนสวนๆ ใหมขนาดเหมาะสมสำาหรบการสงโดย TCP จะเปนตวพจารณาวาขนาดเทาใดจะทำาใหการรบ-สงนนมประสทธภาพและนาเชอถอสงสด โดยขอมลแตละชดทแบงออกและทำาการสงโดย TCP แตละครงจะเรยกวา TCP เซกเมนต ตางกบ UDP ทแอพพลเคชนจะเปนผกำาหนดวาขนาดของขอมลทจะสงมขนาดเทาใดและไมมขอจำากดตราบเทาทไมเกนขนาดของ UDP ดาตาแกรม (64K) แอพพลเคชนตองเปนผระบขนาดของขอมลเอง ซงอาจจะไมเหมาะสมสำาหรบการสงกได เชน หากขนาดเลกเกนไปกจะทำาใหประสทธภาพในการสงลดลงเพราะจะตองเสย overhead เปนสดสวนทสงเมอเทยบกบขนาดของขอมลหรอหากขนาดของขอมลใหญเกนไปกจะทำาให IP ซงอยเลเยอรตำาลงไปไมสามารถจดสงไดใน IP ดาตาแกรมเดยวและมผลใหถกแฟรกเมนตออกเปนสวนเลกๆ อกเชนกน
- ในการสงขอมลแตละครงของ TCP จะมการจบเวลาไวเสมอเพอรอใหอกฝ งหนงตอบยนยนการรบขอมลกลบมา หากถงเวลากำาหนดทขอมลควรจะถงปลายทางและตอบยนยนกลบมาแตยงไมมการตอบกลบ TCP จะถอวาขอมลทสงไปนนไมถงปลายทางและจดทำาการสงขอมลซำาหรอยกเลกการตดตอ ซงดวยกลไกนจะทำาใหการรบสงขอมลทกครงแอพพลเคชนสามารถทราบไดวาขอมลถงปลายทางหรอไมอยางแนนอน ไมมขอมลใดๆทสงผาน TCP แลวไมทราบสถานะของการสงครงนน
- ทกๆ ครงท TCP ไดรบขอมลอกฝ งหนงจะตองทำาการตอบรบยนยนกลบไปยงผสงเสมอซงจะสอดคลองกบขอ 2 กลาวคอหากไมมการตอบรบกจะถอวาปลายทางไมไดรบขอมล
- TCP ม checksum ซงจะคลอบคลมทง TCP Header และ TCP Data เพอเปนการปองกนและตรวจสอบวาขอมลทสงมานนถกตองและไมไดถกแกไขระหวางทางหาก TCP ไดรบขอมลททำาการตรวจสอบกบ checksum แลวปรากฎวามความผดพลาดเกดขน TCP จะทงขอมลทไดรบและจะไมทำาการตอบรบขอมลนนกลบไปยงผสง คอ ถอเสมอนวาไมไดรบขอมลนนเพอใหฝายผสงทำาการสงใหมหรอหาขอบกพรองและพยายามแกไขตามแตแอพพลเคช นทางฝายผสงเหนสมควร
- เนองจาก TCP อาศย IP ในการสงขอมลซง IP เองอาจจะถกแฟรกเมนตไดและทำาใหขอมลทถกแฟรกเมนตนนสงถงปลายทางในลำาดบทไมถกตองได หนาทของ TCP เมอรบขอมลทแฟรกเมนตมานนจะตองนำาขอมลแตละสวนมาประกอบกนใหถกตองสมบรณกอนจะสงไปยง Application Layer ตอไป
- การสงรบขอมลดวย IP อาจจะมกรณท IP Datagram นนถกสงซำาขนได TCP ทรบขอมลซำาดงกลาวจะตองทราบวาเปน IP Datagram ทซำาและไมนำาขอมลนนไปใชงาน
- TCP มกลไกควบคมการไหลของขอมล (Flow Control) โดยการควบคมนจะตองอาศยลำาดบของการรบสงทถกตองและสมพนธทงสองฝ งในขณะเดยวกนขอมลทสงนนจะตอง
19
อาศย IP หลายดาตาแกรมจงจะไดขอมลครบทงหมด ดงนนในการรบสงขอมลทางฝายรบจงตองเตรยมบฟเฟอรไวจำานวนหนงเพอรอรบขอมลและรวบรวมขอมลทงชดใหอยในบฟเฟอรกอนทจะทำาการจดเรยงขอมลตรวจสอบความถกตองแลวจงสงตอไปยงแอพพลเคชนดวยเหตผลดงกลาวจะเหนไดวาขนาดของขอมลมไดถกจำากดทขนาดของดาตาแกรมใดๆ ขอมลทสงอาจจะมขนาดใหญมากอยในหลายดาตาแกรมกเปนได ดงนน เพอปองกนการสงขอมลขนาดใหญหรอเรวเกนไปจนทำาใหฝายรบไมมหนวยความจำาเพยงพอทจะเปนบฟเฟอรทพกขอมลการสงขอมลจงถกจำากดโดยจะอนญาตใหทำาการสงขอมลไดเทาทฝายรบมบฟเฟอรเพยงพอเทานน
IP header TCP header
TCP Segment
IP datagram
รปท 2.10 Encapsulation ของขอมล TCP ใน IP datagram
TCP Header : ใน TCP Header จะเรมตนระบทหมายเลขพอรตตนทางและปลายทาง แตอนทจรงแลวขอมลอกสวนหนงทใชในการสอสารคอ IP Address ของตนทางและปลายทางกตองระบดวยเชนกนแตไดถก Encapsulate ไวในเลเยอรของ IP และคาของ IP Address ทงคจะอยใน IP Header และคของ IP Address และหมายเลขพอรตนนจะเรยกวา “ซอคเกต (Socket)” ซงในการสอสารแตละครงจะตองมทงซอคเกตของตนทางและปลายทาง ขอมลจงจะถกสง-รบไปถกทและถกแอพพลเคชน รายละเอยดหนาทของแตละฟลดใน TCP Header มดงน
20
16-bit source port number 16-bit destination port number32-bit sequence number
32-bit acknowledge number4-bit
Headerlength
FIN
RYN
RST
URG
ACK
PSH
Reserves(6 bits) 16-bit windowns size
16-bit TCP Checksum 16-bit urfent pointer
Option (�oµ¤)
Data (�oµ¤ )
15 160 31
tcpheader
รปท 2.11 TCP Header
Source Port Number : หมายถงพอรตทโฮสตตนทางใชในการสอสารกนของเซสชนนและ TCP/IP จะใชพอรตนไปตลอดตราบเทาทการสอสารในเซสชนนยงไมยตลง โดยทวไปพอรตนจะเรยกวา “ไคลเอนตพอรต” คอ พอรตทไคลเอนตเปดขนมาเพอรอการตอบรบจากเซรฟเวอร ไคลเอนตจะมหมายเลขไมแนนอนและเปลยนไปทกครงทมการเรมการเชอมตอใหมเปนพอรตทถกเปดไวในระยะเวลาสนๆ คาทเปนไปไดของพอรตนขนอยกบการจดสรรของระบบปฏบตการในการกำาหนดขอบเขตของพอรตเหลาน สวนใหญจะมคาอยในชวง 1024-5000
Destination Pot Number : หมายถงหมายเลขพอรตบนโฮสตปลายทางทโฮสตตนทางตองการตดตอดวย โดยนยแลวจะหมายถงแอพพลเคชนทใหบรการอยบนพอรตนนทโฮสตปลายทางนนเองพอรตนจะเรยกอกอยางหนงวา “เซรฟเวอรพอรต” หมายเลขพอรตทเปดไวจะขนอยกบแอพพลเคชนทใหบรการ โดยทวไปแอพพลเคชนแตละประเภทจะมหมายเลขพอรตเปนมาตรฐานสำาหรบใหไคลเอนตไดเรยกใชบรการ
Sequence Number : เปนฟลดทระบถงหมายเลขลำาดบทใชอางองในการสอสารขอมลแตละครงเพอใหทงสองฝายจะไดรบทราบตรงกนวาเปนขอมลของชดใด การนำาไปใชงานจะไดไมปะปนกนและมลำาดบทถกตองเนองจากการสอสารขอ TCP Header รวมไปถงการทขอมลในแตละ TCP Segment อาจจะถกทำาการแฟลกเมนตในเลเยอรของ IP ถดลงไป ทำาใหขอมลถกแบงออกและสงไปใน Flag เปนขอมลในระดบบตทใชเปนตวบอกคณสมบตของ TCP Segment ทกำาลงสงอยนนและใชเปนตวควบคมจงหวะการรบสงขอมลดวยซง Flag ทงหมดมอย 6 บต แตละบตมชอและความหมายดงนลำาดบทไมเรยงกน หากไมมจดอางองของขอมลกจะไม
21
สามารถอานขอมลกลบใหมไดอยางสมบรณและถกตอง การสงขอมลและการตอบรบจะใชฟลดนเปนตวยนยนระหวางกนเสมอ
Acknowledge Number : ทำาหนาทเชนเดยวกบ Sequence Number ตางกนตรงทเปน Sequence Number ซงใชในการตอบรบกลาวคอเนองจาก Sequence Number ทใชในการอางองนนผท เรมสงขอมลจะเปนผกำาหนดเลขขนมาและสงไปพรอมกบการสรางการเชอมตอครงใหม แตสำาหรบฝายทถกตดตอกจำาเปนกำาหนดหมายเลขสำาหรบใชอางองในการตอบรบเชนกนคาทอยใน Acknowledge Number กคอหมายเลขทใชอางองในการตอบรบนปกตคาทงใน Sequence Number และ Acknowledge Number จะตองพจารณาประกอบกบ Flag จงจะสามารถแปลความหมายของ TCP Segment ไดอยางสมบรณ
Header Length : โดยปกตความยาวของ TCP Header จะเทากบ 20 ไบต แตถาหากมการใชคา option อาจจะทำาใหขนาดของเฮดเดอรยาวขนตามขอมลทตองเพมมาจาก option นนแตทงหมดแลวจะไมเกน 60 ไบต
URG แสดงวาขอมลในฟลด Urgent Pointer นนนำามาใชงานไดACK แสดงวาขอมลในฟลด Acknowledge Number นำามาใชงานไดDSH เพอแจงใหผรบขอมลทราบวาควรจะสงขอมล Segment นไปยงแอพ -
พลเคชนโดยเรวRST ยกเลกการตดตอSYN ใชในการเรมตนขอตดตอปลายทางFIN ใชสงเพอแจงใหปลายทางทราบวายตการตดตอWindow size : เปนขนาดของการรบ-สงขอมลในแตละครงททางฝายผรบจะสามารถรบ
ไดเนองจากากรบขอมลนนทางผรบจะตองจดเตรยมหนวยความจำาในการพกขอมลทมาจาก TCP และทำาการ Demultiplex ออกมา หากไมมการตกลงถงขนาดททางฝายรบสามารถรบไดจะทำาใหการสอสารขอมลไมสมดลและฝายรบอาจจะประมวลผลไมทน ซงจะสงผลใหตองสงขอมลซำาหลายครง
Checksum : ฟลดทใชในการตรวจสอบความถกตองของขอมลทใชใน TCP เซกเมนทUrgent pointer : ใชหมนหมายเลข sequence Number ของ TCP เซกเมนทลาสดทอย
ในโหมด urgentOption : ขอมลเพมเตมซงจะอยใน TCP Header เมอมการตงคา option บางอยางท
ตองการขอมลเพมซงไมมใน TCP Header เชน MSS, Strict Route2.1.3 ไฟลวอลล (Firewall) เรองไกร รงสพล [4] กลาววา ในการเชอมตอกบเครอขายอนเทอรเนตอยางหนง
ทจะขาดไมไดนนคอเราตองมวธการในการรกษาความปลอดภย สงทสามารถชวยลดความเสยงนไดกคอ ไฟลวอลล โดยไฟลวอลลนนจะทำาหนาทปองกนอนตรายตาง ๆ จากภายนอกทจะเขามายงเนตเวรกของเรา ไฟลวอลลเปนคอมโพเนนตหรอเนตเวรกทเราคดวาไมปลอดภย
22
กบเนตเวรกภายในหรอเนตเวรกทตองการจะปองกน โดยทคอมโพเนนตนนอาจจะเปนเราเตอร คอมพวเตอรหรอเนตเวรกตามเทคโนโลยทใชในการตรวจสอบและควบคมแบงไดเปน Packet Filtering , Proxy Service และ Stateful Inspection
Packet Filter : คอเราเตอรททำาการหาเสนทางและสงตอ (route) อยางมเงอนไข โดยจะพจารณาจากขอมลสวนทอยในหวของแพกเกจทผานเขามาเทยบกบกฎทกำาหนดไวและตดสนวาควรจะทงแพกเกจนนไปหรอวาจะยอมใหแพกเกจนนผานไปได
ในการพจารณาเฮดเดอร Packet Filter จะตรวจสอบในระดบของอนเทอรเนตเลเยอรและทรานสปอรตเลเยอรในอนเทอรเนตโมเดล ซงในอนเทอรเนตเลเยอรจะมแอตทรบวตทสำาคญตอ Packet Filtering ดงน ไอพตนทาง , ไอพปลายทาง , ชนดของโปรโตคอล (TCP UDP และ ICMP) และในระดบของทรานสปอรตเลเยอรมแอตทรบวตทสำาคญคอ พอรตตนทาง , พอรตปลายทาง , แฟลก (Flag) ซงจะมเฉพาะในเฮดเดอรของแพกเกต TCP (ชนดของ ICMP message) ในแพกเกจ ICMP (ซงพอรตของทรานสปอรตเลเยอร คอ ทง TCP และ UDP นนจะเปนสงทบอกถงแอพพลเคชนทแพกเกจนนตองการตดตอดวยเชน พอรต 80 หมายถง HTTP พอรต 21 หมายถง FTP เปนตน ดงนนเมอ Packet Filter พจารณาเฮดเดอร จงทำาใหสามารถควบคมแพกเกจทมาจากทตาง ๆ และมลกษณะตาง ๆ (ดไดจากแฟลกของแพกเกจหรอชนดของ ICMP ในแพกเกจ ICMP )ได เชน หามแพกเกจทกชนดจาก crack.cracker.net เขามายงเนตเวรก 203.154.207.0/24 , หามแพกเกจทมไอพตนทางอยในเนตเวรก 203.154.207.0/24 ผาน
Proxy Firewall หรอ Application Gateway เปนแอพพลเคชนโปรแกรมททำางานอยบนไฟลวอลลทต งอยระหวางเนตเวรกสองเนตเวรกทำาหนาทเพมความปลอดภยของระบบเนตเวรกโดยการควบคมการเชอมตอระหวางเนตเวรกภายในและภายนอก Proxy จะชวยเพมความปลอดภยไดมาก เนองจากมการตรวจสอบขอมลถงในระดบของแอพลเคชนเลเยอร (Application Layer)
เมอไคลเอนตตองการใชเซอรวสภายนอกไคลเอนตจะทำาการตดตอไปยง Proxy กอน ไคลเอนตจะเจรจา (negotiate) กบ Proxy เพอให Proxy ตดตอไปยงเครองปลายทางใหเมอ Proxy ตดตอไปยงเครองปลายทางใหแลวจะมการเชอมตอ (connection) 2 การเชอมตอ คอ ไคลเเอนตกบ Proxy และ Proxy กบเครองปลายทาง โดยท Proxy จะทำาหนาทรบขอมลและสงตอขอมลใหใน 2 ทศทาง ทงน Proxy จะทำาหนาทในการตดสนใจวาจะใหมการเชอมตอกนหรอไม จะสงตอแพกเกจใหหรอไม
Stateful Firewall : โดยปกตแลว Packet Filtering แบบธรรมดา (ทเปน Stateless แบบทมอยในเราเตอรทวไป) จะควบคมการเขาออกของแพกเกจโดยพจารณาขอมลจากเฮดเดอรของแตละแพกเกจนำามาเทยบกบกฎทมอย ซงกฎทมอยกจะเปนกฎทสรางจากขอมลสวนทอยในเฮดเดอรเทานน ดงนน Packet Filtering แบบธรรมดาจงไมสามารถทราบไดวาแพกเกจนอยสวนใดของการเชอมตอเปนแพกเกจทเขามาตดตอใหมหรอเปลาหรอวาเปนแพกเกจทเปน
23
สวนของการเชอมตอทเกดขนแลว เปนตน ซง Stateful Inspection เปนเทคโนโลยทเพมเขาไปใน Packet Filtering โดยในการพจารณาวาจะยอมใหแพกเกจผานไปนนแทนทจะดขอมลจากเฮดเดอรเพยงอยางเดยว Stateful Inspection จะนำาเอาสวนขอมลของแพกเกจ (message content) และขอมลทไดจากแพกเกจกอนหนานทไดทำาการบนทกเอาไวนำามาพจารณาดวย จงทำาใหสามารถระบไดวาแพกเกจใดเปนแพกเกจทตดตอเขามาใหมหรอวาเปนสวนหนงของการเชอมตอทมอยแลว สวนตวอยางผลตภณฑทางการคาทใช Stateful Inspection Technology ไดแก Check Point Firewall-1 , Cisco Secure Pix Firewall หรอ SunScreen Secure Net และสวนทเปน open source แจกฟร ไดแก NetFilter ใน Linux (iptables ในลนกซเคอรเนล 2.3 เปนตนไป)
ระบบปฎบตการลนกซไดม iptables ใชในการตงกฎเพอตรวจสอบการเขา-ออกจากระบบซงจะมการสรางเชนขนเหมอนเปนกลมของการตรวจสอบโดยเชนเรมตนทพรอมกบระบบปฎบตการลนกซมดงน
- เชนขาเขา (input chain) ตรวจสอบแพกเกจจากภายนอกทเขามาตดตอกบระบบหลงกำาแพงไฟ
- เชนขาออก (output chain) ตรวจสอบแพกเกจจากภายในทตดตอกบภายนอกกำาแพงไฟ
- เชนสงตอ (forwark chain) ตรวจสอบแพกเกจทเขามาทเครองแลวมการสงตอไปยงเครองอนอกท
PREROUING(DNAT)
LocalDestination ? FORWARD POSTROUTING
(SNAT)
INPUT Localprocess
OUTPUT
รปท 2.12 บลอกไดอะแกรมแสดงการทำางานของระบบไฟลวอลลและ NAT
โดยตามโครงสรางของเนตเวรกทวางไวแพกเกจทกแพกเกจไมวาจะเขามาตดตอกบองคกรหรอจากภายในองคกรตดตอสภายนอกจะตองผานเครองทเปนกำาแพงไฟกอน ดงนนแพกเกจทผานเขามาทเครองกำาแพงไฟจะถอวาเปนแพกเกจทเขามาตดตอ ดงนนจะถกตรวจสอบดวยเชนขาเขา (Input chain) กอน
ถาแพกเกจนนผานกฎเขามาไดจะถกตรวจสอบตอวามการตดตอไปยงเครองอนหรอวาเครองกำาแพงไฟเองเรยกวาการเราทตง (routing) ถาเปนการตดตอกบเครองอนทไมใชเครองกำาแพงไฟกจะถกสงตอไปใหเชนสงตอ (Forward chain) ตรวจสอบและถาผานกฎในเชน
24
สงตอได กอนแพกเกจจะถกสงออกนอกเครองกำาแพงไฟจะถกตรวจสอบดวยเชนขาออก (Output chain) อกท
เมอขอมลอยในระหวางการเดนทาง เชน กำาลงมาจากอนเทอรเนตแลวขอมลนนกเขามายงเครองไฟลวอลลผานทาง incoming interface (eth0) มาถง PREROUTING chain ซง chain นใชสำาหรบทำา Destination Network Address Translation ไมควรสราง rule เพอกรอง packet ท chain นเพราะอาจจะมบาง packet ทไมเขาส chain น (มแค packet แรกเทานนทผานเขาส chain สวน packet ถดไปใน connection เดยวกนนนจะถกกระทำาเหมอนกบท packet แรกไดรบ) หลงจากนนกเขาส Routing decision เพอตดสนใจวา packet จะถกสงไปทใด ถาในกรณท packet ถกสงไปยงเครองอนในเครอขาย packet ตองเขา FORWARD chain ซงสามารถเขยน rule สำาหรบควบคมการผานเขาออกของ packet สำาหรบ forwarded packet ไดทนและกอนท packet จะออกไปจากเครองไฟลวอลล โดยสวนใหญ (ไมใชทงหมด) จะผาน chain นซงใชทำา Source Network Address Translation ไมควรสราง rule เพอกรอง packet ท chain นเพราะอาจจะมบาง packet ทไมเขาส chain น (มแค packet แรกเทานนทผานเขาส chain สวน packet ถดไปใน connection เดยวกนนนจะถกกระทำาเหมอนกบท packet แรกไดรบ) และ packet กออกไปทาง outgoing interface (eth1) เดนทางไปสเปาหมาย (เชน ผานทาง LAN)
สวนในกรณท Rouing decision ตดสนใจวา packet ทมเปาหมายเปนเครองไฟลวอลลจะตองเขาส INPUT chain เสมอไมวาจะมาจาก interface ใดกตามและ OUTPUT chain ใชสำาหรบกรอง packet ทออกมาจาก localhost หรอเครองไฟลวอลลเองแลวเขาส Rouing decision เพอตดสนวา packet จะถกสงไปทใดและกอนท packet ออกไปจากเครองไฟลวอลลกจะตองผาน POSTROUING chain เหมอนกบในกรณแรก
2.1.4 Network Address Translation (NAT)ในการเชอมตอกบอนเทอรเนตนนจำาเปนตองม Public IP address เปนการเฉพาะ
จงจะสามารถเชอมตอและใชงานได แตเนองจากการเตบโตอยางรวดเรวของอนเทอรเนตทำาให IP ไมเพยงพอตอการใชงานดงนน NAT จงเปนทางออกหนงสำาหรบการแกไขปญหาน โดยการทำา NAT นนทำาใหสามารถใช private IP เชอมตอและใชงานอนเทอรเนตไดและยงเพมความปลอดภยทางเครอขาย (network security) อกดวย
เมอ NAT เรมทำางานมนจะสรางตารางภายในซงมไวสำาหรบบรรจขอมล IP address ของเครองในเครอขายภายในทสง packet ผาน NAT และจากนนมนกจะสรางตารางไวสำาหรบเกบขอมลหมายเลขพอรต (port number) ทถกใชไปและเมอมการสง packet จากเครอขายภายในไปยงเครอขายภายนอก NAT มกระบวนการทำางานดงตอไปน
- มนจะบนทกขอมลไอพตนทางและพอรตตนทางไวในตารางทเกยวของ- มนจะแทนท IP ของ packet ดวย IP ขาออกของ NAT device เอง - มนจะใหคาหมายเลขพอรตใหมใหกบ packet และบนทกคาพอรตนไวในตาราง
25
และกำาหนดคานลงไปใน source port number ของ packet นน - จากนนจะคำานวณหา IP , TCP checksum อกครงเพอตรวจสอบความถกตอง และเมอ NAT device ไดรบ packet ยอนกลบมาจาก external network มนจะ
ตรวจสอบ destination port number ของ packet นน ๆ แลวนำามาเปรยบเทยบกบขอมล source port number ในตารางทบรรจขอมลไวถาเจอขอมลทตรงกนมนกจะเขยนทบ destination port number , destination IP address ของ packet นน ๆ แลวจงสง packet นนไปยงเครองอยภายในเครอขายภายในทเปนผสราง packet นขนมาในครงแรก
2.1.5 การใชงานคำาสง iptablesหลงจากทเราไดรจกการทำางานของไฟลวอลลและ NAT ไปอยางคราว ๆ แลว คราว
นเราจะมาทำาความรจกกบคำาสงทใชในการสรางไฟลวอลลและคำาสงในการทำา NAT ซงนนกคอ คำาสง Iptables ซงเปนตวทตดมากบ Kernel เวอรช น (ตงแต Kernel เวอรช น 2.3 เปนตนมา) ซงใน Linux สมยกอน ๆ จะมทใหใชกคอคำาสง ipchain ซงหลงจากเวอรชน 2.3.15 นนกไดออกมาเปน iptables ซงอาจจะถอไดวาเปนรนทส ของระบบไฟลวอลลทมอยในระบบลนกซซงจะเรยกวาเนตฟลเตอร (Netfilter) ซงในการทำางานของ Iptables กจะคลายๆ กบการใชงาน ipchain และ ipfwadm จะมบางคำาสงเทานนทมการเปลยนไปบางซง iptables จะมรปแบบการใชงานดงนคอ
iptables [table] <command><match><target/jump>โดยกฎทเขยนขนจะเปนตวบอกเคอรเนลวาใหกระทำาอยางไร ในกรณทพบขอมล
ตรงตามทระบไว[Table] หมายถง ตารางหรอ table ทตองการระบ เชน iptables –t nat หมายถงให
ทำางานกบ nat table ในกรณทไมไดระบตาราง iptables จะถอวาคำาสงดงกลาวระบถง filter table โดยอตโนมต
<Command> จะเปนตวสงให iptables ทำาในสงทตองการ เชน iptables –A INPUT ซงหมายถงใหสราง rule ตอทาย INPUT chain ใน filter table
<Match> เปนสวนทใชตรวจสอบวา packet มขอมลตรง (match) กบทระบไวหรอไม เชน ม source ip address เปน 1.2.3.4
<Targer/jump> เปนตวระบวาเมอเจอ packet ท match กจะกระทำา (action) ตามทระบไว เชน ถา packet ใดม source ip address เปน 1.2.3.4 ให DROP packet นนทงไป
Table : iptables สามารถระบตารางไดโดยใชออปชน –t ตามดวยชอ table คอ- Filter table ใชสำาหรบกรอง packet ม 3 built-inchain คอ INPUT, OUTPUT ,
FORWARD - Nat table ใชสำาหรบการเปลยนแปลงแอดเดรส (Network Address Translation)
ม 3 built-in chain คอ PREROUTION , POSTROUTING , OUTPUT ซงรายละเอยดจะไดอธบายตอไป
26
- Mangle table เปนตารางทใชเปลยนแปลงแกไข packet เชน เปลยนคา TTL , MARK ซงปกตจะใชในการทำา routing ทมความซบซอนสง ม 2 built-in chain คอ PREROUTING chain (ใชแกไข packet กอนทจะเขาสไฟลวอลลและกอนเขาส routing decision) และ OUTPUT chain (ใชแกใข packet ทถกสรางโดยไฟลวอลลกอนทมนจะถกสงไป ยง routing decision) ทงนไมสามารถทำา network address translation หรอ masquerading ท table นไดและในเอกสารฉบบนจะไมกลาวถง mangle อก เนองจากเปนสวนทไมนยมนำาไปใช
สวนคำาสงในการทำางานของ Iptables น ทางผพฒนาจะขอหยบยกคำาสงพนฐานททางผพฒนาไดใชในการทำาโครงงานน เชน
-A เพม rule ใหมตอทาย chain (Append rule) เชน# iptables –A INPUT –p ALL –i eth0 –j ACCEPT
-D ลบ rule (Delete rule) เชน# iptables –D INPUT –dport 80 –j DROP
-I เพม rule ใหม ใน chain (Insert rule) เชน# iptables –I OUTPUT –p ALL –s 127.0.0.1/32 –j ACCEPT
-L แสดง rule ทงหมดใน chain (ถาไมระบ chain จะแสดง rule ทงหมดใน filter table ทงสาม built-in chain) เชน
# iptables –L# iptables –t nat -L# iptables –L INPUT
-F ลบ rule ทงหมดใน chain ทง เชน# iptables –F INPUT# iptables –F mychain
-P เปลยน default policy ของ chain คาทใชไดคอ ACCEPT, DROP ทงนคานมความสำาคญอยางมากเพราะหาก packet ถกสงเขามาใน chain แลวและไม match กบ rule ใดๆ เลย packet นนกตองถกตดสนใจโดย policy ของ chain นน ๆ เชน
# iptables –P FORWARD DROP
27
ซงหาก Packet ถกสงเขามายง FORWARD chain และไม match กบ rule ใด ๆ ใน FORWARD chain นเลย มนกจะถก DROP ทนท
-E ใชเปลยนชอ chain ใหม เชน# iptables –E myoldchain mynewchain
Match : การตงเงอนไขของการ match นนจะตองอาศยความเขาใจในเรอง IP , TCP , UDP , และ ICMC มาบางพอสมควรจงจะสามารถตงเงอนไขทเหมาะสมและตรงตามความตองการได ซงมรายละเอยดดงน
การระบ source , destination IP address : สามารถระบ source ip address ของ packet โดยใช –s หรอ –source หรอ –src และสำาหรบ destination ip address กใช –d หรอ –destination หรอ –dst การระบไอพแอดเดรสนนสามารถทำาได 4 แบบดวยกน คอ
- ใชชอเตมแทน เชน localhost หรอ www.nectec.or.th- ระบไอพแอดเดรสโดยตรง เชน 127.0.0.1 หรอ 202.44.204.33- ระบเปน group ของไอพแอดเดรส เชน 202.44.204.0/24 หมายถงไอพแอดเดรส
ตงแต 202.44.204.0 – 202.44.204.255 - หรออาจจะใช 202.44.204.0/255.255.255.0 แทน 202.44.204.0/24 ในบางกรณนนหากตองการระบเปนสวนกลบ (Inverse) เชนอนญาตใหทกไอพ
ยกเวนไอพทระบไวซงการใชคำาสงดงกลาวสามารถทำาไดโดยใชเครองหมาย “!” นำาหนาสงทเราตองการ (เครองหมาย ! หมายถง NOT) เชน –p ! TCP ซงจะตรงกบโปรโตคอลทก ๆ ตวทไมใช TCP หรอ –S ! Iocalhost ซงหมายถง packet ทม source ip address อน ๆ ยกเวน Iocalhost (127.0.0.1)
สวนในการระบโปรโตคอลสามารถระบโปรโตคอลทตองการไดดงนคอ TCP , UDP, ICMP หรอสามารถใชตวเลขแทนไดและยงสามารถใชไดทงตวอกษรเลกหรอใหญ (ใชไดทง tcp และ TCP) เชน –p TCP หรอ –p ! tcp
การระบ Interface โดย –I หรอ –in-interface ตามดวยชอ interface ใชเพอระบ incoming interface ซงหมายถงวา packet ทจะตรงกบกฎขอนตองเขามาจาก interface ทกำาหนด เชน –I eth0 หมายความวา ทก packet ทเขามาทาง eth0 จะตรงกบกฎขอน ทงนชอ interface ทสามารถใชไดนนสามารถตรวจสอบไดโดยใชคำาสง ifconfig ซงเปนคำาสงในระบบลนกซและ –o หรอ –out-interface ตามดวยชอของ interface ใชเพอระบ outgoing interface ซงหมายถงวา packet ทจะ match กบ rule น กำาลงจะเดนทางผาน interface ทระบไว เชน –o eth1 หรอ –o ! eth1
28
--source-port หรอ –sport สามารถใชไดทงตวเลขและตวอกษร (อางองจากไฟล /etc/services) และระบเปน port เดยว หรอชวงของ port ได เชน –sport 21:25 หมายถง port 21 – 25 , --sport 25 หมายถง port ทมากกวาหรอเทากบ 25 , --sport 25 หมายถง port ทนอยกวาหรอเทากบ 25 สวน –destination-port หรอ –dport มรปแบบการใชงานเชนเดยวกนกบ –sport
--tcp-option ใชตรวจสอบ TCP option วาตรงกบเลขทระบไวหรอไม การระบ Target เมอม packet ท match กบ rule แลวตองกำาหนด target สำาหรบ packet ไวดวย โดยปกตจะใชกน 2 target คอ DROP และ ACCEPT ซงเปาหมายแบบ Drop กเปนการไมทำางานกบ Package น สวน ACCEPT กคอการยอมนนเอง นอกจากนยงม target แบบอนไดคอ REJECT ซงจะคลายกบ DROP เพยงแตจะสง ICMP port unreachable กลบไปยงผทสง packet มา2.1.6 Linux Traffic Control
2.1.6.1 QoS คออะไรLucian Gheorghe [5] กลาววา QoS ในระบบเครอขายโดยทวไปหมายถงสงท
สามารถวดไดเหมอนกบ Latency และ Throughput โดยปกตแลวการจดการเนตเวรกทราฟฟคและแพคเกตนนนยมใชวธ Best Effort อยางไรกตามถาคณเคยประสบปญหาเกยวกบการตดตอสอสารของแอพพลเคชนบนระบบอนเตอรเนตเกดความลาชาขนซงเปนทเขาใจวา Best Effort นนบอยครงนนยงคงดไมเพยงพอ ความตองการสำาหรบ Flow ของแอพพลเคช นบางอยางตองการสทธพเศษสำาหรบการทำางานและบางครงมความเปนไปไดทจะสามารถจดการ Flow ทตางกนของแพคเกตทตางกน ตองยอมรบวาสำาหรบทราฟฟคบางอยางมความตองการ Latency ทตำาหรออตราความเรวทสามารถรบประกนไดบางครง QoS จะหมายถงการทำา Traffic Control หรอ Traffic Shaping
2.1.6.2 Traffic Control Overview
การจดแบงประเภทของทราฟฟคและ Shaping จะเกดขนททางขาออกของเราเตอรทเปนเกตเวยการทเราจะเขาใจถงการจดแบงประเภทของทราฟฟคและการดแลทใหสทธพเศษ ดจากตวอยางดงน สมมตวาเราเตอรมการใชงานเปน FIFO Scheduler สำาหรบการจดการแบบ Best Effort เพอดแลจดการ Flow เราสามารถพจารณาเรองของ Queue ซงเปรยบเหมอนดานเกบคาผานทางทอยบนทางหลวง ดานเกบคาผานทางนจะรองรบจำานวนของรถไดจำากดเพยงครงละคนเทานนเมอมาพรอมกนรถทเขามาทหลงตองมาเขาคว และสมมตวามรถพยาบาลพรอมดวยผปวยฉกเฉนเขามาตอควอยททายสด Packet Scheduler สามารถทจะตดสนใจบนพนฐานของเกณฑทกำาหนดไวและนคอ Flow พเศษ รถพยาบาลมความสำาคญควรทจะไปอยขางหนาและควรจะผานดานดวยความรวดเรวกวารถคนอนๆ ตวอยางขางบนนจะเปนประโยชนถาเราสามารถจดการ Queue ทมความสำาคญได
29
2.1.6.3 Linux Traffic Control
ความสามารถในการทำา Traffic control ของลนกซนนเรมมตงแตเคอรเนล 2.2 การทำา Shaping Configuration นนจะใชความหลากหลายของ Packet Scheduler และ Shaper ซงการคอนฟกนนจะใช tc Binary ทอยในแพคเกจ iproute2 สวน Qdisc จะเปนการทำา Scheduler บนลนกซ
• The Qdisc
การจดทำาลนกซ Traffic Shaping จะอนญาตใหเราสามารถทจะสรางคอนฟกกเรชนทไมมกฎเกณฑซงยากทจะเขาใจและอยบนพนฐานของ Building Block ของ Qdisc เราสามารถทจะเลอกชนดของ Qdisc ไดซงจะม Classless และ Classful โดยปกตแลวอเธอรเนตอนเตอรเฟสจะใช Classless Qdisc ซงจะใช FIFO เปนพนฐานในการทำางาน ในทางตรงกนขาม Classful Qdisc สามารถทจะประกอบไปดวยคลาสทเปน Level ตางๆลงไป Leaf Class
จะไมสามารถเพมคลาสเขาไปไดซง Qdisc จะเลอกใช FIFO โดยอตโนมต Classless Qdisc
จะเปนสวนของ Scheduler สวน Classful Qdisc โดยปกตจะเปน Shapers แต Schedule จะดกวา
• Hooks
การทำางานของแตละเนตเวรกอนเตอรเฟสจะมประสทธภาพนนจะมอย 2 สวนทเราจะ เพม Qdisc เขาไปทอนเตอรเฟสคอ Root และ Ingress ซง Root จะมความหมายเดยวกนกบ Egress ความแตกตางกนระหวาง 2 Hooks ในลนกซ QoS ซงเปนสวนประกอบทสำาคญคอ Root Hooks ซงอยทอเธอรเนตอนเตอรเฟสของเครอขายภายในนนสามารถทจะนำามาใชในการแบงประเภทของทราฟฟคเพอใหมประสทธภาพและ Root Hook จะหมายถง Queue ทก Queue ทสรางขนมาภายใตการควบคมของเรา Ingress Hook จะอยบนอเธอรเนตอนเตอรเฟสทจะตดตอกบภายนอกซงเราไมสามารถทจะทำาการ Shape ทราฟฟคในสวนนได
2.1.6.4 Class Structure Revealed
สงทสำาคญทสดในการสรางคอนฟกกเรชนสำาหรบการควบคมทราฟฟคนนเราจะตองเขาใจถงวธการเขาไปจดการกบคลาสทเปนลำาดบชนเพอทจะเพม Root Hook เขาไปเราสามารถปรบแตงโดยใชคำาสง tc
• Classless Qdisc
ตวอยางการใชคำาสง tc ในการสราง Classless Qdisc
#tc qdisc add dev eth2 parent root handle 1:0 pfifoจากตวอยางอนดบแรกทตองระบตอจาก tc คอ Qdisc เพอบอกวาจะทำางานโดยใช Qdisc และ Add Dev Eth2 จะเปนการสราง Qdisc ใหมทอเธอรเนตอนเตอรเฟส Eth2 (เราสามารถทจะระบ Del แทนท Add เพอเปนการลบ Qdisc ทเราสรางขน) ตอจากนนกคอ Parent Root ซง
30
หมายถง Hook ทอเธอรเนตอนเตอรเฟสขาออก สวน Handle จะเปนการกำาหนดชอเฉพาะของ Qdisc และสดทายเราจะตองระบประเภทของ Qdisc ทเราใชจากตวอยางจะเปน Pfifo ซง Pfifo จะเปน Classless Qdisc ซงจะไมสามารถเพมออฟชนตอไดอกถอวาเปนการจบคำาสงน จากตวอยางสามารถแสดงเปนรปไดดงรป
รปท 2.13 Classless Qdisc
สงสำาคญทตองพจารณาคอ การตงชอให Qdisc กอนจะทำาการโปรเซสซงสงท Qdisc ใชอางถงคอหมายเลขทผสมกนระหวางหมายเลขของโหนดหลก (Major Node Number) และ หมายเลยของโหลดรอง(Minor Node Number) ซงหมายเลขของโหลดหลกสำาหรบ Root Hook ทกำาหนดใหอเธอรเนตอนเตอรเฟสจะตองไมซำากนและหมายเลขของโหนดรองจะตองเปนศนยเสมอ สมมตวาครงแรกเราสราง Qdisc ชอ 1:0 เราสามารถเปลยนชอเปน 7:0 แทนได หมายเลขเหลานตองเปนจำานวนจรงจรงทอยในเลขฐาน 16 ซงอยระหวาง 1 ถง ffff โดยทวไปทนยมกนจะใชเลขระหวาง 0 ถง 9
• Classful Qdisc
ตวอยางของการสราง Classful Qdisc และ Single Class
# tc qdisc add dev eth2 parent root handle 1:0 htb default 1จากตวอยางการจะเหนวาการใชคำาสงจะเหมอนกบ Classless Qdisc แตจะมการใช HTB
Qdisc เพมเขามา จรงๆแลวประโยชนของการใชงาน Classful Qdisc คอเราจะสามารถเพมคลาสเขาไปไดอกและจากตวอยางขางบนจะสงเกตเหนการใชพารามเตอร Default ซงเปนออฟชนสำาหรบ HTB Qdiscs โดยจะอธบายภายหลง
# tc class add dev eth2 parent 1:0 classid 1:1 htb rate 1 mbit
จากตวอยางเราใชคำาสง tc พรอมกบ Class Argument แทนทการใช Qdisc Argument ซงการใช Class Argument จะเปนการยอมใหเราสามารถสรางคลาสแบบลำาดบชนได พารามเตอร Parent จะทำาใหเราสามารถเพมคลาสประเภทตางๆทเปนของ Classful Qdisc หรอคลาสอนๆทอยในประเภทเดยวกนจากตวอยางขางบนเปนการเพม HTB Qdisc เขาไป คาของพารามเตอร Parent จะตองเปนหมายเลขของ Major และ Minor Node ของ Qdisc หรอหมายเลขของคลาสทเราตองการจะเพมเขาไปจากตวอยางเราระบ 1:0 คานจะถกเลอกใชสำาหรบ Handle ของ HTB Qdisc ซงจะถกใชเปน Argument ของพารามเตอร Parent สวนพารามเตอร Classid ใชสำาหรบคลาสนนกคอ Handle พารามเตอรนนเองจะเปนการระบชอสำาหรบคลาสโดยเฉพาะหมายเลข Major Node ของ Classid จะใชหมายเลขทเหมอนกบ Major Node ทเราไดระบใน Parent Argument สวน Minor Node เราสามารถเลอกหมายเลขอะไรกไดสำาหรบพารามเตอร Classid แตตองอยระหวาง 1 ถง ffff สำาหรบคลาสนจะม Classid เปน 1:1 หมายเลข 1 ตวแรก
31
จะหมายถงหมายเลขของ Major node สำาหรบพารามเตอร Handle และสดทายกคอเราจะระบประเภทของคลาสและออฟชนตางๆทคลาสนตองการ จากตวอยางเราใชคลาสประเภท HTB
สำาหรบ Rate ซงเปนออฟชนของ HTB จะอธบายในลำาดบตอไป จากคำาสงขางตนสามารถแสดงเปนรปไดดงรป
รปท 2.14 Classful Qdisc
• Classless and Classful Combined
ตวอยางของการสราง Classless และ Classful Qdisc ใหทำางานรวมกน#tc qdisc add dev eth2 parent root handle 1:0 htb default 20
#tc class add dev eth2 parent 1:0 classid 1:1 htb rate 1000kbit
#tc class add dev eth2 parent 1:1 classid 1:10 htb rate 500kbit
#tc class add dev eth2 parent 1:1 classid 1:20 htb rate 500kbit
#tc qdisc add dev eth2 parent 1:20 handle 2:0 sfq
จากตวอยางจะเปนโครงสรางแบบ Nested Structure โดย HTB Classful Qdisc จะถกกำาหนดใหกบ Root Hook ประกอบดวยคลาส HTB 3 คลาสและ 1 SFQ Qdisc สำาหรบ 1 HTB
คลาสดงรปท 2.10
32
รปท 2.15 Classless and Classful Combined
จากรปโครงสรางขางบนสดจะเปน HTB Qdisc ประกอบดวย 3 คลาสโดยทคลาสแรกคอ Parent จะเปน 1:0 และอก 2 คลาสทเหลอจะเปน Children ของคลาสแรก สวนคลาสแตละคลาสทงหมด 3 คลาสทถกเพมเขาไปท HTB Qdisc จะถกกำาหนดดวยหมายเลขของ Major
Node เปน 1 สำาหรบ Classid โดย Qdisc ทเพมเขาไปจะม Handle เปน 1 ซงกคอหมายเลขของ Major Node ตอมากคอหมายเลขของ Minor Node Number สำาหรบ Classid แตละคลาสจะตองเปนเลขทไมซำากนอยระหวาง 1 ถง ffff ในเลขฐาน 16 และสดทายคอ SFQ Qdisc
ซงจะเปน Leaf Class ของ Classid 1:20 สงเกตการใชคำาสงจะคลายๆกบ HTB แตจะไมใชเปนการกำาหนดให Root Hook โดยจะเปนของ Classid 1:20 ในสวนของ Handle นนตองเปนไปตามกฎคอหมายเลข Major Node Number จะตองเปนเลขทไมซำากนและอยระหวาง 1 ถง ffff และหมายเลข Minor Node Number จะตองเปน 0 เราสามารถลบ Root Hook ทเราสรางขนไดโดยใชคำาสง
#tc qdisc del dev eth2 root2.1.6.4 Display qdisc and class Details
เราสามารถทจะดรายละเอยดโครงสรางลำาดบชน (Hierarchy) ทเราสรางขนได โดยการใช คำาสง tc ดงตวอยาง
# tc -s -d qdisc show dev eth2
qdisc sfq 2: quantum 1514b limit 128p flows 128/1024
33
Sent 0 bytes 0 pkts (dropped 0, overlimits 0)
qdisc htb 1: r2q 10 default 0 direct_packets_stat 0 ver 3.16
Sent 0 bytes 0 pkts (dropped 0, overlimits 0)
แตละ Qdisc ทอยในแตละลำาดบชนจะแสดงพรอมดวยขอมล Statistics และรายละเอยดของพารามเตอรตางๆทใช
# tc -s -d class show dev eth2
class htb 1:10 root leaf 2: prio 0 quantum 13107 rate 1Mbit ceil 1Mbit
burst 2909b/8 mpu 0b cburst 2909b/8 mpu 0b level 0
Sent 0 bytes 0 pkts (dropped 0, overlimits 0)
lended: 0 borrowed: 0 giants: 0
tokens: 28791 ctokens: 2879 จากตวอยางจะแสดงรายละเอยดของคลาสซงจะเหมอน Qdisc ขอมลทแสดงจะแปรผนไปขนอยกบประเภทของคลาสทใชจากตวอยางขางบนจะเปน HTB Qdisc Class
2.1.6.5 Overview of Common qdisc
• Classless Qdiscs
1. Pfifo/Bfifo Queuing Discipline
Firstin Firstout(FIFO) Queuing เปน Queue Scheduling Discipline แบบพนฐานทมการใชมากทสด ทกแพคเกตจะมความเทาเทยมกนและเปนแบบ Single Queue และ FIFO Queuing จะอางถง Firstcome Firstserved (FCFS) Queuing ดงรป
รปท 2.16 FIFO Queuing Discipline
ปกต FIFO จะเปนคา Default อยแลวใน Queuing Discipline ซงถกใชงานมากในลนกซและเราเตอร ในกรณนเราไมไดระบชนดของ Qdisc ไปทอนเตอรเฟสวาใชประเภทไหน FIFO จะถกเลอกใชโดยอตโนมต ตวอยางการใช FIFO Queue บนอเธอรเนตอนเตอรเฟส Eth0
34
#tc qdisc add dev eth0 root pfifo limit 10• tc เปนเครองมอทใชทำา Traffic Control ในลนกซ• qdisc สำาหรบบอก tc วาเราจะทำาการคอนฟก Queue Discipline(นอกจากน
ยงม Class หรอ Filter ถาเราตองการคอนฟก Class หรอ Filter)• add ใชเพอบอกวาจะเพม Qdisc ใหมเขาไปทอนเตอรเฟส• dev eth0 คอเปนการบอกวาเพม Qdisc ไปทอปกรณหรออเธอรเนต• root หมายความวาเปน Root Qdisc
• pfifo เปนการระบประเภทของ Queue วาเปน Pfifo (Packet-fifo)
• limit จะหมายถง ความยาวของ Queue (จำานวนของแพคเกตท Queue
สามารถ Hold ไว) จากตวอยางจะเปน 10 แพคเกตหลงจากทเราสราง Queuing Discipline สามารถทจะแสดงขอมลทเราคอนฟกไปได
โดยใชคำาสง#tc qdisc show dev eth0
ซงจะแสดงขอมลดงตวอยางqdisc pfifo 8001: dev eth0 limit 10 p
ขอมลทแสดงนจะบอกวาเราใช Qdisc อะไรทอนเตอรเฟส Eth0 ซงคำาสง tc กจะแสดงทเราใชคอ Pfifo Qdisc และหมายเลขของมนคอ 8001: (ซงจรงๆคอ 8001:0) พรอมดวยมการลมตปรมาณของแพคเกตทรบไดในทนคอครงละ 10 แพกเกต เราสามารถทจะลบ Pfifo Queue
ออกจากอนเตอรเฟส Eth0 ไดโดยใชคำาสง#tc qdisc del dev eth0 root
2. SFQ Queuing Discipline
Stochastic Fairness Queuing (SFQ) เปนสวนหนงของ Queuing Discipline ซงอยบนพนฐานของ Fair Queuing Algorithm ซงอลกอรทมนถกนำาเสนอโดย John Nagle ในป 1987 FQ อยบนพนฐานของคลาสใน Queue Scheduling Disciplines ซงถกออกแบบมาเพอทำาใหม นใจวาแตละ Flow จะมความเทาเทยมกนในการเขาใชงานทรพยากรในระบบเครอขายและขดขวางการสงขอมลอยางรวดเรวของ Flow ไมใหใชงานแบนวธดมากเกนไปโดยการแชร เอาพทแบนวธด (Output Bandwidth) ทเทาเทยมกน แพกเกตทถกแบงประเภทแลวจะเขาส Flow จากนนจะกำาหนด Queue และกำาหนดเสนทางของ Flow เฉพาะของแตละประเภทใหและ Queue จะใหบรการหนงแพคเกตในเวลาหนงๆแบบ Round Robin order ถา Flow ไหนไมม Queue กจะขามไป FQ อาจจะเรยกอกอยางวา Perflow หรอ Flowbased Queuing ดงรป
35
รปท 2.17 SFQ Queuing Discipline
FQ จะเปรยบเหมอนกบประตหลายๆประตเมอมแพคเกตมาถงมนจะถกแบงประเภทโดย Classifier และถกกำาหนดใหไปทประตใดประตหนง ประตนจะเปนการนำาแพคเกตมาเขาควซงจะใหบรการเหมอนกบประตอนๆ แพคเกตหนงๆจะมลำาดบเปนแบบ Round-robin ซงเปนการใหบรการแบบเทาเทยมกบทกๆคว
• Classful Qdiscs
1. PRIO Queuing Discipline
Priority queuing (PQ) เปนหลกพนฐานสำาหรบคลาสของ Queue Scheduling
อลกอรทมซงถกออกแบบเพอจดการโดยวธการเปรยบเทยบแบบงายๆสำาหรบการใหบรการทแตกตางกนของคลาสตางๆ ใน PQ แพคเกตจะถกแบงประเภทโดยระบบเปนลำาดบแรกตามลำาดบความสำาคญของแตละแพคเกต และหลงจากนนแพคเกตจะถกสงไปยง Queue ตางๆ ทไดจดประเภทตามลำาดบความสำาคญของ Queue ไวแลวและในแตละ Queue นนแพคเกตกจะมลำาดบการสงขอมลแบบ FIFO ดงรป
36
รปท 2.18 PRIO Queuing Discipline
2. HTB queuing discipline
HTB สรางขนมามจดประสงคเพอทจะสามารถเขาใจไดงายขน และสามารถนำามาแทนการใชงาน CBQ Qdisc บนระบบปฏบตการลนกซ ทง CBQ และ HTB ชวยใหเราสามารถควบคมการงานแบนวธดขาออก (Outbound Bandwidth) ซงทง CBQ และ HTB จะยอมใหเราสามารถใช Physical Link จำาลองการทำางานเปนลงคทมความเรวตำาหลายๆลงค และสงทราฟฟกประเภทตางๆไปบนลงคจำาลองทสรางขนมา ซง CBQ และ HTB นเราสามารถทจะกำาหนดวธการแบง Physical Link บนลงคทจำาลองขนมาและวธตดสนใจวาจะสงแพคเกตแตละชนดไปทลงคจำาลองลงคไหน
ความตองการอยางหนงสำาหรบ Link-sharing คอการแบงแบนวธดใหใชงานรวมกนบนลงคเดยวสำาหรบหลายๆองคกร โดยทแตละองคกรมความตองการในการรบประกนแบนวธดในระหวางทเกด Congestion แตวาแบนวธดนไมไดถกใชโดยองคกรใดองคกรหนงแตมหลายองคกรทใชรวมกน เราจงตองหากลไกลบางอยางเพอมารบประกนการใชงานแบนวธดของแตละองคกร Floyd และ Jacobson จำาแนกประเภทของโครงสรางในการจดสรรแบนวธดใหกบองคกรตางๆเปน 2 ประเภทคอ อนดบแรกเรยกวาโครงสรางแบบ Flat Link-sharing ดงรป
37
รปท 2.19 Flat Link-sharingแบนวธดของ Link-sharing ถกจดสรรใหกบคลาสในแตละคลาส (ดงรปท 2.14 แสดงอตราสวนของแตละคลาสคดเปนเปอรเซนจากแบนวธดทงหมด) ซง Link-sharing นจะถกจดสรรในรปแบบ Static (จะถกกำาหนดโดยผดแลระบบเอง) หรอแบบ Dynamic (เปลยนแปลงตามการตอบสนองในปจจบนของระบบเครอขายทไดกำาหนดไวแลวโดยอลกอรธม) จดมงหมายอนดบแรกของ Link-sharing คอแตละคลาสมการจดสรรแบนวธดใหเพยงพอตอความตองการในเวลาทเกด Congestion ผลลพธทออกมาคอในเวลาทเกด Congestion ขนคลาสบางคลาสอาจจะถกจำากดแบนวธด ในโครงสรางของ Link-sharing สำาหรบคลาสท Link-sharing จดสรรใหเปนศนย ดงตวอยางจากคลาส Mail ในรปท 2.18 แบนวธดทคลาสนไดรบจะมาจากกลไกล Scheduling อนๆทเกตเวยไมใชกลไกลของ Link-sharing ดงนน Link-sharing จงไมมการรบประกนแบนวธดสำาหรบคลาสนในกรณทเกด Congestion โครงสรางประเภททสองคอโครงสรางแบบ Hierarchical Link-sharing โดยท Link-sharing หลายๆโครงสรางมขอจำากดทเกตเวยซงสามารถทำาใหรวดเรวไดโดยใช Hierarchical Link-sharing ดงรป
38
รปท 2.19 Hierarchical Link-sharing
โครงสรางของ Link-sharing ในรปท 2.19 แสดงตวอยางของ Link-sharing ระหวางองคกรหลายๆองคกร, ระหวางโปรโตคอลตางๆ, ระหวางเซอรวสคลาสตางๆ และระหวางการเชอมตอสวนบคคลภายในเซอรวสคลาสตางๆ โดยทจะไมไดหมายความวาทกโครงสรางของ Link-sharing structure จะรวมลงคทกๆลงคทมาจาก Link-share เมอทกแพคเกตมาถงเกตเวยจะถกกำาหนดใหเปนหนงใน Leaf Class สวน Interior Class จะถกใชเพอกำาหนดวธการเกยวกบการใชงานแบนวธดไมใหเกนขอบเขตทไดรบการจดสรรมา ดงนนเปาหมายของการใหบรการของคลาสทง 3 คอ Agency A ทงกลมจะไดรบ 50% จากลงคแบนวธดทจดสรรไวในชวงเวลา Interval ซงเพยงพอตอความตองการ ถา Real-time Class ของ Agency A มขอมลทจะสงเพยงเลกนอยแลว โครงสรางทเปน Hierarchical Link-sharing จะทำาการจดแบงแบนวธดไปให Subclass อนๆของ Agency A ซงโครงสรางนจะมความยดหยนกวาโครงสรางแบบ Flat ในโครงสรางแบบ Flat นนจะมระดบของ Bandwidth Distribution แคเพยงระดบเดยวเทานนตางจากโครงสรางแบบ Hierarchical ซงจะมโครงสรางของ Bandwidth
Distribution แบบหลายระดบซงจะเพมความยดหยนในการกระจายระหวางคลาสทใหบรการได
2.1.8 SUDOถาเครองลนกซเซรฟเวอรของทาน มผดแลชวยกนหลายคน คงไมคอยดแน ถาหากจะใหทกคนลอกอนโดยใช ผใช root เนองจากเปนการยากทจะตรวจสอบวา ใครทำาอะไร แกไข เปลยนแปลงระบบตรงไหนบาง sudo เปนเครองมอทจะมาชวยเหลอตรงจดน
Sudo เปนเครองมอทอนญาตใหผใชบางคน หรอบางกลม สามารถมสทธในการเขาถงทรพยากรบางสงบางอยาง ไดเหมอนผใช root หรอในบางทสามารถกำาหนดใหมสทธเทาเทยมกบ root กได ซงขนอยกบการปรบแตงคาตางๆ ในไฟล /etc/sudoers
39
การปรบตงคาตางๆของ sudo ในการปรบตงคาตางๆ ของ sudo นน จะทำาการแกไขในไฟล /etc/sudoers โดยมรปแบบของการปรบแตงคาตางๆ ดงน
ชอผใช/กลม ชอเครองเซรฟเวอร = ( รนคำาสงดวยผใชใด ) คำาสง
ตวอยางการใชงานจากกอนหนาน ( การจดการกบบญชผใช ) เราไดทำาการเพมผใชงานทชอวา chujai กบ somsak อยในกลมของ admin ซงสามารถกำาหนดให chujai กบ somsak ทำาหนาทไดเหมอน root ทกประการ โดยสามารถใชคำาสงใดกได และใชกบโฮสตใดกได ดงน
Chujai , somsak ALL=(ALL) ALL
40
บทท 3 วธการดำาเนนงาน
การสรางและพฒนาระบบของโครงงานตองสรางเครองลนกซเกตเวยกอนจากนนจงทำาการสรางระบบรกษาความปลอดภย ใหกบลนกซเกตเวยน โดยการทำาการเขยนโปรแกรมเพอควบคมการทำางานของตวคำาสง Portsentry iptables TCP Wrappers และ QoS ทำาการทดลองในคำาสงตางๆ เพอทจะสามารถทำาใหลนกซเกตเวยเครองนเปนเครองแมขายไดและจากนนจะเปนในสวนของการทดลองและการออกแบบในสวนของ web interface ทใชในการควบคมโปรแกรมของ Portsentry iptables TCP Wrappers และ QoS
3.1 ความตองการพนฐานของโครงงานในการทำาการทดลองในระบบแลวอยางนอยๆ ผอานจะตองมคอมพวเตอรมากวาสองเครองขน
ไป โดยทำาการเชอมตอระบบเครอขายโดยอาจจะใชสายไขว (Cross Cable) หรอไมวาจะเปนการใชฮบเพอทำาการเชอมตอระบบเครอขาย เปนตน โดยเครองหนงจะตองตดตงระบบปฎบตการลนกซซงในการทำาการทดลองของผพฒนานนไดเลอกใช FedoraCore7 สำาหรบคอมพวเตอรอกสองเครองจะตดตงระบบปฎบตการวนโดว (Windows) โดยทผอานสามารถทจะเลอกตดตงไดตามตองการไมวาเปน Windows 98 , ME หรอ XP เปนตน ซงกแลวแตวาผอานใชระบบอะไรอย
อปกรณอกอยางทจะขาดไมไดเลยกคอ การดเครอขาย ซงจะตองมทงในเครองลกและเครอง แมขาย โดยทเครองลกขายจำาเปนทจะตองมอยางนอยหนงใบเพอเอาไวใชตดตอกบเครองแมขาย สำาหรบเครองแมขายนนถาระบบการเชอมตออนเทอรเนตนนทำาผานทางการดเครอขายกจำาเปนทจะตองมมากกวาสองใบขนไปเพอจะไดตดตอกบเครอขายอนเทอรเนตหนงใบและอกหนงใบสำาหรบเชอมตอกบเครอขายภายใน แตหากวาระบบการเชอมตอกบเครอขายอนเทอรเนตนนใชระบบทไมตองใชการดเครอขายในการเชอมตอ อาทเชน การเชอมตอระบบ ADSL โดยโมเดมทมการเชอมตอกบคอมพวเตอรผานทางพอรต USB เปนตน กไมจำาเปนทจะตองมการดเครอขายถงสองใบ
3.2 วธการดำาเนนงานโครงงาน
ขนตอนในการดำาเนนโครงงานนนผพฒนาจะเรมจากการเซตอพระบบบนเครองลนกซเกตเวยโดยจะกลาวถงการปรบแตงคาตางๆ ของระบบบนเครองลนกซเกตเวยและเครองลกขายเพอใหสามารถใชงานระบบทผพฒนาไดพฒนาขนโดยจะกลาวถงการคอนฟกระบบไมวาจะเปนการคอนฟกการดเครอขาย ,การเปด IP_Forward , การทำา Masquerade จนไปถงการทดสอบการเชอมตอเครอขายอนเทอรเนตจากเครองลนกซเกตเวย และเครองลกขาย
3.2.1 การกำาหนด IP Adress บนเครองลนกซเกตเวยในการตดตงระบบเครอขายเพอทจะทำาใหระบบสามารถทำางานในลกษณะนไดนนเครองทเปน
เครองแมขายจะตองเปนเครองททำาหนาทเปนเกตเวยของระบบซงนนหมายถงวาระบบจะตองมการเอาเครองลกขายเชอมตอเครอขายอนเทอรเนตผานเครองแมขาย โดยจะตอผานสวตชดงแสดงใหเหน ในรปท 3.1 3.3 โครงสรางของระบบ
41
โครงสรางของระบบประกอบไปดวยลนกซเซรฟเวอรททำาหนาทเปนเกตเวย Network Address Translation (NAT) และ วนโวสเซรฟเวอร 2003 ทำาหนาทเปน File Server ดงรป 3.1
รปท 3.1 แสดงระบบเครอขายทจะตดตง จากรปท 3.1 แสดงการตดตง Web-Based ในระบบเครอขายของกอง 2 ศนยรกษาความ
ปลอดภย เพอทดสอบใชงานจรง3.3.1 การกำาหนด IP Address บนเครองแมขายในการปรบคาไอพของเครองแมขายซงเปนระบบปฏบตการลนกซนนสามารถทำาไดสองวธคอ
การปรบโดยใชกราฟฟค (GUI) และอกวธกคอการเขาไปแกไขไฟลของระบบเลยโดยผพฒนาจะนำาเสนอวธหลงซงเปนวธทงายและสะดวกกวา ซงไฟลทเกยวของกบเนตเวรกมดงน
-ไฟล /etc/sysconfig/network-scripts/ifcfg-eth0 ในไฟลนจะมบรรทดสำาคญทจะตองตงคาดงน DEVICE = eth0 BOOTPROTO = Static BROADCAST = 192.168.111.255 IPADDR = 192.168.111.42
42
NETMASK = 255.255.255.0 NETWORK = 192.168.111.0 ONBOOT = yes GATEWAY = 192.168.111.2 TYPE = Ethenet
- ไฟล /etc/sysconfig/network-scripts/ifcfg-eth1 ในไฟลนจะมบรรทดสำาคญทจะตองตงคาดงน DEVICE = eth1 BOOTPROTO = Static BROADCAST = 192.168.145.255 IPADDR = 192.168.145.42 NETMASK = 255.255.255.0 NETWORK = 192.168.145.0 ONBOOT = yes TYPE = Ethenet
หลงจากทเราไดทำาการกำาหนด IP Address บนเครองแมขายสำาเรจเราตองสงใหระบบทำาการเรยนรคาทเราปรบแตงใหมโดยใชคำาสง
[root@fpitak]# service network restart
3.3.2 การ Compile Kernel Linux ใหมเพอรองรบ Protocol Layer7 Filter กอนทจะใชงาน ฟงกชนใดของ Layer7 Filter นนจำาเปนทจะตองทำาการ Compile
Kernel Linux ใหมเพอใหใชงานฟงกชนของ Layer7 Filter ได3.3.2.1 ดาวนโหลดไฟลทจำาเปนตอการลง Kernel และ Iptables Layer7 ดงตอไปนผานทาง
Terminalดาวนโหลด linux kernel 2.6.21# wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.21.tar.bz2ดาวนโหลด iptables source code# wget http://www.netfilter.org/projects/iptables/files/iptables-1.3.8.tar.bz2ดาวนโหลด layer-7 patch# wget http://jaist.dl.sourceforge.net/sourceforge/l7-filter/netfilter-layer7-v2.18.tar.gz
43
ดาวนโหลด layer-7 protocol pattern# wget http://nchc.dl.sourceforge.net/sourceforge/l7-filter/l7-protocols-2008-04-23.tar.gzยายไฟลทงหมดไปท /usr/src/# mv iptables-1.3.8.tar.gz netfilter-layer7-v2.18.tar.gz l7-protocols-2008-04-23.tar.gz
linux-2.6.21.tar.bz2 /usr/src/จากนนใหเขาไปท /usr/src/ จะพบไฟลทง 4 ทดาวนโหลดมาอยขางใน ใหทำาการแตกไฟลท
ดาวนโหลดมาทงหมด# cd /usr/src/
# tar -jxvf linux-2.6.21.tar.bz2# tar -jxvf iptables-1.3.8.tar.bz2# tar -zxvf netfilter-layer7-v2.18.tar.gz# tar -zxvf l7-protocols-2008-04-23.tar.gzทำาการสราง symbolic link 2 file# ln -s linux-2.6.21 linux# ln -s ptables-1.3.8 iptables
3.3.2.2 Patch kernel ดวย layer-7 patch ทดาวนโหลดมา และทำาการตดตง# cd /usr/src/linux# patch -p1 < ../netfilter-layer7-v2.18/for_older_kernels/kernel-2.6.20-2.6.21-layer7-
2.16.1.patchทำาการ copy config file ของ kernel เดม# cd /usr/src/linux# cp /boot/config-2.6.21-1.3194.fc7 .config3.3.2.3 ทำาการเพมการตงคาการตดตง kernel ใหม ดวยคำาสง make menuconfig หลงจากนน
จะมหนาตางดงภาพขางลางขนมาเพอทำาการตงคา จากนนทำาการตงคาดงตอไปน# make menuconfigขาไปแกไขท-> Networking-> Networking options-> Network packet filtering framework (netfilter)-> Core Netfileter configuration[M] layer7 match support << กดปม “M”[*] layer7 debugging output << กดปม “Y”(ออกแลวทำาการบนทกคา)
44
3.3.2.4 ทำาการตดตง Kernel ใหมดวยคำาสง - make modules ; make modules_install ; make bzImage ; make install แลวทำาการ
Reboot เครองแลวเลอก Boot เขามาใน kernel Linux 2.6.21
3.3.2.5 Patch iptable 1.3.8 ดวย layer-7 และทำาการตดตง # cd /usr/src/iptables# patch -p1 < ../netfilter-layer7-v2.18/iptables-1.3-for-kernel-2.6.20forward-layer7-
2.18.patch# chmod +x extensions/.layer7-testทำาการ set kernel ทตองการใช - make KERNEL_DIR=/usr/src/linux-2.6.21- make install KERNEL_DIR=/usr/src/linux-2.6.21 ทำาการตดตง layer-7 protocol pattern# cd /usr/src/l7-protocol-2008-04-23# make install
จากนนทำาการตง Default boot ของเครองใหมาเปน linux-2.6.21 โดย# gedit /boot/grub/menu.lst
หนาจอจะปรากฏ text editor ขนมา ภายในจะมขอความดงตวอยางตอไปนdefault=1timeout=5splashimage=(hd0,0)/grub/splash.xpm.gzhiddenmenutitle Fedora (2.6.21) << ลำาดบท 0
root (hd0,0)kernel /vmlinuz-2.6.21 ro root=/dev/VolGroup00/LogVol00 rhgb quietinitrd /initrd-2.6.21.img
title Fedora (2.6.21-1.3194.fc7) << ลำาดบท 1root (hd0,0)kernel /vmlinuz-2.6.21-1.3194.fc7 ro root=/dev/VolGroup00/LogVol00 rhgb quietinitrd /initrd-2.6.21-1.3194.fc7.img
จากขอความขางตนบรรทดทแสดงวา “default=1” เปนการบอกวา default kernel คอ Fedora (2.6.21-1.3194.fc7) แตเราตองการจะเปลยนให default kernel เปน kernel ทเราได patch และ compile ไวกอนหนาน ดงนนใหทำาการเปลยนคา “default=0” แทนของเดมซงเปน “default=1” จากนนใหทำาการ save และปดโปรแกรม
45
3.3.3 การทดลองคำาสงของ Layer7 กอนอนตองทำาการ reboot เครองมายง kernel ทสนบสนนการใชงานของ layer-7# reboot
จากนนลองสง# iptables -L
หนาจอจะแสดงรายการออกมา เชนChain INPUT (policy ACCEPT) target prot opt source destination
Chain FORWARD (policy ACCEPT) target prot opt source destination
Chain OUTPUT (policy ACCEPT) target prot opt source destination
จากนนลองเพมคำาสง# iptables -A FORWARD -m layer7 --l7proto bittorrent -j DROP
แลวสง iptables -L เพอดรายการอกครง จะพบวาม rule เพมเขาไปแลวChain INPUT (policy ACCEPT) target prot opt source destination
Chain FORWARD (policy ACCEPT) target prot opt source destination DROP all -- anywhere anywhere LAYER7 l7proto bittorrent
Chain OUTPUT (policy ACCEPT) target prot opt source destination
หากมกฎเพมขนมา 1 กฎอยางทเหน แสดงระบบสามารถใชงาน layer7 ไดแลว3.3.4 การตดตง Portsentry
46
การตดตง Portsentry เพอปองกนการ สแกนพอรตและยงบนทกไวใน Log File สำาหรบตรวจสอบ ซงสามารถดาวนโหลดโปรแกรม Portsentry และทำาการตดตง ดงน
ดาวนโหลดไฟล portsentry-1.2-1.te.i386.rpm# wget http://rpm.pbone.net/index.php3/stat/4/idpl/2522738/dir/centos_other/com/portsentry - 1. 2-
1.te.i386.rpm.htm#rpm –ivh portsentry-1.2-1.te.i386.rpmหลงจากนนเขาไปแกไฟล /etc/portsentry/portsentry.conf ทบรรทด# KILL_ROUTE="/sbin/iptables -I INPUT -s $TARGET$ -j DROP"ซงหมายความวา เมอ Portsentry ตรวจจบการสแกนพอรตจะนำาไอพทตรวจจบได สงให
Iptables ในเชนอนพท เพอทำาการ Drop packet ทงหมดของไอพทตรวจจบได# KILL_HOSTS_DENY="ALL: $TARGET$"ซงหมายความวา เมอ Portsentry ตรวจจบการสแกนพอรตจะนำาไอพทตรวจจบได ไปใสในไฟล
Host.deny เพอให TCP Warrpers หยดใหบรการทงหมดกบไอพทตรวจจบได# KILL_RUN_CMD="/root/mailto.sh $TARGET$ $PORT$"ซงหมายความวา เมอ Portsentry ตรวจจบการสแกนพอรตจะสงเมลลไปยงผดแลระบบ
ตามสครปตทเขยนไว3.3.5 การเปดการทำางานของ IP_FORWARDกอนทเราจะทำาการใชงานของ NAT อยางหนงทเราจำาเปนทจะตองทำาการปรบแตกอนนนกคอ
เราตองปรบเพอทจะใหระบบยอมทจะสงตอขอมลใหเรา หรอเรยกวา IP_Forwarding โดยเราสามารถทำาการปรบคาจากไฟล /etc/sysctl.conf โดยแกไขคาในบรรทด
net.ipv4.ip_forward = 0โดยแกไขใหเปน
net.ipv4.ip_forward = 1
รปท 3.1 การเปดการทำางานของ IP_Forwardหลงจากไดแกไขดงรปท 3.1 แลว IP_Forward จะทำางานไดตอง restart กอนโดยใชคำาสง
# service iptables restart กอนไมอยางนน IP_Forward จะไมทำางาน
47
3.3.6 การทำา IP Masquerading ในการทำา IP Masquerading นนเปนการทำา SNAT ชนดหนงโดยทตว IP Masque-rading นจะ
ทำาการแปลงหมายเลขไอพของแพคเกจทตองการจะทำาการสงออกอนเทอรเนตจากไอพภายในเปนไอพทไดรบจากผใหบรการอนเทอรเนตซงคำาสงทจะแสดงใหเหนนนจะอางองจากรปท 3.2 โดยมคำาสงดงตอไปน
# iptables –t nat –A POSTROUTING –o eth0 –j MASQUERADE
รปท 3.2 ผลลพธจากคำาสง # iptables –t nat –L
3.3.7 การใชคำาสง tc ในการกำาหนด Bandwidth Limiting
1:0
1:21:1 1:3 1:4 1:5
รปท 3.3 ไดอะแกรมของคลาสทสรางในระบบ Linux Traffic Control
จากรปท 3.3 เปนไดอะแกรมของคลาสทสรางในระบบ Linux Traffic Control ซงสามารถนำามาสรางคลาสตางๆ โดยใช tc tool ในการสรางคลาสโดยใช Classful Queuing Discipline แบบ HTB ไดดงน
48
#tc qdisc del dev eth1 root#tc qdisc add dev eth1 root handle 1: htb#tc class add dev eth1 parent 1:0 classid 1:1 htb rate 1Mbit#tc class add dev eth1 parent 1:0 classid 1:2 htb rate 1Mbit#tc class add dev eth1 parent 1:0 classid 1:3 htb rate 1Mbit#tc class add dev eth1 parent 1:0 classid 1:4 htb rate 1Mbit#tc class add dev eth1 parent 1:0 classid 1:5 htb rate 1Mbit#tc qdisc add dev eth1 parent 1:1 sfq quantum 1514b perturb 15#tc filter add dev eth1 protocol ip parent 1:0 prio 5 handle 1 fw flowid 1:1#tc qdisc add dev eth1 parent 1:2 sfq quantum 1514b perturb 15#tc filter add dev eth1 protocol ip parent 1:0 prio 5 handle 2 fw flowid 1:2#tc qdisc add dev eth1 parent 1:3 sfq quantum 1514b perturb 15#tc filter add dev eth1 protocol ip parent 1:0 prio 5 handle 3 fw flowid 1:3#tc qdisc add dev eth1 parent 1:4 sfq quantum 1514b perturb 15#tc filter add dev eth1 protocol ip parent 1:0 prio 5 handle 4 fw flowid 1:4#tc qdisc add dev eth1 parent 1:5 sfq quantum 1514b perturb 15#tc filter add dev eth1 protocol ip parent 1:0 prio 5 handle 5 fw flowid 1:5
3.3.8 การใชคำาสง iptable L7protocol Bandwidth Limitingภายใน Linux Traffic Control จะทำาหนาทในการกรองแพคเกต ในระดบแอพพลเคชนเลเยอร
ไดโดยใช Layer 7 Filtering ซงเปนโมดลทคอมไพลเพมเขามาใน Netfilter เพอให iptables มความสามารถในการกรองแพคเกตทระดบแอพพลเคชนเลเยอรได รปแบบการใชงานในสวนของการทำาฟลเตอรรงแอพพลเคชนดาตาจะเหมอนกบการใชคำาสงของ iptables ทวๆ ไปแตจะเพมในสวนของออฟชน –l7proto เขามา ดงตวอยาง
#Iptables –t mangle –A POSTROUTING –m layer7 –l7proto bittorrent –j DROP
จากตวอยางจะเปนการ DROP แอพพลเคชน bittorrent สวนในการทำางานในสวนของแอพพลเคชนแบนวธดลมต ในทนขอยกตวอยางจากรปท 3.4 จากรปใน Class 1:1 มการใช tc tool กำาหนดให
49
จำากดแบนวธดท 1 Mbit สามารถใช iptables กรองแพคเกต bittorrent ใหจำากดแบนวธด ท 1 Mbit ไดดงน
#Iptables –t mangle –A POSTROUTING –m layer7 –l7proto bittorrent -j MARK –set-mark 1
3.3.9 การจดทำา Web configurationการทำา web configuration ผพฒนาไดใช Apache เปน Web Server ในสวนของตว web
configuration ใชภาษา HTML และ PHP ในการพฒนาเวปเพอควบคมการทำางานของตว linux ทใชในการควบคมระบบ โดยการเขยน Web Config บน Apache Web server โดยตว Apache จะทำางานผานโปรแกรม SUDO กำาหนดให User Apache สามารถเขาไปใช Command บน linux แสดงดงรป 3.3
รปท 3.4 แสดงการแกไขไฟล sudoersจากรปท 3.4 แสดงการใชคำาสง visudo เขาไปแกไขไฟล sudoers โดยทำาการเพมในบรรทด
%apache ALL=(ALL) NOPASSWORD ALL, /usr/sbin/iptables เขาไป ซงหมายความวาทกคนในกรป apache สามารถรนไดทกคำาสงใน /usr/sbin/iptables กคอคำาสงใน iptables ทงหมด ในสวนของการรนคำาสง iptables ผานเวปจะใชฟงกชน system ของ PHP เพอสงรนคำาสงบน linux
3.4 การใชงาน Web Management3.4.1 การเปด Web Configurationทำาการเปดเวปบราวเซอรแลวพมพ http://msit42.mtts.com จะไดดงรปท 3.5
รปท 3.5 แสดง web Interface Traffic Control
3.4.2 การใชงาน Block with Iptable
50
สวนของ Block Iptables จะสามารถคอนฟกใหทำาการ Block IP เครองทเขามา สแกนพอรต ไดจากรปท 3.6 แสดงวามการเลอกใชบรการ Iptables
รปท 3.6 แสดงวามการคอนฟกท Block with Iptable3.4.3 การใชงาน Block Service with TCPWarppersการใชงาน Block Service with TCPWarpers จะสามารถคอนฟกใหทำาการ Block IP ท สแกน
พอรตไมสามารถใชบรการ Service ตาง ๆ ภายในเครองได ซงในรปท 3.7 แสดงวามการเลอกใชบรการ TCPWarppers
รปท 3.7 แสดงวามการคอนฟก TCPWarppers3.4.4 การใชงาน Send Mail Alert to adminการใชงาน Send Mail Alert to admin เปนการคอนฟกใหระบบมการสงเมลลแจงเตอน เมอม
การ สแกนพอรตโดยระบบจะสงอเมลลแจงเตอนหมายเลขไอพพรอมรายละเอยดผถอครองโดเมนทเขามา สแกนพอรตมายงอเมลลทกำาหนด ซงในรปท 3.8 แสดงวามการสงใหสงอเมลลแจงเตอนไปยงผดแลระบบ
51
รปท 3.8 แสดงวามการคอนฟก Send Mail3.4.5 การใชงานป ม Report Portsentryการใชงานปม Report Portsentry เปนการแสดงรายละเอยดหมายเลขไอพทเขามา สแกนพอรต
ในระบบ ซงประกอบดวยวนท เวลา ไอพตนทาง พอรตทสแกน โปรโตคอลทใช ซงในรปท 3.9 แสดงรายละเอยดหมายเลขไอพทเขามา สแกนพอรตในระบบ
รปท 3.9 แสดงรายละเอยดหมายเลขไอพทเขามา สแกนพอรตในระบบ
3.4.6 การใชงานแทบ Firewallในแทบ Firewall สามารถ Config Chain Input และ Chain Forward ซงการใชงาน Chain Forward
จะสามารถคอนฟกใหทำาการ Block ในระดบแอพพลเคชน และพอรต จากรปท 3.10 แสดงวามการ Config ใหมการ Block การใชงาน http และ msn
52
รปท 3.10 แสดงการคอนฟกท Chain Forward
รปท 3.11 แสดงการคอนฟกท Chain Inputจากรปท 3.11 แสดงการคอนฟกท Chain Input ซงการใชงาน Chain Input จะสามารถคอนฟก
ใหทำาการ Accept ตาง ๆ ได ซงจากรปท 3.11 แสดงวามการ Config ใหมการใชงาน ssh จากทก ๆ ไอพ ทเขามาตดตอภายในระบบ
3.4.7 การใชงานแทบ QoSการใชงานแทบ Qos จะสามารถคอนฟกโปรแกรม และบรการตาง ๆ ใหใชแบนดวธใน Class
ตางๆ ตามทกำาหนดจากรปท 3.12 แสดงวามการคอนฟกใหโปรแกรม Bittorrent ใชแบนดวธสงสดไมเกน 512 Kbps
รปท 3.12 แสดงการคอนฟกทแทป Qos
53
บทท 4 การทดลองการทำางาน
4.1 โครงสรางของระบบโครงสรางของระบบประกอบไปดวยลนกซเซรฟเวอรททำาหนาทเปนเกตเวยโดยการทำา
Network Address Translation (NAT) และ วนโดวสเซรฟเวอร 2003 ทำาหนาทเปน File Server ดงรป 4.1
รปท 4.1 แสดงระบบเครอขายทใชในการทดลอง จากรปท 4.1 แสดง ระบบเครอขายทใชตดตง Web-Based ยของกอง 2 ศนยรกษา
ความปลอดภย เพอทดสอบใชงานจรง4.2 การทดลอง
ในการทำาโครงงานน ผพฒนาไดทำาการพฒนาระบบขนมาสามระบบโดยระบบแรกจะเปนการทดลองในสวนของโปรแกรม Portsentry ในการควบคม Iptable TCPWarppers และสงอเมลลแจงเตอนในสวนทสอง จะเปนการทดลองการคอนฟก Iptable และในสวนทสามจะเปนการทดลองในสวนการควบคมแบนดวธ ดงนนผพฒนาจะขอแยกการทดลองออกเปนสามสวน ดงจะกลาวถงรายละเอยดของผลการทดลองโครงงานในหวขอถดไป
54
4.2.1 ผลการทดลองระบบ Network Address Translator (NAT)ในระบบนมความตองการในการทจะการแปลงหมายเลขไอพของแพคเกตทตองการจะทำาการสง
ออกอนเทอรเนตจากไอพภายในเปนไอพทไดรบจากผใหบรการอนเทอรเนต โดยการทำา IP Masquerading นนในโครงงานนผพฒนาเลอกทจะใชโปรแกรม Billsniff ซงเปนเปนโปรแกรมจำาพวก Packet sniffer โดยเราใชโปรแกรมนในการดรายละเอยดของการสงแพคเกตจะสงเกตเหนไดวาโปรแกรม Billsniff จะทำาการแสดงรายละเอยดของการสงแพคเกตซงจะประกอบดวยเวลาทสง (Time) , ขนาดของขอมล (Size) , หมายเลข MAC Addres ของเครองตนทาง (SrcMAC) , หมายเลข MAC Address ของเครองปลายทาง (DestMAC) , หมายเลข IP Address ของเครองตนทาง (Src IP) , หมายเลข IP Address ของเครองปลายทาง (Dest IP) , พอรตตนทางทใชในการสง (Src Port) , พอรตปลายทางทใชในการสง (Dest Port) และโปรโตคอลทใชในการสง (Protocols) โดยทเครองทเปนเครองตนทางกคอเครองทอยในเครอขาย (IP Address 192.168.2.253) สวนเครองทเปนปลายทางกคอเครองทอยนอกเครอขาย (IP Address 192.168.1.254) นนเอง
รปท 4.2 รายละเอยดของการสงแพคเกต
จากรปท 4.2 เปนผลการทดลองของการสงแพคเกตจากเครอง 192.168.2.253 ไปยงเครอง 192.168.1.254 โดยใชวธการ ping จากเครองตนทางไปหาปลายทาง โดยใชโปรแกรม BillSniff ดกจบแพคเกตทเครองปลายทาง จะสงเกตเหนวาในบรรทดทหนงนนหมายเลข IP Address ตนทาง (Src IP) นนเปน 192.168.1.1 ซงหมายเลข IP Address นจรงๆ เปนของการด eth0 และในบรรทด ทสองเปนการ Reply แพคเกตกลบไปทตนทาง จะสงเกตเหนวาหมายเลข IP Address ปลายทาง (Dest IP) ทจะสงแพคเกตกลบไปนนกเปนหมายเลข IP Address ของการด eth0 เชนกน จงสรปไดวาเครองทอยดานนอกเครอขายนนจะไมสามารถเหนเครองทอยดานในเครอขายไดแตจะเหนการด eth0 แทน
55
4.2.2 การใชงาน Iptables TCPWarppers และ Sendmail Alert to Admin
รปท 4.3 แสดงการใชงาน Iptable TCPWarppers และ Sendmail Alert to Adminจากรปท 4.3 แสดงผลการสงงานผานหนา Web base เพอใหโปรแกรม Portsentry เปด
Service Iptables TCPWarppers และ Sendmail Alert to Admin ทำางาน
รปท 4.4 แสดงผลหลงการ setup ให Iptables TCPWarppers และ Sendmail Alert to Admin ทำางานจากรปท 4.4 แสดงผลหลง setup ให Iptables TCPWarppers และ Sendmail Alert to Admin
ทำางาน ทงนถาเราใชการtelnet เขาไปใน Linux แลวใชคำาสง vi /etc/portsentry/portsentry.conf เพอดการแกไขในบรรทดดงน
รปท 4.5 แสดงผลการ setup Iptable
56
จากรปท 4.5 เปนการแสดงผลคาคอนฟกหลงจากสงงานผานหนา Web base ให portsentry เปด Service Iptable เพอบลอกไอพทเขามาสแกนพอรต เมอ Portsentry ตรวจจบการสแกนพอรต จะนำาไอพทตรวจจบได สงให Iptables ในเชนอนพท เพอทำาการ Drop packet ทงหมดของไอพ ทตรวจจบได
รปท 4.6 แสดงผลการ setup TCPWarppersจากรปท 4.6 เปนการแสดงผลคาคอนฟกหลงจากสงงานผานหนา Web base ให portsentry
ตรวจจบการสแกนพอรตจะนำาไอพทตรวจจบได ไปใสในไฟล Host.deny เพอให TCP Warrpers หยดใหบรการทงหมดกบไอพทตรวจจบได
รปท 4.7 แสดงผลการ setup Sendmail Alert to adminจากรปท 4.7 เปนการแสดงผลคาคอนฟกหลงจากสงงานผานหนา Web base ให portsentry
ทำางานตามสครปทเขยนขน ในทนผพฒนาระบบไดเขยนสครปเพอนำาไอพทไดไปตรวจสอบรายละเอยดผถอครองโดเมน ดวยคำาสง whois และสงอเมลลแจงเตอนไปยงผควบคมระบบ ดงน
#!/bin/bashhost=$1port=$2whois $host | mail -s "แจงเตอนผบกรกจาก IP $host โดยเชอมตอมายง port $port" root
4.2.2.1 การทดลอง โดยผพฒนาไดใชเครองคอมพวเตอร ip 58.8.105.4 ทดลอง Scan port โดยใชโปรแกรม Nmap
ไปยง http://fpitak.no-ip.biz ดวยโปรแกรม Nmap ดงรป 4.8
57
รปท 4.8 แสดงการ Scan Port โดยใชโปรแกรม Nmap
จากรป ท 4.8 เปนการแสดงผลการสแกนพอรตโดยใชโปรแกรม Nmap ไปยง http://fpitak.no-ip.biz
4.2.2.1 ผลการทดลอง ในการทำาโครงงานน ผพฒนาไดทำาการทดสอบระบบเบองตน โดยหลงจากท setup ระบบ
ดงรปท 4.3 ผพฒนาไดใชเครองคอมพวเตอร ไอพ 58.8.105.4 ทดลอง Scan port ไปยง http://fpitak.no-ip.biz ดวยโปรแกรม Nmap ซงไดผลการทดลอง ดงรปท 4.9 และ 4.10
รปท 4.9 แสดงผลการ Drop IP 58.8.105.4 ของ Iptables
58
จากรปท 4.9 เปนการแสดงผล การทำางานของ Portsentry ในการสงให Iptables Drop IP 58.8.105.4 ทเขามาสแกนพอรท ซงในบางกรณอาจจะมเครอง Client ภายในระบบ ถกบลอกสามารถยกเลก Client ออกจาก Iptable เพอใหสามารถใชบรการภายในระบบได
รปท 4.10 แสดงผลการ Drop IP 58.8.105.4 ของ Portsentry
จากรปท 4.10 เปนการนำา Log ไอพทเขามาสแกนพอรตจาก path /etc/portsentry/portsentry.history พรอมแสดงรายละเอยดวน เวลา พอรต และโปรโตคอล
รปท 4.11 แสดงอเมลลแจงเตอนการ Scan Portจากรปท 4.11 เปนการแสดงหนาจอระบบ Web mail ทรบอเมลลแจงเตอนหลงจากมการ
สแกนพอรต
59
รปท 4.12 แสดงรายละเอยดภายในอเมลลแจงเตอนการ Scan Port
จากรปท 4.11 และ 4.12 แสดงผลการสงอเมลลแจงเตอนตามสครปตทเขยน พรอมรายละเอยดผถอครองโดเมนทเขามา Scan Port ยงอเมลลทกำาหนด
4.2.3 การใชงาน Web-base เพอจดการ Iptable
รปท 4.13 แสดงการใชงาน Web-base เพอจดการ Iptableจากรปท 4.13 การใชงาน Chain Forward จะสามารถคอนฟกใหทำาการ Block ในระดบ
ของ Layer 7 และ Layer 3 ซงสามารถเลอก Block จากแอปพลเคชน หรอจะ Block จาก Port ทแอปพลเคชนใชงาน ในทนผพฒนาระบบไดตง Default Policy ของ Chain Forward เปน Accept โดยในรปท 4.13 ผพฒนาระบบไดทำาการ Drop แอปพลเคชน Bittorent เมอใชคำาสง iptables –L FORWARD จะแสดงใหเหนวามการสราง Policy ใน Chain FORWARD ให drop แอปพลเคชน Bittorent ซงแสดงดงรปท 4.14
60
รปท 4.14 แสดงการสราง Policy ใน Chain FORWARD
รปท 4.15 แสดงการใชงานคอนฟกทแทป Chain Inputจากรปท 4.15 การใชงาน Chain Input จะสามารถคอนฟกใหทำาการ Accept service
จาก port ทกำาหนดในทนผพฒนาระบบไดตง Default Policy ของ Chain Input เปน Drop ซงจากรป ท 4.15 แสดงวามการ Config ใหมการยอมรบการใชงาน ssh จากทก ๆ ไอพทเขามาตดตอภายในระบบเมอใชคำาสง iptables –L INPUT จะแสดงใหเหนวามการสราง Policy ใน Chain Input แสดงดงรป ท 4.16
รปท 4.16 แสดงการสราง Policy ใน Chain Input
61
4.2.3.1การทดลองในการทดลองผพฒนาระบบไดทำาการกำาหนด Policy ใน Chain Forward ดวยการ
Drop แอปพลเคชน Bittorent และทำาการเปดพอรท 22 ใน Chain Input ซงจะทำาใหสามารถใชโปรแกรม SSH เขาสระบบได
4.2.3.2 ผลการทดลอง
รปท 4.17 ผลลพธการใชคำาสง iptable L7protocol Drop Protocal Bittorrentจากรปท 4.17 ผพฒนาระบบทดลองดาวนโหลดไฟลbittorrent ทางอนเตอรเนต โดยโปรแกรม
uTorrent ซงจะเหนวาไมสามารถดาวนไฟล bittorrent ได
รปท 4.18 ผลลพธกอนการใชคำาสง iptable Accept Port 22
62
รปท 4.19 ผลลพธหลงการใชคำาสง iptable Accept Port 22จากรปท 4.18 ผพฒนาระบบทดลองใชโปรแกรม SSH ไปทไอพ 192.168.111.42 ซงไม
สามารถ Connect ได เนองจาก Default Policy ของ Chain Input เปน Drop ภายหลง Config ใหมการยอมรบการใชงาน SSH จากทก ๆ ไอพทเขามาตดตอจะทำาใหสามารถ SSH ไปทไอพ 192.168.111.42 ได ตามรปท 4.19
4.2.4 การจดการ QoS
รปท 4.20 แสดงการใชงาน Web-base เพอจดการ QoSจากรปท 4.20 การใชงานแทบ QoS จะสามารถคอนฟกใหโปรแกรม และบรการตาง ๆ
ใชแบนดวธใน Class ตางๆ ตามทกำาหนดใน Chain Postrouting ซงสามารถกำาหนดแบนดวธ ได 5 Class โดยในรปท 4.20 ผพฒนาระบบไดทำาการจำากดแบนดวธของการดาวนโหลดไฟล Bittorent ไวท 512 Kbps เมอใชคำาสง iptables –t mangle –L POSTROUTING จะแสดงใหเหนวามการสราง Policy ใน Chain Postrouting ใหจำากดของการดาวนโหลดไฟล Bittorent ไวท Class 2 แสดง ดงรปท 4.21
63
รปท 4.21 แสดงการสราง Policy ใน Chain Postrouting
4.2.4.1ผลการทดลอง
รปท 4.22 แสดงผลการวด Traffic ใน Class ท 2จากรปท 4.22 แสดงผลการวด Traffic ใน Class ท 2 ซงเปนการควบคมแบนดวธ
ของการ ดาวนโหลดไฟล Bittorent จากรปท 4.22 ในชวงแรกมการแกไขคาแบนดวธใน Linux Traffic Control ใชเปนคา 512 kbps จากรปคาทวดไดประมาณ 512 kbps หลงจากนนผพฒนาทำาการแกไขแบนดวธเปน 1000 kbps ผลทไดจะเหนวาคาแบนดวธทวดไดอยท 920 kbps
64
บทท 5สรปผลการทดลอง
5.1 สรปผลการทดลองการพฒนาจดทำา Web-Based เพออำานวยความสะดวกในการจดการกบระบบรกษา
ความปลอดภยสามารถควบคมการทำางานของ Portsentry Iptables และ Quality of Service (QoS) ดวยวธการกำาหนดแบนดวธใหกบเซอรวสประเภทตางๆ แยกประเภทกน สามารถทำางานไดเปนด โดยดจากกราฟการควบคมในแตละ Class คาแบนดวธทไดมคาใกลเคยงกบคาทเรากำาหนดในพารามเตอร Rate ของแตละ Class5.2 ขอเสนอแนะ
5.2.1 ในขณะทเครองเซรฟเวอรรสตารท จะทำาให Iptable ท Portsentry ควบคมการทำางาน จะถกรเซทไปดวยจงทำาใหไอพทเขามาแสกนพอรทไมถกปดกนการทำางานตอทำาใหสามารถเขามาใชบรการตาง ๆ ในเซรฟเวอรได
5.2.2 กรณท Client ถกปดกนการทำางานจาก Service TCP Warppers ระบบทพฒนาขนยงไมสามารถเขาไปแกไขไฟลใน /etc/host.deny ทถกปดกนโดย Service TCPWarppers ได
5.2.3 ในกรณทเครองลกใชงานในแอพพลเคชนเดยวกน เชน bittorrent คาแบนดวธ ทจดสรรใหแอพพลชนนนจะถกแบงแชรแบนดวธกน โดยผลรวมการใชงานของทกเครองในแอพพลเคชนนนไมเกนแบนดวธทจดสรรไว5.3 แนวทางในการพฒนาตอ
5.3.1 หาแนวทางในการบนทก ไอพทเขามาแสกนพอรทไมใหสญหายหลงจากเครองเซรฟเวอรรสตารท
5.3.2 ทำาการพฒนาระบบใหสามารถลบไอพในไฟล /etc/host.deny ของ Client ทถกปดกนโดย Service TCPWarppers
65
เอกสารอางอง
[1] บณฑต จามรภต , “Linux RedHat เลม 1“ , ซเอดยเคชน จำากด , พ.ศ.2548 [2] บณฑต จามรภต , “Linux RedHat เลม 2“ , ซเอดยเคชน จำากด , พ.ศ.2549[3] เรองไกร รงสพล , “เจาะระบบ TCP/IP จดออนของโปรโตคอลและวธปองกน“ , บรษท โปรวชน จำากด , พ.ศ.2544[4] เรองไกร รงสพล , “เปดโลก Firewall และ Internet Security“ ,บรษท โปรวชน จำากด , พ.ศ.2544[5] Lucian Gheorghe, Linux Firewall and QoS using netfilter, iproute2, NAT and L7-filter, PACKT PUBLISHING, 2006
66