Nghiên cứu các giải pháp giám sát hoạt động dịch vụ trong hệ thống mạng: HTTP, FTP, … Đề xuất công cụ nguồn mở hỗ trợ giám sát hoạt động của các thiết bị, dịch vụ mạng... Thực ngh
Trang 1LỜI NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
Trang 2LỜI NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
Trang 3LỜI CẢM ƠN
Sau thời gian một học kỳ thực hiện đề tài tốt nghiệp “Tìm hiểu và ứng dụng hệ thống giám sát mạng với phần mềm mã nguồn mở NAGIOS” đã hoàn thành Ngoài những nỗ lực của bản thân, em đã nhận được không ít sự khích lệ và động viên từ gia đình, nhà trường và bạn bè
Em xin cảm ơn các thầy cô trường Đại Học Nha Trang đã truyền đạt kiến thức cho em trong suốt quá trình học tập để hoàn thiện đề tài này Đặc biệt em xin bày tỏ lòng chân thành sâu sắc đối với thầy Phạm Văn Nam, người đã tận tình hướng dẫn và giúp đỡ em hoàn thành đề tài tốt nghiệp
Xin cảm ơn gia đình và bạn bè đã quan tâm, động viên và giúp đỡ trong quá trình học tập và hoàn thành đề tài tốt nghiệp này
Nha Trang, ngày tháng năm 2010
SVTH: Huỳnh Thanh Tâm
Trang 4MỤC LỤC
Mở đầu 5
Chương 1: Tổng quan hệ thống giám sát mạng 7
Chương 2: Hệ thống giám sát mạng sử dụng mã nguồn mở với NAGOIS 15
Chương 3: Phát triển ứng dụng hệ thống giám sát 29
Chương 4: Kết luận 32
Trang 5MỞ ĐẦU
I Sơ lược về đề tài
Thực hiện việc giám sát trạng thái các Server và các dịch vụ chạy trên máy Server
Thực hiện việc giám sát các trạng thái và lưu lượng trên các cổng Switch và Router
Thực hiện việc phát cảnh báo thông qua giao diện web và âm thanh khi một host hay một dịch vụ down
II Mục tiêu đề tài
Xem xét các giải pháp giám sát hệ thống mạng, theo dõi tình trạng hoạt động của các Server, Switch, Router, và một số dịch vụ mạng
Phát triển hệ thống cảnh báo qua Web và Audio (âm thanh)
III Đối tượng nghiên cứu
Phần mềm mã nguồn mở Nagios dùng để giám sát các thiết bị và dịch vụ mạng
Phần mềm mã nguồn mở Nagios tích hợp với Cacti để giám sát các thiết bị và dịch vụ mạng
IV Nội dung nghiên cứu
Nghiên cứu các giải pháp giám sát hoạt động các thiết bị mạng, chủ yếu là tình
trạng hoạt động (up/down) của các Server
Nghiên cứu các giải pháp giám sát hoạt động dịch vụ trong hệ thống mạng:
HTTP, FTP, …
Đề xuất công cụ nguồn mở hỗ trợ giám sát hoạt động của các thiết bị, dịch vụ
mạng
Trang 6 Thực nghiệm một giải pháp giám sát hoạt động của các thiết bị mạng, các dịch
vụ mạng trên cơ sở nguồn mở kết hợp với hệ thống báo động đa dạng qua Web,
Audio (âm thanh)
Trong đề tài này được tổ chức thành 4 chương:
Chương 1: Tổng quan về hệ thống giám sát mạng
Chương 2: Hệ thống giám sát mạng sử dụng với mã nguồn mở Nagios
Chương 3: Phát triển ứng dụng hệ thống giám sát mạng sử dụng Nagios
Chương 4: Kết luận
Trang 7Chương 1 TỔNG QUAN VỀ HỆ THỐNG GIÁM SÁT MẠNG
1.1 Giới thiệu
Ngày nay khoa học kỹ thuật phát triển càng ngày một nhanh hơn, đặc biệt là công nghệ thông tin Nhu cầu ứng dụng công nghệ thông tin của các tổ, các công ty ngày càng cao đặc biệt là hệ thống mạng máy tính Có lẽ nhờ hiểu rõ được tầm quan trọng và những ưu điểm vượt trội của việc bảo mật, trao đổi thông tin của hệ thống Mạng máy tính mà số lượng các công ty, doanh nghiệp thiết lập, sử dụng hệ thống mạng ngày càng nhiều Từ những công ty có quy mô nhỏ, vừa đến các doanh nghiệp, tập đoàn tầm cỡ, không nơi nào không có sự xuất hiện của hệ thống Mạng trong khâu quản lý công việc của nhân viên, trong công tác quản lý, bảo mật và lưu trữ dữ liệu của công ty hay các thông báo, thông tin giữa các cá nhân trong cùng một tổ chức Bên cạnh đó để đảm bảo cho công việc được thực hiện một cách nhịp nhàng thì hệ thống mạng phải được vận hành thông suốt hoặc khi có sự cố thì phải đảm bảo thời gian sửa chữa là nhanh nhất để không ảnh hưởng tới công việc Do vậy vấn đề cấp thiết ở đây là phải ứng dụng một hệ thống giám sát mạng, để theo dõi tình trạng hoạt động của hệ thống mạng, khi có sự cố về hệ thống mạng thì dễ dàng phát hiện để kịp thời sửa chữa
để đảm bảo cho hệ thống mạng luôn hoạt động ổn định
1.2 Chức năng của hệ thống giám sát mạng
Cảnh báo qua Web, Email và SMS khi phát hiện tấn công vào hệ thống mạng
Báo động bằng âm thanh và SMS khi một host (Server, Router, Switch…) hoặc một dịch vụ mạng ngưng hoạt động
Giám sát lưu lượng mạng qua các cổng giao tiếp trên Router, Switch, Server… hiển thị qua các đồ thị trực quan, thời gian thực Giám sát lưu lượng giữa các
thiết bị kết nối với nhau một cách trực quan
Trang 81.3 SNMP và hệ thống giám sát mạng
SNMP (Simple Network Management Protocol) là một giao thức chính được sử dụng cho mục đích theo dõi tình trạng hoạt động của các thiết bị trong hệ thống mạng SNMP làm nhiệm vụ thu thập thông tin từ các thiết bị mạng (Router, Switch, Server…) cần giám sát và gửi về cho chương trình giám sát, để phân tích và sử dụng để hiển thị
ra giao diện quản trị các thông tin cần thiết theo mục đích của chương trình giám sát Trong SNMP có 3 vấn đề cần quan tâm: Manager, Agent và MIB (Management Information Base)
- MIB: là cơ sở dữ liệu dùng phục vụ cho Manager và Agent
- Manager: nằm trên máy chủ giám sát hệ thống mạng
- Thành phần Agent: là một chương trình nằm trên các thiết bị cần giám sát, quản lý Agent có thể là một chương trình riêng biệt (ví dụ như daemon trên Unix) hay được tích hợp vào hệ điều hành, ví dụ như trong IOS của các thiết bị Cisco Nhiệm vụ của các Agent là thông báo các thông tin đến cho thành phần điều khiển được cấu hình nằm trên máy chủ giám sát
SNMP sử dụng UDP (User Datagram Protocol) như là giao thức truyền tải thông tin giữa các Manager và Agent Việc sử dụng UDP, thay vì TCP, bởi vì UDP là phương thức truyền mà trong đó hai đầu thông tin không cần thiết lập kết nối trước khi dữ liệu được trao đổi, thuộc tính này phù hợp trong điều kiện mạng gặp trục trặc, hư hỏng SNMP có các phương thức quản lý nhất định và các phương thức này đuợc định dạng bởi các gói tin PDU (Protocol Data Unit) Các Manager và Agent sử dụng PDU để trao đổi với nhau
Trang 91.4 Một số phần mềm nguồn mở hỗ trợ trong việc giám sát mạng
Snort
Snort là một phần mềm mã nguồn mở cho phép giám sát, phát hiện những dấu hiện tấn công mạng Snort được nhiều tổ chức phát triển và biến thành sản phẩm thương mại như Sourcefire, Astaro, …
Snort bao gồm các thành phần chính :
o Bộ phận giải mã gói - Packet Decoder
o Bộ tiền xử lý – Preprocessor
o Bộ phận phát hiện - Detection Engine
o Hệ thống ghi log và cảnh báo - Logging và Alerting System
o Module xuất kết quả - Output Modules
Hình 1.1: Các thành phần của Snort
Trang 10o Bộ phận giải mã gói - Packet Decoder
Thu thập các gói tin từ các cổng (interface) và chuẩn bị cho việc gói tin được xử
lý trước hoặc gửi cho bộ phận phát hiện
o Bộ phận phát hiện - Detection Engine
Đây là phần quan trọng nhất trong Snort Trách nhiệm của nó là phát hiện có sự xâm nhập tồn tại trong gói tin hay không Bộ phận phát hiện sử dụng các luật của Snort cho mục đích này Nếu một gói tin giống với một luật nào, một hành động tương ứng sẽ được thực hiện, cuộc tấn công được ghi lại hoặc tạo ra cảnh báo
o Hệ thống ghi log và cảnh báo - Logging và Alerting System
Phụ thuộc cái mà bộ phận phát hiện tìm thấy trong gói tin, gói tin có thể được sử dụng để ghi lại các hành vi hoặc tạo ra các cảnh báo Các thông tin ghi lại được giữ trong các file text đơn giản hoặc các dạng khác như trong cơ sở dữ liệu MySQL,
o Module xuất kết quả - Output Modules
Trang 11Module xuất kết quả có thể hoạt động theo nhiều cách phụ thuộc vào việc chúng
ta muốn lưu các output được tạo ra bằng hệ thống ghi và tạo cảnh báo như thế nào Phụ thuộc vào việc cấu hình, output module có thể làm một số việc dưới đây: ghi dữ liệu vào file log, gởi SNMP traps, gởi các thông báo đến Syslog, ghi log vào CSDL như MySQL hoặc Oracle, tạo ra XML, điều chỉnh cấu hình Router hoặc tường lửa
Một số công cụ khác có thể dùng gởi cảnh báo ở dạng khác như Email, SMS hoặc xem cảnh báo qua giao diện Web
Cacti:
Cacti là một phần mềm nguồn mở hỗ trợ trong việc giám sát các lưu lượng mạng Cacti trong hệ thống được dùng để giám sát lưu lượng qua các Switch, Router và các Server trong hệ thống mạng
Hình 1.2: Sơ đồ hoạt động của Cacti Cacti thể hiện lưu lượng qua các đồ thị trực quan Điều này giúp cho người quản trị theo dõi được sự bất thường trong hệ thống Những bất thường này có thể là những dấu hiệu của tấn công xâm nhập hoặc sự quá tải của một số thiết bị mạng trong hệ thống Cacti sử dụng giao thức SNMP để thu thập thông tin từ các thiết bị, lưu trữ thông tin và
vẽ hình trên các đồ thị
Trang 12Hình 1.3: Sơ đồ trao đổi thông tin SNMP giữa Cacti và một thiết bị
Để tạo ra những đồ thị, Cacti cần thu thập dữ liệu Nếu hệ thống mạng lớn yêu cầu phải
có phương pháp quản lý dữ liệu Dữ liệu thu thập được từ SNMP được lưu trữ vào cơ
sở dữ liệu MySQL
Cacti có khả năng giám sát lưu lượng vào/ra các cổng của thiết bị cần theo dõi, giám sát mức độ hoạt động của CPU và bộ nhớ, cho phép đưa sơ đồ mạng trực quan vào hệ thống và tương tác với mô hình này Ngoài ra, Cacti phát báo động bằng âm thanh khi
có sự cố, các sự cố này được chỉ ra cho hệ thống như: có một thiết bị đang giám sát ngưng hoạt động, lưu lượng vượt quá một ngưỡng được thiết lập trước…
Trang 13Hình 1.4: Cacti biểu diễn các lưu lượng bằng dạng đồ thị thời gian thực
Mặc định Cacti có ít tính năng, như hình trên chúng ta thấy rằng Cacti chỉ hổ trợ 2 mục
là Console và Graph Trong đó, phần Console cho phép điều chỉnh các thông số như chọn thiết bị cần giám sát lưu lượng và hiển thị đồ thị lưu lượng trong phần Graph Một đặc điểm quan trọng của Cacti là cho phép tích hợp nhiều thành phần khác, cũng như nhiều phần mềm khác vào nó
Nagios:
Nagios là một phần mềm mã nguồn mở hỗ trợ trong việc giám sát hoạt động của các host và các dịch vụ trong mạng Giúp giám sát hoạt động một số thiết bị trung tâm trong mạng như Server, Switch, Router, …
Để giám sát các máy chạy hệ điều hành Windows, chúng ta có thể sử dụng trực tiếp thông qua SNMP hoặc sử dụng phần mềm NSClient++ (tích hợp SNMP) để lấy thêm nhiều thông tin hơn từ máy Windows
Trang 14Hình 1.5: Nagios theo dõi các dịch vụ trên máy chạy hệ điều hành Windows qua
NSClient++
Cũng tương tự như vậy, chúng ta có thể sử dụng SNMP để giám sát các máy chạy hệ điều hành Linux qua việc cài đặt gói NRPE (tích hợp SNMP) để giám sát host và các dịch vụ trên máy chạy hệ điều hành Linux
Hình 1.6: Nagios giám sát các dịch vụ trên máy chạy hệ điều hành Unix/Linux qua
NRPE
Trang 15Chương 2 HỆ THỐNG GIÁM SÁT MẠNG SỬ DỤNG VỚI
MÃ NGUỒN MỞ NAGIOS
2.1 Giới thiệu về Nagios
Hình 2.1: Nagios giám sát thiết bị và dịch vụ
Nagios là một phần mềm mã nguồn mở hỗ trợ giám sát hoạt động của các thiết bị và các dịch vụ trong mạng Nagios giúp giám sát hoạt động một số thiết bị trung tâm trong mạng như Server, Switch, Router, Đồng thời kết hợp với bộ phận phát cảnh báo qua giao diện Web và âm thanh (Audio) phát cảnh báo trong trường hợp một thiết bị ngưng hoạt động hoặc một dịch vụ mạng ngưng hoạt động
Nagios giám sát các thiết bị mạng thông qua các giao thức SNMP, … để theo dõi trạng thái hoạt động của các thiết bị Đồng thời, Nagios còn cho phép thiết lập cơ chế giám sát hoạt động của các dịch vụ mạng Các dịch vụ phổ biến được giám sát như: HTTP,
FTP, SMTP, POP3, …
2.2 Vì sao phải dùng Nagios
Sức mạnh của nagios:
Trang 16 Chạy trên nhiều hệ điều hành
Nagios sử dụng để giám sát các thành phần sau:
Ping để quan sát nếu host là Reachable
Các dịch vụ như là DHCP, DNS, FTP, SSH, Telnet, HTTP, NTP, POP3, IMAP, SMTP…
Database servers như là MySQL, Postgres, Oracle, SQL Server …
Application level information (Apache, Postfix, LDAP, Citrix )
2.3 Các điểm đặc trưng của Nagios
Giám sát các dịch vụ mạng (HTTP, SMTP, POP3, PING, NNTP, …)
Giám sát các tài nguyên của host (processor load, disk usage, )
Có khả năng định nghĩa hệ thống cấp bậc của các host trên hệ thống mạng bằng cách sử dụng parent hosts Cho phép phát hiện và phân biệt giữa hai trạng thái down và unreachable của host
Cho phép người dùng dễ dàng phát triển các dịch vụ kiểm tra của chính họ
Đưa ra cảnh báo khi phát hiện các vấn đề xảy ra trên các dịch vụ hoặc các host
và giải quyết các xung đột đó
Có thể định nghĩa các công việc sẽ xử lý khi các dịch vụ hoặc các host gặp phải
sự cố
Trang 17 Theo dõi trạng thái, khai báo, các vấn đề đã từng xảy ra của mạng thông qua
giao diện Web
2.4 Hoạt động của Nagios
Nagios chạy trên một máy Server, nó sẽ chạy plugins theo định kỳ trên máy server
và sẽ liên lạc với các host và Server trên hệ thống mạng của bạn hoặc trên internet Bạn
sẽ nhận được các thông tin gửi tới Nagios và bạn sẽ biết được các thông tin trạng thái thông qua giao diện web Bạn cũng có thể nhận được các cảnh báo thông qua email,
âm thanh hoặc SMS nếu có sự cố xảy ra trên các host hoặc dịch vụ mà bạn cần giám sát
Plugins như là một abstraction layer
Trang 18Hình 2.2: Mô hình hoạt động của plugins
Plugins hoạt động như một lớp trừu tượng giữa hệ thống giám sát logic với các dịch vụ và host đang được giám sát
Plugins có sẵn để giám sát nhiều loại thiết bị và dịch vụ khác nhau, bao gồm :
o HTTP, POP3, IMAP, FTP, SSH, DHCP
o CPU Load, sử dụng đĩa, sử dụng bộ nhớ, người dùng hiện tại
o Unix/Linux, Windows, and Netware Servers
o Router và Switch
2.6 Giám sát máy chạy hệ điều hành Windows
Nagios có thể giám sát các dịch vụ và các thuộc tính của máy chạy hệ điều hành Windows như là:
Sử dụng bộ nhớ
Tình trạng CPU
Sử dụng ổ đĩa
Trạng thái của các dịch vụ
Trang 19Ví dụ trên chúng ta sẽ cài đặt NSClient++ trên máy Windows, sử dụng check_nt plugin
để giao tiếp với NSClient++ Check_nt plugin được cài đặt trên máy Nagios Server
Để giám sát các host Windows, chúng ta có thể sử dụng trực tiếp thông qua giao thức SNMP để thu thập thông tin tư máy Windows
Các bước để giám sát một máy Windows mới là:
Thực hiện các yêu cầu ban đầu
Cài đặt 1 agent giám sát trên máy Windows
Tạo một host mới và xác định các dịch vụ cần được giám sát trên máy Windows
Khởi động lại Nagios
2.7 Giám sát các máy chạy hệ điều hành Linux/Unix
Nagios có thể giám sát các dịch vụ và các thuộc tính của các máy Linux/Unix như là:
Trang 20NPRE gồm hai phần:
Check_nrpe plugin được cài đặt trên máy giám sát
Trang 21Khi Nagios cần giám sát một tài nguyên của một dịch vụ từ máy Linux/Unix được gọi thì:
Nagios sẽ thực thi check_nrpe plugin và gọi những dịch vụ nào cần được kiểm tra
Check_nrpe plugin sẽ liên lạc với NRPE daemon trên một host thông qua kết nối SSL-protected
Các daemon NRPE chạy các plugin Nagios thích hợp để kiểm tra dịch vụ hoặc tài nguyên
Các kết quả từ việc kiểm tra dịch vụ được truyền từ NRPE daemon trở về check_nrpe plugin và sau đó trả về kết quả kiểm tra cho Nagios.
2.8 Giám sát máy in
Hình 2.5: Máy in hỗ trợ giao thức SNMP Check_hpjd plugin (là một phần của chuẩn Nagios plugin) cho phép bạn theo dõi tình trạng của máy in có hỗ trợ giao thức SNMP Check_hpjd plugin có khả năng phát hiện các trạng thái máy in như sau: