Để có những dịch vụ mạng tốt, hoạt động ổn định và trơn tru thì hạ tầngmạng phải được xây dựng và vận hành một cách hiệu quả. Tuy nhiên với sự pháttriển của Internet ngày nay đang kéo theo sự tăng trưởng về quy mô lẫn công nghệnhiều loại mạng LAN, WAN cùng với sự đa dạng về thiết bị mạng nên việc xâydựng một hạ tầng dịch vụ mạng đòi hỏi người quản trị mạng hệ thống phải có kinhnghiệm và nắm bắt được nhiều công nghệ khác nhau. Và sau khi đã xây dựng đượcmột hạ tầng mạng chạy ổn định, chúng ta phải duy trì nó; đó là công việc lâu dài vàđòi hỏi nhiều đầu tư về mặt nhân công lẫn kinh phí. Một dịch vụ mạng tốt có thểđược ví như một gói tin được truyền đi trong môi trường bảo mật, nó phải đảm bảocác tính chất về độ ổn định, độ tin cậy và tính toàn vẹn. Dịch vụ của chúng ta phảiluôn sẵn sàng đối với người dùng, tiếp tiếp nhận và xử lý bất kỳ yêu cầu nào đó mộtcách chính xác, đầy đủ. Để thực hiện được các yêu cầu đó, người quản trị mạng hệthống ngoài kiến thức về cấu hình hệ thống thì cần có kiến thức về mặt giám sát vàbiết cách sử dụng các công cụ giám sát mạng. Đó có thể là các công cụ có sẵn hayđơn thuần là những scripts nhỏ tự mình viết ra;
Trang 1ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN KHOA MẠNG MÁY TÍNH VÀ TRUYỀN THÔNG
NGÔ DUY KHÁNH NGUYỄN TRỌNG NHÂN
KHÓA LUẬN TỐT NGHIỆP
HỆ THỐNG GIÁM SÁT HẠ TẦNG VÀ DỊCH VỤ
MẠNG
KỸ SƯ NGÀNH MẠNG MÁY TÍNH VÀ TRUYỀN THÔNG
TP HỒ CHÍ MINH, 2014
Trang 2TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN KHOA MẠNG MÁY TÍNH VÀ TRUYỀN THÔNG
NGÔ DUY KHÁNH - 09520414 NGUYỄN TRỌNG NHÂN - 09520425
KHÓA LUẬN TỐT NGHIỆP
HỆ THỐNG GIÁM SÁT HẠ TẦNG VÀ DỊCH VỤ
MẠNG
KỸ SƯ NGÀNH MẠNG MÁY TÍNH VÀ TRUYỀN THÔNG
GIẢNG VIÊN HƯỚNG DẪN
TS ĐÀM QUANG HỒNG HẢI
TP HỒ CHÍ MINH, 2014
Trang 3DANH SÁCH HỘI ĐỒNG BẢO VỆ KHÓA LUẬN
Hội đồng chấm khóa luận tốt nghiệp, thành lập theo Quyết định số ………ngày ……… của Hiệu trưởng Trường Đại học Công nghệ Thông tin
1 ……… – Chủ tịch
2 ……… – Thư ký
3 ……… – Ủy viên
4 ……… – Ủy viên
Trang 4LỜI MỞ ĐẦU
Để có những dịch vụ mạng tốt, hoạt động ổn định và trơn tru thì hạ tầngmạng phải được xây dựng và vận hành một cách hiệu quả Tuy nhiên với sự pháttriển của Internet ngày nay đang kéo theo sự tăng trưởng về quy mô lẫn công nghệnhiều loại mạng LAN, WAN cùng với sự đa dạng về thiết bị mạng nên việc xâydựng một hạ tầng dịch vụ mạng đòi hỏi người quản trị mạng / hệ thống phải có kinhnghiệm và nắm bắt được nhiều công nghệ khác nhau Và sau khi đã xây dựng đượcmột hạ tầng mạng chạy ổn định, chúng ta phải duy trì nó; đó là công việc lâu dài vàđòi hỏi nhiều đầu tư về mặt nhân công lẫn kinh phí Một dịch vụ mạng tốt có thểđược ví như một gói tin được truyền đi trong môi trường bảo mật, nó phải đảm bảocác tính chất về độ ổn định, độ tin cậy và tính toàn vẹn Dịch vụ của chúng ta phảiluôn sẵn sàng đối với người dùng, tiếp tiếp nhận và xử lý bất kỳ yêu cầu nào đó mộtcách chính xác, đầy đủ Để thực hiện được các yêu cầu đó, người quản trị mạng / hệthống ngoài kiến thức về cấu hình hệ thống thì cần có kiến thức về mặt giám sát vàbiết cách sử dụng các công cụ giám sát mạng Đó có thể là các công cụ có sẵn hayđơn thuần là những scripts nhỏ tự mình viết ra; tất cả đều nhắm tới mục tiêu là làmsao để nắm bắt được tình hình, trạng thái mạng của chúng ta và đồng thời có thể dựđoán trước được những rủi ro có thể xay ra
Ngày nay việc duy trì một hệ thống hạ tầng dịch vụ mạng sau khi đã triểnkhai là điều tất yếu phải làm Ngoài xây dự chúng ta còn phải giám sát; để giám sáttốt chúng ta cần những công cụ tốt Qua quá trình học tập tại trường Đại học CôngNghệ Thông Tin – ĐHQG HCM, được nghiên cứu và làm việc nhiều về mạng máytính, chúng em nhận ra được rằng việc giám sát những dịch vụ mạng, hạ tầng mạnghiện nay vẫn rất kém phát triển và không được đầu tư, đại đa số các giải pháp, công
cụ giám sát có trên thị trường đều xuất phát từ các cá nhân riêng rẽ và không thực
sự đáp ứng được đầy đủ các nhu cầu về giám sát mạng Do vậy, chúng em chọn đề
“Hệ thống giám sát hạ tầng và dịch vụ mạng” với mong muốn xây dựng được một
hệ thống có thể đáp ứng được những nhu cầu trên
Trang 5LỜI CÁM ƠN
Khóa luận tốt nghiệp đại học là cột mốc đánh dấu một bước phát triển mới
về tri thức của sinh viên Là tiền đề cho những nghiên cứu, phát triển rộng lớn hơnsau này; để có thể trở thành những kỹ sư giỏi, đóng góp cho sự nghiệp phát triểncủa đất nước
Trong quá trình thực hiện khoá luận tốt nghiệp, chúng em đã được sự giúp
đỡ, hướng dẫn, hỗ trợ và động viên từ gia đình, từ quý thầy cô cùng các bạn Nhờ
đó mà em đã hoàn thành được luận văn như mong muốn, nay xin cho phép em đượcgửi lời cám ơn sâu sắc và chân thành đến:
Các thầy cô ở trường Đại Học Công Nghệ Thông Tin – ĐHQG HCM đãtruyền đạt cho chúng em nhiều kiến thức và kinh nghiệm từ đó chúng em được mởmang tri thức và kỹ năng cho công việc sau này Bên cạnh đó, chúng em cũng xinđược gửi lời cảm ơn đến ban giám hiệu trường Đại Học Công Nghệ Thông Tin vàcác ban ngành đã tạo mọi điều kiện thuận lợi giúp đỡ chúng em trong quá trình họctập tại trường Đồng thời cũng được gửi lời cảm ơn tới tất cả bạn bè trong khoaMạng máy tính đã cùng nhau sát cánh trong suốt 4 năm học tập và hoạt động tạitrường và đã tận tụy giúp đỡ nhau khi gặp khó khăn
Chúng em xin gửi lời cám ơn chân thành đến thầy Đàm Quang Hồng Hải,người đã trực tiếp hướng dẫn chúng em trong suốt quá trình thực hiện đề tài Là mộtgiảng viên lâu năm trong ngành mạng máy tính cùng với tác phong làm việc chuyênnghiệp, thầy đã có những sự hướng dẫn, góp ý, đánh giá quý báu để từ đó chúng em
có thể hoàn thành luận văn một cách thuận lợi nhất
Cuối cùng, chúng em xin được gửi lời cảm ơn chân thành nhất tới các bậcsinh thành Ba mẹ là người đã dạy dỗ và nuôi nấng chúng em khôn lớn và luôn lànhững người đồng hành cùng chúng em cho đến khi chúng em bước chân vào giảngđường đại học, luôn bên cạnh chúng em và chia sẻ mỗi lúc chúng em gặp khó khăntrong cuộc sống
Một lần nữa chúng em xin chân thành cảm ơn Chúc tất cả mọi người sứckhỏe và thành đạt
Tp Hồ Chí Minh, tháng 2 năm 2014
Sinh viên thực hiện
Trang 6NHẬN XÉT (Của giảng viên hướng dẫn)
NHẬN XÉT
Trang 7(Của giảng viên phản biện)
MỤC LỤC
Trang 9DANH MỤC HÌNH
Hình 2.1: Mô hình kiến trúc phân lớp của Vmware vSphere 14
Hình 2.2: Hình minh họa quá trình lấy sysName.0 21
Hình 2.3: Cấu trúc cây phân cấp của MIB 21
Hình 3.1: Cấu trúc thư mục của Laravel framework 29
Hình 3.2: Cấu trúc thư mục app của Laravel framework 30
Hình 3.3: Quá trình xử lý của Laravel framework 33
Hình 4.1: Giao diện Dashboard liệt kê các website được giám sát bởi Pingdom 42
Hình 4.2: Sơ đồ tổng quát của hệ thống giám sát 44
Hình 4.3: Sơ đồ mô tả hoạt động của một Master Server 46
Hình 4.4: Sơ đồ hoạt động của Master Server đối với kiểu giám sát bằng SNMP 47
Hình 4.5: Sơ đồ hoạt động của Master Server đối với kiểu giám sát bằng SSH 48
Hình 4.6: Sơ đồ hoạt động của Master Server đối với kiểu giám sát bằng API 49
Hình 4.7: Sơ đồ quá trình tương tác giữa Agent và API Server 50
Hình 4.8: Sơ đồ quá trình kiểm tra trạng thái và phát cảnh báo 55
Hình 4.9: Sơ đồ CSDL về quản lý người dùng, thiết bị và các sự kiện 59
Hình 4.10: Sơ đồ CSDL quản lý hệ điều hành Windows và Linux 60
Hình 4.11: Sơ đồ CSDL đối tượng mạng là Router và Switch 61
Hình 4.12: Sơ đồ CSDL đối tượng mạng là hạ tầng ảo hóa VMware 62
Hình 5.1: So sánh giao diện website khi xem trên điện thoại di động 65
Hình 5.2: Form đăng ký tài khoản mới 67
Hình 5.3: Form đăng nhập vào hệ thống giám sát 68
Hình 5.4: Giao diện website sau khi đăng nhập thành công 68
Hình 5.5: Tính năng hiển thị những thông báo mới tới người dùng 69
Hình 5.6: Menu điều hướng trang 70
Hình 5.7: Bảng điều khiển của hệ thống giám sát 70
Hình 5.8: Thêm một đối tượng giám sát mới 71
Hình 5.9: Chọn loại thiết bị cùng phương thức giám sát 72
Trang 10Hình 5.10: Danh sách thiết bị đang được giám sát 73
Hình 5.11: Trang thông tin tổng quan giám sát của hệ điều hành Windows 74
Hình 5.12: Trang thông tin tải mạng của một Interface trên hệ điều hành Linux 74
Hình 5.13: Trang thông tin tổng quan của một Switch Cisco 75
Hình 5.14: Trang thông tin về lưu trữ của một ESXi host 76
Hình 5.15: Bảng thiết lập quy tắc giám sát 76
Hình 5.16: Bảng thông tin liên hệ 77
Hình 5.17: Giao diện ứng dụng Agent trên Windows 88
Hình 5.18: Cấu hình tham số kết nối tớ API Server trên Agent 89
Hình 5.19: Cấu hình sheduler trên Agent 89
Hình 5.20: Mô hình mạng giả lập trên GNS3 90
Hình 5.21: Một switch ở trạng thái DOWN (mất kết nối) 91
Hình 5.22: Chế độ giám sát trạng thái thiết bị 92
Trang 11DANH MỤC BẢNG
Bảng 2.1: Phân tầng của ảo hóa trên hệ điều hành 10Bảng 2.2: Phân tầng của ảo hóa phần cứng 10Bảng 4.1: Rule mặc định của người dùng mới 53
Trang 12CHƯƠNG 1 – TỔNG QUANG ĐỀ TÀI
1.1 TÊN ĐỀ TÀI
Tên tiếng việt: Hệ thống giám sát hạ tầng và dịch vụ mạng
Tên tiếng anh: Network infrastructure and service monitoring system
1.2 LÝ DO CHỌN ĐỀ TÀI
Ngày nay Công nghệ thông tin (CNTT) đã và đang trở thành một trongnhững ngành đóng vai trò quan trọng trong sự phát triển của một đất nước Với sựđóng góp của CNTT, con người chúng ta dần hiện đại hơn trong cách giao tiếp, laođộng sản xuất, giáo dục, nghiên cứu khoa học, an ninh quốc phòng,…
Trong nền kinh tế toàn cầu, với sự phát triển của internet, thương mại điện tửđang trở thành một lĩnh vực phát triển rất mạnh mẽ, nó thúc đẩy các ngành sản xuấtdịch vụ trên phạm vi toàn thế giới, và đặc biệt quan trọng với các nước đang pháttriển, nhất là đối với vùng xa xôi hẻo lánh, các nước và các vùng này có cơ hội tiếpcận thị trường quốc tế Công nghệ thông tin là chiếc chìa khoá để mở cánh cổng vàonền kinh tế tri thức Mạng thông tin là môi trường lý tưởng cho sự sáng tạo, làphương tiện quan trọng để quảng bá và nhân rộng nhanh vốn tri thức, động lực của
sự phát triển, thúc đẩy phát triển dân chủ trong xã hội, phát triển năng lực của conngười…
Một trong những đối tượng qua trọng bậc nhất của CNTT là máy vi tính Kể
từ chiếc máy tính điện tử đầu tiên trên thế giới được J Presper Eckert và JohnMauchly giới thiệu vào tháng 2/1946, qua 67 năm phát triển, máy vi tính ngày naykhông chỉ đơn thuần là công cụ giúp con người thực hiện các phép tính cơ bản nữa
mà nó đã thực sự đóng vai trò trong rất nhiều lĩnh vực Và kể từ khi internet đượccon người tạo ra, ngành CNTT như trở mình, phát triển với tốc độ rất nhanh Cácchuẩn giao thức được thiết lập, các mạng máy tính được mở ra, các thiết bị mạng,máy chủ được sản xuất Tất cả những điều đó đã và đang diễn ra liên tục đòi hỏi conngười chúng ta phải có các phương thức quản lý, giám sát trong quá trình vận hànhchúng
Trang 13Nhằm giúp cho người quản trị mạng, quản trị hệ thống có một công cụ tốthơn trong giám sát hệ thống mạng, máy chủ dịch vụ của mình, nhóm tác giả thựchiện việc xây dựng một hệ thống giám sát thuần Việt để đáp ứng nhu cầu đó.
1.3 MỤC TIÊU ĐỀ TÀI
Về mục tiêu trước mắt, nhóm tác giả dự định xây dựng được một hệ thốnghoàn chỉnh về giám sát hạt tầng mạng, máy chủ dịch vụ mạng Sản phẩm sẽ đượcđưa vào sử dụng trực tuyến sau khi hoàn thành và áp dụng cho người dùng là nhữngngười quản trị hệ thống, quản trị mạng tại Việt Nam Tên miền của sản phẩm luậnvăn là http://www.updownnetwork.com, với chữ “network” ý chỉ về mạng và hai chữ “up” và “down” ý chỉ tới trạng thái của mạng Ở mục tiêu này, nhóm tác giả sẽ
cố gắn xây dựng hoàn chỉnh về các chức năng chính của một hệ thống giám sátmạng, có đầy đủ các chức năng như các sản phẩm thông thường trên thị trường hiệnnay, bên cạnh đó, sẽ tăng cường và cải thiện một số tính năng khác cho phù hợp hơnvới hạ tầng dịch vụ mạng tại Việt Nam hiện nay Sản phẩm sẽ có khả năng giám sátcác thiết bị mạng cơ bản như Router, Switch của Cisco; các dòng máy chủ Linux,Windows và hạ tầng ảo hóa VMware
Về mục tiêu lâu dài, nhóm tác giả sẽ tiếp tục phát triển sản phẩm của mình
để có khả năng hoạt động trong phạm vi người dùng lớn hơn, không chỉ trong nước
mà còn ngoài nước Chức năng của sản phẩm sẽ được cải thiện, thêm mới và có khảnăng làm việc với số lượng thiết bị mạng được giám sát lớn hơn và đa dạng hơn
1.4 ĐỐI TƯỢNG VÀ PHẠM VI NGHIÊN CỨU
Kể từ khi mạng Internet ra đời ngành công nghệ thông tin nói chung vàngành mạng máy tính nói riêng đã phát triển với tốc độ rất nhanh Tới thời điểmhiện tại, số lượng thiết bị mạng rất đa dạng cả về hãng, chủng loại lẫn công nghệ Ví
dụ một Router có thể có nhiều hãng sản xuất, sử dụng nhiều linh kiện phần cứngkhác nhau, hệ điều hành khác nhau Do vậy, có sự đa dạng rất lớn về chuẩn cũngnhư cách thức hoạt động của các thiết bị này Và không chỉ riêng phần cứng nhưRouter, về hệ điều hành Windows hay Linux đã có quá nhiều sự khác biệt trongcách thức hoạt động hay quản lý tài nguyên, Do sự đa dạng to lớn đó, nhóm tác giả
Trang 14giới hạn phạm vi nghiên cứu của đề tài luận văn đối với mục tiêu trước mắt Cụ thểnhư sau:
Giám sát hạ tầng mạng: Giới hạn trong phạm vi giám sát các thiết bịmạng như Router, Switch của hãng Cisco Không hỗ trợ các hãngkhác như Juniper, TPlink,
Hệ điều hành: Giới hạn trong phạm vi giám sát các máy chủ sử dụng
hệ điều hành Windows và Linux Không hỗ trợ một số dòng Unix nhưSolaris, FreeBSD,
Hạ tầng ảo hóa: Giới hạn trong phạm vi giám sát các máy chủ sử dụngcông nghệ ảo hóa VMware vSphere Không hỗ trợ các công nghệ ảohóa khác như Hyper-V, Xen Server,
Do vậy, đề tài tập trung vào việc khai thác thông tin giám sát trên ba đốitượng mạng sau:
Thiết bị mạng
Máy chủ mạng
Hạ tầng ảo hóa
Các đối tượng nghiên cứu:
Các dòng Router, Switch của Cisco: Cách cài đặt cấu hình SNMP,danh sách MIB, OID
Hệ điều hành Linux: Tập lệnh, cách cài đặt SNMP, danh sách MIB,OID; cách thức quản lý tài nguyên
Hệ điều hành Windows: Cách thức quản lý tài nguyên, truy vấn thôngtin hệ thống từ WIN32 API
Hạ tầng ảo hóa VMware vSphere: Tìm hiểu vCenter, ESXi về cáchthức hoạt động, quản lý các đối tượng tài nguyên Tìm hiểu về hệthống API của VMware vSphere
Các ngôn ngữ lập trình Web PHP, Javascript, HTML5, CSS3
Ngôn ngữ lập trình Python
Hệ quản trị cơ sỡ dữ liệu MySQL
Trang 15CHƯƠNG 2 – HỆ ĐIỀU HÀNH MẠNG; THIẾT BỊ MẠNG VÀ CÁC
GIAO THỨC TRONG QUẢN LÝ MẠNG 2.1 HỆ ĐIỀU HÀNH LINUX
2.1.1 LỊCH SỬ HỆ ĐIỀU HÀNH LINUX
Linux là hệ điều hành mô phỏng Unix, được xây dựng trên phần nhân(kernel) và các gói phần mềm mã nguồn mở Linux được công bố dưới bản quyềncủa GPL (General Public Licence)
Unix ra đời giữa những năm 1960, ban đầu được phát triển bởi AT&T, sau đóđược đăng ký thương mại và phát triển theo nhiều dòng dưới các tên khác nhau.Năm 1990 xu hướng phát triển phần mềm mã nguồn mở xuất hiện và được thúc đẩybởi tổ chức GNU Một số licence về mã nguồn mở ra đời ví dụ BSD, GPL Năm
1991, Linus Torvald viết thêm phiên bản nhân v0.01 (kernel) đầu tiên của Linuxđưa lên các BBS, nhóm người dùng để mọi người cùng sử dụng và phát triển Năm
1996, nhân v1.0 chính thức công bố và ngày càng nhận được sự quan tâm của ngườidùng Năm 1999, phiên bản nhân v2.2 mang nhiều đặc tính ưu việt và giúp cholinux bắt đầu trở thành đối thủ cạnh tranh đáng kể của MSwindows trên môi trườngserver Năm 2000 phiên bản nhân v2.4 hỗ trợ nhiều thiết bị mới (đa xử lý tới 32chip, USB, RAM trên 2GB ) bắt đầu đặt chân vào thị trường máy chủ cao cấp
Do là Unix-like; Linux có đầy đủ tất cả các đặc tính của hệ điều hành Unix(fully functional) Ngoài ra nó còn hỗ trợ thêm một số tính năng mà trên Unixkhông có, như long file name (tên file có ký tự space “ ”) Hiện tại có nhiều hãng,nhiều tổ chức, nhiều nhóm khác nhau cùng phát triển Linux Tất cả các phiên bản(release) Linux đều có chung phần kernel (phần nhân của hệ điều hành) và hầu hếtcác tính năng đặc trưng, tuy nhiên các tool (công cụ) và utility (tiện ích) có đôi chút
dị biệt
Ngoài ra, hệ điều hành Linux có độ an toàn cao thông qua cơ chế phân quyềnhết sức rõ ràng và chặt chẽ Tính “mở” cũng tạo nên sự an toàn cao khi sử dụngLinux vì nếu một lỗ hổng bảo mật bất kì được phát hiện trên Linux thì nó sẽ được
cả cộng đồng mã nguồn mở cùng sửa và thường sẽ đưa ra bản vá lỗi sau 24 giờ Các
Trang 16bản phân phối chủ yếu của Linux có thể kể đến như sau: Ubuntu, Debian, RedHat,Fedora, OpenSUSE, Mint, CentOS, Gentoo, Open Solaris …
Hiện nay Linux đang ở thời điểm phát triển mạnh Tính tới năm 2013 thìLinux đã ra đời được 22 năm với nhiều sự cải tiến và hoàn thiện về mặc chức năng.Dần dần Linux không chỉ đóng vai tròng đơn thuần là một hệ điều hành dành chomáy chủ hay máy tính cá nhân nữa, mà nó đã xâm nhập vào nhiều vai trò khác nhautrong công nghệ thông tin như: hệ điều hành cho các máy tính cá nhân, thiết bị diđộng, máy chủ, mainframe, siêu máy tính, nền tảng ảo hóa, Nói tóm lại, ngày nayLinux là một nền tảng Nó là một công nghệ then chốt cho phép ta tạo ra các sảnphẩm mới, mà một vài trong số các sản phẩm đó mới chỉ được giới thiệu gần đây
2.1.2 LINUX SỬ DỤNG TRÊN CÁC MÁY CHỦ
Với các đặc điểm nổi trội về mặc tính năng cũng như tính mở Linux đangchiếm vị thế áp đảo so với hệ điều hành Windows của Microsoft trong thị trườngmáy chủ hiện nay Theo số liệu thống kê từ W3Techs vào tháng 12 năm 2013, sốlượng máy chủ Web sử dụng hệ điều hành Unix nói chung chiếm 66.8% (trong đóLinux chiếm 31.8%) so với hệ điều hành Windows chỉ chiếm 34.1% Ngoài ra, ở thịtrường hệ điều hành dành cho siêu máy tính hoặc các Mainframes, hầu như khôngthấy sự xuất hiện của hệ điều hành Windows (chiếm 0.4% ở mảng hệ điều hành chosiêu máy tính), thay vào đó hệ điều hành Linux, Unix được sử dụng
Thông thường hệ điều hành Linux được cài đặt trên các máy chủ dịch vụ đều
ở dạng không có giao diện người dùng (GUI - Graphic User Interface) điều nàygiúp máy chủ tiết kiệm được khá nhiều tài nguyên cho những dịch vụ không cầnthiết Tuy nhiên, người quản trị sẽ phải thao tác trên hệ điều hành của máy chủ hoàntoàn bằng dòng lệnh hoặc các công cụ quản trị từ xa khác như Puppet, Chef,Fabric, Các máy chủ như thế này có thể có rất nhiều, một người quản trị hệ thống
có thể phải quản trị tới hàng trăm máy chủ Vì thế, công cụ giám sát, theo dõi hệthống là rất cần thiết nhằm đảm bảo các dịch vụ trên máy chủ được vận hành tốt
Trang 17Hiện nay có rất nhiều bản phân phối Linux (Linux distros) được sử dụng phổbiến trên máy chủ như Ubuntu Server, CentOS, Red Hat, SUSE, Mỗi distro đều
có các đặc thù khác nhau tùy theo nhà phát triển Tuy nhiên, chúng đều là Linux,đều được xây dựng dựa trên những mã nguồn kernel tương tự nhau Vì thế việc xâydựng các công cụ quản trị, giám sát hoạt động dùng cho cho các distro này là khá dễdàng và thuận tiện Đây là một trong những điểm nổi bật bên cạnh “tính mở” củaLinux khiến nó ngày càng trở nên phổ biến và được hỗ trợ nhiều hơn bởi các hãngthứ ba và cộng đồng lập trình viên quốc tế, gây áp đảo với hệ điều hành WindowsServer của Microsoft trên thị trường hệ điều hành máy chủ
2.2 HỆ ĐIỀU HÀNH WINDOWS SERVER
2.2.1 LỊCH SỬ HỆ ĐIỀU HÀNH WINDOWS
Hệ điều hành Windows là sản phẩm độc quyền của Microsoft được giới thiệulần đầu tiên vào tháng 11 năm 1985 Có thể nói, hệ điều hành Windows đã mangđến một bước đột phá mới về giao diện người dùng vào thời điểm bấy giờ Giống
như ý nghĩa của nó, Windows tức chỉ “cửa sổ”, hệ điều hành này cung cấp các giao
diện đồ họa, các cửa sổ ứng dụng, tạo ra sự thân thiện hơn cho người dùng so vớichế độ dòng lệnh của các hệ điều hành trước đó Và kể từ đó đến nay, Microsoft dầndần chiếm ưu thế trong thị trường máy tính cá nhân trên toàn thế giới với số lượngmáy tính cài đặt hệ điều hành Windows chiếm khoản 90% vào năm 2004 Một sốđiểm tiêu biều của hệ điều hành Windows có thể kể đến như sau:
Một hệ điều hành đa nhiệm có thể xử lý nhiều chương trình cùng một lúc
Gồm các biểu tượng (icon) Mỗi biểu tượng đại diện cho một đối tượngnhư thư mục hồ sơ (folder), tệp tin (file),
Một trình tổng hợp của các dứng dụng như trình soạn thảo văn bản, trình
đồ họa và các ứng dụng hữu ích như lịch, đồng hồ, máy tính, trình duyệt,trò chơi,
Giao diện đồ họa bắt mắt, dễ sử dụng
Với những ưu điểm đánh tới nhu cầu sử dụng của người dùng cuối như vậy,
hệ điều hành Windows đã và đang dần chiếm vị trí độc tôn trong thi trường hệ điều
Trang 18hành dành cho máy tính cá nhân Tuy nhiên, cũng vì sự phổ biến của hệ điều hànhnày mà ngày nay nó là mục tiêu hướng tới hàng đầu của các Hacker nhằm khai thác
lỗ hổng tấn công người dùng thông qua Virus, Worm và các phương thức tấn côngkhác,
2.2.2 HỆ ĐIỀU HÀNH WINDOWS SERVER
Ngoài các phiên bản Windows được sử dụng cho người dùng cuối, Microsoftcũng phát triển hệ điều hành dùng cho máy chủ là Windows Server Các phiên bảncủa Windows Server bao gồm:
Windows Server 2000 (tháng 2 năm 2000)
Windows Server 2003 (tháng 3 năm 2003)
Windows Server 2003 R2 (tháng 12 năm 2005)
Windows Server 2008 (tháng 2 năm 2008)
Windows Server 2008 R2 (tháng 7 năm 2009)
Windows Server 2012 (tháng 9 năm 2012)
Windows Server 2012 R2 (tháng 10 năm 2013)
Các thành phần chính nổi trội có trong một hệ điều hành Windows Serverbao gồm:
Server core: Là một trong các thiết lập gói hệ điều hành khi cài đặt kể
từ phiên bản Window Server 2008 Đểm nổi bật của Server Core là nókhông hề có giao diện người dùng, người quản trị quản lý các dịch vụtrên Server hoàn toàn bằng dòng lệnh (CLI) hoặc quản lý từ xa bằngcông cụ MMC và công cụ Remote Server Administration Tools đượctích hợp sẵn trong các phiên bản Windows như Windows Vista,Windows 7, Windows Server 2008,…Với Server Core, người quản trị
sẽ giảm thiểu được công việc quản lý và bảo trì do có rất ít dịch vụđược cài đặt trong hệ điều hành này Do vậy, hệ thống cũng giảmđược các hiểm họa tấn công cũng như tiết kiệm tài nguyên máy chủ
Active Directory roles: Là một dịch vụ thư mục (directory service) đãđược đăng ký bản quyền bởi Microsoft, đây là một thành phần khôngthể thiếu trong kiến trúc Windows Giống như các dịch vụ thư mục
Trang 19khác, chẳng hạn như Novell Directory Services (NDS), ActiveDirectory là một hệ thống chuẩn và tập trung, dùng để tự động hóaviệc quản lý mạng dữ liệu người dùng, bảo mật và các nguồn tàinguyên được phân phối, cho phép tương tác với các thư mục khác.Thêm vào đó, Active Directory được thiết kế đặc biệt cho các môitrường kết nối mạng được phân bổ theo một kiểu nào đó ActiveDirectory cung cấp một tham chiếu, được gọi là directory service, đếntất cả các đối tượng trong một mạng, gồm có user, groups, computer,printer, policy và permission.Với người dùng hoặc quản trị viên,Active Directory cung cấp một khung nhìn mang tính cấu trúc để từ
đó dễ dàng truy cập và quản lý tất cả các tài nguyên trong mạng
Failover Clustering: Là tính năng mới, được giới thiệu từ phiên bảnWindows Server 2008 Với Failover Clustering, người quản trị có thểthiết lập các dịch vụ trên máy chủ Windows chạy với độ sẵn sàn cao,giảm thiểu thời gian downtime khi có sự cố xảy ra Đây được coi làmột bước tiến trong Windows Server, hệ điều hành được sử dụng chomáy chủ và chạy các dịch vụ quan trọng, lâu dài Tính năng FailoverClustering hiện chỉ có ở phiên bản Enterprise và Datacenter củaWindows Server
Hyper-V: Là thành phần ảo hóa có mặt kể từ phiên bản WindowsServer 2008 Đây được coi là thành phần core ảo hóa của Microsofthiện nay khi triển khai cho các dịch vụ khác Với Hyper-V, ngườiquản trị có thể tạo các máy ảo (virtual machine) chạy trên cùng mộtserver vật lý Các máy ảo này sẽ sử dụng các thiết bị ảo được Hyper-Vtạo ra từ tài nguyên trên máy chủ vật lý Điều này giúp chúng ta tậndụng được tài nguyên máy chủ, đồng thời giảm thiểu chi phí về thiết
bị, không gian đặt máy chủ, nhân công quản lý,…
So với hệ điều hành Linux, hệ điều hành Windows Server không thực sựchiếm hữu được thị trường hệ điều hành dành cho máy chủ; nhất là máy chủ dịch vụ
Trang 20web Thông thường, các máy chủ sử dụng hệ điều hành Windows Server được sửdụng với mục đích chạy các ứng dụng đặc thù của Microsoft ví dụ như ASP.Net,Sharepoint, Exchange Server, HyperV, Tuy vậy, hệ điều hành Window Server vẫn
là một hệ điều hành nổi tiếng, được sự ưu tiên phát triển từ hãng công nghệ lớnMicrosoft cùng với công cụ lập trình Net mạnh mẽ Ngày nay hầu hết các ứng dụngmáy chủ phổ biến đều được phát triển cho hệ điều hành này Các ứng dụng giám sátnhư Zenoss, Zabbix, Nagios, cũng đều hỗ trợ tương thích tốt với hệ điều hànhWindows Server
Lớp ảo hóa sẽ làm nhiệm vụ giao tiếp với phần cứng máy tính, từ đótạo ra các thiết bị ảo (CPU, RAM, HDD, ) để hình thành nên các máy ảo cóchức năng hoàn toàn tương tự như một máy tính vật lý thông thường Bằngcách này, chúng ta có thể có nhiều máy tính, máy chủ khác nhau, chạy các hệđiều hành khác nhau trong khi thực tế chỉ sử dụng một máy tính vật lý duynhất Điều này giúp người sử dụng và doanh nghiệp cắt giảm được khá nhiềuchi phí đầu tư cho hạ tầng, cũng như các chi phí về quản trị Ảo hóa đã vàđang thực sự mang lại lợi ích lớn cho CNTT nói chung hiện nay
2.3.1.2 Các lọai ảo hóa
Ảo hóa trên hệ điều hành: Đây là loại ảo hóa phổ biến mà người dùngcuối hay sử dụng nhất Ở dạng ảo hóa này, người dùng sẽ cài đặt mộtphần mềm ảo hóa lên trên hệ điều hành của họ và từ đó tạo ra những máy
ảo có thể cài đặt những hệ điều hành khác nhau Nếu nhìn ở góc độ phânlớp từ ngoài vào trong, chúng ta sẽ hình như như bảng bên dưới:
Trang 21Máy ảo (4)Phần mềm ảo hóa (3)
Hệ điều hành (2)Phần cứng máy tính (1)
Bảng 2.1: Phân tầng của ảo hóa trên hệ điều hành
Ưu điểm của loại ảo hóa này đó chính là sự tiện dụng trong quá trìnhquản lý, thực thi thao tác trên máy ảo Tuy nhiên nó lại có những nhượcđiểm về mặt quản lý từ xa và về hiệu suất sử dụng Do vậy, loại ảo hóanày thường được sử dụng ở phía người dùng cuối với nhu cầu cá nhânhoặc thực hiện các công việc test
Một số phần mềm ảo hóa tiêu biểu ở loại này gồm có VmwareWorkstation, VirtualBox, Parallels Desktop,
Ảo hóa phần cứng: Đây là một dạng ảo hóa cao cấp hơn so với “Ảo hóa trên hệ điều hành” đã đề cập ở trên Ở loại ảo hóa này, nhà sản xuất tạo
ra một lớp thay thế cho cả “Hệ điều hành (2)” và “phần mềm ảo hóa (3)” được gọi là Hypervisor Hypervisor có thể là phần cứng, phần mềm
hoặc là một bản firmware nào đó có thể chạy trực tiếp trên phần cứngmáy tính và làm nhiệm vụ tạo ra các máy ảo Nếu nhìn ở góc độ phân lớp
từ ngoài vào trong, chúng ta sẽ hình như như hình bên dưới:
Máy ảo (3)Hypervisor (2)Phần cứng máy tính (1)
Bảng 2.2: Phân tầng của ảo hóa phần cứng
Đặc điểm nổi trội của loại ảo hóa này đó chính là hiệu suất hoạt động Vì
có lớp Hypervisor chạy trực tiếp trên phần cứng máy tính, không phảithông qua một hệ điều hành làm trung gian nên việc tạo các thiết bị ảo vàgiao tiếp giữa máy ảo và phần cứng máy tính cũng diễn ra nhanh hơn, ítlỗi hơn
Ngoài ra, ở “ảo hóa phần cứng” chúng ta lại có 3 loại khác nhau là:
Ảo hóa toàn phần (Full virtualization): Mô phỏng gần như hoàntoàn phần cứng thật để các phần mềm (hệ điều hành) có thể chạytrên nó như chạy trên một máy tính vật lý thật Trong khoa họcmáy tính, ảo hóa toàn phần là một kỹ thuật ảo hóa thường cung
Trang 22cấp cho một loại môi trường máy ảo nào đó, cụ thể là, mộ trong số
đó là một sự mô phỏng hoàn toàn của phần cứng bên dưới Ảo hóatoàn phần yêu cầu mọi tính năng nổi bật của phần cứng phải đượcphản xạ vào một trong nhiều máy ảo – bao gồm một bộ câu lệnhđầy đủ, vận hành nhập/xuất, ngắt, truy cập bộ nhớ và bất cứ phần
tử nào khác mà được sử dụng bởi phần mềm chạy trên máy tínhvậy lý
Ảo hóa một phần (Partial virtualization): Mô phỏng một phần chứkhông phải tất cả các mục tiêu ảo hóa Trong ảo hóa một phần này,máy ảo mô phỏng rất nhiều đối tượng của môi trường phần cứngbên dưới, đặc biệt là không gian địa chỉ Thông thường, điều này
có nghĩa là toàn bộ hệ điều hành không thể chạy trong máy ảo như
ở ảo hóa toàn bộ nhưng đa số chương trình có thể chạy được.Dạng chính của ảo hóa một phần là ảo hóa không gian địa chỉ,trong đố mỗi máy ảo gồm có một không gian địa chỉ độc lập Khảnăng này đồi hỏi phần cứng tái định vị địa chỉ, và hiện diện tronghầu hết các ví dụ thức ế của ảo hóa một phần
Ảo hóa song song (Paravirtualization): Môi trường phần cứngkhông được mô phỏng; tuy nhiên, chương trình guest được thựcthi trên miền cách ly của chúng, giống như chúng đang chạy trênmột hệ thống khác biệt Chương trình guest cần sự thay đổi mộtcách đặc biệt để chạy trong môi trường này Trong điện toán, ảohóa song song là kỹ thuật ảo hóa trình bày một giao diện phầnmềm tới máy ảo mà tương tự nhưng không đồng nhất với phầncứng bên dưới
Khác với “ảo hóa trên hệ điều hành”, “ảo hóa phần cứng” được sử dụng
chủ yếu trong môi trường doanh nghiệp, đòi hỏi nhiều về hiệu suất vàtính năng tốt Một số sản phẩm về ảo hóa loại này bao gồm VmwarevSphere, Citrix Xen Server, Hyper-V,
Trang 232.3.2 CÔNG NGHỆ ẢO HÓA VMWARE
2.3.2.1 Giới thiệu
VMware Inc là một công ty chuyên cung cấp các phần mềm ảo hóacho các hệ thống máy tính được thành lập vào năm 1998 Công ty VMwareInc thuộc tập đoàn EMC và có trụ sở chính ở thành phố Palo Alto, California,Hoa Kỳ và các văn phòng nghiên cứu, phát triển ở Palo Alto, San Francisco,Massachusetts và ở Bangalore (Ấn Độ) Các phần mềm tạo máy ảo củaVMware được coi là tốt nhất trên thế giới bởi nó hỗ trợ nhiều hệ điều hànhkhác nhau như GNU/Linux, Mac OS X và Microsoft Windows và có nhiềutính năng nổi trội
Các sản phẩm tiêu biểu của hãng Vmware bao gồm:
Vmware Workstation
Vmware Fusion
Vmware vSphere
Vmware vCloud Suite
Vmware Horizon ViewTrong đó VMware vSphere là bộ sản phẩm nòng cốt của hãng VMware vớinhững tính năng ảo hóa máy chủ tối tân nhất, là nền tảng cho những côngnghệ khác của hãng
2.3.2.2 Ảo hóa Vmware vSphere
VMware vShere hay còn có cái tên cũ là VMware Infrastructure đã đượcthay đổi kể từ phiên bản VMware Infrastructure 3.5 đang trong giai đoạn phát triển
Ở phiên bản VMware vSphere 4 hãng VMware đã tăng cường khả năng và công cụxây dựng nền tảng cloud cho bộ sản phẩm này Và tính tới thời điểm hiện tại phiênbản mới nhất của bộ sản phẩm này đã là phiên bản 5.5 Giai đoạn phát triển cácphiên bản chính của VMware vSphere (không kể các phiên bản cập nhật) như sau:
VMware ESX Server 1.0 (tháng 3 năm 2001)
VMware ESX Server 2.0 (tháng 7 năm 2003)
VMware ESX Server 2.5 (tháng 12 năm 2004)
VMware Infrastructure 3.0 (tháng 5 năm 2006)
VMware Infrastructure 3.5 (tháng 12 năm 2007)
Trang 24 VMware vSphere 4.0 (tháng 5 năm 2009)
VMware vSphere 4.1 (tháng 7 năm 2010)
VMware vSphere 5.0 (tháng 8 năm 2011)
VMware vSphere 5.1 (tháng 9 năm 2012)
VMware vSphere 5.5 (tháng 9 năm 2013)
Về thành phần, những những lớp tạo nên bộ sản phẩmVMware vSphere gồmcó:
Infrastructer Services: Là tập hợp cac services cung cấp việc ảo hóa, tậphợp và phân chia tài nguyên phần cứng Nó bao gồm các thành phần consau:
o Vmware vCompute: Là thành phần có khả năng tạo ra một tàinguyên duy nhất về mặt luận lý từ nhiều tài nguyên của các serverkhác nhau vCompute services tập hợp những tài nguyên khácnhau này lại và cung cấp cho các ứng dụng nào đó
o VMware vStorage: là công nghệ cho phép sử dụng rất hiệu quảvào quản lý lưu trữ trong môi trường ảo hóa
o VMware vNetwork: là công nghệ giúp ảo hóa mạng, tạo ra cáccard mạng ảo, các switch mạng ảo trong môi trường ảo hóa
Application Services: là tập hợp các dịch vụ đảm bảo tính sẵn sàng cao,bảo mật và độ tin cậy cho các ứng dụng như là High Availability và FaultTolerance
VMware vCenter Server: Là thành phần quản lý tập trung các ESXi host,cung cấp các dịch vụ thiết yếu như access control, performancemonitoring, configuration
Clients : Người dùng có thể truy xuất tới VMware vSpheredatacenter thông qua việc sử dụng các clients như là Vmware vSphereClient hoặc Vmware vSphere Web Client có được khi đã cài đặt vCenterServer
Trang 25Hình 2.1: Mô hình kiến trúc phân lớp của Vmware vSphere 2.3.2.3 VMware vSphere Web Services SDK
Với lịch sử phát triển lâu đời của bộ sản phẩm VMware vSphere, ngày naysản phẩm này đã trở thành một trong những sản phẩm hàng đầu về xây dựng hạtầng ảo hóa cũng như nền tảng cho các mô hình điện toán đám mây Chính vì thế,hãng VMware đã cung cấp các API giúp các nhà lập trình viên từ các hãng thứ bakhác có thể dễ dàng lập trình ứng dụng tương tác với bộ sản phẩm của mình.VMware vSphere Web Services SDK là một trong các gói sản phẩm đó; nó giúp tạo
ra một Webservice làm thành phần giao tiếp trung gian giữa hạ tầng VMwarevSphere và ứng dụng của người lập trình Một trong các thành phần cốt lõi của góiứng dụng VMware vSphere Web Services SDK đó chính là vSphere API VớiVMware vSphere API, chúng ta có thể dễ dàng tương tác với các thành phần ảohóa, tác động vào trực tiếp các đối tượng được quản lý bởi trong hạ tầng VMwarevSphere ví dụ như tạo mới, sửa đổi, xóa bỏ các máy ảo
Về hình thức kết nối sử dụng của vSphere API cũng rất đơn giản Vì hoạtđộng như một Web Services nên chỉ yêu cầu đường dẫn ở giao thức https bao gồmđịa chỉ IP hoặc tên miền kèm theo port kết nối và tài khoản đăng nhập Ở đây, địa
Trang 26chỉ IP hoặc tên miền được trỏ tới máy chủ VMware ESXi hoặc VMware vCentervới port mặt định là 443 Tài khoản người dùng được sử dụng trong việc kết nốitrên cần có đủ quyền và khả năng đăng nhập vào hạ tầng VMware vSphere Dướiđây là một đoạn code mẫu về kết nối tới vSphere API được viết bằng ngôn ngữPython sử dụng gói thư viện pysphere để giao tiếp.
log.error("Can not login into remote Esxi host %s" % host)
Hãng VMware cung cấp tài liệu rất đầy đủ và chi tiết về VMware vSphereWeb Service SDK để giúp các nhà lập trình viên sử dụng nó tại địa chỉ sau
https://www.vmware.com/support/developer/vc-sdk
2.4 THIẾT BỊ MẠNG CISCO
2.4.1 CISCO SYSTEM VÀ CÁC SẢN PHẨM
Cisco System Inc là một tập đoàn đa quốc gia có trụ sở chính tại California
Mỹ chuyên thiết kế, sản xuất và bán thiết bị mạng Cùng với sự phát triển của côngnghệ Internet, nhu cầu về các sản phẩm của Cisco bùng phát và nhanh chóng công
ty này chiếm lĩnh thị trường thiết bị mạng trên toàn cầu từ những năm 98 Thị phầncủa hãng chiếm 70% đến 80% thị trường thiết bị mạng trên toàn thế giới Các thiết
bị và giải pháp của hãng đáp ứng nhu cầu của mọi loại hình doanh nghiệp từ các
Trang 27doanh nghiệp vừa và nhỏ đến các doanh nghiệp có quy mô lớn và các nhà cung cấpdịch vụ Internet (ISP).
Các sản phẩm phần cứng của Cisco rất đa dạng về chủng loại, trong đó tiêubiểu có các dòng sản phẩm như:
Router and Routing Systems
2.4.2 CÁC PHƯƠNG THỨC GIÁM SÁT THIẾT BỊ CISCO
Về phương thức giám sát, theo dõi thiết bị của mình, Cisco hỗ trợ giao thứcSNMP ở tất cả các phiên bản trên các dòng Router, Switch, Firewall, để giúp chocác phần mềm monitor của hãng thứ ba có thể hoạt động monitor trên thiết bị củahãng một cách dễ dàng Hầu hết các thiết bị của hãng đều được thiết kế theo cácchuẩn chung về mặt giám sát, và có các điểm tương đồng nhau Cisco củng cungcấp hẳn một trang để hỗ trợ tìm kiếm, chuyển đổi các đối tượng MIB và OID củagiao thức SNMP mà thiết bị của hãng hỗ trợ tại địa chỉ
http://tools.cisco.com/Support/SNMP/do/BrowseOID.do
Hiện nay, cũng có rất nhiều phần mềm của hãng thứ ba hỗ trợ monitor thiết
bị Cisco như NetFlow Traffic Analyzer để giám sát các traffic IN và OUT, PRTGTraffic Grapher để monitor băng thông và giao tiếp mạng, WhatsUp Gold để theodõi tráng thái UP / DOWN của hệ thống
Ngoài ra, hãng Cisco cũng có các sản phẩm đặc thù riêng của mình giúp cấuhình và giám sát thiết bị tốt hơn Ví dụ như Cisco SDM cho phép chúng ta cấu hình
Trang 28cũng như monitor thiết bị Cisco trên giao diện đồ họa, không phải thao tác bằngdòng lệnh.
2.4.3 CẤU HÌNH SNMP TRÊN THIẾT BỊ CISCO
Hầu hết các thiết bị mạng của CISCO đều hỗ trợ giám sát qua giao thứcSNMP Đối với Router, Switch của hãng chạy hệ điều hành Cisco IOS, việc cấuhình SNMP có thể được thực hiện dễ dàng như sau:
Bước 1: Kết nối tới Router
prompt#telnet 172.16.99.20
Bước 2: Đăng nhập vào Router và vào chế độ “enable”
Router>enable Password:
Router#
Bước 3: Vào chế độ “configuration”
Router#configure terminal Enter configuration commands, one per line End with CNTL/Z
Router(config)#snmp-server community private RW
Bước 5: Thoát ra khỏi chế độ “configuration” và lưu lại cấu hình:
Router(config)#exitRouter#write memory Building configuration
[OK]
Router#
Trang 29Sau khi cấu hình SNMP trên Router thành công, chúng ta có thể tiến hànhtheo dõi từ xa bằng các công cụ giám sát mạng khác nhau có hỗ trợ SNMP và có đủ
cơ sở dữ liệu về các MIB và OID mà Cisco định nghĩa cho các sản phẩm của mình
2.5 GIAO THỨC SNMP
2.5.1 TỔNG QUAN VỀ GIAO THỨC SNMP
SNMP là giao thức quản lý mạng cơ bản dịch từ cụm từ “Simple NetworkManagement Protocol” Giao thức này được sử dụng rất phổ biến để giám sát vàđiều khiển các thiết bị mạng
Giao thức SNMP được thiết kế để cung cấp một phương thức đơn giản nhằmquản lý tập trung mạng TCP/IP Người quản trị có thể thông qua giao thức này đểtheo dõi, quản lý các hoạt động hay thay đổi các trạng thái hệ thống mạng Thôngthường giao thức SNMP được sử dụng để quản lý các hệ thống máy chủ Linux,Window…, các thiết bị mạng như router, switch, router…, thông qua một số phầnmềm cho phép quản trị hỗ trợ gia thức SNMP
Về lịch sử hình thành, phiên bản đầu tiên của giao thức SNMP được giớithiệu vào năm 1988 và cho tới nay có tổng cộng ba phiên bản của giao thức này:
SNMPv1: Chuẩn giao thức SNMP được định nghĩa trong RFC 1157 và làmột chuẩn đầy đủ của IETF SNMP trao đổi thông tin giữa đối tượngquản lý và client bằng cách truyền các bản tin qua giao thức UDP Mỗibản tin bao gồm một PDU (Protocol Data Unit) định nghĩa thao tác vậnhành Trong SNMP có tổng cộng 5 PDU là:
GetRequest: PDU này dùng để lấy các giá trị từ tập hợp các biến
có trên host từ xa
GetNextRequest: PDU này được dùng để lấy giá trị tiếp theo trongtrường hợp chúng ta một tập các giá trị trong đối tượng được lấy(ví dụ: bảng các đường route trên router)
SetRequest: PDU này được dùng để thiết đặt giá trị của đối tượngthuộc các trường trên Agent
Trap: Được Agent tạo ra để để thông báo cho đối tượng quản lý vềcác sự kiện, việc đồng bộ,
Trang 30 SNMPv2c: Là phiên bản tăng cường của giao thức SNMPv1 Ở phiên bảnnày, giao thức SNMP hỗ trợ sử dụng chuỗi “community” để xác thực khitrao đổi thông tin giữa Agent và các đối tượng quản lý Chính vì thế, têncủa phiên bản này bao gồm chữ “c” đi sau số phiên bản SNMPv2c đượcđịnh nghĩa trong các RFC 1905, 1906 và 1907 và thực chất đây chỉ là mộtphiên bản thử nghiệm của IETF Mặc dù vậy, phiên bản SNMPv2c vẫnđược nhiều nhà sản xuất đưa vào sử dụng trong thực tế.
SNMPv3: Là phiên bản tiếp theo của giao thức SNMP được IETF đưa ramột cách đầy đủ, được định nghĩa trong các RFC 1906, RFC 1907, RFC
2571, RFC 2572, RFC 2573, RFC 2574 và RFC 2575 và được khuyếnnghị làm bản chuẩn SNMPv3 bổ sung thêm hai hướng chính về bảo mật
so với SNMPv2c đó là xác thực và mã hóa SNMPv3 sử dụng MD5 vàSHA để tạo ra các giá trị hash cho từng thông điệp SNMP Thao tác nàycho phép xác thực các đầu cuối cũng như là ngăn ngừa thay đổi dữ liệu
và các kiểu tấn công Thêm vào đó, các phần mềm quản trị SNMPv3 vàcác Agent có thể dùng DES để mã hóa gói tin, cho phép bảo mật tốt hơn
2.5.2 OID VÀ MIB TRONG SNMP
OID (Object Identifier): Mỗi thiết bị hỗ trợ SNMP có thể cung cấp nhiều
thông tin khác nhau, mỗi thông tin đó là một đối tượng (object) Để định
danh cho đối tượng đó, chúng ta định nghĩ ra các (Object ID) OID cùngvới một tên gọi tương ứng Ví dụ:
Tên thiết bị được gọi là sysName tương ứng với OID là1.3.6.1.2.1.1.5
Tổng số giao diện mạng (interface) được gọi là ifNumber tươngứng với OID là 1.3.6.1.2.1.2.1
Địa chỉ Mac Address của một giao diện được gọi là ifPhysAddresstương ứng với OID là 1.3.6.1.2.1.2.2.1.6
Ở hầu hết các thiết bị mạng, các đối object có thể có nhiều giá trị (chẳnhạn một router có 2 đối tượng interface) thì được viết đưới dạng sub-ID.Các sub-ID này không nhất thiết là phải liên tục mà có thể thay đổi tùytheo index mà nhà sản xuất định nghĩa
Trang 31Các OID của các object phổ biến thường được chuẩn hóa, chúng ta có thể
sử dụng các OID này trên nhiều loại thiết bị, hệ điều hành, của các hãngkhác nhau có hỗ trợ SNMP Tuy nhiên với OID của các object do chúng
ta tự tạo ra thì phải tự định nghĩa chúng
Để lấy thông tin của một object đã có OID xác định, SNMP application
sẽ gửi một bản tin SNMP có chứa OID của object đó cho SNMP agent.SNMP agent sau khi nhận được tin thì sẽ đối chiếu với cơ sỡ dữ liệu hiện
có của nó và trả về thông tin tương ướng với OID Ví dụ: Muốn lấy têncủa một PC chạy Windows, tên của một PC chạy Linux hoặc tên của mộtrouter thì SNMP application chỉ cần gửi bản tin có chứa OID là1.3.6.1.2.1.1.5.0 Khi SNMP agent chạy trên PC Windows, PC Linux hayrouter nhận được bản tin có chứa OID 1.3.6.1.2.1.1.5.0, agent lập tức hiểurằng đây là bản tin hỏi sysName.0, và agent sẽ trả lời bằng tên của hệthống
Hình 2.2: Hình minh họa quá trình lấy sysName.0
MIB ( Management Information Base ): Là một cấu trúc dữ liệu định nghĩa
các đối tượng được quản lý Nó định nghĩa thông tin quản trị sẵn có trongcác thiết bị mạng theo một cấu trúc phân cấp Mỗi thiết bị muốn đượcxem xét trong công việc quản trị mạng phải sử dụng và cung cấp đượcnhững thông tin MIB được định dạng theo một tiêu chuẩn
Chúng ta có thể hình dung cấu trúc phân cấp của một MIB dưới dạng câynhư hình dưới đây
Trang 32Hình 2.3: Cấu trúc cây phân cấp của MIB
Nút gốc của cây MIB không có tên nhưng có ba cây con như sau:
CCITT (0): được quản trị bởi CCITT (International Telephone andTelegraph Consultative Committee)
ISO (1): được quản lý bởi ISO (International Organization forStandardization)
Joint-CCITT – ISO (2) được quản trị bởi cả ISO và CCITT
Dưới nút ISO (1) có một số cây con, trong đó có cả cây con mà ISO đãxác định cho các tổ chức khác gọi là org (3) Dưới tổ chức org(3) cây con,một nút đặc biệt được Bộ Quốc Phòng Mỹ sử dụng (United StatesDepartment of Defence - DOD) ký hiêụ là dod (6) Tất cả các thông tinđược thu thập từ các thiết bị qua các nghi thức kiểu DOD ví dụ nhưTCP/IP có trong cây con đó mà OID của nó là 1.3.6.1 Các OID có dạng1.3.6.1 chính là Internet
Các Object ID (OID) của các hãng tự định nghĩa nằm dướiiso.org.dod.internet.private.enterprise Ví dụ : Cisco nằm dướiiso.org.dod.internet.private.enterprise.cisco có OID 1.3.6.1.4.1.9,Microsoft nằm dưới iso.org.dod.internet.private.enterprise.microsoft cóOID 1.3.6.1.4.1.311
Trang 33Một manager có thể quản lý được một thiết bị chỉ khi ứng dụng SNMPmanager và ứng dụng SNMP agent cùng hỗ trợ một MIB Các ứng dụngnày cũng có thể hỗ trợ cùng lúc nhiều MIB.
2.6 GIAO THỨC SSH
2.6.1 TỔNG QUAN VỀ GIAO THỨC SSH
SSH (Secure Shell) là một giao thức mạng dùng trong việc giao tiếp an toàn,đăng nhập từ xa qua dòng lệnh, và các dịch vụ mạng an toàn khác giữa hai máy tínhđược kết nối với nhau thông qua SSH Client và SSH Server
SSH phiên bản đầu tiên được phát triển và đưa vào sử dụng từ năm 1995nhằm thay thế giao thức các giao thức không an toàn khác của UNIX như rlogin,rsh, rcp Phiên bản tiếp theo, SSH2 được đưa ra vào năm 1997 nhằm khắc phục cáclỗi ở phiên bản SSH1 và cải thiện tính năng gửi file
Các chức năng chính mà SSH mang lại là:
Dòng lệnh an toàn (Secure command-shell)
Truyền tải file an toàn (Secure file transfer)
Chuyển tiếp cổng (Port forwarding)Trong đó, chức năng được sử dụng nhiều nhất chính là áp dụng vào việc xác
hỗ trợ đăng nhập từ xa và thực thi dòng lệnh an toàn Nhờ sự thuận tiện cũng nhưkhả năng bảo mật của SSH mà ngày nay nó được sử dụng rộng rãi trong công việcquản trị hệ thống Linux, Unix
Về loại xác thực của SSH có thể chia làm hai loại như sau
Xác thực người dùng: Định danh người dùng đăng nhập Hệ thống sẽ xácnhận truy cập chỉ được áp dụng cho người dùng xác định trước và chặnnhững truy cập bất hợp pháp SSH cung cấp 2 phương thức xác thựcngười dùng gồm
Xác thực sử dụng mật khẩu: Trong phương thức xác thực này, phíaserver sẽ yêu cầu người dùng cung cấp thông tin về tên tài khoản
và mật khẩu tương ứng để có thể xác định quyền truy cập
Trang 34 Xác thực sử dụng public key: Đây là một trong những phươngthức xác thực an toàn nhất hiện nay bằng việc sử dụng cặp khóa đãđược tạo ra trước đó – một khóa công khai và một khóa riêng Mỗikhóa công khai thường được tạo ra với độ dài khoản từ 1024 đến
2048 bits và được sao chép lên SSH server khi tạo ra Khi mộtngười dùng sử dụng SSH client để kết nối tới SSH server, SSHclient sẽ sử dụng khóa riêng của mình để được SSH server xácthực
Xác thực “Host”: Đây là quá trình định danh 1 host hay còn gọi là 1 máychủ SSH với người dùng bằng việc sử dụng “host key” để mô tả địnhdanh của mình (cách hoạt động cũng tương tự như việc sử dụng khóacông khai đã mô tả ở trên) Mục đích của việc xác thức này là để chắcchắn rằng, SSH client đang kết nối tới một SSH server đã được biết trước(tin tưởng) Kiểu xác thức này chống lại tấn công Man-in-the-Middle
2.6.2 SỬ DỤNG SSH TRONG VIỆC QUẢN TRỊ HỆ THỐNG LINUX
Với sự đơn giản nhưng vô cùng mạnh mẽ về độ an toàn, ngày nay giao thứcSSH là một trong những phương thức chính mà chúng ta sử dụng để quản trị các hệthống máy chủ Linux, Unix Một trong những ứng dụng SSH server phổ biến nhấthiện nay đó chính là OpenSSH-Server có mặt hầu hết trên các hệ điều hành Linuxnhư RedHat, CentOS, Debian, Ubuntu, Về SSH client thì khá đa dạng, các phầnmềm SSH client phổ biến hay được người quản trị sử dụng là Putty, SecureCRT,Salt,
Giao thức SSH ngoài việc áp dụng cho việc quản trị máy chủ từ xa một cáchthuận tiện Nó có là giải pháp được nhiều người quản trị hệ thống áp dụng cho việcxác thực tài khoản các ứng dụng như autossh, rsync, Các công cụ này hoạt độngmột cách tự động sau khi đã được cấu hình xong, vì thế độ an toàn khi giao tiếpgiữa các host là vấn đề được đặt lên hàng đầu và được giải quyết tốt khi sử dụnggiao thức SSH
Trang 352.6.3 THƯ VIỆN NGỒN MỞ FABRIC
Fabric là một thư viện nguồn mở được viết bằng ngôn ngữ Python nhằm hỗtrợ cho việc tinh giản cách sử dụng của giao thức SSH trong các ứng dụng mạng.Thông thường để thao tác từ xa qua SSH bằng các đoạn script, chúng ta cần phảiviết rất nhiều đoạn xử lý về kết nối, xử lý sau đăng nhập, xử lý ngoại lệ, VớiFabric các công việc này được tinh giản đi rất nhiều Fabric cung cấp cách thực thi
dòng lệnh dễ dàng với hai chế độ là “local” thực hiện trên máy nguồn và “run”
thực hiện trên máy chủ SSH ở xa
Chính vì những ưu điểm của Fabric, ngày nay thư viện này là một trongnhững công cụ đắc lực cho người quản trị hệ thống Fabric thường được sử dụngtrong việc tự động hóa quá trình deploy một hệ thống, hay một ứng dụng nào đó màcần thực thi từ xa, với nhiều điểm đích đến
Về cách thức lập trình, Farbic có thể được tích hợp dưới dạng module mởrộng, chúng ta có thể áp dụng vào ứng dụng của mình một cách dễ dàng như sau
from fabric.api import run
def get_host_type():
run('uname -s')
Đoạn mã trên là một ví dụ về cách thức lấy thông tin OS đơn giản của máy
tính cục bộ hoặc từ xa Để thực thi đoạn script này chúng ta sẽ sử dụng lệnh fab như
sau
$ fab -H localhost,my.remotehost get_host_type
[localhost] run: uname -s
[localhost] out: Example
[linuxbox] run: uname -s
[linuxbox] out: Linux
Done.
Trang 36Disconnecting from localhost done.
Disconnecting from my.remotehost done.
Bên trên là một ví dụ đơn giản nhất nhằm giới thiệu về Fabric Để tìm hiểuchi tiết hơn về thư viên này chúng ta có thể xem tại link
http://docs.fabfile.org/en/1.8/
Trang 37CHƯƠNG 3 – NGÔN NGỮ PHP, PYTHON VÀ PHƯƠNG PHÁP LẬP
TRÌNH HỆ THỐNG 3.1 TỔNG QUAN
Trong xây dựng hệ thống, việc quyết định sử dụng ngôn ngữ lập trình sẽđóng góp một phần quan trọng trong sự ổn định và hiệu suất hoạt động của hệ thống
đó, bởi ngôn ngữ lập trình là thành phần trực tiếp xây dựng nên các ứng dụng Bêncạnh đó, việc chọn ngôn ngữ lập trình phải đảm bảo tính tương thích công nghệ khichúng ta phối hợp nó với các ngôn ngữ lập trình khác để mở rộng hệ thống mà yêucầu xây dựng nhiều ứng dụng và sử dụng nhiều công nghệ hơn
Trong sản phẩm của luận văn này, nhóm tác giả chọn hai ngôn ngữ lập trìnhchính Đó là:
PHP: Sử dụng cho việc lập trình website
Python: Sử dụng cho việc lập trình ứng dụng client và server
Ngoài ra, nhóm tác giả còn sử dụng các ngôn ngữ khác như “Bash shell”trong một số ít phần của ứng dụng hệ thống và Javascript trong việc phối hợp xâydựng với các hàm jQuery
Về phương pháp lập trình, tùy theo mục đích sử dụng ngôn ngữ lập trình màchúng ta có những cách riêng Đối với phần website giao diện người dùng, nhómtác giả hướng tới những cách thức làm sao để thiết kế website trực quan, tạo sựthoải mái và tiện lợi cho người dùng khi giao tiếp với website nhờ vào việc xâydựng tính đáp ứng “reponsive” Đối với ứng dụng phía máy chủ hay những ứngdụng backend không yêu cầu về giao diện người dùng nhưng sẽ đòi hỏi tính ổn định
và hiệu suất hoạt động tốt Vì vậy nhóm tác giá hướng tới những tính năng về ghi
log để Debug lỗi, lập trình đa luồng “multithreading” để tăng hiệu suất xử lý Bên
cạnh đó, nhóm tác giả phân chia hệ thống thành nhữ thành phần con, phân chiacông việc xử lý Chương 4 tiếp theo sẽ nói rõ hơn về việc phân chia này Trong cácphần tiếp theo của chương 3 bên dưới đây sẽ giới thiệu về các ngôn ngữ lập trìnhđược sử dụng và các phương pháp lập trình ứng dụng hệ thống cũng như xây dựng
một website có tính đáp ứng “reponsive”.
Trang 383.2 LẬP TRÌNH VÀ THIẾT KẾ GIAO DIỆN WEBSITE
3.2.1 NGÔN NGỮ LẬP TRÌNH PHP
PHP (Hypertext Preprocessor) là ngôn ngữ script trên server được thiết kế để
dễ dàng xây dựng các trang Web động Mã PHP có thể thực thi trên Webserver đểtạo ra mã HTML và xuất ra trình duyệt web theo yêu cầu của người sử dụng
Ngôn ngữ PHP ra đời năm 1994 Rasmus Lerdorf sau đó được phát triển bởinhiều người trải qua nhiều phiên bản, ngày càng hoàn thiện về chức năng cũng nhưtính tiện dụng đã thu hút được lượng lớn người sử dụng Theo thống kê của websitew3techs.com, tính tới thời thời điểm tháng 12/2013, số lượng website sử dụng PHPchiếm 81.6% Có thể kể tới một số website sử dụng PHP như facebook.com,wordpress.com, wikipedia.com, udemy.com …Phiên bản hiện tại là PHP 5.5.8 đãđược công bố 1/2014
Có nhiều lý do khiến cho việc sử dụng PHP chiếm ưu thế hơn những ngônngữ khác, đơn cử như:
Mã nguồn mở (open source code)
Miễn phí, download dễ dàng từ Internet
Ngôn ngữ rất dễ học, dễ viết
Mã nguồn không phải sửa lại nhiều khi viết chạy cho các hệ điều hành
từ Windows, Linux, Unix
Rất đơn giản trong việc kết nối với nhiều nguồn DBMS, ví dụ như :MySQL, Microsoft SQL Server 2000, Oracle, PostgreSQL, Adabas,dBase, Empress, FilePro, Informix, InterBase, mSQL, Solid, Sybase,Velocis và nhiều hệ thống CSDL thuộc Hệ Điều Hành Unix (Unixdbm) cùng bất cứ DBMS nào có sự hổ trợ cơ chế ODBC (OpenDatabase Connectivity) ví dụ như DB2 của IBM
3.2.2 LARAVEL FRAMEWORK
3.2.2.1 Quá trình hình thành Laravel Framework
Tháng 8/2009, PHP phiên bản 5.3 ra đời Tính năng được quan tâm nhiềunhất là khái niệm namespace và Tính năng này cho phép các lập trình viên có thể
Trang 39viết các ứng dụng hướng đối tượng (OOP) bằng ngôn ngữ PHP dễ dàng hơn manglại rất nhiều lợi ích cho các lập trình viên lúc bấy giờ, tuy nhiên, hầu hết cácframework lúc bấy giờ chỉ tập trung hỗ trợ các phiên bản PHP cũ hơn Có thể kể tớicác PHP framework nổi tiếng lúc này như Symfony, Zend, Slim micro framework,Khohana, Lithium và CodeLgniter Codelgniter là framework rất phổ biến thời điểmnày nhờ sự đơn giản cũng như các tài liệu về CodeIgniter rất phổ biến Nhờ vậy, bất
kì lập trình viên nào cũng có thể bắt đầu một dự án với CodeIgniter Từ đó,CodeIgniter có một cộng đồng lớn và sự hỗ trợ nhiệt tình từ những nhà phát triển.Vào năm 2011, Taylor Otwell đã thấy được một số thiếu sót trong CodeIgniter trongquá trình làm việc của mình, chính vì vậy Taylor Otwell đã giới thiệu phiên bảnLaravel 1 để bổ sung những tính năng còn thiếu mà lúc bấy giờ CodeIgniter chưalàm được
Laravel 1: Ở phiên bản đầu tiên, Laravel 1 giới thiệu các tính năng được xâydựng sẵn bao gồm quá trình xác thực (Authentication), giao tiếp với các cơ sở dữliệu (Eloquent ORM), Mode, Views Với những tính năng ưu việc như vậy đãthực sự tạo ra ấn tượng mạnh mẽ đối với cộng đồng PHP lúc bấy giờ Tuy nhiên,lúc này Laravel 1 vẫn chưa là một framework MVC hoàn chỉnh vì vẫn chưa có tínhnăng điều khiển (controller) nhưng vẫn được nhận được sự ủng hộ của cộng đồngnhờ tính đơn giản trong cú pháp Nhờ sự ủng hộ cũng như sự giúp đỡ của cộngđồng, 6 tháng sau, Laravel 2 ra đời
Laravel 2 được giới thiệu chính thức ngày 24/11/2011 Phiên bản Laravel 2
có sự nâng cấp đáng kể từ nhà phát hành cũng như cộng đồng Quan trọng nhất là
đã hỗ trợ Controller, điều này đã làm laravel trở thành một framework MVC hoànchỉnh Tuy nhiên, phiên bản này vẫn còn một số vấn đề chưa thể khắc phục được,
cụ thể là việc tương thích với các ứng dụng của bên thứ 3 Khả năng tương thíchgiữa các đường route và controller, sự mạnh mẽ trong quá trình tương tác với hệ cơ
dữ liệu của Eloquent ORM đa thu hút một lượng lớn các nhà phát triển cùng nhauxây dựng Laravel framework Chỉ sau 2 tháng từ phiên bản 2, Laravel 3 đã đượcgiới thiệu
Trang 40Laravel 3: Ngày 22/2/2012, Laravel 3 được chính thức giới thiệu Phiên bản
3 tập trung vào "unit test integration", giao diện tương tác với Laravel frameworkthông qua câu lệnh artisan trong quá trình tạo database, table, tạo các view trongquá trình xây dụng ứng dụng Laravel 3 đã thực sự trở nên mạnh mẽ, tiện dụngtrong việc xây dựng hàng loạt các ứng dụng khác nhau và nhanh chóng đuổi kịp vớicác framework nổi tiếng lúc bấy giờ như CodeIgniter và Kohana Một số lượng lớncác lập trình viên để chuyển sang sử dụng Laravel, số lượng bài viết hướng dẫn sửdụng laravel ngày càng tăng nhanh Laravel trở thành một hiện tượng lớn trong thếgiới PHP Tuy nhiên chưa dừng lại ở đó, sau 5 tháng, các nhà phát triển quyết địnhxây dựng lại lại Laravel, thay đổi cách quản lý các gói (packet) trong Laravel thôngqua trình quản lý “Composer” của PHP
Laravel 4: Còn có tên gọi khác là Illuminate được chính thức giới thiệu vàongày 28/5/2013 Laravel 4 được cấu trúc lại theo hướng tập trung các thành phần(components hay packages) lại với nhau tạo thành một framework hoàn chỉnh Việcquả lý các thành phần này được thực hiện thông qua Composer Laravel 4 được bổsung các tính năng mới mà trước đó chưa có bất kì một PHP framework được tíchhợp bao gồm: Database seeding, các hàng đợi (message queues), trình gởi mail tíchhợp và đặc biệt là việc nâng cấp Eloquent ORM giúp quá trình tương tác với cơ sở
dữ liệu nhanh chóng và hiệu quả hơn
3.2.2.2 Kiến trúc Laravel Framework
Cấu trúc thư mục của Laravel framework bao gồm các 3 thư mục chính
Hình 3.1: Cấu trúc thư mục của Laravel framework
/app Thư mục này chứa controller, models, views và các
thành phần cần thiết khác của ứng dụng Các đoạn codephp sẽ được chứa trong thư mục này