95
ระบบการบริหารการใชงานอินเทอรเน็ตสําหรับองคกร An Internet Management and Administration System for Enterprise อมรศักดิเรืองแตง Amornsak Ruangtang สารนิพนธฉบับนี้เปนสวนหนึ่งของการศึกษา ตามหลักสูตรวิทยาศาสตรมหาบัณฑิต สาขาวิชาวิศวกรรมเครือขาย บัณฑิตวิทยาลัย มหาวิทยาลัยเทคโนโลยีมหานคร ปการศึกษา 2553

ระบบการบริหารการใช ิงานอนเทอร เน็ัตสํบองค าหร กร An ... ระบบการ... · This project

  • Upload
    others

  • View
    5

  • Download
    0

Embed Size (px)

Citation preview

Page 1: ระบบการบริหารการใช ิงานอนเทอร เน็ัตสํบองค าหร กร An ... ระบบการ... · This project

ระบบการบริหารการใชงานอินเทอรเน็ตสําหรับองคกร An Internet Management and Administration System for Enterprise

อมรศักดิ์ เรืองแตง Amornsak Ruangtang

สารนิพนธฉบับนี้เปนสวนหนึ่งของการศึกษา ตามหลักสูตรวิทยาศาสตรมหาบัณฑิต

สาขาวิชาวิศวกรรมเครือขาย บณัฑิตวิทยาลัย มหาวิทยาลัยเทคโนโลยีมหานคร

ปการศึกษา 2553

Page 2: ระบบการบริหารการใช ิงานอนเทอร เน็ัตสํบองค าหร กร An ... ระบบการ... · This project

หัวขอโครงงาน ระบบการบรหิารการใชงานอินเทอรเน็ตสําหรับองคกร นักศึกษา นายอมรศักดิ์ เรืองแตง รหัสนักศึกษา 5117660063 ปริญญา วิทยาศาสตรมหาบัณฑิต สาขาวิชา วิศวกรรมเครอืขาย พ.ศ. 2553 อาจารยผูควบคุมโครงงาน ดร.ศุภกร กังพิศดาร

อ.สุรการ ดวงผาสุข

บทคัดยอ

โครงงานระบบการบริหารการใชงานอินเทอรเน็ตสําหรับองคกร ไดนําหลักการทํางานของ Iptables, PHP, MySQL และอ่ืนๆ มาสรางเปน Linux Gateway เพ่ือใชเปนเครื่องมือสําหรับการบริหารจัดการระบบอินเทอรเน็ต โดยมีการควบคุมการเขาใชงานอินเทอรเน็ตกับบุคคลที่มีสิทธิ ควบคุมแบนดวิธจําแนกตามแอพพลิเคชั่นที่ใชงานตามความเหมาะสม ควบคุมการเขาใชงานเว็บไซดที่ไมเหมาะสม มีรายงานผลการใชงานอินเทอรเน็ต รายงานผูใชงานอินเทอรเน็ต ซึ่งเครื่องมือน้ีสามารถทําใหการใชงานระบบอินเทอรเน็ตนั้นมีประสิทธิภาพมากยิ่งขึ้น

I

Page 3: ระบบการบริหารการใช ิงานอนเทอร เน็ัตสํบองค าหร กร An ... ระบบการ... · This project

Project Title An Internet Management and Administration System for Enterprise

Student Amornsak Ruangtang StudentID. 5117660063 Degree Master of Science Programme Network Engineer Year 2010 Project Advisor Dr.Supakorn Kungpisdan

Mr.Surakarn Duangphasuk

Abstract

This project presents an Internet Management and Administration System based on Iptables, PHP, MySQL, and others as a Linux gateway to administer Internet usage in an organization. The proposed system can monitor and control Internet access for each user, allocate bandwidth for each application, block access to inappropriate websites. The system can produce report of Internet usage categorized by users.

II

Page 4: ระบบการบริหารการใช ิงานอนเทอร เน็ัตสํบองค าหร กร An ... ระบบการ... · This project

กิตติกรรมประกาศ

โครงงานนี้จักสําเร็จมิไดเลย ถาปราศจากแนวความคิดและการแนะนําถึงแนวทางการดําเนินโครงงานและองคความรูตางๆ มากมายจากอาจารย ดร.ศุภกร กังพิศดาร และ อ. สุรการ ดวงผาสุข ซึ่งเปนอาจารยที่ปรึกษา อีกทั้งเพ่ือนๆและรุนพ่ี ที่คอยชวยเหลือสนับสนุนและใหขอมูลในการจัดทําโครงงานในครั้งนี้ ขาพเจาจึงขอกราบขอบพระคณุอาจารยเปนอยางสูง และขอขอบคุณเพ่ือนๆ และรุนพ่ี เอาไว ณ ที่นี้ดวย

อมรศักดิ์ เรืองแตง

III

Page 5: ระบบการบริหารการใช ิงานอนเทอร เน็ัตสํบองค าหร กร An ... ระบบการ... · This project

สารบัญ

หนา บทคัดยอภาษาไทย ............................................................................................................ I บทคัดยอภาษาอังกฤษ ...................................................................................................... II กิตติกรรมประกาศ ............................................................................................................ III สารบัญ.............................................................................................................................IV สารบัญตาราง ...................................................................................................................VI สารบัญรูป .......................................................................................................................VII บทที่ 1 บทนาํ.................................................................................................................... 1

1.1 กลาวนํา.......................................................................................................... 1 1.2 ปญหาและแรงจูงใจ ......................................................................................... 1 1.3 วัตถุประสงคของโครงงาน ............................................................................... 1 1.4 ขอบเขตของโครงงาน...................................................................................... 1 1.5 ประโยชนที่ไดรับ............................................................................................. 2 1.6 ขั้นตอนการดําเนินงาน .................................................................................... 3

บทที่ 2 เทคโนโลยีที่เกี่ยวของ ............................................................................................ 4

2.1 กลาวนํา.......................................................................................................... 4 2.2 Linux Firewall................................................................................................ 4 2.3 PHP ............................................................................................................ 7 2.4 MySQL ......................................................................................................... 8 2.5 Proxy server.................................................................................................. 9 2.6 SNMP (Simple Network Management Protocol)........................................10 2.7 Perl ..........................................................................................................12 2.8 RRDtool .....................................................................................................12 2.9 Linux Traffic Control .................................................................................13 2.10 สรุปผล .......................................................................................................21

บทที่ 3 การออกแบบ .......................................................................................................22

3.1 กลาวนํา........................................................................................................22 3.2 ระบบการระบุตวัตนสําหรับการใชงานอินเตอรเน็ต .........................................22 3.2.1 การออกแบบการทํางานของ iptables .................................................22 3.2.2 การออกแบบฐานขอมูล........................................................................24

IV

Page 6: ระบบการบริหารการใช ิงานอนเทอร เน็ัตสํบองค าหร กร An ... ระบบการ... · This project

สารบัญ (ตอ)

หนา 3.2.3 การออกแบบการทํางานหนาเว็บ ..........................................................25 3.3 ระบบบรหิารจัดการเกตเวย ...........................................................................28 3.3.1 ระบบการจัดการผูเขาใชงานอินเตอรเน็ต ..............................................28 3.2.2 ระบบจัดการ Proxy .............................................................................31 3.2.3 ระบบการทํา QoS ...............................................................................32 3.2.4 ระบบการมอนิเตอรเกตเวย ..................................................................34 3.2.4.1 ระบบการมอนิเตอร CPU........................................................34 3.2.4.2 ระบบการมอนิเตอร Memory ..................................................34 3.2.4.3 ระบบการมอนิเตอร eth0 และ eth1.........................................35

3.4 บทสรุป.........................................................................................................36 บทที่ 4 การทดลองและการทดลอง...................................................................................37 4.1 กลาวนํา........................................................................................................37 4.2 โครงสรางของระบบ ......................................................................................37 4.2 การทดลองระบบ...........................................................................................37 4.3.1 การระบุตวัตนเพือ่เขาใชงานอินเตอรเน็ต ..............................................38 4.3.2 การบริหารจัดการเกตเวย.....................................................................43 4.3 ผลการทดลอง...............................................................................................53 4.4 บทสรุป.........................................................................................................56 บทที่ 5 สรุปผลการดําเนินงาน .........................................................................................57 5.1 กลาวนํา........................................................................................................57 5.2 การสรุปผลการดําเนินงาน.............................................................................57 5.3 แนวทางในการพัฒนาตอ...............................................................................57 5.4 บทสรุป.........................................................................................................58 เอกสารอางอิง..................................................................................................................59 ภาคผนวก .......................................................................................................................60 ภาคผนวก ก. ...................................................................................................61 ภาคผนวก ข. ....................................................................................................69

V

Page 7: ระบบการบริหารการใช ิงานอนเทอร เน็ัตสํบองค าหร กร An ... ระบบการ... · This project

สารบัญตาราง

ตารางที ่ หนา 1.1 ตารางแสดงขั้นตอนการดําเนินงานของโครงงาน ........................................................3 2.1 แสดง Tables และ Chain ตางๆของ iptables ............................................................4 2.2 แสดงความหมายของคําสั่ง iptables ..........................................................................5 3.1 User Table เปนตารางที่เกบ็ขอมูลตางๆของผูใชงาน...............................................17 3.2 Access_log Table เปนตารางที่เก็บขอมูลการเขาใชงานของผูใช .............................18 4.1 แสดงเกี่ยวกับสคริปตการทาํงานของ iptables..........................................................38

VI

Page 8: ระบบการบริหารการใช ิงานอนเทอร เน็ัตสํบองค าหร กร An ... ระบบการ... · This project

สารบัญรูป

รูปที่ หนา 1.1 ลักษณะโครงสรางของระบบงาน ................................................................................ 2 2.1 IPTABLES Packet Flow Diagram ........................................................................... 6 2.2 แสดงรูปแบบคําสั่งของ SNMP ในเวอรชัน่ตางๆ .......................................................10 2.3 แสดงการติดตอระหวาง Manager และ Agent..........................................................11 2.4 Classless qdisc......................................................................................................13 2.5 รูปโครงสรางของ pfifo_fast .........................................................................................14 2.6 รูปโครงสรางของ TBF qdisc.......................................................................................14 2.7 รูปโครงสรางของ SFQ qdisc.......................................................................................15 2.8 Classful qdisc ........................................................................................................16 2.9 รูปโครงสรางของ PRIO qdisc .....................................................................................17 2.10 รูปโครงสรางของการใหบริการลูกคา 2 ราย.......................................................................18 3.1 แสดงภาพไดอะแกรมของระบบโดยรวม ...................................................................22 3.2 การออกแบบการทํางานของ iptables ของระบบ ......................................................23 3.3 แสดงฐานขอมูลสําหรับระบบการระบุตวัตน ..............................................................24 3.4 แสดงขั้นตอนการทํางานของกระบวนการ Login.......................................................26 3.5 แสดงกระบวนการทํางานของการ Logout ................................................................27 3.6 แสดงหนาเว็บสําหรับการ Login...............................................................................27 3.7 แสดงหนาเว็บเม่ือทําการ Login ถูกตอง ...................................................................28 3.8 แสดงผังการทํางานระบบการจัดการผูใชงาน ............................................................28 3.9 การออกแบบหนาจอแสดงรายชื่อผูใชงานทั้งหมด .....................................................29 3.10 การออกแบบหนาจอแสดงการเพิ่มผูใชงาน...............................................................29 3.11 การออกแบบหนาจอการแกไขขอมูลผูใชงาน ............................................................29 3.12 การออกแบบหนาจอสําหรับการแกไขรหัสผาน .........................................................30 3.13 การออกแบบหนาจอสําหรับการเซตไอพแีอดเดรสที่ไมตองยืนยันตวัตน ....................30 3.14 การออกแบบหนาจอสําหรับแสดงรายชือ่ผูที่ใชระบบอินเตอรเน็ตอยู..........................30 3.15 แผนผังการทํางานของระบบการจัดการ Proxy .........................................................31 3.16 รูปแสดงการแกไฟล squid.conf ...............................................................................31 3.17 การออกแบบหนาจอสําหรับการปองกันการเขาเวบ็ไซดที่ไมเหมาะสม.......................32 3.18 รูปแสดงโครงสรางของการแบง Class ในการทํา QoS..............................................32 3.19 การออกแบบแสดงหนาจอสําหรับการทาํ QoS .........................................................33 3.20 รูปการออกแบบหนาจอแสดง CPU Load.................................................................34

VII

Page 9: ระบบการบริหารการใช ิงานอนเทอร เน็ัตสํบองค าหร กร An ... ระบบการ... · This project

สารบัญรูป(ตอ)

รูปที่ หนา 3.21 รูปการออกแบบหนาจอแสดง Memory Usage.........................................................35 3.22 รูปการออกแบบหนาจอแสดง Traffic ของ eth0........................................................35 3.23 รูปการออกแบบหนาจอแสดง Traffic ของ eth1........................................................36 4.1 แสดงระบบเครือขายจําลองที่ใชทดสอบ....................................................................37 4.2 แสดงหนา Login เม่ือเปดเวบ็บราวเซอร...................................................................39 4.3 แสดงหนาจอเมื่อ Login ผาน ...................................................................................40 4.4 แสดงหนาจอวาสามารถใชงานอินเตอรเน็ตได...........................................................40 4.5 แสดงหนาจอเมื่อทําการ Logout เรียบรอยแลว .........................................................41 4.6 แสดงหนาจอเมื่อทําการ ping ทดสอบ หลังจากการ Logout......................................41 4.7 แสดงหนาจอเมื่อใส Username หรือ Password ไมถูกตอง ......................................42 4.8 แสดงหนาจอวามีผูใชงานกาํลังใชงานอยู ..................................................................42 4.9 แสดงหนาจอวาผูใชงานคนนั้นถูกระงับการใชงาน .....................................................43 4.10 แสดงหนาจอให Login เขาสูระบบบริหารจัดการเกตเวย ...........................................43 4.11 แสดงหนาจอเมนูของระบบบริหารจัดการเกตเวย ......................................................44 4.12 แสดงหนาจอเมนูยอยของ Manage User .................................................................44 4.13 แสดงหนาจอเมนูยอย List User...............................................................................45 4.14 แสดงหนาจอเมนูยอย Add User..............................................................................45 4.15 แสดงหนาจอเมนูยอย User Online..........................................................................46 4.16 แสดงหนาจอเมนูยอยของ Setting Server................................................................46 4.17 แสดงหนาจอเมนูยอย IP No Authen .......................................................................47 4.18 แสดงหนาจอเมนูยอย Block Web............................................................................47 4.19 แสดงหนาจอผลการหามเขาเว็บ h5.com .................................................................48 4.20 แสดงหนาจอเมนูยอย QoS......................................................................................48 4.21 แสดงหนาจอเมนูยอย Edit Proxy ............................................................................49 4.22 แสดงหนาจอเมนูยอย Edit Firewall .........................................................................49 4.23 แสดงหนาจอเมนูยอย Change Passwd...................................................................50 4.24 แสดงหนาจอเมนูยอยของ Monitor Server...............................................................50 4.25 แสดงหนาจอเมนูยอย Traffic ...................................................................................51 4.26 แสดงหนาจอเมนูยอย CPU......................................................................................51 4.27 แสดงหนาจอเมนูยอย Memory ................................................................................52

VIII

Page 10: ระบบการบริหารการใช ิงานอนเทอร เน็ัตสํบองค าหร กร An ... ระบบการ... · This project

สารบัญรูป(ตอ)

รูปที่ หนา 4.28 แสดงหนาจอ Login เขาสูระบบ................................................................................52 4.29 แสดงการทดลองมื่อยังไมได Login ไมสามารถใชงาน MSN ได ................................53 4.30 แสดงการทดลองเมื่อยังไมได Login ไมสามารถ ping ได ..........................................53 4.31 แสดงการทดลองเมื่อไดทําการ Login แลวสามารถใชงาน MSN ได ..........................54 4.32 แสดงการทดลองเมื่อไดทําการ Login แลวสามารถใชงาน ping ได............................54 4.33 แสดงการทดลองปรับเปลีย่น QoS ...........................................................................55 4.34 แสดงแบนดวิธกอนการทํา QoS...............................................................................55 4.35 แสดงแบนดวิธหลังการทํา QoS ...............................................................................56

IX

Page 11: ระบบการบริหารการใช ิงานอนเทอร เน็ัตสํบองค าหร กร An ... ระบบการ... · This project

บทที่1 บทนํา

1.1 กลาวนํา ในปจจุบันระบบอินเทอรเน็ตเขามามีบทบาทสําคัญอยางมากในโลกธุรกิจ จนอาจกลาวไดวาการนําเอาอินเทอรเน็ตมาใชกับธุรกิจนั้นเปนสิ่งที่แยกออกจากกันไมไดเสียแลว ไมวาจะเปนการทําธุรกรรมบนอินเทอรเน็ต ซื้อขายของบนเว็บ การสงอีเมลตอกันเรือ่งการคา เปนตน หากวันใดที่ระบบอินเทอรเน็ตมีปญหา นอกจากจะทําใหธุรกิจหยุดชะงักแลว โอกาสทางธุรกิจก็จะเสียหายไปดวยโดยทันที ดังนั้นการทําใหระบบอินเทอรเน็ตมีเสถียรภาพมากที่สุด นับเปนเรื่องที่สาํคัญเลยทีเดียว ซึ่งการควบคุมการใชงานอินเทอรเน็ตที่ดีก็เปนสวนหนึ่งในการทําใหระบบอินเทอรเน็ตมีเสถียรภาพมากขึ้น 1.2 ปญหาและแรงจงูใจ

เน่ืองจากปจจุบัน ในองคกรมีการใชงานอินเทอรเน็ตเปนปริมาณมาก โดยไมมีการควบคุมการเขาใชงานอินเทอรเน็ต ซึ่งในบางครั้งมีการนําไปใชผิดวัตถุประสงคและใชแบนดวิธเปนจํานวนมาก ทําใหมักเกิดปญหาการใชงานอินเตอรอยูบอยครั้ง ซึ่งไมสามารถระบุไดวา ปญหานั้นเกิดจากใคร สาเหตุใด จึงทําใหเสียเวลามากในการคนหาสาเหตุเพ่ือจะแกปญหา ดังนั้นจึงจําเปนที่จะตองมีเครื่องมือที่จะคอยชวยบริหารงานการใชงานอินเทอรเน็ต ดูแลตรวจสอบการใชงาน เพ่ือทําใหระบบอินเทอรเน็ตมีเสถียรภาพมากขึ้น

จากปญหาดังกลาวขางตน จึงมีแนวคิดที่จะทําโครงงานโดยศึกษาและพัฒนา Linux Gateway ขึ้นมา เพ่ือใชสําหรับการบริหารจัดการใชงานอินเทอรเน็ต ดูแลการใชงาน แสดงรายงาน วิเคราะหปญหาเพื่อปองกันปญหาอันอาจจะเกิดขึ้นจากการใชงานอินเทอรเน็ต เน่ืองจากลีนุกซเปนซอฟตแวร โอเพนซอรสที่สามารถนํามาใชงานไดโดยไมตองเสียคาลิขสทิธิ ์ อีกทั้งยังมีประสิทธภิาพและความเสถียรภาพทีดี่เหมาะสมที่จะนํามาทําโครงงานนี้ 1.3 วัตถุประสงคของโครงงาน

เพ่ือศึกษาและพัฒนา Linux Gateway ขึ้นมา ใหสามารถจัดการและบริหารเครือขายใหมีเสถียรภาพมากที่สุด ไมวาจะเปนการเขาใชงานระบบอินเทอรเน็ต การจัดสรรแบนดวิธ ใหเหมาะสมกับการใชงาน อีกทั้งยังสามารถที่จะตรวจสอบการใชงาน รายงานผลการใชงาน รวมถึงการปองกันปญหาอันเกิดจากการใชงานอินเทอรเน็ต

1.4 ขอบเขตของโครงงาน

เพ่ือศึกษาและพัฒนา Linux Gateway สําหรับใชงานในบริษัท โดยมีรูปแบบดังตอไปน้ี โครงงาน 1 1. สรางระบบระบุตวัตน (Authentication) สําหรับการเขาใชงานระบบอินเทอรเน็ต

1

Page 12: ระบบการบริหารการใช ิงานอนเทอร เน็ัตสํบองค าหร กร An ... ระบบการ... · This project

โครงงาน 2 2. สรางระบบบริหารจัดการเกตเวย (GATEWAY) ซึ่งจะทํางานผานทางหนาเว็บบราวเซอร

ประกอบไปดวยระบบยอยตางๆดังนี้ -ระบบการจัดการผูเขาใชงานอินเทอรเน็ต -ระบบการจัดการแกไข เพ่ิม ผูใชที่เปนผูบริหารโดยไมตองทําการยืนยันตัวตน -ระบบจัดการ Proxy -ระบบการทํา QoS -ระบบการมอนิเตอรเกตเวย

รูปที่ 1.1 ลักษณะโครงสรางของระบบงาน

1.5 ประโยชนที่คาดวาจะไดรับ 1.ไดรับความรูเกี่ยวกบัการทํางานของระบบปฎิบตัิงานลีนุกซ เพ่ือนํามาทําเปนเกตเวย 2.ไดรับความรูเกี่ยวกบัหลกัการทํางานของ Iptables

3.ไดรับความรูเกี่ยวกบัหลกัการทํางานของ MySQL 4.ไดรับความรูเกี่ยวกบัหลกัการทํางานของ PHP, Perl, RRDtool, Linux Traffic Control (tc) 5.เขาใจหลักการการจัดสรรแบนดวิธใหเหมาะสมกับการใชงาน 6.สามารถนํามาประยุกตและใชงานจริงได

2

Page 13: ระบบการบริหารการใช ิงานอนเทอร เน็ัตสํบองค าหร กร An ... ระบบการ... · This project

1.6 ข้ันตอนการดําเนิน ตารางที่ 1.1 ตารางขั้นตอนการดําเนินงานของโครงงาน

กิจกรรม ต.ค. พ.ย. ธ.ค. ม.ค. ก.พ. มิ.ย. ก.ค. ส.ค. ก.ย.

1.ศึกษาขอมูลเกี่ยวกับระบบปฏิบตัิการ ลีนุกซ

2.ศึกษา iptables 3.ศึกษา MySQL,PHP, Perl Script 4.ออกแบบและสรางระบบงาน 5.ติดตั้งและทดสอบระบบงาน 6.ปรับปรุงและแกไข 7.สรุปผลการดําเนินงาน

3

Page 14: ระบบการบริหารการใช ิงานอนเทอร เน็ัตสํบองค าหร กร An ... ระบบการ... · This project

บทที่ 2 เทคโนโลยทีี่เก่ียวของ

2.1 กลาวนํา เน้ือหาในบทนี้จะกลาวถึงรายละเอียดของเทคโนโลยีทีเ่กี่ยวของและนํามาใชกับโครงงานนี้ ซึ่งประกอบดวย Linux Firewall, PHP, MySQL, Proxy Server, Perl, SNMP, RRDtool และ Linux Traffic Control (tc) 2.2 Linux Firewall : iptables [1]

Firewall คือ ซอฟตแวรหรืออุปกรณที่ทําหนาที่คัดกรองแพ็กเก็ต (packet) ตางๆที่ผานเขาออกโดยใชวธิีการเปรียบเทยีบกบัขอกําหนดหรือหลักเกณฑที่ตั้งไว เพ่ือใชตัดสินใจวาแพ็กเก็ตใดบางที่จะอนุญาตใหผานเขาออกได สําหรับระบบปฏิบัติงานลีนกุซนั้นมีโปรแกรมโอเพนซอรส (Open Source) ที่มีชื่อวา iptables ที่ใชสําหรบัในการคัดกรองแพ็กเก็ตเขาและออก

iptables ประกอบดวยตาราง (table) หลัก อยู 3 ตาราง โดยมีรายละเอียด ดังนี้ คือ - Filter table ใชสําหรับการคัดกรองแพ็กเก็ต - Nat table ใชสําหรับการแปลงไอพีแอดเดรส (Network Address Translation) - Mangle table ใชสําหรับแกไขเปลีย่นแปลงขอมูลของแพ็กเก็ต เชน คา MARK, TOS, TTL

ตารางที ่2.1 แสดง Tables และ Chain ตางๆ ของ iptables[1]

Table Function Chain คําบรรยาย FORWARD กรองแพ็กเก็ตที่มีการสงตอไปยังอินเตอรเฟสอ่ืน INPUT กรองแพ็กเก็ตที่สงมายังเครื่องโลคอลตโฮสต

(localhost) ไมวาจะผานอินเตอรเฟสใดก็ตาม

Filter Packet filtering

OUTPUT กรองแพ็กเก็ตที่สงออกจากเครื่องโลคอลตโฮสต PREROUTING แปลงไอพีแอดเดรส กอนการทํา routing

POSTROUTING แปลงไอพีแอดเดรส หลังการทํา routing

Nat Network Address Translation OUTPUT แปลงไอพีแอดเดรส ที่ถูกสรางจากไฟรวอลล

Mangle TCP header modification

PREROUTING POSTROUTING OUTPUT INPUT FORWARD

แกไขเปลีย่นแปลงขอมูลของแพ็กเก็ต

4

Page 15: ระบบการบริหารการใช ิงานอนเทอร เน็ัตสํบองค าหร กร An ... ระบบการ... · This project

รูปแบบการใชงาน iptables เบื้องตน iptables จะมีรูปแบบการใชงานดังนี้คือ

iptables [table] <command> <match> <target/jump>

โดยกฎ (rule) ที่เขียนขึ้นจะเปนเปนตัวบอกเคอรเนลวาใหกระทําอยางไร ในกรณีที่พบแพ็กเกต็ ตรงตามที่ระบไุว

[table] หมายถึง ตารางทีต่องการระบุ เชน iptables -t nat หมายถึงใหทํางานกับ Nat Table ในกรณีที่ไมไดระบตุารางของ iptables จะถือวาคําสั่งดังกลาวระบถุึงตาราง Filter Table โดยอัตโนมัติ

<command> จะเปนคําสัง่ให iptables กระทําในสิ่งทีก่ําหนด เชน iptables -A INPUT ซึ่งหมายถึงใหสรางกฎตอทายใน INPUT Chain ของ Filter Table ซึ่งจะมีคําสั่งตางๆ ดังในตารางที่ 2.2

ตารางที่ 2.2 แสดงความหมายของคําสั่ง iptables

คําสั่ง ความหมาย -A การเพิ่มกฏใหมเขาไปตอทาย Chain -D การลบกฏทีต่องการออกจาก Chain -I การแทรกกฏใหม ในตําแหนงแรก ของ Chain -R การแทนที่กฏใหม ที่มีอยูแลวใน Chain -L การแสดงรายการตางๆของกฏ ของ Chain ที่กําหนดไว -F การลบกฎตางๆ ใน Chain -Z การตั้งคา Counter ของแพ็กเก็ตและไบตใหเปน “0” (Reset) -N การสราง Chain ขึ้นมาใหม -X การลบ Chain ที่สรางขึ้นมา ( ไมสามารถลบ built in Chain ได) -P การกําหนด Policy ของ Built in Chain (Default Policy เปน ACCEPT) -E การเปลี่ยนชื่อ Chain ใหม

<match> เปนสวนทีใ่ชตรวจสอบวาแพ็กเก็ตมีขอมูลตรงกับที่ระบุไวหรือไม เชน มี

source ip address เปน 1.2.3.4 <target/jump> เปนตัวระบุวาเม่ือเจอแพ็กเก็ตทีต่รงตามที่กําหนดก็จะกระทําตามที่ระบุ

ไว เชน ถาแพ็กเก็ตใดมี source ip address เปน 1.2.3.4 ให DROP แพ็กเก็ตนั้นทิ้งไป

5

Page 16: ระบบการบริหารการใช ิงานอนเทอร เน็ัตสํบองค าหร กร An ... ระบบการ... · This project

รูปที่ 2.1 IPTABLES Packet Flow Diagram [1]

จากรูปที่ 2.1 แสดงถึงการทํางานของ iptables เม่ือมีแพ็กเก็ตเขามา ขั้นแรกของการทํางาน

Mangle Table PREROUTING Chain จะทําการตรวจสอบ ซึ่งตรงจุดนี้สามารถที่แกไขคาตางๆของแพ็กเก็ตไดเชน แกไข Marking Packet, TOS, TTL เปนตน ถัดมาเม่ือแพ็กเก็ตผานถึง PREROUTING Chain ของ NAT Table เราสามารถที่จะทํา DNAT, Port Redirection ได ซึ่ง DNAT จะใชสําหรับการ

6

Page 17: ระบบการบริหารการใช ิงานอนเทอร เน็ัตสํบองค าหร กร An ... ระบบการ... · This project

แปลง Public IP Address มาเปน Private IP Address หลังจากที่ผาน Chain มาแลว 2 chains ลีนุกซเคอรเนลจะทาํการตัดสินใจเลือกเสนทางของแพ็กเก็ตตรง Routing Process ซึ่งจะทําการตรวจสอบไอพีปลายทางจากสวนหัวของแพ็กเก็ตนั้น ลีนุกซจะรูวาแพ็กเก็ตนัน้ตองการที่จะสงไปยังเสนทางอื่นหรือมีเสนทางมาที่ตวัของมันเอง ถาแพ็กเก็ตนั้นมีจุดหมายปลายทางมาที่ตวัของลีนุกซเองแพ็กเก็ตนี้ก็จะผานเขาสู Mangle Table INPUT Chain หลังจากนั้นก็จะเขาสู Filter Table INPUT Chain ซึ่งสามารถที่จะกระทําการยอมรับ(Accepted), ปฎิเสธ(Rejected) หรือ ละทิ้ง(Dropped) แพ็กเก็ตนั้น ถาแพ็กเก็ตไดรับการยอมรับแลว ลีนุกซกจ็ะสงตอแพ็กเก็ตนั้นโดยจะสงผานไปที่ Mangle Table OUTPUT Chain เปนอันดับแรก ตอมาแพ็กเก็ตก็จะเขามาสู Nat Table OUTPUT Chain และ Filter Table OUTPUT Chain มาถึงตรงจุดนี้ Mangle Table POSTROUTING Chain และ Nat Table POSTROUTING Chain จะทําการตรวจสอบและแพ็กเกต็ก็พรอมที่จะถูกสงออกจากอินเตอรเฟสของลีนุกซ 2.3 PHP [3]

PHP เปนภาษาสคริปตที่นิยมใชในการพัฒนาเว็บแอพพลิเคชั่น โดยสคริปตที่เขียนขี้นดวย PHP นั้นทํางานอยูฝงเซิรฟเวอร (Server Side Script) และสามารถเขียนรวมกับภาษา HTML ได

Rasmus Lerdorf เปนผูเริม่สรางภาษา PHP ขึ้นในป 1994 โดยมีจุดประสงคเพ่ือนํามาเก็บสถิติของผูที่มาเยี่ยมชมเว็บไซดของเขาเอง จากนั้นในป 1995 ไดพัฒนาเปนเวอรชั่น 2 ในชื่อ PHP/FI ซึ่งเพ่ิมความสามารถในการรับขอมูลที่สงมาจากแบบฟอรม (Form Interpreter) รวมถึงความสามารถในการติดตอฐานขอมูลได ซึ่งก็เริ่มทําให PHP ได รับความนิยมขึ้นมาเรื่อยๆจนกระทั่งในป 1997 ไดมีผูรวมพัฒนาเพิ่มอีก 2 คน คือ Zeev Suraski และ Andi Gutmans ซึ่งรูจักกันในชื่อของ Zend โดยไดรวมพัฒนา PHP3 ขึ้นมาและไดเพ่ิมความสามารถของ PHP ขึ้นมาอีกมากและพัฒนาตอเน่ืองมาจนถึงเวอรชั่น 4 ทําให PHP เปนภาษาสคริปตทีไ่ดรับความนยิมมาก มีจํานวนผูใชเพ่ิมขึ้นเรื่อยๆรวมถึงเว็บไซดหลายแหงก็ไดปรับเปลี่ยนมาใช PHP

เวอรชั่นลาสุดของของ PHP คือเวอรชั่น 5 ซึ่งไดมีการปรับปรุงเพ่ิมเติมจากเวอรชั่น 4 โดยเฉพาะอยางยิ่งการปรับปรุงทางดาน Object Oriented Programming (OOP) ใหมีความสามารถสูงขึ้น

การพัฒนาเว็บแอปพลิเคชัน่ดวย PHP มีขอดีหลายประการ ดังนี้ 1.ฟรี PHP นั้นเปนซอฟตแวรโอเพนซอรซที่สามารถดาวนโหลดมาใชงานไดฟรีโดยไม

เสียคาใชจาย 2.ทํางานไดหลายแพลตฟอรม PHP สามารถทํางานไดบนระบบปฏิบตักิารได

หลากหลาย ไมวาจะเปน Linux, Windows, Mac OS X, Solaris, Unix และอ่ืนๆ สามารถทํางานบน Web Server ไดหลายชนิด เชน Apache, IIS, Netscape, Omni HTTPd อีกทั้งยังสามารถทํางานรวมกับระบบฐานขอมูลไดหลายชนิด เชน MySQL, MS-SQL, Oracle, Sybase, Informix, DB2, PostgreSQL เปนตน

7

Page 18: ระบบการบริหารการใช ิงานอนเทอร เน็ัตสํบองค าหร กร An ... ระบบการ... · This project

3.งายตอการศึกษา การเขียนโปรแกรมดวย PHP นั้นมีรูปแบบโครงสรางที่ไมซับซอน ผูที่เร่ิมตนศึกษา PHP ไมจําเปนตองมีความรูดานโปรแกรมมิ่งมากอนก็สามารถศึกษาและทําความเขาใจไดไมยาก

4.ทํางานไดรวดเร็ว สครปิตที่เขียนดวย PHP สามารถประมวลผลและทํางานไดเร็ว 5.มีประสิทธิภาพสูง PHP นั้นมีประสิทธิภาพและเสถยีรภาพในการทํางานสูง 6.มีไลบรารีใหใชงานมากมาย PHP มีไลบารแีละสวนขยายเพิ่มเติมการทํางาน

(extension) ที่ชวยอํานวยความสะดวกในการใชงานมากมาย ไมวาจะเปนการสรางภาพ การสรางกราฟ การสรางเอกสาร PDF และการทํางานรวมกับ XML เปนตน นอกจากนี้ PHP ยังสามารถทํางานรวมกับโพรโตคอลตางๆไดหลากหลาย เชน LDAP, IMAP, SNMP, POP3, NNTP, HTTP เปนตน

7.ไดรับความนิยามสูง PHP เปนภาษาที่ไดรับความนิยมสูงมากและมีการใชงานอยางแพรหลาย มีจํานวนผูใชงานและเว็บไซดที่ใช PHP เพ่ิมขึ้นเรื่อยๆ นอกจากนี้ยังมีกลุมผูใชงานและเว็บไซดตางๆมากมายคอยใหขอมูลความรูและตอบปญหาที่เกิดจากการใชงาน

2.4 MySQL[5]

MySQL เปนระบบฐานขอมูลโอเพนซอรสที่ไดรับความนิยมมากที่สุดตัวหนึ่ง ถูกสรางขึ้นโดยชาวสวีเดน 2 คน และชาวฟนแลนด ชือ่ David Axmark, Allan Larsson และ Michael "Monty" Widenius ซึ่ง MySQL นั้นเปนระบบจัดการฐานขอมูลเชิงสัมพันธ (RDBMS)

MySQL เปนที่นิยมใชกันมากสําหรับฐานขอมูลสําหรับเวบ็ไซต และนิยมใชงานรวมกับภาษาโปรแกรม PHP นอกจากนี้ หลายภาษาโปรแกรมที่สามารถทํางานรวมกับฐานขอมูล MySQL ซึ่งรวมถึง ภาษาซี ซีพลัสพลัส ปาสคาล ซีชารป ภาษาจาวา ภาษาเพิรล พีเอชพี ไพทอน รูบี และภาษาอื่น ใชงานผาน API สําหรับโปรแกรมที่ติดตอผาน ODBC หรือ สวนเชื่อมตอกับภาษาอื่น (database connector) เชน เอเอสพี สามารถเรียกใช MySQL ผานทาง MyODBC, ADO, ADO.NET เปนตน

ในการจัดการฐานขอมูล MySQL คุณสามารถใชโปรแกรมแบบ command-line เพ่ือจัดการฐานขอมูล (โดยใชคําสั่ง: mysql และ mysqladmin เปนตน) หรือจะดาวนโหลดโปรแกรมจัดการฐานขอมูลแบบ GUI จากเว็บไซตของ MySQL ซึ่งคือโปรแกรม: MySQL Administrator และ MySQL Query Browser. เปนตน

สวนเชื่อมตอกับภาษาการพัฒนาอ่ืน ( Database Connector ) มีสวนติดตอ ( Interface ) เพ่ือเชื่อมตอกับภาษาในการพฒันา อ่ืนๆ เพ่ือใหเขาถึงฟงกชันการทํางานกับฐานขอมูล MySQL ไดเชน ODBC (Open Database Connector) อันเปนมาตรฐานกลางที่กาํหนดมาเพื่อใหใชเปนสะพานในการเชื่อมตอกับโปรแกรมหรือระบบอ่ืนๆ เชน MyODBC อันเปนไดรเวอรเพ่ือใชสําหรับการเชื่อมตอในระบบปฏิบตัิการวินโดว, JDBC คลาสสวนเช่ือมตอสําหรับ Java เพ่ือใชในการตดิตอกับ MySQL และมี API ( Application Programming Interface ) ตางๆมีใหเลือกใชมากมายในการที่เขาถึง MySQL โดยไมขึ้นอยูกับภาษาการพัฒนาใดภาษาหนึ่ง

8

Page 19: ระบบการบริหารการใช ิงานอนเทอร เน็ัตสํบองค าหร กร An ... ระบบการ... · This project

นอกเหนือจาก ตัวเชื่อมตอกับภาษาอื่น ( Connector ) ที่ไดกลาวมาแลว ยังมี API ที่สนับสนนุในขณะนี้คือ

- DBI สําหรับการเชื่อมตอกับ ภาษา perl - Ruby สําหรับการเชื่อมตอกับ ภาษา ruby - Python สําหรับการเชื่อมตอกับภาษา python - .NET สําหรับการเชื่อมกับภาษา .NET framework - MySQL++ สําหรับเชื่อมตอกับภาษา C++

ยังมีโปรแกรมอีกตัว เปนโปรแกรมบริหารพัฒนาโดยผูอ่ืน ซึ่งใชกันอยางแพรหลายและนิยมกนัเขียนในภาษาพีเอชพี เปนโปรแกรมเว็บแอปพลิเคชัน ชื่อ phpMyAdmin 2.5 Proxy Server

Proxy Server คือ ตัวกลางระหวางเครือขายภายในและเครือขายภายนอก ทําหนาที่คอยรับการรองขอจากเครือขายภายในติดตอไปยังเครือขายภายนอก และคอยรับเอาขอมูลจากภายนอกกลับเขามายังเครือขายภายใน โดย Proxy แตละชนิดก็จะทําหนาที่แตกตางกันไปตามประเภทที่ใชงาน เชน Mail Proxy, IM Proxy, Web Proxy เปนตน Web proxy เปนเทคนิคการเก็บสําเนาเวบ็ไซดที่ไดถูกเรียกใชงานไปแลวไวทีเ่ครือ่ง Proxy เม่ือมีการเรียกใชงานซ้ําอีกก็จะดึงขอมูลที่เกบ็ไวไปใชงานไดทันที โดยไมตองออกไปดึงขอมูลจากเว็บไซดภายนอกอีก แตถาไมมีขอมูลอยูในเครื่อง Porxy ก็จะไปเอาขอมูลจากเว็บไซดมาให ซึ่งสามารถชวยลดปริมาณการใชแบนดวธิและเพ่ิมการตอบสนองของเว็บไซดที่มีการใชงานบอยๆ สําหรับระบบปฏิบัติการลีนุกซนั้นมีโปรแกรมโอเพนซอรส ที่ชื่อวา Squid ที่มีความนิยมใชงานและมีความสามารถมากในการทํา Web Proxy Sqiud เปน Web Cache / Proxy ที่มีคุณสมบัติในการจํากัดและควบคุมการเขาถึงเว็บไซตภายนอกองคกรไดเปนอยางดีและมีประสทิธิภาพมาก มีการทํา Access Control List ( ACL ) ซึ่งเปนการนิยามชื่อลิสตขึ้นแทนคณุสมบัติของสิง่ที่ตองการอางอิง จากนั้นตั้งขอกําหนดลงไปวาตองการใหลิสตนั้นสามารถแอกเซสผานพรอกซี่ไดหรือไม ดังนั้นการที่เสริมการทาํงานของอินเทอรเน็ตเซิรฟเวอรดวย Squid Proxy Server จึงเปนการควบคุมการเขาสูอินเทอรเน็ตของผูใชงานในองคกรไดตามตองการ และยังชวยเพ่ิมประสิทธิภาพใหแกระบบเพราะ Squid จะมีคุณสมบัติเปน HTTP Object Cache ที่เก็บขอมูลจากเว็บไซตภายนอกไวในหนวยความจํา ( แรมและฮารดดิสก ) ของตัวเซิรฟเวอรเอง ชวยใหการเรียกเว็บไซตทีเ่คยเขาถึงมากอนทําไดรวดเร็วย่ิงขึ้น เน่ืองจากมีขอมูลบางสวนของเวบ็เพจยังคงอยูในแคช

9

Page 20: ระบบการบริหารการใช ิงานอนเทอร เน็ัตสํบองค าหร กร An ... ระบบการ... · This project

2.6 SNMP (Simple Network Management Protocol) ปจจุบันเครือขายอินทราเน็ตที่ใชโปรโตคอล TCP/IP มีอุปกรณเครือขายมากมายหลายแบบ

หลายชนิดและหลายยี่หอ แตมาตรฐานการจัดการเครือขายที่ใชงานไดผลดีคือเอสเอ็นเอ็มพี (SNMP) SNMP ยอมาจาก Simple Network Management Protocol ซึ่งเปนโปรโตคอลที่อยูระดับบนใน

ชั้น Application Layer โดยทํางานผาน port 160, 161 ใน OSI Model และถูกออกแบบใหทํางานบน User Data Protocol (UDP) ซึ่งเปนการทํางานแบบ Connectionless คือ ไมจําเปนตองมีการสรางเซสชัน (session) กันกอน จึงทําใหเหมาะกับการทํางานที่ตองการความเร็วหรือการสงผานขอมูลสั้นๆ

ตัวโปรโตคอลถูกออกแบบในกลางป 1980 ครั้งแรกเปน SNMP Version 1 เพ่ือแกไขปญหาการจัดการเครือขายซึ่งมีความยุงยาก และมีการเผยแพร Version 2 ตอมา โดยเพิ่มคําสั่งพ้ืนฐานและ Object (OID) ในมากขึ้น และปจจุบันเปน Version 3 ซึ่งมีการแกปญหาความปลอดภัยมากขึ้นในดาน Authentication และ Privacy

รูปที่ 2.2 แสดงรูปแบบคําสั่งของเวอรชัน่ตางๆของ SNMP ความสามารถและประโยชนของตัวโปรโตคอลนั้นมีคําสั่งการใชงานที่งายและนอยกวา จึงไดรับ

ความนิยมอยางสูงในการนําไปประยุกตใชกับฮารดแวร เม่ือใชงานเปรียบเทียบกับ OSI Model แลวจะพบวาตัวโปรโตคอลนั้นสามารถทํางานในระดับ PDU (Protocol Data Units) ไดอีกดวย ซึ่งในการบริการและจัดการเครือขายตองใชอุปกรณตาง ๆ มีสวนของการทํางานรวมกับระบบจัดการเครือขาย NMS: Network Management System หลายสวนที่สําคัญดังตอไปน้ี

2.6.1 SNMP Manager SNMP Manager เสมือนเปนสถานีจัดการเครือขายสวนกลางที่ซึ่งทําหนาที่ดูแลตรวจสอบ

(Monitoring) และบริหารจัดการ (Network Management)

10

Page 21: ระบบการบริหารการใช ิงานอนเทอร เน็ัตสํบองค าหร กร An ... ระบบการ... · This project

2.6.2 SNMP Agent SNMP Agent เปนซอฟตแวรที่ถูกติดตั้งอยูในอุปกรณทั้งที่เปนฮารดแวร (Hardware) หรือ

ซอฟตแวร (Software) ดวยกันก็ได ถือไดวาเปนสมาชิกในระบบการจัดการเครือขายทีมีความสําคัญที่สุด เน่ืองจากมีหนาทีรวบรวมขอมูลสะสมขอมูลที่จําเปนตอการบริหารจัดการเครือขาย เชน ขอมูลแทรฟฟคแพ็กเก็ต (Traffic Packet) บนระบบเครือขายที่วิ่งผานอุปกรณ เราเตอร (Router) เปนตน โดยเปนหนาที่ของ SNMP Manager รองขอขอมูลไปที่ตามที่ตองการ โดยมีระบบการ Authentication โดยจะมีการตรวจสอบ Password วาตรงกัน จึงจะมีการยอมรับการติดตอกันได เรียกวา Community Name

รูปที่ 2.3 แสดงการติดตอระหวาง Manager และ Agent

2.6.3 SNMP Messages ขอความ (Messages) ในการสงผานในโปรโตคอล SNMP นั้นมี 5 ประเภทคือ

2.6.3.1 GetRequest เปนขอความที่สวน Manager ติดตอไปยังสวน Agent เพ่ือแจงวาตองการทราบขอมูลใดบาง ซึ่งกําหนดไดโดย Object Identifier (OID) เชน ตองการทราบขอมูลของเนทเวิรคอินเทอรเฟซ (Network Interface) ก็จะรองขอไปที่ Agent พรอมทั้งระบุ Object Identifier เปน 1.3.6.1.2.1.2 เปนตน 2.6.3.2 GetNextRequest โดยขอความชนิดนี้แตกตางจาก GetRequest ตรงทีข่อมูลที่สงกลับมาจาก Agent นั้นจะไมใชขอมูลของ Object Identifier ที่ Manager รองขอไป แตจะเปนขอมูลของ Object Identifier ของตัวถัดไปในโครงสราง ซึ่งจะใชในกรณีที่ตัว Agent ไมสามารถที่จะระบุ Object Identifier ได โดยจะใชขอความ GetNextRequest นี้ไปในลักษณะของการทองเขาไปในทรี (Tree) ตัวอยางเชน Manager สงขอความ GetNextRequest ที่ให Object Identifier เปน 1.3.6.1.2.1.1 ซึ่งเปนการเขาถึงกลุมซิสเตม็ (System) ใน MIB โดยที่ไมไดระบุวาตองการทราบขอมูลอะไรในกลุม System ดังนั้นเม่ือเวลาที ่ Agent มีขอความ GetResponse กลับมาใหมันก็จะสงคาของ Object Identifier เปน 1.3.6.1.2.1.1.1.0 ซึ่งก็คอืคาของ sysDescr ที่อยูในกลุม System ซึ่งเปนคาของ Object Identifier ตัวถัดไปใน Tree นั่นเอง 2.6.3.3 SetRequest เปนขอความ ที่ Manager ใชบอกให Agent เปลี่ยนแปลงคาคอนฟกูเรชันตางๆ ของขอมูลใน MIB ของอุปกรณนั้นๆ

11

Page 22: ระบบการบริหารการใช ิงานอนเทอร เน็ัตสํบองค าหร กร An ... ระบบการ... · This project

2.6.3.4 GetResponse เปนขอความที่ Agent ใชในการสงผลลัพธกลับมาให Manager จากการที่ Manager ไดทําการสงขอความ GetRequest, GetNextRequest, SetRequest ไปให 2.6.3.5 Trap เปนขอความที่ Agent สงไปให Manager เพ่ือรายงานเหตุการณหรือปญหาที่เกิดขึ้น 2.7 Perl [2]

Perl มาจากคําวา Practical Extraction and Report Language เปนภาษาโปรแกรมมิ่งที่สรางโดยนาย Larry Wall จุดประสงคในการสรางครั้งแรกก็เพ่ือเปนเครื่องมือ สําหรับการเขียนโปรแกรมในสภาวะแวดลอมของระบบ UNIX โดยเฉพาะ เปนภาษาที่มีความสามารถและมีความยืดหยุนเหมือนภาษาชั้นสูงทัว่ๆไป ความสามารถของ Perl มีบางอยางมาจากภาษา C สําหรับผูที่เคยเขียนโปรแกรมดวยภาษา C มากอนจึงปรับตวัเขียน Perl ไดงายมาก

Perl เปนภาษาสคริปต (Script) การรันสคริปตจะตองเรียกอินเทอรพรีเตอร (Interpreter) ของ Perl มาอานสคริปตเพ่ือตีความหมายและทํางานตามที่เขียนไวในสคริปต โดยไมตองมีการคอมไพล (Compile) ซอรตโคดของสคริปตใหเปนโปรแกรมกอนการรัน ดังนั้น Perl จึงมีความสะดวกและรวดเรว็ในแงของการทดลองรันและแกไขสคริปต

Perl นั้นถูกออกแบบมาใหใชงานไดงาย โครงสรางของภาษาจึงไมซับซอน มีลักษณะคลายกบัภาษาซี นอกจากนี้เพิรลยังไดแนวคิดบางอยางมาจากเชลลสคริปต, ภาษา AWK, sed และ Lisp

ปจจุบันเวอรชนัลาสุดคือ 5.12.2 2.8 RRDtool

RRDtool เปนโปรแกรมโอเพนซอรสที่ใชสําหรับสรางการฟที่มีประสทิธิภาพและไดรับความนิยมมากอันหน่ึง ซึ่งสามารถสรางกราฟตามรูปแบบทีเ่ราตองการได โดยการใช Shell Script, Perl, Python, Ruby, TCL หรือ PHP สราง

เปาหมายหลักของ RRDtool คือการสรางกราฟเวลาทีแ่สดงแนวโนมในชวงเวลาหนึ่ง คาที่แสดงในกราฟ แกน X จะเปนเวลาและแกน Y จะเปนคาของตัวแปร

โครงสรางของฐานขอมูล RRD จะแตกตางจากฐานขอมูลเชิงเสนอ่ืนๆ ซึ่งฐานขอมูลอ่ืนๆจะตองกําหนดตาราง มีคอลัมนและพารามิเตอรอ่ืนๆ บางครั้งมีความซับซอนมากโดยเฉพาะในฐานขอมูลขนาดใหญ ซึ่งฐานขอมูล RRDTool จะใชสําหรบัการมอนิเตอรตรวจสอบเปนหลัก จึงมีโครงสรางที่งายๆ มีเพียงพารามิเตอรที่จําเปนตองมีและตวัแปรที่กําหนดสําหรับเก็บคาเทานั้น

12

Page 23: ระบบการบริหารการใช ิงานอนเทอร เน็ัตสํบองค าหร กร An ... ระบบการ... · This project

2.9 Linux Traffic Control (tc) Traffic control (tc) เปนชุดคําสั่งที่ใชในการบริหารจัดการแบนวิธในเครือขายซึ่งถูกติดตั้งมากับ

ระบบลีนุกซ ซึ่ง tc จะควบคุมปริมาณของแพ็กเก็ตขอมูลโดยเปนตัวควบคุมกลุมของคิวและระบบกลไก

การทํางานการรับสงแพ็กเก็ต โดยที่ tc จะมีระบบคิวเปนแบบ fifo (First-In First-Out) เปนคาเบื้องตนคือ

เม่ือมีขอมูลเขามาในคิวก็จะถูกสงออกไปตามลําดับ เขากอน-ออกกอน เขาทีหลัง-ออกทีหลัง

2.9.1 การจัดการคิวในลีนุกซเพ่ือสงแพ็กเก็ตผานเครือขาย

ระบบคิวและการจัดการคิวในลีนุกซจะเรียกวา Queuing discipline หรือ qdisc โดยคิวที่ตออยูกับ

