Bất cứ khi nào hai hay nhiều hơn các máy tính, thiết bị được liên kết với nhau đều cần phải có một hệ thống quản trị mạng để quản lý, giám sát và phân tích các thông tin trao đổi giữa ch
Trang 1MỤC LỤC
LỜI CẢM ƠN 4
LỜI CAM ĐOAN 5
DANH MỤC HÌNH VẼ 6
MỞ ĐẦU 7
CHƯƠNG 1: TỔNG QUAN VỀ QUẢN TRỊ MẠNG 9
1.1 Quản trị mạng cơ bản 9
1.2 Định nghĩa, mục đích và tầm quan trọng của quản trị mạng 9
1.2.1 Định nghĩa quản trị mạng 9
1.2.2 Mục đích của quản trị mạng 11
1.2.3 Tầm quan trọng của quản trị mạng 12
1.3 Các thành phần của một hệ thống quản trị mạng 12
1.4 Các giao thức quản trị mạng 13
1.4.1 SNMP 13
1.4.2 SNMPv1 15
1.4.3 SNMPv2 16
1.4.4 SNMPv3 17
1.4.5 MIB 17
1.5 Một vài công cụ quản trị mạng được sử dụng rộng rãi hiện nay 21
1.5.1 Công cụ Cacti 21
1.5.2 Công cụ Nagios 22
1.5.3 Công cụ OpManager 22
1.5.4 Công cụ Zabbix 22
1.6 Một số vấn đề tồn tại thực tiễn 23
Trang 2CHƯƠNG 2: QUẢN TRỊ MẠNG HƯỚNG NGƯỜI SỬ DỤNG 24
2.1 Quản trị mạng hướng người sử dụng 24
2.2 Nghiên cứu phát triển hệ thống quản trị mạng hướng người sử dụng 25
2.2.1 Giải quyết vấn đề thu thập, lưu trữ thông tin tác tử người sử dụng 25
2.2.2 Giải quyết vấn đề giám sát dịch vụ dựa trên chức năng 27
2.3 Hệ thống quản trị mạng hướng ngưởi sử dụng để giám sát chức năng dịch vụ Email 28
CHƯƠNG 3: XÂY DỰNG HỆ THỐNG QUẢN TRỊ, GIÁM SÁT DỊCH VỤ THƯ ĐIỆN TỬ (EMAIL) 30
3.1 Tổng quan hệ thống 30
3.2 Lựa chọn giải pháp công nghệ 32
3.3 Cài đặt các thành phần của hệ thống 33
3.3.1 Lập trình các module mới 33
3.3.2 Cài đặt hệ thống thử nghiệm 44
3.4 Thử nghiệm hệ thống 45
3.4.1 Kịch bản thử nghiệm 45
3.4.2 Kết quả thử nghiệm theo tình huống 47
3.4.3 Nhận xét kết quả 50
CHƯƠNG 4: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 52
TÀI LIỆU THAM KHẢO 53
PHỤ LỤC 54
1 Script cài đặt tác tử: 54
2 Script đọc thông tin tác tử 56
3 Script kiểm tra dịch vụ POP3 57
Trang 34 Script kiểm tra dịch vụ POP3SSL 58
5 Script kiểm tra dịch vụ IMAP 59
6 Script kiểm tra dịch vụ SMTP, kiểm tra mail đích bằng POP3 61
7 Script kiểm tra dịch vụ SMTP, kiểm tra mail đích bằng POP3SSL 64
8 Script kiểm tra dịch vụ SMTP, kiểm tra mail đích bằng IMAP 67
9 Script kiểm tra dịch vụ SMTP, kiểm tra mail đích bằng IMAPSSL 70
10 Các bước cài đặt hệ thống 73
Trang 4LỜI CẢM ƠN
Luận văn là kết quả của một quá trình nghiên cứu và thử nghiệm một cách nỗ lực, nghiêm túc của tôi, dưới sự hướng dẫn tận tình của PGS.TS Hà Quốc Trung Quá trình thực hiện luận văn đã cho tôi những kinh nghiệm, kiến thức thực sự quý giá về lĩnh vực quản trị, giám sát mạng
Lời đầu tiên, tôi xin gửi lời cảm ơn trân trọng nhất tới PGS.TS Hà Quốc Trung, người trực tiếp hướng dẫn tôi, cảm ơn những chỉ bảo, định hướng tận tình và quan trọng của thầy
Tiếp theo, tôi xin cảm ơn các thầy, cô trong Viện Công Nghệ Thông Tin và Truyền Thông – Đại học Bách Khoa Hà Nội đã giảng dạy, truyền đạt cho tôi những kiến thức quý báu trong suốt quá trình học tập, nghiên cứu vừa qua
Tôi cũng xin cảm ơn gia đình, bạn bè đã chia sẻ, giúp đỡ tôi trong suốt quá trình học tập nghiên cứu thực hiện luận văn
Hà Nội, ngày 20 tháng 9 năm 2015 Người thực hiện
Lương Minh Tuấn
Trang 5LỜI CAM ĐOAN
Luận văn đề tài “Quản trị mạng hướng người sử dụng: mô hình sử dụng tác
tử người sử dụng” thực hiện dưới sự hướng dẫn của PGS.TS Hà Quốc Trung,
nghiên cứu về mô hình quản trị mạng mới, phát triển, thử nghiệm và đánh giá kết quả dựa trên phần mềm mã nguồn mở Zabbix phiên bản 2.4.6, mã nguồn phát triển thêm viết bằng ngôn ngữ lập trình Python phiên bản 2.6
Tôi – Lương Minh Tuấn – cam kết luận văn tốt nghiệp là công trình nghiên cứu, phát triển của bản thân, dựa trên các công cụ, phần mềm mã nguồn mở hợp pháp, các tài liệu tham khảo, nội dung trích dẫn được ghi rõ nguồn gốc, dẫn chứng rõ ràng, không sao chép, vi phạm bản quyền của bất cứ cá nhân, tổ chức nào khác
Hà Nội, ngày 20 tháng 09 năm 2015 Người thực hiện
Lương Minh Tuấn
Trang 6DANH MỤC HÌNH VẼ
Hình 1.3-1: Mô hình hệ thống quản trị mạng thường gặp 12
Hình 1.4-1 Mô hình trao đổi thông tin của SNMP 14
Hình 1.4-2 Các phương thức hoạt động của SNMP 15
Hình 1.4-3: Cấu trúc MIB gốc 18
Hình 1.4-4: Các nhóm chuẩn của MIB-II 20
Hình 2.2-1: Giao tiếp giữa thành phần tác tử người sử dụng và hệ thống quản trị mạng 27
Bảng 2.3-1: Danh sách cam kết chức năng dịch vụ và khả năng giám sát của hệ thống 28
Hình 3.1-1: Các thành phần hệ thống giám sát dịch vụ thư điện tử 30
Hình 3.3-1: Mô hình thử nghiệm hệ thống 44
Bảng 3.4-1: Kết quả theo dõi tình huống 1 47
Bảng 3.4-2: Kết quả theo dõi tình huống 2 48
Bảng 3.4-3: Kết quả theo dõi tình huống 3 49
Bảng 3.4-4: Kết quả theo dõi tình huống 4 49
Bảng 3.4-5: Kết quả theo dõi tình huống 5 50
Bảng 3.4-6: Kết quả theo dõi tình huống 6 50
Trang 7MỞ ĐẦU
a Lý do chọn đề tài
Các hệ thống quản trị mạng có các chức năng chính là: theo dõi, phát hiện, cảnh báo sớm và xử lý sự cố Các hệ thống quản trị mạng hiện tại thường dựa trên giao thức SNMP sử dụng SNMP Agent cài đặt trên các thiết bị để thu thập và phát hiện thông tin bất thường Cách tiếp cận như vậy có các nhược điểm là:
- Khi một thiết bị không hỗ trợ SNMP thì hệ thống không thể thu thập thông tin
và kiểm soát thiết bị này, dẫn đến cả vùng mạng đằng sau nó không kiểm soát được
- SNMP Agent chỉ cung cấp các thông tin về thiết bị, không có cơ chế để kiểm tra các thiết bị khác Nếu phát triển thêm được những tính năng khác như phát hiện, lưu trữ và hiển thị thông tin người sử dụng, giám sát dịch vụ dựa trên chức năng, thì khả năng phát hiện lỗi, hiệu quả của việc giám sát, quản trị mạng sẽ tăng lên đáng kể
Với những lý do như vậy, cần thiết phải có những nghiên cứu, khảo sát thực tế,
từ đó đề xuất một mô hình giải pháp quản trị mạng khác để giải quyết các vấn đề kể trên
b Các kết quả nghiên cứu đã có
Đã có những nghiên cứu, đề xuất về một mô hình quản trị mạng dựa trên tác tử
người sử dụng được đưa ra trước đây, như trong bài báo: End user agent model for
network management system, Journal of Science & technology 79b-2010, pp 29-33, tác giả PGS TS Hà Quốc Trung [2] thực hiện cùng nhóm nghiên cứu Bài báo đã
đưa ra được một mô hình quản trị dựa trên tác tử người sử dụng, và chứng minh được những ưu điểm so với mô hình quản trị truyền thống, tuy nhiên, vẫn cần những cải tiến, mở rộng hơn nữa để có thể áp dụng một cách hiệu quả hơn vào thực
tế
c Mục đích nghiên cứu
Thử nghiệm mô hình quản trị mạng hướng người sử dụng để giải quyết các tồn tại của SNMP trên một dịch vụ mạng cụ thể Mô hình mới này phải cho phép quản
Trang 8trị viên nhận được những cảnh báo sớm hơn, chi tiết hơn về tình trạng hoạt động của các thành phần cung cấp dịch vụ, từ đó có thể xử lý sớm sự cố, tránh tối đa những ảnh hưởng đến việc khai thác tính năng dịch vụ của người dùng
d Phạm vi nghiên cứu
- Các tính năng, thành phần, ưu nhược điểm của một hệ thống quản trị mạng dựa trên SNMP truyền thống
- Nghiên cứu, triển khai mô hình quản trị mạng hướng người sử dụng
- Phát triển thêm tính năng giám sát dịch vụ dựa trên chức năng
- Các tính năng điều khiển, tự khắc phục lỗi không thuộc phạm vi luận văn
e Tóm tắt nội dung, kết quả thu được
Luận văn trình bày những kết quả nghiên cứu, tìm hiểu và khảo sát về lý thuyết quản trị mạng, mô hình quản trị mạng truyền thống và mô hình quản trị mạng hướng người sử dụng, luận văn này cũng bao gồm những tìm hiểu về một số công
cụ quản trị mạng mã nguồn mở được sử dụng phổ biến Trên những cơ sở đó, các thành phần thu thập và quản lý thông tin người sử dụng, quản trị mạng dựa trên chức năng đã được phát triển Sau đó được triển khai, đánh giá và so sánh với mô hình truyền thống
f Phương pháp nghiên cứu
Quá trình nghiên cứu như sau:
- Tìm hiểu lý thuyết chung về quản trị mạng
- Nghiên cứu mô hình quản trị mạng hướng người sử dụng
- Khảo sát và lựa chọn công cụ quản trị mạng mã nguồn mở phù hợp để phát triển các thành phần mới
- Phát triển các thành phần giám sát mới gồm:
o Thành phần thu thập, lưu trữ và sắp xếp thông tin người sử dụng
o Thành phần giám sát dịch vụ dựa trên chức năng để giám sát hoạt động dịch
vụ thư điện tử
- Xây dựng môi trường, kịch bản thử nghiệm, thu thập kết quả và đánh giá hệ thống với các thành phần mới
Trang 9CHƯƠNG 1: TỔNG QUAN VỀ QUẢN TRỊ MẠNG 1.1 Quản trị mạng cơ bản
Mạng máy tính là sự kết hợp các máy tính lại với nhau thông qua các thiết bị kết nối mạng, phương tiện truyền thông (giao thức mạng, môi trường truyền dẫn) theo một cấu trúc nào đó, và các máy tính này trao đổi thông tin qua lại với nhau Mạng máy tính được phân loại thành các dạng: LAN (Local area network – mạng cục bộ), MAN (Metropolitan area network – mạng đô thị) và WAN (Wide area network – mạng diện rộng) [13] Để có thể dự đoán, xử lý nhanh các sự cố cả về phần cứng cũng như phần mềm, cần phải theo dõi liên tục hiệu năng, trạng thái hoạt động của các thiết bị trong mạng Việc bằng cách nào đó theo dõi, ghi lại nhật ký thông tin, từ
đó đánh giá, phân tích và thực hiện các thay đổi, cập nhật hệ thống phù hợp được gọi là quản trị mạng Đây là một trong những công việc chính của người quản trị, quản lý mạng [9] Chỉ khi việc quản trị mạng được thực hiện một cách hiệu quả, thông tin liên tục được cập nhật, cảnh báo sớm khi có bất thường, quản trị viên mới
có thể hoàn toàn nắm bắt được hệ thống, đưa ra được các kế hoạch phòng tránh sự
cố, tránh tối đa ảnh hưởng đến hoạt động và chất lượng dịch vụ đang cung cấp Chương 1 đưa ra những nghiên cứu, định nghĩa về quản trị mạng, mô hình của một hệ quản trị mạng, từ đó đánh giá những vấn đề tồn tại mà mô hình truyền thống đang gặp phải
1.2 Định nghĩa, mục đích và tầm quan trọng của quản trị mạng
1.2.1 Định nghĩa quản trị mạng
Ngay từ khi có mạng máy tính đầu tiên, quản trị mạng đã xuất hiện và đóng vai trò quan trọng Bất cứ khi nào hai hay nhiều hơn các máy tính, thiết bị được liên kết với nhau đều cần phải có một hệ thống quản trị mạng để quản lý, giám sát và phân tích các thông tin trao đổi giữa chúng Tổ chức tiêu chuẩn thế giới (ISO) định nghĩa
mô hình quản trị mạng gồm năm vùng chức năng sau:
- Vùng quản lý lỗi (Fault management)
- Vùng quản lý cấu hình (Configuration management)
- Vùng quản lý tài khoản (Accounting management)
Trang 10- Vùng quản lý hiệu năng (Performance management)
- Vùng quản lý bảo mật (Security Management)
định nghĩa, chức năng của từng vùng như sau:
xử lý hoặc cô lập lỗi
b, Vùng quản lý cấu hình
Các chức năng của vùng này bao gồm:
- Thu thập và lưu trữ cấu hình của thiết bị mạng
- Đơn giản hóa cấu hình thiết bị
- Theo dõi các thay đổi trên cấu hình
Vùng này đặc biệt quan trọng, vì mỗi thay đổi trong cấu hình, dù là nhỏ nhất đều
có thể ảnh hưởng rất lớn đến hệ thống Theo dõi, ghi nhận những thông tin này sẽ giúp quản trị viên nhanh chóng phát hiện lỗi, khôi phục lại cấu hình ban đầu, hoặc đưa ra được các kế hoạch nâng cấp, mở rộng trong tương lai
c, Vùng quản lý tài khoản
Vùng này có chức năng theo dõi quá trình sử dụng dịch vụ của mỗi người dùng hoặc nhóm người dùng, từ đó xuất ra hóa đơn tính tiền (đối với những hệ thống có tính chất kinh doanh tính phí) hoặc phục vụ cho việc giám sát, phân quyền (đối với
Trang 11những hệ thống không có tính chất kinh doanh) RADIUS, TACACS và Diameter là một vài ví dụ cho những giao thức được sử dụng cho việc quản lý tài khoản
d, Vùng quản lý hiệu năng
Vùng này tập trung vào việc đảm bảo hiệu năng mạng duy trì ở mức chấp nhận được Nó cho phép quản trị viên lên kế hoạch cho những thay đổi trong tương lai, cũng như xác định hiệu quả của hệ thống ở thời điểm hiện tại Hiệu năng mạng được đánh giá thông qua thông lượng, thời gian phản hồi, tốc độ mất gói tin, và các thông số khác tùy theo đặc điểm mạng Các thông tin này thường được thu thập thông qua một hệ quản trị SNMP, hệ quản trị này vừa có chức năng giám sát chủ động, vừa có chức năng cảnh báo quản trị viên khi hiệu năng vượt quá hoặc xuống dưới ngưỡng đặt trước Giám sát chủ động hiệu năng mạng là một bước quan trọng
để xác định sự cố trước khi nó xảy ra
e, Vùng quản lý bảo mật
Quản lý bảo mật là quá trình kiểm soát quyền truy cập vào tất cả các vùng, thiết
bị trong mạng Quản lý bảo mật không chỉ để đảm bảo cho môi trường mạng được
an toàn, nó còn có chức năng thu thập các thông tin để phân tích định kỳ Các chức năng của vùng này gồm: quản lý đăng nhập hệ thống mạng, phân quyền và xác thực
Tuy được định nghĩa như vậy, nhưng có một chú ý rằng, mô hình và các vùng chức năng này thực tế rất ít khi được triển khai đầy đủ trong một hệ thống quản trị mạng của một tổ chức, doanh nghiệp Chỉ những thành phần cụ thể, tùy theo yêu cầu, quy mô của doanh nghiệp mới được triển khai [10]
1.2.2 Mục đích của quản trị mạng
Các mục đích chính của quản trị mạng là:
- Đảm bảo hệ thống mạng luôn luôn hoạt động
- Duy trì hiệu năng mạng ở mức ổn định
- Giảm chi phí quản lý, sở hữu một hệ thống mạng
Trang 12quản trị mạng đạt được các mục đích này bằng cách xây dựng các mô hình phù hợp, các thành phần phần cứng, phần mềm để cảnh báo, giám sát hiệu năng, trạng thái hoạt động Các mô hình, thành phần giám sát cần liên tục được nghiên cứu, cập nhật để ngày càng hiệu quả hơn, đây cũng chính là mục đích nghiên cứu, phát triển của luận văn này
1.2.3 Tầm quan trọng của quản trị mạng
Ở thời điểm hiện tại, bất cứ một doanh nghiệp, tổ chức nào sử dụng mạng máy tính đều cần phải xây dựng cho mình một hệ thống quản trị mạng phù hợp Chỉ khi
có một hệ thống quản trị mạng tốt, quản trị viên mới nắm bắt được hoạt động và hiệu năng hệ thống mình đang quản lý, từ đó có những kế hoạch khắc phục sự cố phù hợp, những đánh giá hiệu năng cũng như xây dựng được kế hoạch mở rộng hệ thống trong tương lai
1.3 Các thành phần của một hệ thống quản trị mạng
Hình 1.3-1: Mô hình hệ thống quản trị mạng thường gặp
Hình trên là mô hình của một hệ thống quản trị mạng thường gặp, các thành phần của hệ thống này là:
Trang 13- Máy chủ quản trị: Được cài đặt ứng dụng quản trị, có chức năng tiếp nhận thông tin gửi từ các thiết bị, lưu trữ, phân tích và hiển thị các thông tin này cho quản trị viên thấy bằng giao diện riêng Ngoài ra, nó thường có chức năng cho phép người dùng đặt các ngưỡng hiệu năng và cảnh báo khi có thông số nào
đó vượt ngưỡng Ứng dụng quản trị thường có phần lõi xử lý toàn bộ các công việc ở trên, một giao diện quản trị để hiển thị thông tin ở dạng web, và một hệ
cơ sở dữ liệu để lưu trữ thông tin nhận được
- Tác tử quản trị: Tác tử này được cài đặt trên thiết bị, khi được máy chủ ra lệnh hoặc được cài đặt định kỳ trước, sẽ chạy các tác vụ thu thập thông tin và gửi kết quả về cho máy chủ quản trị
- Giao thức quản trị: là phương thức giao tiếp giữa máy chủ quản trị và tác tử quản trị
1.4 Các giao thức quản trị mạng
Để thu thập các thông tin về trạng thái, hiệu năng hoạt động của mạng, có một vài giao thức được sử dụng như: SNMPv1,2,3 (Simple Network Management Protocol – giao thức quản trị mạng cơ bản), NetFlow, J-Flow,… tuy nhiên, chỉ có một giao thức được sử dụng rộng rãi, đã được triển khai sẵn trên hầu hết các thiết bị mạng, hệ điều hành và là giao thức chuẩn (Internet-standard) để quản trị các thiết bị trên mạng IP, đó là giao thức SNMP [13] Nói đến quản trị mạng bắt buộc phải nói đến SNMP Phần này sẽ tập trung nghiên cứu về đặc điểm, tính chất của các phiên bản SNMP và đề cập đến một khái niệm khác, có liên quan chặt chẽ với SNMP là MIB (Management Information Base – hệ cơ sở dữ liệu quản trị)
SNMP có các phiên bản 1, 2 và 3, các phiên bản sau là phiên bản mở rộng của phiên bản trước SNMP không tự định nghĩa danh sách các thông số một hệ quản trị mạng cần thu thập và theo dõi, mà nó sử dụng danh sách định nghĩa trong MIB
1.4.1 SNMP
Giao thức SNMP và mô hình triển khai SNMP hiện nay đã trở thành chuẩn cho quản trị mạng SNMP là một giải pháp đơn giản, rất dễ triển khai thực tế, vì vậy, mỗi nhà sản xuất thiết bị mạng có thể dễ dàng tự phát triển riêng cho mình những
Trang 14tác tử SNMP (SNMP Agent) phù hợp với đặc điểm thiết bị [10] SNMP định nghĩa cách trao đổi thông tin giữa ứng dụng quản trị mạng và tác tử quản trị mạng Hình 1.2 là mô hình trao đổi thông tin của SNMP:
Hình 1.4-1 Mô hình trao đổi thông tin của SNMP [10]
Mô hình này gồm có:
- Máy chủ quản trị (Manager): máy chủ quản trị, được cài đặt một ứng dụng quản trị mạng, định kỳ lấy thông tin từ các tác tử SNMP trên thiết bị, sau đó hiển thị thông tin lên giao diện đồ họa Một nhược điểm của việc định kỳ lấy thông tin như vậy là có thể có độ sai khác giữa thời gian thực xảy ra một sự kiện và thời gian hệ thống quản trị nhận ra sự kiện đó
- Giao thức (Protocol): SNMP là một giao thức trao đổi thông điệp Nó sử dụng
cơ chế trao đổi của UDP để gửi và nhận dữ liệu
- Thiết bị được quản lý (Managed device): thiết bị được quản lý bởi máy chủ quản trị
- Tác tử quản trị (Management Agents): tác tử SNMP cài đặt trên thiết bị để thu thập và lưu trữ thông tin hoạt động của thiết bị Tác tử SNMP sẽ trả lời khi có yêu cầu truy cập thông tin từ máy chủ quản trị, và có thể tạo ra các “bẫy” (trap) để báo cho máy chủ quản trị về những sự kiện đặc biệt xảy ra Bằng
Trang 15cách cấu hình các “bẫy” này, ta có thể giảm thiểu tài nguyên mạng và tài nguyên hệ thống dùng cho việc chạy tác tử vì khi đó, chỉ những sự kiện cần quan tâm xảy ra thì tác tử mới gửi thông tin về
- MIB: Tác tử SNMP thu thập dữ liệu và lưu trữ theo danh sách định nghĩa bởi MIB, có thể coi MIB như là một cơ sở dữ liệu các thuộc tính của thiết bị Để điều khiển, phân quyền truy cập đến MIB, SNMP sử dụng các chuỗi định danh (Community strings) Người dùng bắt buộc phải chỉ định chuỗi định danh nào được quyền đọc hay quyền ghi, nếu không chỉ định, mọi truy cập đều bị từ chối
1.4.2 SNMPv1
Phiên bản đầu tiên của SNMP, SNMPv1 được định nghĩa trong RFC 1157,
“Simple Network Management Protocol (SNMP)” [10] Nhìn vào tập các phương thức hoạt động của giao thức, ta có thể thấy rõ sự đơn giản của nó Hình 1.4-2 mô tả những thông điệp cơ bản của SNMP, máy chủ quản trị sẽ sử dụng các thông điệp này để trao đổi dữ liệu với tác tử trên thiết bị Những thông điệp này được diễn giải như sau:
Hình 1.4-2 Các phương thức hoạt động của SNMP [10]
- Yêu cầu lấy thông tin - Get Request: Sử dụng bởi máy chủ quản trị, để yêu cầu lấy giá trị của một biến MIB nào đó từ tác tử
Trang 16- Yêu cầu lấy thông tin tiếp theo - Get Next Request: Sử dụng sau thông điệp
“get request” đầu tiên, dùng để truy cập đối tượng tiếp theo từ một bảng hay một danh sách có trước
- Yêu cầu thiết lập thông tin - Set request: Sử dụng để thiết lập một biến MIB trên tác tử
- Phản hồi yêu cầu lấy thông tin - Get Response: Sử dụng bởi tác tử, dùng để phản hồi thông điệp “Get Request” hoặc “Get Next Request”
- Bẫy - Trap: Sử dụng bởi tác tử, để gửi cảnh báo cho máy chủ quản trị về những vấn đề không mong muốn
1.4.3 SNMPv2
SNMPv2 là một giao thức cải tiến so với SNMP về hiệu năng và cách thức giao tiếp giữa các máy chủ quản trị với nhau (manager-to-manager) SNMPv2 được giới thiệu trong RFC 1441, “Introduction to version 2 of the Internet-standard Network Management Framework”, tuy nhiên khi đó, các thành viên của tiểu ban IETF không đồng ý về một vài đặc tính của SNMPv2 (chủ yếu là các đặc tính về bảo mật
và quản trị) Để được chấp nhận, đã có một vài giao thức khác được đưa ra, loại bỏ các thành phần còn tranh cãi này như SNMPv2*, SNMPv2, SNMPv2u, SNMPv1+
và SNMPv1.5 [10]
SNMPv2 “cộng đồng” (Community-based SNMPv2) (hay SNMPv2c), được định nghĩa trong RFC 1901, “Introduction to Community-based SNMPv2”, là phiên bản được triển khai thông dụng nhất, vì vậy, khi nhắc đến SNMPv2, ta ngầm hiểu
nó chính là SNMPv2c [10] Ký tự “c” viết tắt cho cụm từ “community-based security” (tính bảo mật cộng đồng) do SNMPv2c cũng sử dụng hệ thống chuỗi định danh (community string) như SNMPv1 để phân quyền đọc, ghi So với SNMPv1, SNMPv2c có những dạng thông điệp mới sau:
- Kiểu thông điệp truy cập dữ liệu lớn (GetBulk message type): Sử dụng để truy cập một dữ liệu lớn (như các bảng dữ liệu) Sử dụng thông điệp này giúp giảm thiểu việc lặp đi lặp lại các yêu cầu và phản hồi giữa máy chủ quản trị và tác
tử, nhờ đó cải thiện được hiệu năng hoạt động
Trang 17- Yêu cầu thông báo (InformRequest): Sử dụng để cánh báo cho máy chủ quản trị SNMP khi có một điều kiện đặc biệt thỏa mãn Khác với thông điệp “trap” không được báo nhận, khi máy chủ quản trị nhận được một “InformRequest”,
nó sẽ phản hồi cho tác tử một thông điệp báo nhận (acknowledge)
Một cải tiến khác của SNMPv2 so với SNMPv1 là những dạng dữ liệu mới sử dụng bộ đếm 64-bit thay vì bộ đếm 32-bit vốn đã bị tràn khi dùng với những giao diện mạng tốc độ cao
1.4.4 SNMPv3
SNMPv3 là phiên bản SNMP mới nhất và đã được công bố ở dạng một chuẩn đầy đủ SNMPv3 được mô tả trong RFCs 3410 đến 3415, so với các phiên bản trước, nó có thêm các phương thức để bảo đảm truyền dẫn bảo mật giữa thiết bị và máy chủ quản trị [10]
1.4.5 MIB
Một MIB là một tập các đối tượng được quản trị, nó lưu trữ các thông tin mà tác
tử quản trị thu thập được ngay trên thiết bị, và cung cấp cho máy chủ khi có yêu cầu, theo một giao thức nhất định [10]
Trang 18Mỗi đối tượng trong một MIB có một định danh riêng, nhờ có định danh này, các ứng dụng quản trị mạng mới có thể xác định và truy cập giá trị mà nó mong muốn MIB có cấu trúc dạng cây, mỗi nhánh của nó là một tập các đối tượng có tính chất tương tự nhau Ví dụ, nhánh giao diện (interface) là tập các bộ đếm sử dụng cho giao diện kết nối (interface counter)
a, Cấu trúc Internet MIB
Hình 1.4-3: Cấu trúc MIB gốc
Hình 1.4-3 là cấu trúc của MIB gốc, như ta thấy, MIB được biểu diễn phân cấp dạng cây, gốc là đối tượng không xác định (unamed), tiếp đó là ba nhóm chính: CCITT (Consultative Committee for International Telegraph and Telephone), ISO
và joint ISO/CCITT
Những nhánh này chia tiếp thành các nhánh con xác định bởi một chuỗi ký tự ngắn và một số nguyên Chuỗi ký tự là tên của đối tượng, còn số nguyên là định danh dùng để xây dựng đường dẫn truy cập nhanh đến đối tượng Định danh của một đối tượng trong cây MIB là đường dẫn tính từ gốc đến đối tượng đó Ví dụ: định danh của Internet MIB là: 1.3.5.1.2.1, hoặc, biểu diễn dưới dạng các chuỗi ký tự: iso.org.dod.internet.mgmt.mib
Trang 19Các MIB chuẩn được định nghĩa trong các tài liệu RFC khác nhau Ví dụ, RFC
1213, “Management Information Base for Network Management of TCP/IP-based internets: MIB-II” định nghĩa TCP/IP MIB [10]
Bên cạnh các MIB chuẩn, mỗi nhà sản xuất thiết bị mạng có thể phát triển riêng cho mình một MIB con và tạo ra các đối tượng quản trị đặc trưng dưới nhánh MIB
đó Thường thì MIB của mỗi nhà sản xuất chứa cả các đối tượng chuẩn và các đối tượng đặc trưng Ví dụ, cây MIB của thiết bị định tuyến của hãng Cisco chứa các nhóm đối tượng chuẩn sau:
+ nhóm giao diện kết nối (interface group), nhóm này bao gồm thông tin mô tả giao diện (interface description), kiểu giao diện, địa chỉ vật lý, các bộ đếm gói tin đến và đi,…
+ nhóm IP, bao gồm thông tin dùng để xác định xem thiết bị có đang hoạt động
ở dạng cổng truy cập IP (IP gateway) hay không, số gói tin vào, số gói tin bị hủy do lỗi,…
+ nhóm ICMP, gồm số bản tin ICMP nhận được, số bản tin lỗi,…
Trang 20Hình 1.4-4: Các nhóm chuẩn của MIB-II
Các đối tượng của MIB-II nằm dưới nhánh iso.org.dod.internet.mgmt, và được chia thành mười nhóm con, các nhóm con này được định nghĩa trong RFC 1213 như sau:
- System (1.3.6.1.2.1.1): Định nghĩa một danh sách các đối tượng gắn liền với
hoạt động của hệ thống như: thời gian hoạt động của hệ thống tính từ lúc khởi động gần nhất tới thời điểm hiện tại, thông tin liên lạc của hệ thống và tên của hệ thống
- Interfaces (1.3.6.1.2.1.2): Lưu giữ trạng thái của các giao diện kết nối trên
thiết bị được quản lý Theo dõi xem trạng thái của giao diện là “up” hay “down”, lưu lại các octet gửi và nhận, octet lỗi hay bị hủy bỏ
- at (1.3.6.1.2.1.3): Nhóm at (address translation) chỉ cung cấp khả năng tương
thích ngược Nhóm này được bỏ từ MIB-III trở đi
- ip (1.3.6.1.2.1.4): Lưu giữ nhiều thông tin liên quan tới IP, trong đó có phần
định tuyến IP
- icmp (1.3.6.1.2.1.5): Lưu các thông tin như gói ICMP lỗi, hủy
- tcp (1.3.6.1.2.1.6): Lưu các thông tin dành riêng cho trạng thái kết nối TCP
như: đóng, lắng nghe, báo gửi…
- udp (1.3.6.1.2.1.7): Tập hợp các thông tin thống kê cho UDP, các datagram
vào và ra, …
- egp (1.3.6.1.2.1.8) Lưu các tham số về EGP và bảng EGP lân cận
- Transmission (1.3.6.1.2.1.10): Không có đối tượng nào trong nhóm này,
nhưng nó định nghĩa các môi trường đặc biệt của MIB
- snmp (1.3.6.1.2.1.11): các thông số hoạt động của SNMP trên các tác tử
quản trị và số các gói SNMP nhận và gửi
Trang 21Ngoài các giao thức chuẩn như đã trình bày, còn có rất nhiều các giao thức khác, được triển khai trên thiết bị của từng hãng như CISCO NetFlow, Juniper JFlow,… các giao thức này chỉ đặc trưng cho từng thiết bị, về cơ bản vẫn phát triển dựa trên các giao thức trên nên không được trình bày ở đây
1.5 Một vài công cụ quản trị mạng được sử dụng rộng rãi hiện nay
Trong thực tế, mạng máy tính hiện nay thường gồm rất nhiều các thiết bị có cấu tạo phức tạp, chủng loại khác nhau, do đó, để thực hiện quản trị mạng một cách hiệu quả, không thể sử dụng các công cụ thủ công được mà cần phải có một ứng dụng quản trị mạng tập trung, một giao thức quản trị mạng chuẩn cho tất cả các thiết bị Phần này sẽ trình bày một số công cụ quản trị mạng được sử dụng rộng rãi hiện nay,
đa số các công cụ này đều có các tính năng thu thập, thống kê và cảnh báo khi có thông tin vượt ngưỡng Giao thức giám sát chuẩn được sử dụng là SNMP, có thể có giao thức riêng (như Zabbix) nhưng yêu cầu phải cài tác tử đặc biệt lên hệ thống thì mới có thể thực hiện giám sát được Một vài công cụ được giới thiệu gồm: Cacti, Nagios, OpManager và Zabbix, ngoài ra còn rất nhiều công cụ khác nữa
1.5.1 Công cụ Cacti
Cacti là một giải pháp đồ thị hóa hoạt động mạng, sử dụng RRDTools để lưu trữ thông tin và vẽ đồ thị mô tả [3] Cacti là công cụ mã nguồn mở, có phương thức thu thập dữ liệu giám sát hoạt động nhanh, ổn định Ưu điểm của Cacti là có rất nhiều các kiểu mẫu (template) đồ thị mạng đơn giản nhưng rất đầy đủ và trực quan, nhiều phương thức thu thập dữ liệu khác nhau, ngoài ra còn có các tính năng quản trị người dùng đặc biệt khác Để mở rộng tính năng cho Cacti, cần phải viết các thành phần mở rộng (plugin) cho nó Bản thân Cacti không có tính năng cảnh báo và đặt ngưỡng cảnh báo cho các thông số mà nó quản lý, nhưng có rất nhiều các phần mở rộng đã được phát triển để bổ sung khiếm khuyết này Cacti có cộng đồng người sử dụng rộng lớn và đã được sử dụng rộng rãi trong một thời gian dài, hiện nay, nó có thể giám sát được hầu hết các thiết bị mạng của mọi hãng sản xuất
Trang 221.5.2 Công cụ Nagios
Nagios là một phần mềm quản trị mạng mã nguồn mở, dùng để theo dõi toàn bộ
hạ tầng mạng gồm: máy chủ, thiết bị mạng, các hoạt động khác trong mạng Nagios cũng như Cacti, có một cộng đồng phát triển và sử dụng cực kỳ rộng lớn [4]
Nagios có năm cách thức lấy thông tin giám sát khác nhau
- chạy trực tiếp các plugins được tích hợp trong lõi để lấy các kết quả trả về
- dùng Secure Shell (SSH) để chạy các plugins từ xa
- dùng Nagios Remote PluginExecutor (NRPE) để chạy các plugins
- giám sát thông qua SNMP
- dùng Nagios ServiceCheck Acceptor (NSCA) để chạy các plugins
1.5.3 Công cụ OpManager
Khác với hai công cụ ở trên, OpManager là một phần mềm thương mại, được phát triển bởi hãng ManageEngine OpManager cung cấp rất nhiều tính năng giám sát rất mạnh như: tạo báo cáo định kỳ dạng PDF, giám sát nhiều thiết bị, dịch vụ khác nhau, tích hợp nhiều giao thức quản trị như SNMP, NetFlow, Jflow,… OpManager là một trong số những phần mềm giám sát mạng thương mại hàng đầu hiện nay
1.5.4 Công cụ Zabbix
Zabbix là một công cụ nguồn mở có cấu trúc client – server và một giao diện
web trực quan Zabbix server định kỳ kết nối tới agent được cài đặt tại máy cần quản trị, thu thập thông tin (tải CPU, tiến trình, bộ nhớ trống….) và lưu chúng vào
cơ sở dữ liệu Các cơ sở dữ liệu có thể sử dụng với Zabbix là: MySQL, PostgreSQL, Oracle, IBM DB2 [5]
Giao diện Web của Zabbix rất trực quan, giúp quản lý hệ thống đơn giản và dễ dàng Về mã nguồn, Zabbix bao gồm các thành phần độc lập: thành phần quản trị (server), tác tử (agent) và giao diện (frontend), trong đó phần quản trị và tác tử được viết bằng ngôn ngữ C, giao diện được viết bằng PHP và Javascript
Dưới đây là một số tính năng của Zabbix:
- Quản lý tập trung, dễ dàng sử dụng giao diện web
Trang 23- Agent có thể cài đặt được trên hầu hết các hệ điều hành
- Có khả năng giám sát trực tiếp thông qua SNMP (v1, 2, 3) và thiết bị IPMI
- Khả năng dựng biểu đồ và các khả năng hiển thị khác
- Khả năng cảnh báo sự cố dưới nhiều dạng
- Hỗ trợ người dùng rất mạnh trong việc tùy biến, tạo thêm các tính năng theo
dõi mới
Với những tính năng rất mạnh kể trên, và hoàn toàn là một phần mềm mã nguồn
mở, Zabbix được lựa chọn là công cụ để phát triển thử nghiệm các ý tưởng, nghiên cứu trong luận văn
1.6 Một số vấn đề tồn tại thực tiễn
Mặc dù được sử dụng rộng rãi và không ngừng phát triển, mô hình sử dụng SNMP truyền thống ở trên vẫn gặp phải những vấn đề rất khó để khắc phục trong thực tế, có thể chỉ ra như sau:
- Thiết bị không thích hợp hoặc không hỗ trợ SNMP Khi có một thiết bị như vậy, toàn bộ vùng mạng đằng sau thiết bị sẽ gần như là “hộp đen” với quản trị viên, dẫn đến việc quản trị mạng rất khó khăn, buộc phải sử dụng các biện pháp thủ công, truy cập trực tiếp vào thiết bị để giám sát
- Các lỗi ứng dụng, lỗi phần mềm thường do người sử dụng phát hiện trước chứ không phải do quản trị viên phát hiện, dẫn đến việc người sử dụng lầm tưởng
hệ thống luôn có sự cố Để theo dõi được hoạt động của các ứng dụng này, không thể chỉ dựa vào các thông số mà SNMP thu thập được
Để giải quyết các vấn đề này, luận văn sẽ nghiên cứu, triển khai mô hình quản trị mạng hướng người sử dụng, và áp dụng mô hình này để giám sát dựa trên chức năng một dịch vụ mạng cụ thể
Trang 24CHƯƠNG 2: QUẢN TRỊ MẠNG HƯỚNG NGƯỜI SỬ DỤNG
Chương 2 nghiên cứu mô hình của quản trị mạng hướng người sử dụng, từ đó đưa ra thiết kế và các bước phải làm để xây dựng phần mềm ứng dụng mô hình này vào thực tế
2.1 Quản trị mạng hướng người sử dụng
Như phân tích ở chương 1, máy chủ quản trị sử dụng SNMP không thể lấy được các thông tin cần thiết từ một thiết bị không hỗ trợ SNMP, đồng nghĩa với toàn bộ vùng mạng đằng sau thiết bị không được giám sát Trong thực tế, mặc dù thấy rõ được nhược điểm này, nhưng không phải cơ quan, tổ chức nào cũng có khả năng thay thế ngay được những thiết bị này bằng những thiết bị mới Nguyên nhân có thể
do chi phí (thiết bị hỗ trợ SNMP thường đắt hơn), do thói quen sử dụng thiết bị mạng của quản trị viên, hoặc do thiết bị cần thay thế là thiết bị đóng vai trò quan trọng trong mạng, phải có kế hoạch nâng cấp, đồng bộ và đào tạo sử dụng thiết bị mới rất mất thời gian và tốn kém mới có thể thay đổi được
Ý tưởng của quản trị mạng hướng người sử dụng là: thay vì tập trung vào thay đổi thiết bị, ta tập trung vào theo dõi các thiết bị đằng sau nó, đang sử dụng nó, dựa trên thông tin thu thập được đánh giá hiệu năng thiết bị Ví dụ: nếu biết được tình trạng kết nối mạng của các máy tính cá nhân trong một phòng ta hoàn toàn có thể xác định được tình trạng hoạt động của thiết bị chuyển mạch đang được dùng để
“chia mạng” cho phòng đó, cách xác định như sau: nếu một máy tính trong phòng không truy cập được mạng thì có hai khả năng xảy ra: thiết bị chuyển mạch gặp sự
cố hoặc chỉ máy tính cá nhân bị sự cố, bằng phần mềm giám sát, ta dễ dàng kiểm tra được tình trạng truy cập mạng của các máy tính khác cùng phòng, nếu các máy tính này cũng không truy cập được thì khả năng cao là thiết bị chuyển mạch đang gặp sự
cố, ngược lại, nếu chỉ một máy cá nhân lỗi thì có thể kết luận thiết bị chuyển mạch vẫn hoạt động bình thường
Không chỉ với thiết bị mạng không hỗ trợ SNMP, ta còn có thể áp dụng mô hình này để giám sát hoạt động của một dịch vụ, xem có xảy ra lỗi phần mềm hay không,
ý tưởng hoàn toàn tương tự như ở trên, nếu chỉ có một tác tử người sử dụng không
Trang 25sử dụng được dịch vụ thì có thể kết luận dịch vụ vẫn bình thường, người dùng nên kiểm tra lại ở phía mình, nếu nhiều tác tử người sử dụng đồng thời gặp lỗi, nghĩa là phần mềm dịch vụ đang có vấn đề, quản trị viên cần kiểm tra lại ngay
Với hệ thống tác tử người sử dụng có tính năng như trên, kết hợp với hệ thống quản trị mạng truyền thống, quản trị viên sẽ hoàn toàn làm chủ được hệ thống mình đang quản trị, và hơn nữa, có thể đứng ở vị trí người sử dụng, sử dụng dịch vụ và hạ tầng mạng để phát hiện sớm sự cố, mặc dù “vô hình” đối với thiết bị nhưng ảnh hưởng không hề nhỏ đến trải nghiệm của người dùng
2.2 Nghiên cứu phát triển hệ thống quản trị mạng hướng người sử dụng
Để thực hiện được các ý tưởng đã nêu ở phần 2.1, ta cần phải giải quyết được các vấn đề sau:
- các thông tin về người sử dụng là những thông tin mà SNMP không cung cấp,
do đó cần một phương thức thu thập, lưu trữ thêm các thông tin này
- đối với trường hợp theo dõi dịch vụ, cần phải xác định được các thủ tục mà người dùng khi truy cập vào hệ thống cần phải tuân theo, từ đó mô phỏng lại các hành động này, sau đó dựa trên cam kết chức năng dịch vụ để đánh giá kết quả mô phỏng, kết luận về trạng thái hoạt động của dịch vụ
Các vấn đề trên lần lượt được xử lý như sau:
2.2.1 Giải quyết vấn đề thu thập, lưu trữ thông tin tác tử người sử dụng
Có hai giải pháp có thể giải quyết vấn đề này:
- Để tác tử tự tìm kiếm địa chỉ mạng và gửi đến máy chủ quản trị
- Để người dùng tự nhập thông tin cần thiết khi đăng ký tải tác tử hoặc thay đổi cách thức cài đặt tác tử, yêu cầu người dùng nhập thông tin trước khi cài đặt Mỗi giải pháp đều có những vấn đề riêng Đối với giải pháp thứ nhất, tác tử không thể tự tìm kiếm chính xác được vị trí vật lý, thông tin người sử dụng, do đó cần có cơ chế để từ các thông tin vật lý của thiết bị, hệ thống tự tìm kiếm ra thông tin người sử dụng Hiện tại cơ chế tìm kiếm như vậy chưa có, do đó luận văn không lựa chọn ý tưởng này Đối với giải pháp thứ hai, yêu cầu bắt buộc là người dùng
Trang 26phải nhập đúng thông tin khi đăng ký hoặc cài đặt ban đầu Yêu cầu này hoàn toàn
có thể thực hiện được trong thực tế, do đó, phương án thứ hai được lựa chọn
Trong nghiên cứu được thực hiện và trình bày trong bài báo End user agent
model for network management system [10] về đề tài tương tự, tác giả sử dụng cách
tạo một trang đăng ký tải tác tử quản trị, yêu cầu người dùng nhập thông tin vào trước khi tải, tuy nhiên có thể thấy những nhược điểm khi sử dụng phương pháp này là:
- Phải tạo thêm một trang tải phần mềm riêng
- Khi tác tử người sử dụng thay đổi thông tin, người dùng cần phải báo lại cho quản trị viên để thay đổi hoặc đăng ký mới lại từ đầu, việc làm như vậy sẽ gây mất thời gian, và nếu số lượng yêu cầu thay đổi quá nhiều, quản trị viên sẽ gặp khó khăn do phải xử lý quá nhiều thông tin một lúc
Để cải tiến phương pháp này, thay vì tạo trang tải bộ cài và đăng ký thông tin, ta phát triển một phương thức cài đặt mới Cụ thể phương thức mới sẽ có thêm các bước nhập thông tin người sử dụng trong quá trình cài đặt, các thông tin này thay vì ghi trực tiếp vào cơ sở dữ liệu của máy chủ, sẽ được lưu cục bộ trước; máy chủ quản trị sau đó mới tự động truy cập để tạo mới hoặc cập nhật lại thông tin Với cách làm như vậy, khi có thay đổi, người dùng sẽ tự cập nhật lại nội dung dữ liệu đã được lưu trữ cục bộ, sau một khoảng thời gian nhất định, máy chủ sẽ tự động truy cập và ghi nhận Quản trị viên hoàn toàn không phải tác động gì đến hệ thống mà vẫn có được thông tin chính xác
Giao tiếp giữa hệ thống quản trị mạng cũ và thành phần tác tử người sử dụng như sau:
Trang 27Hình 2.2-1: Giao tiếp giữa thành phần tác tử người sử dụng
và hệ thống quản trị mạng
Ở phía máy tính cá nhân: sau khi tải về file cài đặt, người dùng sẽ thực hiện cài đặt tác tử Trong quá trình cài đặt, người dùng tự nhập các thông tin cá nhân của mình, các thông tin này gồm:
- Vị trí địa lý của máy tính cá nhân
Ở phía máy chủ quản trị mạng: quản trị viên cần cấu hình thêm máy được theo dõi mới, điều chỉnh các tham số ban đầu cần thiết Sau đó, phần mềm quản trị sẽ tự động gửi yêu cầu lấy thông tin cho máy cá nhân, máy cá nhân đọc file dữ liệu tác tử
và gửi về cho máy chủ để lưu trữ vào cơ sở dữ liệu chung Yêu cầu lấy thông tin tác
tử được thực hiện định kỳ, nếu có thay đổi sẽ cập nhật lại vào cơ sở dữ liệu, đồng thời ghi lại toàn bộ lịch sử thay đổi
2.2.2 Giải quyết vấn đề giám sát dịch vụ dựa trên chức năng
Rõ ràng nếu chỉ dựa vào các thông số về CPU, RAM, hay các thông số của SNMP cung cấp, ta không thể biết được khi nào một ứng dụng cung cấp dịch vụ cài trên máy chủ gặp sự cố, hay chính xác hơn, không thể giám sát được các lỗi ứng
Trang 28dụng mà người sử dụng dịch vụ gặp phải Để thực hiện được việc giám sát này, bắt buộc phải xây dựng được một hệ thống mô phỏng hành động người dùng, định kỳ chạy các mô phỏng này và gửi kết quả về cho máy chủ quản trị Mỗi dịch vụ có một đặc điểm, thành phần phần mềm riêng, do đó sẽ không có một công thức chung để giám sát mọi loại dịch vụ, mà cần phải có những mô phỏng khác nhau cho mỗi dịch
vụ khác nhau Trong phạm vi luận văn, ta sẽ chỉ theo dõi hệ thống thư điện tử, một
hệ thống quan trọng, phổ biến và yêu cầu tính sẵn sàng cao trong mọi doanh nghiệp,
Dưới đây là bảng danh sách các dịch vụ con, cam kết dịch vụ với người dùng, và những thành phần mà hệ thống phát triển trong luận văn giám sát được:
Tên dịch vụ con Cam kết dịch vụ Khả năng giám sát
Bảng 2.3-1: Danh sách cam kết chức năng dịch vụ
và khả năng giám sát của hệ thống
Trang 29Tác tử người sử dụng cài đặt trên nhiều máy tính cá nhân, định kỳ chạy các tác
vụ mô phỏng hành động người dùng và gửi kết quả về cho máy chủ quản trị để theo dõi và cảnh báo khi có dấu hiệu bất thường
Chi tiết cấu trúc phần mềm, các bước cài đặt và chạy thử nghiệm được trình bày trong chương 3
Trang 30CHƯƠNG 3: XÂY DỰNG HỆ THỐNG QUẢN TRỊ, GIÁM SÁT DỊCH VỤ
THƯ ĐIỆN TỬ (EMAIL) 3.1 Tổng quan hệ thống
Hệ thống phát triển dựa trên công cụ quản trị mạng Zabbix, sử dụng chức năng tạo các “Userparameter” từ các file kịch bản (script) viết bằng ngôn ngữ Python để
mô phỏng hoạt động người dùng Phần cài đặt tác tử Zabbix được viết lại bằng ngôn ngữ Bash shell để tích hợp thêm thành phần thu thập thông tin tác tử người sử dụng
Mô hình các thành phần và liên kết giữa các thành phần của hệ thống như sau:
Hình 3.1-1: Các thành phần hệ thống giám sát dịch vụ thư điện tử
Diễn giải mô hình:
- Tác tử: lõi tác tử là Zabbix agent, phần cài đặt được viết lại dưới dạng một shell script, shell script này thực hiện lần lượt các bước:
o Tải về toàn bộ bộ cài tác tử gồm: mã nguồn zabbix agent, các script mô phỏng hành động người dùng, file cấu hình zabbix agent mẫu
o Yêu cầu người dùng nhập các thông tin tác tử như: địa chỉ MAC, vị trí vật
lý, thông tin quản trị viên,… và ghi toàn bộ các thông tin này vào file Agentinfo.txt theo một quy cách riêng
o Tự động giải nén mã nguồn zabbix agent, cài đặt như bình thường
Trang 31o Yêu cầu người dùng nhập IP máy chủ Zabbix, tự động cập nhật vào file cấu hình zabbix agent mẫu và ghi đè lên file cấu hình mặc định khi cài File cấu hình mẫu đã được cấu hình sẵn đường dẫn đến các script kiểm tra dịch vụ, script kiểm tra thông tin tác tử và định nghĩa sẵn các
“Userparameter” dùng cho các template trên máy chủ zabbix
o Chép các file script vào đúng thư mục được trỏ đến trong file cấu hình Các script bao gồm:
và giám sát dịch vụ dựa trên chức năng bằng cách cấu hình thêm các tham số
và template tự tạo Các template và tham số này bao gồm:
o Template “Agent Information”: template này định nghĩa các item thông tin
về tác tử người sử dụng được thu thập Các item đã được định nghĩa là: + “Agent MAC”: địa chỉ MAC của giao diện mạng thiết bị
+ “Agent Owner”: tên người quản trị thiết bị
+ “Agent Position”: vị trí vật lý của thiết bị
+ “Agent Other Information”: Các thông tin khác như số điện thoại, email…
Giá trị của các item này được thu thập bằng script getInfo.py
o Template “Mail_Template”: template định nghĩa các item thông tin về ứng dụng mail Các item đã được định nghĩa là:
Trang 32+ “imap_non_SSL_Check”: kết quả kiểm tra dịch vụ IMAP
+ “IMAP_quota”: kết quả kiểm tra dung lượng đã dùng/dung lượng cho phép của tài khoản thư điện tử được cung cấp
+ “IMAP_SSL”: kết quả kiểm tra dịch vụ IMAP_SSL
+ “POP3_nonSSL” : kết quả kiểm tra dịch vụ POP3
+ “POP3_SSL” : kết quả kiểm tra dịch vụ POP3SSL
+“SMTP_nonSL_toGmail_IMAP”: kết quả kiểm tra dịch vụ SMTP, tài khoản gửi thư đến là tài khoản Gmail, sử dụng IMAP để kiểm tra thư đến
+ “SMTP_SSL_toHotmail_IMAP”: kết quả kiểm tra dịch vụ SMTPSSL, tài khoản gửi thư đến là tài khoản Hotmail, sử dụng IMAP
để kiểm tra thư đến
+ “SMTP_STARTTLS_toLocal_POP3”: kết quả kiểm tra dịch vụ SMTPSTARTTL, tài khoản gửi thư đến là tài khoản cùng tên miền với tài khoản gửi đi, sử dụng POP3 để kiểm tra thư đến
- Giao diện quản trị, hiển thị thông tin (Web Frontend): Đây là thành phần giao diện đồ họa để quản trị viên cấu hình, thêm, sửa, xóa các tác tử mới Thành phần này là giao diện sẵn có của Zabbix, viết bằng PHP, ta giữ nguyên, không thay đổi so với phiên bản gốc
3.2 Lựa chọn giải pháp công nghệ
Để triển khai mô hình giám sát dựa trên tác tử người sử dụng, ta có thể tự phát triển một hệ thống quản trị mạng hoặc sử dụng một hệ quản trị mạng mã nguồn mở
và phát triển thêm các module hỗ trợ Phương án thứ nhất rõ ràng phải đầu tư rất nhiều công sức và thời gian, và gần như không khả thi trong phạm vi luận văn, do
đó ta lựa chọn phương án hai, sử dụng một công cụ mã nguồn mở phù hợp để phát triển thêm các module mới
Sau nhiều nghiên cứu, thử nghiệm các phần mềm quản trị mạng mã nguồn mở, phần mềm được lựa chọn là Zabbix Zabbix là một giải pháp giám sát thiết bị, ứng dụng mạng dành cho doanh nghiệp được viết bởi bởi Alexei Vladishev[5] Ra đời từ
Trang 33năm 1998, đến nay nó đã có một cộng đồng sử dụng và phát triển rộng lớn Phần lõi của Zabbix được phát triển bằng ngôn ngữ C, giao diện web viết bằng PHP, có thể hoạt động với nhiều cơ sở dữ liệu như MySQL, PostgreSQL, SQLite, Oracle Zabbix cung cấp cho người dùng các cơ chế giám sát hệ thống sau:
- kiểm tra đơn giản (simple check), cơ chế này cho phép kiểm tra tính sẵn sàng
và thông tin phản hồi của một số dịch vụ chuẩn như SMTP hay HTTP mà không cần cài thêm bất cứ phần mềm nào ở thiết bị cần theo dõi
- sử dụng tác tử zabbix, sử dụng cơ chế này, người dùng cần cài đặt một tác tử đặc biệt lên hệ thống để thu thập các thông tin như tải của CPU, tình trạng sử dụng tài nguyên mạng, dung lượng đĩa cứng,…
- sử dụng các giao thức chuẩn như SNMP, ICMP, cũng như các giao thức thường dùng khác như IPMI, JMX, SSH, Telnet
Ngoài các tính năng mà một hệ quản trị mạng cần có như: giám sát trạng thái, hiệu năng thiết bị, các tính năng cảnh báo sự cố bằng thư điện tử, tin nhắn điện thoại, tổng hợp vẽ đồ thị,… Zabbix đặc biệt mạnh trong việc hỗ trợ phát triển các thành phần giám sát, thu thập thông tin mới theo ý người dùng, đây là lý do chính
để Zabbix được lựa chọn để phát triển các ý tưởng mới
Các thành phần phát triển thêm bao gồm: một phương thức cài đặt tác tử tự động, thực hiện lần lượt các thao tác như mô tả ở phần trên, ngôn ngữ được lựa chọn để thực hiện là bash shell, các module mô phỏng hành động người dùng, được phát triển bằng ngôn ngữ Python Các ngôn ngữ này đều được hỗ trợ mặc định trên môi trường Linux, do đó rất thuận tiện trong việc cài đặt và triển khai thử nghiệm
Từ các ý tưởng và công cụ được nghiên cứu, lựa chọn một cách kỹ càng, các module mới đã được phát triển thành công Phần tiếp theo sẽ trình bày về cách cài đặt các thành phần này và hệ thống thử nghiệm
3.3 Cài đặt các thành phần của hệ thống
3.3.1 Lập trình các module mới
Zabbix hiện tại đã cung cấp các chức năng như sau:
- Giám sát, theo dõi các thông số như CPU, RAM, băng thông mạng
Trang 34- Zabbix Agent có thể được cài đặt trên Linux hoặc Windows
- Hỗ trợ phát triển thêm các thành phần giám sát mới bằng các ngôn ngữ lập trình khác nhau Ta chỉ cần phát triển các script thu thập thông tin, cấu hình các Userparameter, việc truyền thông tin giám sát, lưu trữ và cảnh báo được thực hiện như với các thống số CPU, RAM mặc định
Như vậy, cần lập trình thêm các thành phần sau:
- module cài đặt và thu thập thông tin tác tử Module này được thực hiện bởi một file cài đặt, yêu cầu người dùng nhập thông tin, lưu lại thông tin này, và tự động cài đặt, cấu hình Zabbix agent cho phù hợp
- các module mô phỏng quá trình sử dụng dịch vụ Các module này được thực hiện bởi các script viết bằng ngôn ngữ python, mô phỏng quá trình sử dụng dịch
vụ của người dùng Đối với hệ thống thư điện tử, cần các script theo dõi các dịch vụ sau:
Trang 35Chức năng Thông số đầu vào Kết quả đầu ra Tên script
thực hiện
Tự động tải về bộ cài Zabbix
agent, các script mô phỏng,
hỏi thông tin người dùng, cài
đặt và cấu hình Zabbix agent
để sử dụng các script mô
phỏng này
Các thông tin về tác tử người sử dụng (địa chỉ MAC, tên người quản lý,
số điện thoại, email liên hệ)
- Cài đặt Zabbix Agent vào máy cá nhân
- Tạo file AgentInfo.txt chứa thông tin tác tử
- Tải, sao chép các script mô phỏng vào thư mục /home/zabbix
- Cấu hình Zabbix Agent để sử dụng các script mô phỏng, script đọc thông tin tác tử
install_zabbix_agentd.sh
Đọc thông tin tác tử từ file
AgentInfo.txt
Tên trường thông tin cần đọc (Ví dụ: mac_addr, Owner, Phone, )
Giá trị của trường thông tin getInfo.py
Kết nối tới IMAP server, đăng
imapCheck.py
Trang 36dụng/tối đa của tài khoản - Mật khẩu
- Giao thức kết nối Gán cho giá trị 1 để dùng IMAP thông thường, 2 cho IMAPSSL
- Có chạy chế độ kiểm tra dung lượng hay không, gán cho giá trị 0 để không kiểm tra, khác không để kiểm tra
thông tin lỗi
- Nếu hoạt động ở chế độ kiểm tra dung lượng, kết quả là dung lượng
đã sử dụng/dung lượng cho phép, hoặc “unlimited” nếu không giới hạn
Kết nối tới POP3 server, đăng
pop3_SSLcheck.p
y
Trang 37Kết nối tới máy chủ SMTP,
đăng nhập và gửi thư, gửi
xong đợi 10 giây, đăng nhập
- Username tài khoản gửi
- Mật khẩu tài khoản gửi
- Giao thức kết nối SMTP, gán cho 0 nếu chạy SMTP thường, 1 nếu SMTPSSL, giá trị bất kỳ khác 0, 1 nếu chạy SMTPSTARTTLS
Nếu SMTP có lỗi, trả về thông tin lỗi của SMTP
Nếu SMTP hoạt động bình thường, IMAP lỗi, trả về lỗi khi truy cập IMAP
Nếu SMTP hoạt động bình thường, IMAP hoạt động bình thường nhưng vì lý do nào đó không nhận được thư, trả về
“Failed!”
smtp_IMAPnonSSL_check.py smtp_IMAPSSL_check.py
Kết nối tới máy chủ SMTP, - IP máy chủ SMTP Nếu SMTP hoạt động bình smtp_POP3nonS
Trang 38đăng nhập và gửi thư, gửi
xong đợi 10 giây, đăng nhập
vào hòm thư đích bằng
POP3nonSSL hoặc POP3SSL,
kiểm tra xem có nhận được
thư mới không
- Cổng dịch vụ SMTP
- Username tài khoản gửi
- Mật khẩu tài khoản gửi
- Chế độ chạy SMTP, gán cho 0 nếu chạy SMTP
SMTPSSL, giá trị bất kỳ khác 0, 1 nếu chạy SMTPSTARTTLS
Nếu SMTP có lỗi, trả về thông tin lỗi của SMTP
Nếu SMTP hoạt động bình thường, POP3 lỗi, trả về lỗi khi truy cập POP3
Nếu SMTP hoạt động bình thường, POP3 hoạt động bình thường nhưng vì lý do nào đó không nhận được thư, trả về
“Failed!”
SL_check.py smtp_POP3SSL_check.py
Trang 39b, Xây dựng module cài đặt và thu thập thông tin tác tử
Module này gồm 2 thành phần: một chương trình cài đặt tự động tác tử, hỏi và lưu lại thông tin người dùng ra một file dữ liệu riêng, và một script đọc file dữ liệu này gửi
về cho máy chủ Zabbix
- Lập trình chương trình cài đặt tự động tác tử (install_zabbix_agentd.sh):
Sử dụng bash shell, thực hiện lần lượt các câu lệnh phù hợp để tự động tải, cài đặt
và cấu hình Zabbix agent
Để cấu hình Zabbix agent, ta sử dụng một file cấu hình mẫu, danh sách các
Userparameter và các thông số được tinh chỉnh trong file cấu hình này như sau:
+ Tăng thời gian trễ khi thu thập thông tin lên 30 giây:
Timeout=30
+ Thêm các Userparameter để thu thập thông tin agent (Userparameter là một khái niệm trong Zabbix, dùng để chỉ những tham số mà người dùng tự phát triển Cấu trúc khai báo một Userparameter là: UserParameter=<key>,<shell command>; trong đó:
“UserParameter” là từ khóa khai báo, <key> là tên tham số mới, <shell command> là câu lệnh để thu thập thông tin) Các UserParameter được thêm mới là:
## UserParameter dung cho kiem tra dich vu ##
UserParameter=imapCheck[*],/home/zabbix/imapCheck.py $1 $2 $3 $4 $5 $6 UserParameter=smtp_IMAPnonSSL_check[*],/home/zabbix/smtp_IMAPnonSSL_c heck.py $1 $2 $3 $4 $5 $6 $7 $8 $9
UserParameter=smtp_IMAPSSL_check[*],/home/zabbix/smtp_IMAPSSL_check.py
$1 $2 $3 $4 $5 $6 $7 $8 $9
UserParameter=pop3check[*],/home/zabbix/pop3check.py $1 $2 $3 $4
UserParameter=pop3_SSLcheck[*],/home/zabbix/pop3_SSLcheck.py $1 $2 $3 $4 UserParameter=smtp_POP3nonSSL_check[*],/home/zabbix/smtp_POP3nonSSL_c heck.py $1 $2 $3 $4 $5 $6 $7 $8 $9