Khóa luận tốt nghiệp GVHD: Th.s Phạm Văn Nam
SVTH: Huỳnh Thanh Tâm Trang 1
LỜI NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN
……………………………………………………………………
……………………………………………………………………
……………………………………………………………………
……………………………………………………………………
……………………………………………………………………
……………………………………………………………………
……………………………………………………………………
……………………………………………………………………
……………………………………………………………………
……………………………………………………………………
……………………………………………………………………
……………………………………………………………………
……………………………………………………………………
……………………………………………………………………
……………………………………………………………………
……………………………………………………………………
……………………………………………………………………
……………………………………………………………………
……………………………………………………………………
……………………………………………………………………
……………………………………………………………………
……………………………………………………………………
……………………………………………………………………
……………………………………………………………………
……………………………………………………………………
……………………………………………………………………
……………………………………………………………………
……………………………………………………………………
……………………………………………………………………
……………………………………………………………………
……………………………………………………………………
…………………………………………………………………… Khóa luận tốt nghiệp GVHD: Th.s Phạm Văn Nam
SVTH: Huỳnh Thanh Tâm Trang 3
LỜ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.
Khóa luận tốt nghiệp GVHD: Th.s Phạm Văn Nam
SVTH: Huỳnh Thanh Tâm Trang 5
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.
Khóa luận tốt nghiệp GVHD: Th.s Phạm Văn Nam
SVTH: Huỳnh Thanh Tâm Trang 7
Chươ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à
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.
Khóa luận tốt nghiệp GVHD: Th.s Phạm Văn Nam
SVTH: Huỳnh Thanh Tâm Trang 9
1.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.
MySQL,
o Module xuất kết quả - Output Modules
Khóa luận tốt nghiệp GVHD: Th.s Phạm Văn Nam
SVTH: Huỳnh Thanh Tâm Trang 11
Module 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ị.
Khóa luận tốt nghiệp GVHD: Th.s Phạm Văn Nam
SVTH: Huỳnh Thanh Tâm Trang 12Hì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.
Khóa luận tốt nghiệp GVHD: Th.s Phạm Văn Nam
SVTH: Huỳnh Thanh Tâm Trang 15
Chươ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ụ.
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ố.
Tự động log file theo kiểu xoay vòng.
Hỗ trợ việc giám sát các host dư thừa.
Khóa luận tốt nghiệp GVHD: Th.s Phạm Văn Nam
SVTH: Huỳnh Thanh Tâm 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.
2.5 Nagios plugins
Ở phần trên chúng ta đã đề cập đến plugins, bây giờ chúng ta sẽ tìm hiểu xem
plugins là gì?
Plugins là việc biên dịch chương trình hoặc các Scrip (Perl scripts, shell scripts,
etc.). Nó có thể chạy từ 1 dòng lệnh để kiểm tra trạng thái một host hoặc dịch
vụ. Nagios sử dụng kết quả của plugins để xác định trạng thái hoạt động của
…
Hình 2.3: Nagios theo dõi các dịch vụ trên máy chạy hệ điều hành Windows qua
NSClient++.
Để giám sát các dịch vụ hoặc các thuộc tính trên máy Windows thì ta cần phải cài một
agent lên chúng. Agent này hoạt động như là một proxy giữa Nagios plugins với các
dịch vụ hoặc các thuộc tính cần giám sát của máy Windows.
Ví 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à:
Khóa luận tốt nghiệp GVHD: Th.s Phạm Văn Nam
SVTH: Huỳnh Thanh Tâm Trang 20
Sử dụng bộ nhớ.
Tình trạng CPU.
Sử dụng ổ đĩa.
Người dùng đăng nhập.
Các tiến trình đang chạy.
…
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:
Kẹt giấy.
Hết giấy.
Máy in tắt.
Các yêu cầu xen vào.
Hết mực.
Không đủ bộ nhớ.
…
Khóa luận tốt nghiệp GVHD: Th.s Phạm Văn Nam
SVTH: Huỳnh Thanh Tâm Trang 22Hình 2.6: Nagios giám sát các tình trạng của máy in.
Giám sát trạng thái của một máy in nối mạng là khá đơn giản. Máy in JetDirect thường
có SNMP được kích hoạt, cho phép Nagios theo dõi trạng thái của nó bằng cách sử
dụng các check_hpjd plugin. Check_hpjd plugin sẽ chỉ nhận được biên dịch và cài đặt
nếu bạn có các gói net-snmp và net-snmp-utils được cài đặt trên hệ thống của bạn.
Các bước để giám sát một máy in mới là:
Thực hiện các yêu cầu ban đầu.
Tạo ra một host mới, xác định host và dịch vụ cần được giám sát trên máy in.
Khởi động lại Nagios.
2.9 Giám sát Router và Switch Hình 2.7: Switch.
Đối với những Switch rẻ tiền thì không hỗ trợ việc thiết lập địa chỉ IP thì ta không
http://sourceforge.net.
Tạo account: username: nagios ; group: nagios.
# useradd nagios
# passwd nagios
# groupadd nagios
# usremod -a -G nagios nagios
Yêu cầu các gói sau phải cài trước:
apache, php, gcc, glibc, glibc-common, gd, gd-devel.
# yum install httpd php gcc glibc glibc-common gd gd-devel
Di chuyển vào source của NAGIOS và install bằng các lệnh:
#./configure with-command-group=nagios
# make all
# make install
# make install-init
# make install-config
# make install-commandmode
# make install-webconf
Tạo user để truy cập web NAGIOS (user: nagiosadmin, password:
nagiosadmin).
# htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
Restart apache:
# service httpd restart
Cấu hình plugins:
Lưu ý: gán quyền truy xuất cho user nagios:
Khóa luận tốt nghiệp GVHD: Th.s Phạm Văn Nam
SVTH: Huỳnh Thanh Tâm Trang 25
#chown nagios.nagios /usr/local/nagios
#chown -R nagios.nagios /usr/local/nagios/libexec