การดเครือขายเรียกวา root disc

qdisc แบงออกไดเปน 2 ประเภท คือ Classless qdisc และ Classful disc

• Classless qdisc เปนคลาสอยางงายๆเพราะทําหนาที่เพียงแค accept, drop, delay or

reschedule ขอมูลในเครือขาย (รูปที่ 2.4) ซึ่งในที่นี้หมายถึงมีคลาสเดียวไมสามารถสราง

คลาสยอยภายใต root disc ได คิวประเภทนี้ไดแก pfifo_fast, TBF (Token Bucket

Filter) และ SFQ(Stochastic Fairness Queuing) เปนตน

รูปที่ 2.4 Classless qdisc

• Classful qdisc เปนระบบคิวที่สามารถสรางคลาสยอยได เพ่ือจัดประเภทของแพ็กเก็ต

และกําหนดความเร็วในการจัดสงได ทําใหสามารถจัดการแบนดวิธไดอยางซับซอนและมี

ประสิทธิภาพมากขึ้น คิวประเภทนี้ไดแก PRIO, CBQ(Classes Based Queue), HTB

(Hierarchical Token Bucket) เปนตน

2.9.2 Classless qdisc

2.9.2.1 pfifo_fast qdisc เปนคิวโดยปริยายของลีนุกซที่จะทําการสงแพ็กเก็ตที่เขามา

แบบเขากอน-ออกกอน โดยคิวจะถูกแบงเปนสามแบนด (0,1,2) ดังรูปที่ 2.5 ซึ่งแพ็กเก็ตที่อยูใน

แบนด 0 จะถูกออกไปหมดกอนจึงจะยอมใหแบนด 1 สงออกไปได เชนเดียวกับแบนด 2 ตองรอ

ใหแบนด 1 สงแพ็กเก็ตใหหมดกอน

13

Page 24: ระบบการบริหารการใช ิงานอนเทอร เน็ัตสํบองค าหร กร An ... ระบบการ... · This project

รูปที่ 2.5 โครงสรางของ pfifo_fast

แพ็กเก็ตที่เขามาจะถูกจัดเขาแบนดดวยฟลด Type of Service (TOS) ซึ่งอยูในแพ็กเก็ต

โดยแพ็กเก็ตชนิด “minimize delay” จะถูกจัดเขาแบนด 0 แพ็กเก็ตประเภทนี้ไดแก TELNET,

FTP-control, SMTP-command, DNS-udp-qury เปนตน ทําใหแพ็กเก็ตกลุมน้ี ถูกจัดสงออก

กอนแพ็กเก็ตชนิดอ่ืน

2.9.2.2 TBF (Token Bucket Filter)

TBF ใชควบคมุไมใหแพ็กเก็ตถูกสงออกเกินความเร็วที่ตั้งไว หลักการทํางานคือ TBF จะ

สรางบัฟเฟอรแยกออกมาจากคิวที่เก็บปกติเพ่ือเก็บ Token และบังคับใหการสงแพ็กเก็ตแตละชิ้น

จะตองดึงเอา Token ออกไปกอน โครงของ TBF จะเปนดังรูปที่ 2.7

รูปที่ 2.6 โครงสรางของ TBF qdisc

14

Page 25: ระบบการบริหารการใช ิงานอนเทอร เน็ัตสํบองค าหร กร An ... ระบบการ... · This project

ระบบจะสราง Token เขาไปเก็บในบัฟเฟอรดวยอัตราเร็วที่ตั้งไว กรณีที่ไมมี Token

เหลือในบัฟเฟอร แพ็กเก็ตในคิวจะตองหยุดรอ Token ที่จะถูกสรางขึ้น

2.9.2.3 SFQ (Stochastic Fairness Queuing)

SFQ เปนคิวที่ใชในกรณีที่แบนดวิธการสื่อสารขาออกที่เกิดขึ้นจริงเทากับความเร็วสูงสุด

ของการดเครือขาย ซึ่งกลไกของ SFQ จะทําใหเกิดการเวียนสงแพ็กเก็ตที่อยูในคิวอยางเทาเทียม

กันเพื่อปองกันการชะงักของแพ็กเก็ตในบาง Session

หลักการทํางานของ SFQ จะสรางคิวยอยแบบ FIFO หลายๆคิว และกระจายแพ็กเก็ตที่

ตองการสงออกไวในคิวแยกตาม connection-flow ของการติดตอระหวางผูสงและผูรับแยกตาม

TCP Seesion หรือ UDP stream

SFQ จะสลับนําเอาแพ็กเก็ตที่อยูในคิว FIFO สงออกไป ทําใหแพ็กเก็ตถูกสงกระจายตัว

สมํ่าเสมอไมกระจุกตัวอยูในคิวใดคิวหนึ่งดังรูปที่ 2.7

รูปที่ 2.7 โครงสรางของ SFQ qdisc

2.9.3 Classful qdisc

เปน Qdisc ที่สามารถสรางคลาสยอย และกําหนดเงื่อนไขความเร็ว รวมทั้งจัดลําดับ

ความสําคัญของแพ็กเก็ตที่จะสงออกไปได

Classful qdisc เปนสวนประกอบที่สําคัญในกลไกการควบคุมแบนดวิธของลีนุกซ

15

Page 26: ระบบการบริหารการใช ิงานอนเทอร เน็ัตสํบองค าหร กร An ... ระบบการ... · This project

สวนประกอบของ Classful qdisc มีดังนี้

- Queuing Discipline

- Classes

- Filters

- Policer

รูปที่ 2.8 โครงสรางของ Classful qdisc

จากรูปที่ 2.8 จะแสดงถึงโครงสรางของ Classful Qdisc ที่ประกอบดวยคลาส 2 คลาส

โดยมี Filter ทําหนาที่คัดแยกแพ็กเก็ตเขาสู leaf qdisc ในแตละคลาส ซึ่ง leaf qdisc จะอยูที่

ปลายสุดซึ่งตออยูกับคลาสที่ไมมีคลาสลูก

โครงสรางของคลาสในรูปที่ 2.8 เปนโครงสรางที่ไมซับซอนเน่ืองจากไมมีคลาสลูกภายใต

คลาสทั้งสอง แตอยางไรก็ตามผูใชสามารถสรางคลาสภายใต root disc ใหมีลักษณะเปนลําดับชั้น

(Hierarchical) ที่ซับซอน เพ่ือสรางกลุมของคลาสตามผูใชงานหรือบริการตางๆ รวมทั้งสามารถ

กําหนดแบนดวิธขั้นต่ําหรือแบนดวิธสูงสุดที่จะใหบริการแตละคลาส และสามารถกําหนดใหคลาส

ที่อยูภายใตคลาสแมเดียวกันยืมแบนดวิธที่เหลือจากคลาสแมมาใชหรือไมก็ได

Filters ใชสําหรับคัดแยกแพ็กเก็ตใหเขาไปในคลาสที่กําหนดไว โดยที่คลาสหนึ่งอาจมี

หลาย Filter ได ในสวนทายของคลาสที่ไมมีลูกจะตองสราง Classless เกาะติดอยูสําหรับแพ็ก

เก็ตที่เขามาถูกนํานําไปพักไวในคิวเพ่ือรอการสงออกไป

ลีนุกซจะนําแพ็กเก็ตที่รับเขามาทดสอบกับ Filter ทีละ Filter ตามลําดับเพ่ือคัดแยกเขา

ไปใน qdisc ที่เปนคลาสลูก ซึ่งเรียกกระบวนการนี้วา enqueue

Policer ใชในการจัดการแพตเกตขาเขาโดยทํางานรวมกับ Filter เพ่ือตรวจสอบเงื่อนไข

และตัดสินใจวาจะนําแพ็กเก็ตเขามาเก็บไวในคิว หรือลบแพ็กเก็ตทิ้งไป Policer สามารถทํางาน

รวมกับ iptables ซึ่งเปนกลไกในการทํางานดานไฟรวอล โดยที่ iptables สามารถเขียนขอมูลลง

ไปในแพ็กเก็ตกอนสงตอใหกับ Ingress Policer เพ่ือคัดแยกกลุมของแพ็กเก็ต

16

Page 27: ระบบการบริหารการใช ิงานอนเทอร เน็ัตสํบองค าหร กร An ... ระบบการ... · This project

Classful qdisc ที่จะกลาวถึงตอไปน้ีมี 3 ชนิด คือ PRIO, CBQ และ HTB qdisc ซึ่งจะมี

ความแตกตางกันในเรื่องของโครงสรางและคุณสมบัติของคลาส

2.9.3.1 PRIO qdisc

เม่ือเปลี่ยน root qdisc เปน PRIO qdisc จะมีการสรางคลาสขึ้นมา 3 คลาสดังรูปที่ 2.9

แตละคลาสมีคิวแบบ FIFO เกาะอยู คลาสที่สรางขึ้นมาจะมี priority เปน 1, 2, 3 การสงแพ็กเก็ต

จะเรียงตามลําดับ priority คือตองสงในคลาส 1 ใหหมดกอนแลวจึงสงคลาสที่ 2 และ 3 ตอไป

รูปที่ 2.9 โครงสรางของ PRIO qdisc

2.9.3.2 CBQ qdisc

CBQ (Classes Based Queue) เปนคิวที่ใชสําหรับการจัดการแบนดวิธสําหรับ

ผูใชบริการหลายคนที่ใชสายรวมกันโดยมีการรับประกันแบนดวิธสําหรับผูใชแตละคน ในชวง

เวลาที่ที่มการใชงานอยางแออัด เพ่ือปองกันมิใหเกิดการชะงักของผูใชรายใดรายหนึ่ง กลาวอีก

นัยหนึ่งคือ CBQ สามารถรับประกันแบนดวิธใหกับผูใชแตรายได

การจัดการแบนดวิธดวย CBQ ทําไดโดยสราง root disc เปน cbq จากนั้นสรางคลาส

ยอยในลักษณะที่เปนลําดับชั้น โดยระบุเง่ือนไขความเร็วในการสงแพ็กเก็ต แลวสราง Filter เพ่ือ

จัดคัดแยกแพ็กเก็ตลงตามคลาส ซึ่งจะทําใหลีนุกซจัดสงแพ็กเก็ตใหไดอัตราเร็วตามที่กําหนด

2.9.3.3 HTB qdisc

HTB (Hierarchical Token Bucket) เน่ืองจาก CBQ เปนคิวที่มีความซับซอนมาก

บางครั้งอาจจะทําใหเกิดขอผิดพลาดในการควบคุมแบนวิธได จึงมีผูพัฒนาคิวแบบที่มีลักษณะ

การทํางานคลายกับ CBQ แตมีความซับซอนนอยกวาและมีประสิทธิภาพใกลเคียงกันโดยถูก

ติดตั้งมาในลีนุกซเคอรเนล 2.4.20 เปนตน หลักการทํางานของ HTB ใชแนวคิดของ

tokens/bucket และใช filter ในการควบคุมปริมาณขอมูล จึงมีความสามารถในการจํากัดแบนดวิธ

และการรับประกันแบนดวิธดวย

2.9.4 การใช HTB qdisc เพ่ือควบคุมแบนดวิธ กลาวโดยสรุป ขั้นตอนในการควบคุมแบนดวิธ ในลีนุกซเพ่ือใหจัดการแบนดวิธไดอยาง

มีประสิทธิภาพผาน Classful disc เปนดังนี้

17

Page 28: ระบบการบริหารการใช ิงานอนเทอร เน็ัตสํบองค าหร กร An ... ระบบการ... · This project

• เปลี่ยนโครงสรางของ qdisc ใหเปนแบบ Classful qdisc โดยเปลี่ยน root qdisc จาก FIFO เปน HTB

• สรางคลาสและจัดโครงสรางคลาสตามกลุมผูใชบริการและกําหนดปริมาณแบนดวิธขั้นต่ําหรือขั้นสูงสุด รวมทั้งการใหยืมแบนดวิธทีเ่หลือใชระหวางคลาสพี่นองที่อยูภายใตคลาสแมเดียวกัน

• สรางคิวแบบ classless qdisc เชน sfq, FIFO เพ่ือผูกกับคลาสที่เปน leaf class

• สราง Filter เพ่ือใชในการคดัแยกแพ็กเก็ตเขาไปอยูในคิวของแตละคลาส

ขั้นตอนที่กลาวมาสามารถทําดวยคําสั่ง tc ในลีนุกซดังนี้ - tc qdisc … .ใชในการจัดการ qdisc - tc class … ใชในการจัดการคลาส - tc filter … ใชในการจัดการ filter

2.9.4.1 ตวัอยางการใชงาน HTB qdisc รูปที่ 2.10 เปนการแสดงโครงของการใหบริการแกลูกคาสองราย ซึ่งไดสรางคลาส

ควบคุมแบนดวิธจํานวน 3 คลาส

รูปที่ 2.10 โครงสรางของการใหบริการลูกคา 2 ราย

สมมติวา เราตองการกําหนดแบนดวิธใหลูกคา A เทากับ 40kbps และลูกคา B เทากับ 60

kbps แบงแบนดวิธสําหรับลูกคา A ใหกับบริการ WWW เทากับ 30 kbps และอ่ืนๆอีก 10 kbps คําสั่งที่ใชสราง HTB root qdisc คือ tc qdisc add dev eth0 root handle 1: htb default 12 เปนการสราง root qdisc ทีก่ารดเครือขาย eth0 มี handle 1: เปนควิ htb โดยที่

18

Page 29: ระบบการบริหารการใช ิงานอนเทอร เน็ัตสํบองค าหร กร An ... ระบบการ... · This project

• handle เปนหมายเลขที่กาํหนดขึ้นของ qdisc หรือคลาสเพื่อใชในการอางอิง ในตัวอยางเปนการสราง handle ของ root qdisc มีคาเทากับ 1: รูปแบบการเขียน handle <major-number>:<minor-number> โดยที่

- <major-number> ใชสําหรับอางอิงถึง qdisc ซึ่ง qdisc ทุกคิวจะมี <minor-number> เปน 0 - <major-number> มีคาตัง้แต 0 ถึง 0x7fff - <minor-number> ใชสําหรับกําหนด handle/classid ของคลาสและตองมี <major-number> ตรงกับ handle ของ qdisc ที่เปน parent

• default 12 หมายถึงกรณีที่แพ็กเก็ตไมเขาเง่ือนไขของ filter ที่กําหนดไว ใหจัดแพ็กเก็ตเขาที่คลาส 12

ขั้นตอนตอไปเปนการสรางคลาสที่มีโครงสรางตามเงื่อนไข ดวยคําสัง่ tc class aad dev eth0 parent 1: classid 1:1 htb rate 100kbps ceil 100 kbps tc class aad dev eth0 parent 1:1 classid 1:10 htb rate 30kbps ceil 100 kbps tc class aad dev eth0 parent 1:1classid 1:11 htb rate 10kbps ceil 100 kbps tc class aad dev eth0 parent 1:1 classid 1:12 htb rate 60kbps ceil 100 kbps คําสั่งแรกสราง root class มีหมายเลข handle เปน 1:1 และผูกติดกบั root qdisc ดวย

ขอความ parent 1: และกําหนดใหมีการรับประกันเทากับ 100 kbps ดวยขอความ rate 100 kbps

root qdisc มีไดเพียง 1 qdisc ตอ 1 interface ในขณะที่ root class สามารถมีไดหลายๆ root class

คลาสลูกที่อยูภายใต root class เดียวกันสามารถยืมแบนดวิธที่เหลอืใชของคลาสแมระหวางกันได แต root class คนละ root class ไมสามารถยืมแบนดวิธขามกันได

คําสั่งที่ถัดมาอีก 3 คําสั่ง ใชสําหรับสรางคลาสลูกที่ตอลงมาจาก คลาส 1:1 โดยมี classid เปน 1:10, 1:11, 1:12 และแบนดวิธที่รับประกันเทากบั 30, 10 และ 60 kbps ตามลําดับ ดวยตัวเลขทีต่อจาก rate

สวน ceil ใชกาํหนดแบนดวิธสูงสุดโดยที่ - กรณี ceil เทากับ rate หมายถึงไมอนุญาตใหคลาสนี้ยมืแบนดวิธจากคลาสพี่

นองที่อยูในคลาสแมเดียวกนั - กรณี ceil มากกวา rate หมายถึงหากคลาสแมมีแบนดวิธเหลืออยูซึ่งเกิดจาก

คลาสพี่นองใชแบนดวธิไมเต็ม rate ที่ตั้งไว คลาสนี้สามารถยืมแบนดวิธที่เหลือจากคลาสแมได หากมีความตองการสงเกินอัตรา rate ที่ตั้งไว แตจะไมเกิน ceil ที่ตั้งไว

19

Page 30: ระบบการบริหารการใช ิงานอนเทอร เน็ัตสํบองค าหร กร An ... ระบบการ... · This project

ขั้นตอไปเปนการสราง Filter เพ่ือคัดแยกแพ็กเก็ตเขาสูคลาส

tc filter add dev eth0 protocal ip parent 1:0 prio 1 u32 match ip src 1.2.3.4 match ip dport 80 0xffff flowid 1:10

tc filter add dev eth0 protocal ip parent 1:0 prio 1 u32 match ip src 1.2.3.4 0xffff flowid 1:11

คําสั่งแรกใชสาํหรับสราง Filter แบบ u32 เพ่ือสงแพ็กเก็ตที่เปน web traffic ใหเขาไป

ในคลาส 1:10 โดยที่เลือกโพรโตคอล IP แพ็กเก็ตตองมี Source IP เทากับ 1.2.3.4 และแพ็กเก็ตตองมี Destinatrion port เทากับ 80

คําสั่งถัดมาคลายกับคําสั่งแรก แตตรวจสอบเฉพาะไอพีแอดเดรส โดยมีขอความตรง เพียง 1 อัน ซึ่งจะกําหนดใหแยกแพ็กเก็ตไปไวในคลาส 1:11 คือ แพ็กเก็ตที่เปน non-WWW นั่นเอง

ขั้นตอไปเปนการสราง Classless qdisc เพ่ือติดตั้งไวกบัคลาสที่เปน leaf class

tc qdisc add dev eth0 parent 1:10 handle 20: pfifo limit 5 tc qdisc add dev eth0 parent 1:11 handle 30: pfifo limit 5 tc qdisc add dev eth0 parent 1:12 handle 40: sfq perturb 10

เปนการสราง pfifo 2 คิวและ sfq 1 คิว ผูกติดกับคลาส 1:10, 1:11 และ 1:12

ขอสังเกต - handle ของ qdisc จะมีเฉพาะ <major-number>เทานั้น เชน 20: 30: 40: - ในทุกคําสั่งตองระบุ Interface Card (eth0) ทั้งน้ีเน่ืองจากในลีนุกซมีการด

เครือขายไดหลายการดและ handle ของ qdisc แตละการดสามารถกําหนดเลขที่ handle ซ้ํากันได

จากตัวอยางหากมีการทดลองสงแพ็กเก็ตออกไปยังการด eth0 จะพบวา

- ในกรณีที่ทั้ง 3 คลาสมีทราฟฟกเกิน rate ทั้งหมด HTB จะรับประกนัแบนดวิธ A/WWW อยางนอย 30 kbps และ A/other 10kbps สวน B ไดอัตราอยางนอย 60 kbps

- หากทราฟฟกของ A/WWW ไมไดใชงานก็สามารถนําไปให A/other กับ B ยืมใชงานได แตไดไมเกิน ceil ที่ตั้งเอาไว

20

Page 31: ระบบการบริหารการใช ิงานอนเทอร เน็ัตสํบองค าหร กร An ... ระบบการ... · This project

2.10 บทสรุป ในบทที่ 2 นี้ ไดกลาวถึงเนื้อหารายละเอียดเบื้องตนที่สําคัญๆ ของเทคโนโลยีที่มีอยู รวมไปถึง

เทคโนโลยีที่เกี่ยวของ ไมวาจะเปน Linux Firewall, PHP, MySQL, Proxy Server, Perl, SNMP, RRDtool และ Linux Traffic Control (tc) เพ่ือเปนแนวทางในการศึกษาและนํามาประยุกตพัฒนาตอไป

21

Page 32: ระบบการบริหารการใช ิงานอนเทอร เน็ัตสํบองค าหร กร An ... ระบบการ... · This project

บทที่ 3 การออกแบบระบบ

3.1 กลาวนํา

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

รูปที่ 3.1 แสดงภาพไดอะแกรมของระบบโดยรวม

ซึ่งเราสามารถแยกออกมาเปนระบบยอยๆ ได 2 สวน คือ -ระบบระบุตวัตนสําหรับการเขาใชงานอินเทอรเน็ต (โครงงาน 1) -ระบบการบริหารจัดการเกตเวย (โครงงาน 2)

3.2 ระบบการระบุตวัตนสําหรับการเขาใชงานอินเทอรเน็ต (โครงงาน 1) การสรางระบบการระบตุัวตนสําหรับการเขาใชงานอินเทอรเน็ต เราจะนําเอา Iptables, PHP

และ MySQL มาสรางระบบ โดยเราจะออกแบบแตสวนดังตอไปน้ี 3.2.1 การออกแบบการทํางานของ iptables โดยมีหลักการดังนี้ เม่ือแพ็กเก็ตวิง่เขามาที่ eth1 ของเครื่องเกตเวยจะเกดิกระบวนการMARKแพ็กเก็ตใหมใหมีคา

MARKเปน 0x04 ดังในรูปที่ 3.2 จากน้ันจะสงแพ็กเก็ตตอไปยังหนาเว็บสําหรบัการ Login เพ่ือทําการพิสูจนตัวตนในการเขาใชงาน เม่ือทําการพิสูจนยืนยันตัวตนไดถกูตองแลวจะเกิดกระบวนการMARKแพ็กเก็ตนั้นใหมอีกครั้งใหมีคาMARKเปน 0x01 ซึ่งแพ็กเก็ตที่มีคาMARKเปน 0x01 เทานั้นที่จะถูกสงออกไปภายนอกได ทําใหสามารถใชงานอินเทอรเน็ตได

22

Page 33: ระบบการบริหารการใช ิงานอนเทอร เน็ัตสํบองค าหร กร An ... ระบบการ... · This project

Packet INSet MARK = 0x04

Set Mark = 0x01

Check AuthorizeIP Address

Check Mark= 0x04 ?

No

Yes

No

Redirect to Login Page

Check user and pasword

Yes

No

Yes

Forward Packet Out

จบการทํางาน

เริ่มตน

Check Mark = 0x01 ?

Yes

No

รูปที่ 3.2 การออกแบบการทํางานของ iptables

23

Page 34: ระบบการบริหารการใช ิงานอนเทอร เน็ัตสํบองค าหร กร An ... ระบบการ... · This project

3.2.2 การออกแบบฐานขอมูล MySQL ตามรูปที่ 3.3 โดยจะสรางตารางขึ้นมา 2 ตารางคือ - User Table ใชสําหรับเกบ็ขอมูลของผูใช ตามตารางทิ่ 3.1 - Access_log Table ใชสาํหรับเก็บขอมูลการเขาใชงานของผูใช ตามตารางที่ 3.2

รูปที่ 3.3 แสดงฐานขอมูลสําหรับระบบการระบุตวัตน

ตารางที่ 3.1 User Table เปนตารางที่เกบ็ขอมูลตางๆของผูใชงาน

Field Data type key Description User_ID INT(4) PK รหัสผูใช User_Name VARCHAR(50) ชื่อผูใชงาน User_Surname VARCHAR(50) นามสกุล User_Login VARCHAR(50) ชื่อสําหรับ Login User_passwd VARCHAR(32) รหัสผานผูใชงาน User_Status INT(1) สถานะวา Active หรือ Disable

โดยใชคําสั่ง CREATE TABLE `AuthenGW`.`User` ( `User_ID` INT( 4 ) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY , `User_Name` VARCHAR( 50 ) NOT NULL , `User_Surename` VARCHAR( 50 ) NOT NULL , `User_Login` VARCHAR( 50 ) NOT NULL , `User_passwd` VARCHAR( 32 ) NOT NULL , `User_Status` INT(1) NOT NULL ) ENGINE = MYISAM CHARACTER SET tis620 COLLATE tis620_thai_ci;

24

Page 35: ระบบการบริหารการใช ิงานอนเทอร เน็ัตสํบองค าหร กร An ... ระบบการ... · This project

ตารางที่ 3.2 Access_log Table เปนตารางที่เก็บขอมูลการเขาใชงานของผูใช

Field Data type key Description

Access_ID INT(10) PK รหัสการใชงาน User_Login VARCHAR(50) ชื่อสําหรับ Login Session_ID VARCHAR(50) ใชอางอิงสําหรับการ Logout IP_Addr VARCHAR(15) ไอพีแอดเดรส Time_IN DATETIME เวลาเริ่มใชงาน Time_OUT DATETIME เวลาออกจากระบบ Status_login INT(1) ใชเก็บสถานะของการ Login

โดยใชคําสั่ง

CREATE TABLE `AuthenGW`.`Access_log` ( `Access_ID` INT( 10 ) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY , `User_Login` VARCHAR( 50 ) NOT NULL , `Seesion_ID` VARCHAR( 50 ) NOT NULL , `IP_Addr` VARCHAR( 15 ) NOT NULL , `Time_IN` DATETIME NOT NULL , `Time_OUT` DATETIME NOT NULL , `Status` INT( 1 ) NOT NULL ) ENGINE = MYISAM CHARACTER SET tis620 COLLATE tis620_thai_ci;

3.2.3 การออกแบบการทํางานของ PHP ผานหนาเว็บ โดยมีการทํางานดังนี้

3.2.3.1 กระบวนการ Login ตามรูปที่ 3.4 เริ่มจากการปอน Username และ Password ผานทางหนาเว็บแลวทําตรวจสอบกับฐานขอมูล MySQLวาขอมูลถกูตองหรือไม ถาไมถูกตองก็จะกลับไปหนา Login อีกครั้ง ถา Username และ Password ถูกตองก็จะตรวจสอบเพิ่มอีกวา ผูใชงานคนนัน้ได Login อยูหรือไม โดยตรวจสอบจากฐานขอมูลในตาราง Access_log ถามีการ Login อยูระบบซึ่งคาของ Status_login จะมีคาเทากับ 1 แสดงวาเกิดการ Login ซ้ํา ระบบจะไมอนุญาตใหมีการ Login ซ้ําเปนอันขาดทาํใหผูที่เขาทีหลังจะไมสามารถเขาใชงานได ระบบจะใหกลับไปที่หนา Login อีกครั้ง ถาไมมีการ Login อยู ระบบก็จะบันทึกขอมูลการใชงานของผูใชคนนั้นและเซตคา Status_login เทากบั 1 ลงไปในฐานขอมูลและเพิ่มคาไอพแีอดเดรสลงใน iptables โดยเซตคา MARKใหมีคาเทากับ 0x01

25

Page 36: ระบบการบริหารการใช ิงานอนเทอร เน็ัตสํบองค าหร กร An ... ระบบการ... · This project

รูปที่ 3.4 แสดงขั้นตอนการทํางานของกระบวนการ Login

26

Page 37: ระบบการบริหารการใช ิงานอนเทอร เน็ัตสํบองค าหร กร An ... ระบบการ... · This project

3.2.3.2 กระบวนการ Logout เม่ือผูใชงาน ทําการคลิ๊กปุม Logout ระบบจะทําทําการแกไขขอมูลการเขาใชงานของผูใชงานนั้นในฐานขอมูลโดยเปลี่ยนคา Status_login เทากับ 0 บันทึกเวลาเลกิใชงาน และสั่งลบไอพีแอดเดรสนั้นออกจาก iptables

รูปที่ 3.5 แสดงกระบวนการทํางานของการ Logout

3.2.3.3 แสดงการออกแบบหนาจอตางๆของระบบการ login ใชงานอินเทอรเน็ตซึง่จะ

ประกอบไปดวย - หนา Login

- หนาสําหรับ Logout

รูปที่ 3.6 แสดงหนาเว็บสําหรับการ Login

27

Page 38: ระบบการบริหารการใช ิงานอนเทอร เน็ัตสํบองค าหร กร An ... ระบบการ... · This project

รูปที่ 3.7 แสดงหนาเว็บเม่ือทําการ Login ถูกตอง

3.3 ระบบการบริหารจัดการเกตเวย (โครงงาน 2) เปนระบบที่เอาไวบริหารจัดการเกตเวย ซึ่งจะทํางานผานทางหนาเวบ็ ประกอบไปดวยระบบ

ยอยตางๆดังนี้ -ระบบการจัดการผูเขาใชงานอินเทอรเน็ต -ระบบจัดการ Proxy -ระบบการทํา QoS -ระบบการมอนิเตอรเกตเวย 3.3.1 ระบบการจัดการผูเขาใชงานอินเทอรเน็ต จะประกอบไปดวย -การเพิ่ม/แกไข ผูเขาใชงาน -การดูผูที่ใชอยูวามีใครบาง -การเซตไอพแีอดเดรสที่ไมตองยืนยันตวัตนสําหรับผูบริหาร

รูปที่3.8 รูปแสดงผังการทํางานระบบการจัดการผูใชงาน

28

Page 39: ระบบการบริหารการใช ิงานอนเทอร เน็ัตสํบองค าหร กร An ... ระบบการ... · This project

รูปที่3.9 รูปการออกแบบหนาจอสําหรับรายชื่อผูใชงานทั้งหมด

รูปที่ 3.10 รูปการออกแบบหนาจอสําหรับการเพิ่มผูใชงาน

รูปที่ 3.11 รูปการออกแบบหนาจอสําหรับการแกไขขอมูลผูใชงาน

29

Page 40: ระบบการบริหารการใช ิงานอนเทอร เน็ัตสํบองค าหร กร An ... ระบบการ... · This project

รูปที่ 3.12 รูปการออกแบบหนาจอสําหรับการแกไขรหัสผานของผูใช

รูปที่3.13 รูปการออกแบบหนาจอสําหรับการเซตไอพแีอดเดรสที่ไมตองยืนยันตวัตน

รูปที่3.14 รูปการออกแบบหนาจอสําหรับแสดงรายชือ่ผูที่ใชระบบอินเทอรเน็ตอยู

30

Page 41: ระบบการบริหารการใช ิงานอนเทอร เน็ัตสํบองค าหร กร An ... ระบบการ... · This project

3.3.2 ระบบจัดการ Proxy จะประกอบไปดวย - จัดการคอนฟก Squid ผานหนาเว็บ โดยการเขาไปแกไฟล squid.conf - การปองกันการเขาเวบ็ไซดที่ไมเหมาะสม

รูปที่3.15 รูปแผนผังการทํางานของระบบการจัดการ Proxy

เครื่องมือจัดการคอนฟกของ Squid ผานหนาเว็บ โดยการแกไขไฟล squid.conf เพ่ือใหงายตอการแกไขหรือเพิมเติม่คาคอนฟกตางๆ

รูปที่3.16 รูปแสดงการแกไฟล squid.conf

31

Page 42: ระบบการบริหารการใช ิงานอนเทอร เน็ัตสํบองค าหร กร An ... ระบบการ... · This project

การปองกันการเขาเวบ็ไซดที่ไมเหมาะสม เม่ือไมอนุญาตใหผูใชงานเขาใชงานเวบ็ใด ก็สามารถใสชื่อเว็บไซดนั้นลงไปได ตามรูปที่ 3.17

รูปที่3.17 รูปการออกแบบหนาจอสําหรับการปองกันการเขาเวบ็ไซดที่ไมเหมาะสม

3.3.3 ระบบการทํา QoS สําหรับคําสั่งที่ใชในการจัดการปริมาณ Traffic ของลนีุกซคือคําสั่ง tc ซึ่งเราจะนาํเอา HTB Qdisc มาใชในการทาํ QoS โดยจะแบงคลาสออกเปนทั้งหมด 4 คลาสตามกลุมของบริการ คือ DNS, WEB, MAIL และ Other เราสามารถที่จะกําหนดแบงแบนดวธิใหแตละคลาสตามตองการการใชงานได โดยที่รวมกันผลรวมจะตองไมเกินแบนดวิธทั้งหมด

รูปที่3.18 รูปแสดงโครงสรางของการแบง Class ในการทํา QoS

32

Page 43: ระบบการบริหารการใช ิงานอนเทอร เน็ัตสํบองค าหร กร An ... ระบบการ... · This project

รูปที่3.19 รูปการออกแบบแสดงหนาจอสําหรับการทาํ QoS

จากรูปที่ 3.19 เม่ือเรากําหนดคาตางๆสาํหรับการทํา QoS จากหนาจอแลวระบบจะทําการสรางสคริปตไฟลขึ้นมาเพื่อสราง QoS อยางเชน

#! /bin/bash tc qdisc del dev eth1 root tc qdisc add dev eth1 root handle 1: htb default 90 tc class add dev eth1 parent 1: classid 1:1 htb rate 1024kbit ceil 1024kbit tc class add dev eth1 parent 1:1 classid 1:10 htb rate 100kbit tc class add dev eth1 parent 1:1 classid 1:20 htb rate 400kbit tc class add dev eth1 parent 1:1 classid 1:30 htb rate 200kbit tc class add dev eth1 parent 1:1 classid 1:90 htb rate 300kbit tc qdisc add dev eth1 parent 1:10 handle 10: sfq perturb 10 tc qdisc add dev eth1 parent 1:20 handle 20: sfq perturb 10 tc qdisc add dev eth1 parent 1:30 handle 30: sfq perturb 10 tc qdisc add dev eth1 parent 1:90 handle 90: sfq perturb 10 tc filter add dev eth1 parent 1:10 protocol ip u32 match ip sport 53 0xffff classid 1:10 tc filter add dev eth1 parent 1:20 protocol ip u32 match ip sport 80 0xffff classid 1:20 tc filter add dev eth1 parent 1:30 protocol ip u32 match ip sport 25 0xffff classid 1:30

33

Page 44: ระบบการบริหารการใช ิงานอนเทอร เน็ัตสํบองค าหร กร An ... ระบบการ... · This project

3.3.4 ระบบการมอนิเตอรเกตเวย เปนระบบที่แสดงสถานะของ CPU, Memory, eht0 และ eth1 ของเกตเวยในรูปแบบ

ของกราฟเพื่อใหงายตอการดูและวิเคราะห โดยการใช RRDtool ในการสรางกราฟและใช SNMP ในการดึงคาตางๆจาก CPU, Memory, eth0 และ eth1

3.3.4.1 การมอนิเตอร CPU เราจะทําการสรางฐานขอมูลที่เปน RRDtool ของ CPU และเขยีนสครปิตโดยการใช SNMP ดึงคาตางๆของ CPU ทุกๆ 5 นาที เพ่ือนําขอมูลมาใสในฐานขอมูลของ RRDtool ซึ่งคา OID ที่ตองนํามาใชคือ

OID ssCpuRawUser = .1.3.6.1.4.1.2021.11.50.0

OID ssCpuRawNice = .1.3.6.1.4.1.2021.11.51.0 OID ssCpuRawSystem = .1.3.6.1.4.1.2021.11.52.0 OID ssCpuRawIdle = .1.3.6.1.4.1.2021.11.53.0 CPU Usage = User + System + Nice Total CPU = User + System + Nice +Idle

รูปที่3.20 รูปการออกแบบหนาจอแสดง CPU Load

3.3.4.2 การมอนิเตอร Memory เราจะทําการเขียนสคริปตโดยการใช SNMP ดึงคา

ตางๆของ Memory ทุกๆ 5 นาที เพ่ือนําขอมูลมาใสในฐานขอมูลของ RRDtool ซึ่งคา OID ที่ตองนํามาใชคอื

OID memTotalReal = .1.3.6.1.4.1.2021.4.5.0 OID memAvailReal = .1.3.6.1.4.1.2021.4.6.0 Memory usage = memTotalReal – memAvailReal

34

Page 45: ระบบการบริหารการใช ิงานอนเทอร เน็ัตสํบองค าหร กร An ... ระบบการ... · This project

รูปที่3.21 รูปการออกแบบหนาจอแสดง Memory Usage

3.3.4.3 การมอนิเตอร eth0 และ eth1 เราจะทําการเขยีนสคริปตโดยการใช SNMP ดึง

คาตางๆของ eth0 และ eth1 ทุกๆ 5 นาที เพ่ือนําขอมูลมาใสในฐานขอมูลของ RRDtool ซึ่งคา OID ที่ตองนํามาใชคือ

สําหรับ eth0 OID ifInOctets = .1.3.6.1.2.1.2.2.1.10.2 OID ifOutOctets = .1.3.6.1.2.1.2.2.1.16.2 สําหรับ eth1 OID ifInOctets = .1.3.6.1.2.1.2.2.1.10.3 OID ifOutOctets = .1.3.6.1.2.1.2.2.1.16.3

รูปที่3.22 รูปการออกแบบหนาจอแสดง Traffic ของ eth0

35

Page 46: ระบบการบริหารการใช ิงานอนเทอร เน็ัตสํบองค าหร กร An ... ระบบการ... · This project

รูปที่3.23 รูปการออกแบบหนาจอแสดง Traffic ของ eth1

3.4 บทสรุป ในบทที่ 3 นี้ไดกลาวถึงการออกแบบ สวนตางๆของระบบ เชน การระบุตวัตนสําหรับการเขาใชงานอินเทอรเน็ต และการบริหารและจัดการเกตเวย โดยการนําเอา Linux Firewall, PHP, MySQL, Proxy Server, Perl, SNMP, RRDtool และ Linux Traffic Control (tc) มาประยุกตและพัฒนาเพ่ือใหสามารถใชงานตามที่เราตองการ ทําใหสามารถมองเห็นรูปแบบการดําเนินงานของโครงงานและแผนงานที่สามารถนํามาดําเนินการในการทดสอบในบทถัดไป

36

Page 47: ระบบการบริหารการใช ิงานอนเทอร เน็ัตสํบองค าหร กร An ... ระบบการ... · This project

บทที่ 4 การทดลองและผลการทดลอง

4.1 กลาวนํา เน้ือหาในบทที่ 4 นี้จะกลาวถึงรายละเอียดของการทดลองและผลของการทดลองโครงงาน โดยนําเอาสิ่งตางๆที่ออกแบบไวในบทที่3มาสรางเปนเครือ่งมือที่ใชสําหรับการบริหารการใชงานอินเทอรเน็ต สําหรับองคกรใหมีประสิทธภิาพ ซึ่งสามารถแบงไดออกเปน 2 ระบบ คือ

-ระบบระบตุัวตนเพื่อเขาใชงานอินเทอรเน็ต -ระบบการบรหิารจัดการเกตเวย

4.2 โครงสรางของระบบ

เราจะทําการทดลองใน Vmware ซึ่งจะประกอบไปดวยเกตเวยที่เปน Linux Fedora Core 11 และเครื่องไคลเอ็นตเปนระบบปฏบิัติการวินโดวเอ็กพีจํานวน 2 เครื่อง ตามในรูปที ่4.1

รูปที่ 4.1 แสดงระบบเครือขายจําลองที่ใชทดสอบ 4.3 การทดลองระบบ

ในการทดลองนั้นเราจะแยกการทดลองออกเปนสองสวน คือ - ระบบการระบุตวัตนเพื่อเขาใชงานอินเทอรเน็ต - ระบบการบริหารจัดการเกตเวย

37

Page 48: ระบบการบริหารการใช ิงานอนเทอร เน็ัตสํบองค าหร กร An ... ระบบการ... · This project

4.3.1 ระบบการระบุตวัตนเพ่ือเขาใชงานอินเทอรเน็ต การใชงานอินเทอรเน็ตระบบจะบังคับใหตองทําการยืนยันตัวตนโดยเขาสูระบบผานทาง

เว็บบราวเซอร จึงจะใชงานอินเทอรเน็ตได เปนการออกแบบการทํางานของ iptables ใหทําการ เชื่อมตอไปยังหนาเว็บไปยังหนาเว็บ Login เพ่ือทําการ Login กอน เม่ือทําการยืนยันตัวตนไดถูกตองจึงจะสามารถใชงานอินเทอรเน็ต ซึ่งการทํางานของ iptables จะทํางานตามตารางที่ 4.1

ตารางที่ 4.1 แสดงเกี่ยวกับสคริปตการทาํงานของ iptables

#!/bin/bash #ลบขอมูลใน Mangle Table iptables -F -t mangle # MARK ไอพีแอดเดรส 192.168.100.0/24 ที่เขามาทาง eth1 ใหมีคาเทากับ 0x04 iptables -t mangle -A PREROUTING -i eth1 -s 192.168.100.0/24 -j MARK --set-mark 0x04 # Redirect แพ็กเก็ตที่มี MARK 0x04 ไปยังหนา Login iptables -t nat -A PREROUTING -i eth1 -p tcp -m mark --mark 0x04 -j DNAT \ --to-destination 192.168.100.1:8000 #ลบ ขอมูลใน Filter Table iptables -F #กําหนด Policy Filter Table INPUT เปน ACCEPT iptables -P INPUT ACCEPT #กําหนด Policy Filter Table FORWARD เปน DROP iptables -P FORWARD DROP #ทํา STATEFUL iptables -A FORWARD -m state --state RELATED, ESTABLISHED -j ACCEPT #อนุญาตใหแพ็กเก็ตที่มี MARK 0x01 สามารถ FORWAD ผานได iptables -A FORWARD -m mark --mark 0x01 -j ACCEPT #อนุญาตให DNS (port 53) สามารถ FORWAD ผานได iptables -A FORWARD -p udp --dport 53 -j ACCEPT

38

Page 49: ระบบการบริหารการใช ิงานอนเทอร เน็ัตสํบองค าหร กร An ... ระบบการ... · This project

#ลบขอมูลใน Nat Table iptables -F -t nat # SSH เขามาจัดการกับเครื่องเกตเวย iptables -t nat -A PREROUTING -i eth1 -p tcp -d 192.168.100.1 –dport 22 -j RETURN #ทํา Transparent Proxy iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 8080 #ทํา NAT สําหรับการออกอินเทอรเน็ต iptables -t nat -A POSTROUTING -o eth0 -s 192.168.100.0/24 -j MASQUERADE

ใช PHP เขียนหนาเว็บเปนหนา Login สําหรับรับคา Username และ Password แลวนําคาไปตรวจสอบกับคาในฐานขอมูล MySQL

รูปที่ 4.2 แสดงหนาจอ Login เม่ือเปดเวบ็บราวเซอร

39

Page 50: ระบบการบริหารการใช ิงานอนเทอร เน็ัตสํบองค าหร กร An ... ระบบการ... · This project

เม่ือทําการตรวจสอบ Username และ Password วาถูกตองแลว PHP จะไปสั่งใหiptables เปดกฎอนุญาตใหผูใชงานคนนัน้สามารถใชงานระบบอินเทอรเน็ตได และเม่ือตองการเลิกการใชงานก็คลิ๊กที่ปุม Logout ดังรูปที่ 4.3

รูปที่ 4.3 แสดงหนาจอเมื่อ Login ผาน

รูปที่ 4.4 แสดงหนาจอวาสามารถใชงานอินเทอรเน็ตได

40

Page 51: ระบบการบริหารการใช ิงานอนเทอร เน็ัตสํบองค าหร กร An ... ระบบการ... · This project

รูปที่ 4.5 แสดงหนาจอเมื่อทําการ Logout เรียบรอยแลว

เม่ือทําการ Logout ออกจากระบบ ก็จะไมสามารถใชงานอินเทอรเน็ตไดดังรูปที่ 4.6 แต

ถาตองการจะใชงานก็ตองเปดบราวเซอรขึ้นมาเพื่อทําการ Login เขาสูระบบใหม

รูปที่ 4.6 แสดงหนาจอเมื่อทําการ ping ทดสอบ หลังจาการ Logout

41

Page 52: ระบบการบริหารการใช ิงานอนเทอร เน็ัตสํบองค าหร กร An ... ระบบการ... · This project

ถาผูเขาใชงานระบบอินเตอรใส Username หรือ Password ไมถูกตองแลว ระบบก็จะเตือนใหตรวจสอบ Username หรือ Password อีกครั้ง และใหใส Username และ Password ใหม ตามรูปที ่4.7

รูปที่ 4.7 แสดงหนาจอเมื่อใส Username หรือ Password ไมถูกตอง

ระบบจะไมอนญุาตใหผูใชงานสามารถเขาใชงานไดมากหนึ่งคนในหนึ่งรหัสของผูใชงาน

เดียวกัน ดังรูปที่ 4.8

รูปที่ 4.8 แสดงหนาจอวามีผูใชงานกําลงัใชงานอยู

42

Page 53: ระบบการบริหารการใช ิงานอนเทอร เน็ัตสํบองค าหร กร An ... ระบบการ... · This project

ระบบสามารถที่จะกําหนดไดวาผูใชงานนัน้ สามารถที่ถกูระงับการเขาใชงานระบบชั่วคราวไดดังรูปที่ 4.9

รูปที่ 4.9 แสดงหนาจอวาผูใชงานคนนัน้ถูกระงับการใชงาน

4.3.2 ระบบการบริหารจัดการเกตเวย

ระบบการบรหิารจัดการเกตเวย เปนสวนที่คอยจัดทุกอยางเกี่ยวกับเกตเวย ไมวาจะเปนการจัดเกี่ยวกบัผูใชงาน การจัดการเกี่ยวกับ Proxy การทํา QoS และ การมอนิเตอร CPU, Memory และปริมาณ Traffic โดยการเปดบราวเซอร https://192.168.100.1/admin ระบบจะทําการตรวจสอบสิทธิกอนการเขาจัดการระบบเกตเวย

รูปที่ 4.10 แสดงหนาจอให Login เขาสูระบบจัดการเกตเวย

43

Page 54: ระบบการบริหารการใช ิงานอนเทอร เน็ัตสํบองค าหร กร An ... ระบบการ... · This project

เม่ือทําการยืนยันตัวตนไดถกูตอง เขามาแลวจะมีเมนู 4 อันคือ Manage User, Setting Server, Monitor Server และ Logout ดังรูปที่ 4.11

รูปที่ 4.11 แสดงหนาจอเมนูของระบบบริหารจัดการเกตเวย

เม่ือทําการคลิก๊ที่เมนู Manage User ก็จะมีเมนูยอย 3 อัน คือ List User, Add User

และ User Online ดังในรูปที่ 4.12

รูปที่ 4.12 แสดงหนาจอเมนูยอยของ Manage User

44

Page 55: ระบบการบริหารการใช ิงานอนเทอร เน็ัตสํบองค าหร กร An ... ระบบการ... · This project

เมนูยอย List User จะแสดงขอมูลผูใชงานทั้งหมดที่มีอยูในระบบ ซึ่งเราสามารถที่เขาไปแกไขขอมูลของแตละผูใชงานหรือจะแกไข password ดังในรูปที่ 4.13

รูปที่ 4.13 แสดงหนาจอเมนูยอย List User

เมนูยอย Add User จะเมนูที่ใชสําหรับเพิม่ผูใชงานที่จะเขาใชระบบ ดังรูปที่ 4.14

รูปที่ 4.14 แสดงหนาจอเมนูยอย Add User

45

Page 56: ระบบการบริหารการใช ิงานอนเทอร เน็ัตสํบองค าหร กร An ... ระบบการ... · This project

เมนูยอย User Online จะเปนเมนูที่มีไวสําหรับดูวา ตอนน้ีมีผูใชงานคนใดบางทีท่ําการ ใชงานระบบอินเตอรอยู ดังในรูปที่ 4.15

รูปที่ 4.15 แสดงหนาจอเมนูยอย User Online

เม่ือทําการคลิก๊ที่เมนู Setting Server ก็จะมีเมนูยอย 6 อัน คือ IP No Authen,

Block Web, QOS, Edit Proxy, Edit Firewall และ Change Passwd ดังในรูปที ่4.16

รูปที่ 4.16 แสดงหนาจอเมนูยอยของ Setting Server

46

Page 57: ระบบการบริหารการใช ิงานอนเทอร เน็ัตสํบองค าหร กร An ... ระบบการ... · This project

เมนูยอย IP No Authen เปนเมนูไวสําหรับใสไอพีแอดเดรสที่ไมตองทําการยืนยันตัวตนผานทางหนาเว็บบราวเซอร ซึ่งจะเปนไอพีแอดเดรสของผูบริหาร ดังในรูปที่ 4.17

รูปที่ 4.17 แสดงหนาจอเมนูยอย IP No Authen

เมนูยอย Block Web จะเปนเมนูสําหรับเซตคาเว็บไซดที่ไมตองการใหผูใชงานเขาใช

งาน ดังในรูปที่ 4.18

รูปที่ 4.18 แสดงหนาจอเมนูยอย Block Web

47

Page 58: ระบบการบริหารการใช ิงานอนเทอร เน็ัตสํบองค าหร กร An ... ระบบการ... · This project

รูปที่ 4.19 แสดงหนาจอผลการหามเขาเว็บ h5.com

เมนูยอย QoS เปนเมนูที่ใชสําหรับเซตคาตางๆในการทํา QoS เชนการกําหนดให

enable หรือ disable กําหนดคาแบนดวธิ Download และ Upload และกําหนดเปอรเซ็นตของบริการตางๆที่สามารถใชไดจากทั้งหมดแบนดวิธ ดังในรูปที่ 4.20

รูปที่ 4.20 แสดงหนาจอเมนูยอย QoS

48

Page 59: ระบบการบริหารการใช ิงานอนเทอร เน็ัตสํบองค าหร กร An ... ระบบการ... · This project

เมนูยอย Edit Proxy เปนเมนูที่ใชในการแกไขคาคอนฟกของ squid โดยการแกไฟล squid.conf ดังในรูปที่ 4.21

รูปที่ 4.21 แสดงหนาจอเมนูยอย Edit Proxy

เมนูยอย Edit Firewall เปนเมนูที่ใชในการแกไขไฟล gateway.sh ดังในรูปที่ 4.22

รูปที่ 4.22 แสดงหนาจอเมนูยอย Edit Firewall

49

Page 60: ระบบการบริหารการใช ิงานอนเทอร เน็ัตสํบองค าหร กร An ... ระบบการ... · This project

เมนูยอย Change Passwd เปนเมนูที่ใชสาํหรับเปลี่ยน password ของ admin ดังในรูปที่ 4.23

รูปที่ 4.23 แสดงหนาจอเมนูยอย Change Passwd

เม่ือทําการคลิก๊ที่เมนู Monitor Server ก็จะมีเมนูยอย 3 อัน คือ Traffic, CPU และ

Memory ดังในรูปที่ 4.24

รูปที่ 4.24 แสดงหนาจอเมนูยอยของ Monitor Server

50

Page 61: ระบบการบริหารการใช ิงานอนเทอร เน็ัตสํบองค าหร กร An ... ระบบการ... · This project

รูปที่ 4.25 แสดงหนาจอเมนูยอย Traffic

รูปที่ 4.26 แสดงหนาจอเมนูยอย CPU

51

Page 62: ระบบการบริหารการใช ิงานอนเทอร เน็ัตสํบองค าหร กร An ... ระบบการ... · This project

รูปที่ 4.27 แสดงหนาจอเมนูยอย Memory

4.4 ผลการทดลอง

จากการทดลองสามารถทําใหผูที่จะเขาใชงานระบบอนิเทอรเน็ตจะตองมีชื่อผูใชงานอยูในระบบและตองทําการยืนยันตวัตนเขาสูระบบกอนจึงเขาใชงานได จึงเปนการควบคุมผูทีเ่ขาใชงานอินเทอรเน็ตไดระดับหน่ึง

รูปที่ 4.28 แสดงหนาจอ Login เขาสูระบบ

52

Page 63: ระบบการบริหารการใช ิงานอนเทอร เน็ัตสํบองค าหร กร An ... ระบบการ... · This project

รูปที่ 4.29 แสดงการทดลองมื่อยังไมได Login ไมสามารถใชงาน MSN ได

รูปที่ 4.30 แสดงการทดลองเมื่อยังไมได Login ไมสามารถ ping ได

53

Page 64: ระบบการบริหารการใช ิงานอนเทอร เน็ัตสํบองค าหร กร An ... ระบบการ... · This project

รูปที่ 4.31 แสดงการทดลองเมื่อไดทําการ Login แลวสามารถใชงาน MSN ได

รูปที่ 4.32 แสดงการทดลองเมื่อไดทําการ Login แลวสามารถใชงาน ping ได

54

Page 65: ระบบการบริหารการใช ิงานอนเทอร เน็ัตสํบองค าหร กร An ... ระบบการ... · This project

การทดสอบการทํา QoS ซึ่งสามารถกําหนดไดวา จะใชงาน QoS หรือไหม สามารถปรับเปลี่ยนแบนดวิธ ไดตามการใชงานที่มีอยู ดังในรูป 4.33

รูปที่ 4.33 แสดงการทดลองปรับเปลี่ยน QoS

รูปที่ 4.34 แสดงแบนดวิธกอนการทํา QoS

55

Page 66: ระบบการบริหารการใช ิงานอนเทอร เน็ัตสํบองค าหร กร An ... ระบบการ... · This project

รูปที่ 4.35 แสดงแบนดวิธหลังการทํา QoS

หลังจากการทํา QoS แลว เราสามารถที่จะควบคุมแบนดวิธไดตามทีต่องการได ขึ้นกับวาจะ

จําแนกแบนดวิธกบัการใชงานใหเหมาะสมอยางไร

4.5 บทสรุป จากการทดลองจะเห็นไดวา เราสามารถนําเอาลีนุกซมาพัฒนาเปนเครื่องมือใชในการบริหารการ

ใชงานอินเทอรเน็ตสําหรับองคกรไดในระดับที่นาพอใจ ไมวาจะเปนการระบุตวัตนเขาใชงานอินเทอรเน็ตและการบริหารจัดการเกตเวยซึ่งเปนการนําเอาโอเพนซอรสมาพัฒนาใชงานโดยไมตองเสียคาลขิสิทธิแตอยางใด

56

Page 67: ระบบการบริหารการใช ิงานอนเทอร เน็ัตสํบองค าหร กร An ... ระบบการ... · This project

บทที่ 5 สรุปผลการดําเนินงาน

5.1 กลาวนํา โครงงานนี้เราไดนํา Linux Fedora Core 11 มาทําหนาที่เปน Linux Gateway โดยการนํา Linux Firewall, PHP, MySQL, Proxy Server, Perl, SNMP, RRDtool และ Linux Traffic Control (tc) มาประยุกตและพัฒนาใชเปนเครื่องมือในการบริหารการใชงานอินเทอรเน็ตสําหรับองคกรใหมีเสถียรภาพมากขึ้น

เน้ือหาในบทที่ 5 นี้จะเปนบทของการสรุปผลการดําเนินงาน และแนวทางในการพัฒนาตอไป 5.2 การสรุปผลการดําเนินงาน

จากการออกแบบและทดลอง เราสามารถที่สรางและพฒันาเครื่องมือที่ใชในการบริหารการใชงานอินเทอรเน็ตสําหรับองคกร โดยการนํา Linux Firewall, PHP, MySQL, Proxy Server, Perl, SNMP, RRDtool และ Linux Traffic Control (tc) มาประยุกตและพัฒนา ซึ่งแบงออกเปน 2 คอื

• ระบบการระบตุัวตนสําหรับการเขาใชงานอินเทอรเน็ต

• ระบบการบรหิารจัดการเกตเวย 5.2.1 ระบบการระบุตวัตนสาํหรับการเขาใชงานอินเทอรเน็ต

1. สามารถบังคับใหผูใชงานอินเทอรเน็ตตองเขาสูระบบโดยผานหนาเว็บ 2. มีการปองกันไมใหเขาสูระบบซ้ํา 3. เม่ือปดโปรแกรมบราวเซอรจะออกจากระบบทันท ี4. มีการเก็บบันทึกการเขาใชงานของผูใชงาน

5.2.2 ระบบการบริหารจัดการเกตเวย 1.สามารถจัดการเกี่ยวกับการ เพ่ิมหรือแกไข ผูใชงาน 2.สามารถกําหนดไอพีแอดเดรสที่ไมตองระบุตวัตนได 3.สามารถปองกันการเขาเวบ็ไซดที่ไมเหมาะสมได 4.สามารถดูวาผูใชงานคนใดใชงานอยูบาง 5.สามารถแกไขคอนฟกของ Squid ได 6.สามารถกําหนด QoS ตามความเหมาะสมได 7.สามารถมอนิเตอรดูทราฟฟกเขา-ออก, ซีพีย ูและ เมมโมรี่ ได

5.3 แนวทางในการพัฒนาตอ

5.3.1 ปรับปรุงพัฒนาหนาเวบ็ใหนาใชงานมากยิ่งขึ้น 5.3.2 พัฒนาการทํา QoS ใหสามารถจัดการแบนดวิธใหไดยืดหยุนมากขึ้น 5.3.3 เพ่ิมการทํารายงานเกี่ยวกับการใชงานของผูใชงานวาใชงานอะไรบาง

57

Page 68: ระบบการบริหารการใช ิงานอนเทอร เน็ัตสํบองค าหร กร An ... ระบบการ... · This project

5.4 บทสรุป โครงงานนี้แสดงใหเห็นวาลนีุกซนั้นมีความสามารถมากในการนํามาประยุกตและพัฒนาเพื่อใชเปนเครื่องมือในการบริหารการใชงานอินเทอรเน็ตสําหรับองคกรไดอยางมีประสิทธภิาพมาก เปนการสงเสริมใหมีการนําเอาโอเพนซอรสมาใชงานใหแพรหลายมากยิ่งขึ้น อีกทั้งยังเปนการประหยัดเงินในการซื้อซอฟตแวรอ่ืนๆที่จะนํามาใชอีกดวย

58

Page 69: ระบบการบริหารการใช ิงานอนเทอร เน็ัตสํบองค าหร กร An ... ระบบการ... · This project

เอกสารอางอิง [1] Linux home Network, “Quick HOWTO : Ch14 : Linux Firewalls Using iptables”, [Online]. Available : http://www.linuxhomenetworking.com/wiki/index.php/Quick_HOWTO_:_Ch14_:_Linux_Firewalls_Using_iptables [2] ทรงเกียรติ ภาวดี, “เริ่มเขียนสคริปตดวยภาษา PERL”, วิตตีก้รุป, 2542 [3] สาธิต ชัยวิวัฒนตระกูล, “เกง PHP5 ใหครบสูตร”, วิตตี้กรุป, 2550 [4] ดร.สมานท ฉิมมณี, “เขยีนโปรแกรม และเรียนรูเครอืขายคอมพิวเตอรดวย UBUNTU+Perl, ไอดีซีฯ, 2552. [5] HTB Linux queuing discipline manual - user guide, [Online]. Available : http://luxik.cdi.cz/~devik/qos/htb/manual/userg.htm

59

Page 70: ระบบการบริหารการใช ิงานอนเทอร เน็ัตสํบองค าหร กร An ... ระบบการ... · This project

ภาคผนวก

60

Page 71: ระบบการบริหารการใช ิงานอนเทอร เน็ัตสํบองค าหร กร An ... ระบบการ... · This project

ภาคผนวก ก. การติดตั้งโปรแกรมที่จําเปน

61

Page 72: ระบบการบริหารการใช ิงานอนเทอร เน็ัตสํบองค าหร กร An ... ระบบการ... · This project

1. วิธีการติดตั้ง Fedora Core 11 การติดตั้ง Fedora Core 11 แบบ text mode เม่ือขึ้นเมนู Welcome to Fedora 11! ใหกด tab แลวพิมพคําวา text ตอทายแลวกด enter

62

Page 73: ระบบการบริหารการใช ิงานอนเทอร เน็ัตสํบองค าหร กร An ... ระบบการ... · This project

63

Page 74: ระบบการบริหารการใช ิงานอนเทอร เน็ัตสํบองค าหร กร An ... ระบบการ... · This project

64

Page 75: ระบบการบริหารการใช ิงานอนเทอร เน็ัตสํบองค าหร กร An ... ระบบการ... · This project

เม่ือติดตั้ง fedora 11 เสร็จแลวใหทําการเซตคา selinux ใหเปน disabled โดยใชคําสั่ง vi /etc/sysconfig/selinux แลวแกคา selinux = disabled จากนั้นใหทําการเซตคาของ eth0 และ eth1 ใชคําสั่ง vi /etc/sysconfig/network-scripts/ifcfg-eth0 แกไขไฟลใหเปนดังนี้ # Networking Interface DEVICE=eth0 HWADDR=00:0c:29:cb:a7:bb ONBOOT=yes BOOTPROTO=dhcp TYPE=Ethernet USERCTL=no PEERDNS=yes IPV6INIT=no

65

Page 76: ระบบการบริหารการใช ิงานอนเทอร เน็ัตสํบองค าหร กร An ... ระบบการ... · This project

ใชคําสั่ง vi /etc/sysconfig/network-scripts/ifcfg-eth1 แกไขไฟลใหเปนดังนี้ # Networking Interface DEVICE=eth1 HWADDR=00:0c:29:cb:a7:c5 ONBOOT=yes BOOTPROTO=none IPADDR=192.168.100.1 NETMASK=255.255.255.0 TYPE=Ethernet IPV6INIT=no USERCTL=no จากนั้นใชคําสั่ง chkconfig network on เพ่ือให network ทํางานเมื่อมีการ boot เครื่องใหมทุกครั้ง และสั่ง reboot เครื่องโดยใชคําสั่ง shutdown –r now 2. วิธีการติดตั้ง Web Server

• httpd, openssl, mod_ssl โดยใชคําสั่ง [root@gateway ~]# yum install httpd openssl mod_ssl –y [root@localhost ~]# yum install httpd openssl mod_ssl -y 3. วิธีการติดตั้ง MySQL Server

• mysql-server โดยใชคําสั่ง [root@gateway ~]# yum install mysql-server –y [root@localhost ~]# yum install mysql-server -y

66

Page 77: ระบบการบริหารการใช ิงานอนเทอร เน็ัตสํบองค าหร กร An ... ระบบการ... · This project

4. วิธีการติดตั้ง PHP

• php โดยใชคําสั่ง [root@gateway ~]# yum install php –y [root@localhost ~]# yum install php -y 5. วิธีการติดตั้ง PHP ใหรูจัก MySQL

• php-mysql

• php-mbstring

• php-mcrypt โดยใชคําสั่ง [root@gateway ~]# yum install php-mysql php-mbstring php-mcrypt –y [root@localhost ~]# yum install php-mysql php-mbstring php-mcrypt -y 6. วิธีการติดตั้ง SNMP

• net-snmp

• net-snmp-utils

• net-snmp-perl โดยใชคําสั่ง [root@gateway ~]# yum install net-snmp net-snmp-utils net-snmp-perl –y [root@localhost ~]# yum install net-snmp net-snmp-utils net-snmp-perl -y 7. วิธีการติดตั้ง RRDtool

• rrdtool

• rrdtool-php

• rrdtool-perl โดยใชคําสั่ง [root@gateway ~]# yum install rrdtool rrdtool-php rrdtool-perl -y

67

Page 78: ระบบการบริหารการใช ิงานอนเทอร เน็ัตสํบองค าหร กร An ... ระบบการ... · This project

[root@localhost ~]# yum install rrdtool rrdtool-php rrdtool-perl -y 8. วิธีการติดตั้ง PERL

• perl โดยใชคําสั่ง [root@gateway ~]# yum install perl –y [root@localhost ~]# yum install perl -y 9. วิธีการติดตั้ง Squid

• Squid โดยใชคําสั่ง [root@gateway ~]# yum install squid –y [root@localhost ~]# yum install squid -y 10. วิธีการติดตั้ง Conntrack

• Conntrack โดยใชคําสั่ง [root@gateway ~]# yum install conntrack –y [root@localhost ~]# yum install conntrack -y

68

Page 79: ระบบการบริหารการใช ิงานอนเทอร เน็ัตสํบองค าหร กร An ... ระบบการ... · This project

ภาคผนวก ข. การเซตคาตางๆและสคริปตที่เกี่ยวของ

69

Page 80: ระบบการบริหารการใช ิงานอนเทอร เน็ัตสํบองค าหร กร An ... ระบบการ... · This project

1. การเซตคาให linux forward packet แกไขไฟล /etc/sysctl.conf โดยใชคําสั่ง vi / etc/sysctl.conf เดิม net.ipv4.ip_forward = 0 เปน net.ipv4.ip_forward = 1 2. การเซตการทํางานของ iptables

เปนการเซตใหแพ็กเก็ตที่วิ่งมายังเครื่องเกตเวยใหทํางานตามที่เรากําหนดไว โดยการสรางสคริปตที่มีชื่อ วา gateway.sh ซึ่งมีรายละเอียดดังนี้ #!/bin/bash # gateway.sh # Mangle Table #ลบขอมูลใน Mangle Table iptables -F -t mangle #MARK ทุกแพ็กเก็ตที่เขามาทาง eth1 ใหมีคาเทา 0x04 iptables -t mangle -A PREROUTING -i eth1 -s 192.168.100.0/24 -j MARK --set-mark 0x04 # Redirect แพ็กเก็ตที่มี MARK 0x04 ไปยังหนา Login iptables -t nat -A PREROUTING -i eth1 -p tcp -m mark --mark 0x04 -j DNAT --to-destination 192.168.100.1:8000 #สคริปตสําหรับ การเซตไอพีแอดเดรสผูบริหารที่ไมตองมีการยืนยันตัวตน /var/www/html/admin/ip_auth.pl # Filter Table #ลบขอมูลใน Filter table iptables -F #กําหนด Policy Filter Table INPUT เปน ACCEPT iptables -P INPUT ACCEPT #กําหนด Policy Filter Table FORWARD เปน DROP iptables -P FORWARD DROP #ทํา STATEFUL iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT

70

Page 81: ระบบการบริหารการใช ิงานอนเทอร เน็ัตสํบองค าหร กร An ... ระบบการ... · This project

#อนุญาตใหแพ็กเก็ตที่มี MARK 0x01 สามารถ FORWAD ผานได iptables -A FORWARD -m mark --mark 0x01 -j ACCEPT #อนุญาตให DNS (port 53) สามารถ FORWAD ผานได iptables -A FORWARD -p udp --dport 53 -j ACCEPT #Nat Table #ลบขอมูลใน Nat Table iptables -F -t nat iptables -t nat -A PREROUTING -i eth1 -p tcp -d 192.168.100.1 --dport 22 -j RETURN iptables -t nat -A PREROUTING -i eth1 -p tcp -d 192.168.100.1 --dport 8001 -j RETURN #เปนการทํา transparent proxy iptables -t nat -A PREROUTING -i eth1 -p tcp -m mark --mark 0x01 --dport 80 -j REDIRECT --to-port 8080 #เปนการทํา NAT iptables -t nat -A POSTROUTING -o eth0 -s 192.168.100.0/24 -j MASQUERADE

เม่ือสรางไฟลชื่อ gateway.sh เรียบรอยแลวก็นําไปไว ใน /etc/gateway.sh และเพื่อใหสคริปตนี้ ทํางานทุกครั้งเม่ือมีการบูตเครื่องใหม โดยการเขาไปแกไขไฟล /etc/rc.local โดยใชคําสั่ง vi /etc/rc.local เพ่ิมบรรทัดที่วา sh /etc/gateway.sh ลงไป

#!/bin/sh # # This script will be executed *after* all the other init scripts. # You can put your own initialization stuff in here if you don't # want to do the full Sys V style init stuff. touch /var/lock/subsys/local sh /etc/gateway.sh

71

Page 82: ระบบการบริหารการใช ิงานอนเทอร เน็ัตสํบองค าหร กร An ... ระบบการ... · This project

สําหรับ ไฟล ip_auth.pl จะเปนไฟลที่ใชสําหรับเพ่ิมไอพีแอดเดรสที่ไมตองมีการยืนยันตัวตน เขาไปใน iptables โดยมีรายละเอียดดังนี้

#!/usr/bin/perl open( MYFILE, "/var/www/html/admin/ip_auth.inc"); @data = <MYFILE>; close( MYFILE); foreach $ip_addr (@data){ chomp($ip_addr); $add_ip = "/sbin/iptables -t mangle -A PREROUTING -s ". $ip_addr ." -j MARK --set-mark 0x01 \n"; # print $add_ip; system($add_ip); }

ไฟล /var/www/html/admin/ip_auth.inc จะเปนไฟลที่เก็บไอพีแอดเดรสที่ไมตองทําการ ยืนยันตนตัวตน และไฟล ip_auth.pl จะเปนสคริปตที่อานคาไอพีแอดเดรสจากไฟล ip_auth.incและนําไปใสใน iptables 3. การเซต Web Server

ในการทําให apache สามารถที่จะรันคําสั่งตางๆผานทางเว็บไดนั้น เราจําเปนตองมีการแกไขไฟล /etc/sudoers เพ่ือเพ่ิมสิทธิใหกับ apache สามารถใชคําสั่งตางๆน้ันได โดยการใชคําสั่ง visudo เพ่ือเพ่ิมบรรทัดที่วา apache ALL=NOPASSWD: ALL เขาไป [root@gateway admin]# visudo # ## The COMMANDS section may have other options added to it. ## ## Allow root to run any commands anywhere root ALL=(ALL) ALL apache ALL=NOPASSWD: ALL # # "/etc/sudoers.tmp" 97L, 3298C

72

Page 83: ระบบการบริหารการใช ิงานอนเทอร เน็ัตสํบองค าหร กร An ... ระบบการ... · This project

การเซตคาของ apache ใหเขาไปที่แกไขที่ /etc/httpd/conf/httpd.conf ดังนี้ [root@localhost ~]# vi /etc/httpd/conf/httpd.conf จากเดิม #Listen 80 แกเปน Listen 192.168.100.1:8000 การเซตคา apache + SSL เม่ือทําการติดตั้ง apache และ openssl เรียบรอยใหทําการสรางกุญแจสําหรับ Server โดยใชคําสั่ง openssl ดังนี้ [root@localhost ~]# openssl genrsa -des3 1024 > /etc/pki/tls/private/server.key Generating RSA private key, 1024 bit long modulus .++++++ .++++++ e is 65537 (0x10001) Enter pass phrase: (ใสรหัสผาน) Verifying - Enter pass phrase: (ใสรหัสผานอีกคร้ังใหเหมือนเดิม) [root@localhost ~]#

เม่ือสรางไฟล server.key เสร็จใหทําการรวมรหัสผานกับไฟลที่สรางขึ้นอีกครั้งโดยใชคําสั่ง [root@localhost private]# openssl rsa -in /etc/pki/tls/private/server.key -out /etc/pki/tls/private/server.key Enter pass phrase for /etc/pki/tls/private/server.key: (ใสรหัสผานใหตรงกับขั้นแรก) writing RSA key [root@localhost private]#

ขั้นตอไปเราจะนําเอารหัสกุญแจที่ไดจากตอนแรกมาสรางไฟล server.crs ดังนี้

[root@localhost private]# openssl req -new -key /etc/pki/tls/private/server.key -out /etc/pki/tls/certs/server.csr

73

Page 84: ระบบการบริหารการใช ิงานอนเทอร เน็ัตสํบองค าหร กร An ... ระบบการ... · This project

You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [GB]:TH State or Province Name (full name) [Berkshire]:Bangkok Locality Name (eg, city) [Newbury]:Nongjok Organization Name (eg, company) [My Company Ltd]:MSNE02 Organizational Unit Name (eg, section) []: Common Name (eg, your name or your server's hostname) []:Gateway Email Address []:[email protected] Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []: [root@localhost private]#

ขั้นตอไปเปนการกําหนดอายุของรหัสกุญแจใหกับไฟลที่สรางเสร็จแลวคือไฟล server.key ตัวอยางนี้กําหนดให 1ป (365 วัน) ดังนี้

[root@localhost private]# openssl x509 -in /etc/pki/tls/certs/server.csr -out /etc/pki/tls/certs/server.crt -req -signkey /etc/pki/tls/private/server.key -days 365 Signature ok subject=/C=TH/ST=Bangkok/L=Nongjok/O=MSNE02 /CN=Gateway/[email protected] Getting Private key [root@localhost private]#

74

Page 85: ระบบการบริหารการใช ิงานอนเทอร เน็ัตสํบองค าหร กร An ... ระบบการ... · This project

เม่ือเสร็จสิ้นการทํารหัสกุญแจใหกับ Server แลวตอไปจะเปนการเซตใหโปรแกรม apache ใหมาอานคาจากไฟลที่สรางขึ้น ดังนี้ [root@localhost ~]# vi /etc/httpd/conf.d/ssl.conf จากเดิม Listen 443 แกไขเปน Listen 8001 จากเดิม SSLCertificateFile /etc/pki/tls/certs/localhost.crt แกไขเปน SSLCertificateFile /etc/pki/tls/certs/server.crt จากเดิม SSLCertificateKeyFile /etc/pki/tls/private/localhost.key แกไขเปน SSLCertificateKeyFile /etc/pki/tls/private/server.key 4. การเซต MySQL Server วิธีการแกอานภาษาไทยไมออก ????? ทําดังนี้ [root@gateway ~]# vi /etc/my.cnf [mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock user=mysql # Default to using old password format for compatibility with mysql 3.x # clients (those using the mysqlclient10 compatibility package). old_passwords=1 เพิ่มบรรทัด default-character-set=tis620 skip-character-set-client-handshake

75

Page 86: ระบบการบริหารการใช ิงานอนเทอร เน็ัตสํบองค าหร กร An ... ระบบการ... · This project

5. การเซต SNMP สําหรับการเซต SNMP ใหเขาไปแกไขไฟล snmp.conf ดังนี้ [root@gateway ~]# vi /etc/snmp/snmpd.conf เพิ่มบรรทัด # Make at least snmpwalk -v 1 localhost -c public system fast again. # name incl/excl subtree mask(optional) view systemview included .1.3.6.1.2.1.1 view systemview included .1.3.6.1.2.1.25.1.1 view systemview included .1 #### # Finally, grant the group read-only access to the systemview view. คา OID ของ CPU OID ssCpuRawUser = .1.3.6.1.4.1.2021.11.50.0 OID ssCpuRawNice = .1.3.6.1.4.1.2021.11.51.0 OID ssCpuRawSystem = .1.3.6.1.4.1.2021.11.52.0 OID ssCpuRawIdle = .1.3.6.1.4.1.2021.11.53.0 CPU Usage = User + System + Nice Total CPU = User + System + Nice +Idle สคริปตสําหรบัการดึงคาของ CPU #!/usr/bin/perl use SNMP; use RRDs; my $oid_ssCpuRawUser = ".1.3.6.1.4.1.2021.11.50.0"; my $oid_ssCpuRawNice = ".1.3.6.1.4.1.2021.11.51.0"; my $oid_ssCpuRawSystem = ".1.3.6.1.4.1.2021.11.52.0"; my $oid_ssCpuRawIdle = ".1.3.6.1.4.1.2021.11.53.0"; my $session = new SNMP::Session( DestHost =>"localhost",Community =>"public",Version =>'1');

76

Page 87: ระบบการบริหารการใช ิงานอนเทอร เน็ัตสํบองค าหร กร An ... ระบบการ... · This project

my $cpuUser =$session->get($oid_ssCpuRawUser); my $cpuSystem=$session->get($oid_ssCpuRawSystem); my $cpuNice=$session->get($oid_ssCpuRawNice); my $cpuIdle=$session->get($oid_ssCpuRawIdle); #print "cpuUser :".$cpuUser."\n"; #print "cpuSystem :".$cpuSystem."\n"; #print "cpuNice :".$cpuNice."\n"; #print "cpuIdle :".$cpuIdle."\n"; RRDs::update("/var/www/html/admin/rrdtool/cpuload.rrd","N:".$cpuUser.":".$cpuSystem.":".$cpuNice.":".$cpuIdle); คา OID ของ Memory OID memTotalReal = .1.3.6.1.4.1.2021.4.5.0 OID memAvailReal = .1.3.6.1.4.1.2021.4.6.0 Memory usage = memTotalReal – memAvailReal สคริปตสําหรบัการดึงคาของ Memory #!/usr/bin/perl use SNMP; use RRDs; my $oid_memTotalReal = ".1.3.6.1.4.1.2021.4.5.0"; my $oid_memAvailReal = ".1.3.6.1.4.1.2021.4.6.0"; my $session = new SNMP::Session( DestHost =>"localhost",Community =>"public",Version =>'1'); my $mem_avail=$session->get($oid_memAvailReal); my $mem_total =$session->get($oid_memTotalReal); #print "Memory Avail :".$mem_avail."\n"; #print "Memory Total :".$mem_total."\n"; RRDs::update("/var/www/html/admin/rrdtool/memory.rrd", "N:".$mem_avail.":".$mem_total);

77

Page 88: ระบบการบริหารการใช ิงานอนเทอร เน็ัตสํบองค าหร กร An ... ระบบการ... · This project

คา OID สําหรับ eth0 OID ifInOctets = .1.3.6.1.2.1.2.2.1.10.2 OID ifOutOctets = .1.3.6.1.2.1.2.2.1.16.2 คา OID สําหรับ eth1 OID ifInOctets = .1.3.6.1.2.1.2.2.1.10.3 OID ifOutOctets = .1.3.6.1.2.1.2.2.1.16.3 สคริปตสําหรบัการดึงคาของ eth0 และ eth1 #!/usr/bin/perl use SNMP; use RRDs; my $session = new SNMP::Session( DestHost =>"localhost",Community =>"public",Version =>'1'); my $in = $session->get(".1.3.6.1.2.1.2.2.1.10.2"); my $out =$session->get(".1.3.6.1.2.1.2.2.1.16.2"); #print $in."\n"; #print $out."\n"; RRDs::update("/var/www/html/admin/rrdtool/eth0.rrd", "N:".$in.":".$out); $in = $session->get(".1.3.6.1.2.1.2.2.1.10.3"); $out =$session->get(".1.3.6.1.2.1.2.2.1.16.3"); #print $in."\n"; #print $out."\n"; RRDs::update("/var/www/html/admin/rrdtool/eth1.rrd", "N:".$in.":".$out);

จากน้ันใหตั้งเวลาใหอัพเดตขอมูลทุกๆ 5 นาที โดยการใชคําสั่ง crontab –e แลวใส ขอมูลตามดานลางนี้ */5 * * * * /var/www/html/admin/rrdtool/interface.pl */5 * * * * /var/www/html/admin/rrdtool/cpu.pl */5 * * * * /var/www/html/admin/rrdtool/mem.pl

78

Page 89: ระบบการบริหารการใช ิงานอนเทอร เน็ัตสํบองค าหร กร An ... ระบบการ... · This project

6. การเซต RRDtool สคริปตสําหรับการสรางฐานขอมูลของ CPU #!/bin/sh rrdtool create /var/www/html/admin/rrdtool/cpuload.rrd --step 300 \ DS:user:COUNTER:600:0:U \ DS:system:COUNTER:600:0:U \ DS:nice:COUNTER:600:0:U \ DS:idle:COUNTER:600:0:U \ RRA:AVERAGE:0.5:1:864: \ RRA:AVERAGE:0.5:6:672: \ RRA:AVERAGE:0.5:24:744: \ RRA:AVERAGE:0.5:288:730: สคริปตสําหรับการสรางฐานขอมูลของ Memory #!/bin/sh rrdtool create /var/www/html/admin/rrdtool/memory.rrd --step 300 \ DS:mem_avail:ABSOLUTE:600:0:U \ DS:mem_total:ABSOLUTE:600:0:U \ RRA:AVERAGE:0.5:1:864: \ RRA:AVERAGE:0.5:6:672: \ RRA:AVERAGE:0.5:24:744: \ RRA:AVERAGE:0.5:288:730: สคริปตสําหรับการสรางฐานขอมูลของ eth0 และ eth1 #!/bin/sh rrdtool create /var/www/html/admin/rrdtool/eth0.rrd --step 300 \ DS:bytes_in:COUNTER:600:U:U \ DS:bytes_out:COUNTER:600:U:U \ RRA:AVERAGE:0.5:1:864: \ RRA:AVERAGE:0.5:6:672: \ RRA:AVERAGE:0.5:24:744: \ RRA:AVERAGE:0.5:288:730:

79

Page 90: ระบบการบริหารการใช ิงานอนเทอร เน็ัตสํบองค าหร กร An ... ระบบการ... · This project

rrdtool create /var/www/html/admin/rrdtool/eth1.rrd --step 300 \ DS:bytes_in:COUNTER:600:U:U \ DS:bytes_out:COUNTER:600:U:U \ RRA:AVERAGE:0.5:1:864: \ RRA:AVERAGE:0.5:6:672: \ RRA:AVERAGE:0.5:24:744: \ RRA:AVERAGE:0.5:288:730: การแสดงผลของกราฟ CPU โดยใช PHP <html> <head> <title>CPU Load statistics</title> <META HTTP-EQUIV="Refresh" CONTENT="10"> </head> <body> <?php function cpuload($start) { $database="cpuload.rrd"; $imgfile="cpuload$start.png"; $opts = array( "--start", "$start", "--vertical-label", "CPU Load (%)", "--width", "400", "-l 0","-u 100","-r", "DEF:cpu_user=$database:user:AVERAGE", "DEF:cpu_idle=$database:idle:AVERAGE", "DEF:cpu_nice=$database:nice:AVERAGE", "DEF:cpu_system=$database:system:AVERAGE", "CDEF:total=cpu_user,cpu_system,cpu_nice,cpu_idle,+,+,+", "CDEF:usecpu=cpu_user,cpu_system,cpu_nice,+,+", "CDEF:usepct=100,usecpu,total,/,*", "CDEF:idlepct=100,cpu_idle,total,/,*", "AREA:usepct#0000FF:CPU usage\\j",

80

Page 91: ระบบการบริหารการใช ิงานอนเทอร เน็ัตสํบองค าหร กร An ... ระบบการ... · This project

"STACK:idlepct#00FF00:CPU idle\\j", "GPRINT:usepct:MAX:Max.usage\\:%3.2lf%%", "GPRINT:usepct:AVERAGE:Avg.usage\\:%3.2lf%%", "GPRINT:usepct:LAST:Current usage\\:%3.2lf%%\\j", "GPRINT:idlepct:MAX:Max.idle\\:%3.2lf%%", "GPRINT:idlepct:AVERAGE:Avg.idle\\:%3.2lf%%", "GPRINT:idlepct:LAST:Current idle\\:%3.2lf%%\\j" ); make_graph($imgfile,$opts); } function make_graph($file,$options) { $ret=rrd_graph($file,$options,count($options)); if(is_array($ret)) { echo "<img src=\"$file\" border=0>"; }else{ $err =rrd_error(); echo "<p><b>ERROR: $err</b></p>"; } } echo "<center>"; echo "<h2>CPU Load</h2>\n"; cpuload("-6h"); echo "</center>"; ?> </body> </html>

81

Page 92: ระบบการบริหารการใช ิงานอนเทอร เน็ัตสํบองค าหร กร An ... ระบบการ... · This project

การแสดงผลของกราฟ Memory โดยใช PHP <html> <head> <title>Memory Used statistics</title> <META HTTP-EQUIV="Refresh" CONTENT="10"> </head> <body> <?php function memory_used($start) { $database="memory.rrd"; $imgfile="memory$start.png"; $opts = array( "--start", "$start", "--vertical-label", "Memory Usage (%)", "--width", "400", "-l 0","-u 100","-r", "DEF:avail=$database:mem_avail:AVERAGE", "DEF:total=$database:mem_total:AVERAGE", "CDEF:used=total,avail,-", "CDEF:mem_used=100,used,total,/,*", "AREA:mem_used#FF0000:Memory usage\\j", "GPRINT:mem_used:MAX:Max.usage\\:%3.2lf%%", "GPRINT:mem_used:AVERAGE:Avg.usage\\:%3.2lf%%", "GPRINT:mem_used:LAST:Current usage\\:%3.2lf%%\\j", ); make_graph($imgfile,$opts); }

82

Page 93: ระบบการบริหารการใช ิงานอนเทอร เน็ัตสํบองค าหร กร An ... ระบบการ... · This project

function make_graph($file,$options) { $ret=rrd_graph($file,$options,count($options)); if(is_array($ret)) { echo "<img src=\"$file\" border=0>"; }else{ $err =rrd_error(); echo "<p><b>ERROR: $err</b></p>"; } } echo "<center>"; echo "<h2>Memory Usage</h2>\n"; memory_used("-6h"); echo "</center>"; ?> </body> </html> การแสดงผลของกราฟ eth0 และ eth1 โดยใช PHP <html> <head> <title>Interface statistics</title> <META HTTP-EQUIV="Refresh" CONTENT="10"> </head> <body> <?php function interfaces($start,$_eth) { $database="$_eth.rrd";

83

Page 94: ระบบการบริหารการใช ิงานอนเทอร เน็ัตสํบองค าหร กร An ... ระบบการ... · This project

$imgfile="$_eth$start.png"; $opt=array("--start","$start", "--vertical-label","bits/sec", "--width","400", "DEF:in=$database:bytes_in:AVERAGE", "DEF:out=$database:bytes_out:AVERAGE", "CDEF:bits_in=in,8,*", "CDEF:bits_out=out,8,*", "AREA:bits_in#00ff00:In ", "GPRINT:bits_in:MAX: Max\\:%5.1lf %Sbps", "GPRINT:bits_in:AVERAGE: Avg\\:%5.1lf %Sbps", "GPRINT:bits_in:LAST: Current\\:%5.1lf %Sbps\\j", "LINE2:bits_out#0000ff:Out", "GPRINT:bits_out:MAX: Max\\:%5.1lf %Sbps", "GPRINT:bits_out:AVERAGE: Avg\\:%5.1lf %Sbps", "GPRINT:bits_out:LAST: Current\\:%5.1lf %Sbps\\j" ); make_graph($imgfile,$opt); } function make_graph($file,$options) { $ret=rrd_graph($file,$options,count($options)); if(is_array($ret)) { echo "<img src=\"$file\" border=0>"; }else{ $err =rrd_error(); echo "<p><b>ERROR: $err</b></p>"; } } echo "<center>";

84

Page 95: ระบบการบริหารการใช ิงานอนเทอร เน็ัตสํบองค าหร กร An ... ระบบการ... · This project

echo "<h2>eth0</h2>\n"; interfaces("-6h","eth0"); echo "<h2>eth1</h2>\n"; interfaces("-6h","eth1"); echo "</center>"; ?> </body> </html>

85