Nền Công nghệ thông tin nước ta đã và đang phát triển trên mọi lĩnh vực của cuộc sống. Với việc phát triển nhanh mạng lưới thiết bị Công nghệ thông tin đã gây ra những khó khăn nhất định trong việc quản lý hệ thống mạng. Do đó vấn đề quản trị mạng hiện nay là không thể thiếu được. Tùy thuộc vào các giải pháp công nghệ và các ứng dụng triển khai mà các nhà khai thác lựa chọn và xây dựng các hệ thống quản lí mạng thích hợp để nâng cao hiệu quả vận hành và khai thác mạng.Quản trị mạng theo giao thức SNMP là phương pháp được sử dụng rộng rãi nhất. Đây là giao thức quản lý mạng đơn giản, cung cấp khả năng giám sát và điểu khiển các thiết bị mạng. Với ưu điểm cài đặt khá đơn giản, khả năng mềm dẻo trong việc mở rộng, SNMP trở thành một giải pháp hiệu quả cho việc quản lý thiết bị nhiều nhà cung cấp.Bên cạnh đó có rất nhiều phần mềm hỗ trợ quản lý và giám sát mạng ra đời. Nagios là hệ thống giám sát mạng có chi phí đầu tư thấp. Tuy nhiên nó có khả năng rất mạnh mẽ trong việc giám sát hoạt động của các thiết bị trên mạng. Bởi vậy Nagios rất được tin tưởng và sử dụng rộng rãi trên toàn cầu.. Đây là bộ công cụ hỗ trợ đắc lực cho nhà quản trị nhằm phân tích, giám sát cũng như các công cụ quản lý việc thực thi trên hệ thống mạng. Phần lớn các công cụ trong Nagios đều sử dụng giao thức SNMP để truyền thông. Vì vậy, trong đề tài này em sẽ đi sâu tìm hiểu về “Giao thức SNMP và ứng dụng với phần mềm giám sát hệ thống Nagios” Nội dung của đồ án chia làm 3 chương:Chương 1: Giới thiệu về giao thức SNMPChương 2: Các phiên bản của SNMPChương 3: Giám sát hệ thống với phần mềm Nagios
Trang 1MỤC LỤC
MỤC LỤC i
MỤC LỤC HÌNH ẢNH iv
THUẬT NGỮ VIẾT TẮT vii
LỜI MỞ ĐẦU ix
LỜI CẢM ƠN x
CHƯƠNG 1 GIỚI THIỆU VỀ SNMP 1
1.1 Tổng quan về quản li ́ hệ thống mạng 1
1.1.1 Các yêu cầu quản lí hệ thống mạng 1
1.1.2 Các phương pháp quản lí mạng 1
1.2 Hai phương thức giám sát Poll và Alert 3
1.2.1 Phương thức Poll 3
1.2.2 Phương thức Alert 4
1.3 Giới thiệu về giao thức SNMP 5
1.3.1 Ưu, nhược điểm của giao thức SNMP 5
1.3.2 Các phiên bản của SNMP 6
1.4 Quản li ́ truyền thông trong SNMP 7
1.4.1 Bộ phận quản lí (manager) 7
1.4.2 Agent……….8
1.4.3 Cơ sở thông tin quản lí – MIB 9
1.4.4 Mô hình giao thức SNMP 9
1.5 Các cơ chế bảo mật cho SNMP 13
1.5.1 Community string 14
1.5.2 View………14
1.5.3 SNMP access control list 15
1.6 Tổng kết chương 1 15
CHƯƠNG 2: CÁC PHIÊN BẢN SNMP 16
2.1 SNMPv1 16
2.1.1 Các phương thức của SNMPv1 16
Trang 2Đồ án tốt nghiê ̣p Đa ̣i ho ̣c Mu ̣c lu ̣c
2.2 SNMPv2 24
2.2.1 Các phương thức của SNMPv2 24
2.2.2 Cấu trúc bản tin của SNMPv2 25
2.3 SNMPv3 26
2.3.1 Các phương thức của SNMPv3 26
2.3.2 Cấu trúc bản tin SNMPv3 26
2.4 Tổng kết chương 2 28
CHƯƠNG 3 GIÁM SÁT HỆ THỐNG VỚI PHẦN MỀM NAGIOS 30
3.1 Tổng quan về Nagios 30
3.2 Kiến trúc và tổ chức hoạt động của Nagios 31
3.2.1 Kiến trúc của Nagios 31
3.2.2 Cách thức tổ chức hoạt động của Nagios 32
3.3 Các khái niệm cơ bản trong Nagios 34
3.3.1 Kiểm tra host 34
3.3.2 Kiểm tra dịch vụ 34
3.3.3 Khái niệm trạng thái SOFT/HARD 35
3.3.4 Khái niệm FLAP 36
3.3.5 Mối quan hệ cha/con giữa các host và phân biệt trạng thái down/unrearchable 37
3.3.6 Lập lịch downtime 39
3.3.7 Giám sát phân tán 40
3.4 Giới thiệu một số tính năng chính trong Nagios 42
3.4.1 Giao diện chính của phần mềm 42
3.4.2 Current Status 42
3.4.3 Reports 46
3.4.4 System ……….47
3.5 Thử nghiệm hệ thống giám sát Nagios tại Tổng công ty Viễn thông MobiFone 48
3.5.1 Mô hình triển khai 48
3.5.2 Thống kê tình trạng hoạt động của một số host/service 50
3.6 Tổng kết chương 3 65
PHỤ LỤC 66
Phần 1: Cài đă ̣t Nagios trên Centos 7 66
Trang 3Phần 2: Tổng quan cấu hình trong Nagios 69 KẾT LUẬN 74 TÀI LIỆU THAM KHẢO 75
Trang 4Đồ án tốt nghiê ̣p Đa ̣i ho ̣c Mu ̣c lu ̣c hình ảnh
MỤC LỤC HÌNH ẢNH
Hình 1.1: Mô hình quản lí tập trung 2
Hình 1.2: Mô hình quản lí phân tán 3
Hình 1.3: Minh họa cơ chế Poll 4
Hình 1.4: Minh họa cơ chế Alert 4
Hình 1.5: Mối quan hệ giữa các thành phần SNMP 7
Hình 1.6: Truyền thông giữa manager và agent trong SNMP 8
Hình 1.7: Mô hình giao thức hoạt động SNMP 10
Hình 1.8: Vị trí của SNMP trong chồng giao thức TCP/IP 11
Hình 2.1: Các phương thức SNMPv1 17
Hình 2.2: Cấu trúc bản tin SNMP 18
Hình 2.3: Cấu trúc Get/GetNext/Set/Response PDU 19
Hình 2.4: Bản tin Get-request 20
Hình 2.5: Bản tin GetNextRequest 21
Hình 2.6: Bản tin GetResponse 22
Hình 2.7: Quá trình đặt lại tên cho router thông qua SetRequest 22
Hình 2.8: Router (agent) gửi trả thông điệp GetResponse khi đã được đổi tên 22
Hình 2.9: Cấu trúc Trap PDU 23
Hình 2.10: Các phương thức của SNMPv2c 24
Hình 2.11: Cấu trúc bản tin SNMPv2 25
Hình 2.12: Cấu trúc GetBulk PDU 25
Hình 2.13: Cấu trúc bản tin SNMPv3 27
Hình 3.1: Sơ đồ tổ chức của Nagios 31
Hình 3.2: Các cách thức thực hiện kiểm tra trong Nagios 33
Hình 3.3: Trạng thái Soft/Hard 35
Hình 3.4: Mối quan hệ host cha/con trong Nagios 38
Trang 5Hình 3.5: Phân biệt DOWN-UNREACHABLE 39
Hình 3.6:Kiểm tra chủ động trong Nagios 40
Hình 3.7: Kiểm tra bị động trong Nagios 41
Hình 3.8: Giao diện chính của phần mềm Nagios 42
Hình 3.9: Giao diện Tactical Overview 43
Hình 3.10: Giao diện Map 43
Hình 3.11: Giao diện Hosts 44
Hình 3.12: Giao diện Services 44
Hình 3.13: Giao diện Host Groups 45
Hình 3.14: Giao diện Service Groups 45
Hình 3.15: Giao diện Problems 46
Hình 3.16: Các tab trong Reports 46
Hình 3.17: Giao diện Alerts 47
Hình 3.18: Giao diện Event log 47
Hình 3.19: Mô hình giám sát IP Backbone tại MobiFone 48
Hình 3.20: Tổng quan về các Host group của IP Backbone được cấu hình trên hệ thống Nagios 49
Hình 3.21: Mô hình giám sát Công nghệ thông tin tại MobiFone 50
Hình 3.22: Các thiết bị Công nghệ thông tin đang được giám sát trên hệ thống Nagios 50
Hình 3.23: Trạng thái hoạt động của host Cisco HNI_ASR9010_P_03 51
Hình 3.24: Kiểm tra CPU trung bình trong 5 phút của router HNI_ASR9010_P_01 51
Hình 3.25: Kiểm tra bô ̣ nhớ đã sử du ̣ng của router HNI_7609_PE_02 52
Hình 3.26: Tỷ lê ̣ chiếm đĩa trên ổ C của server NMS Report 1 53
Hình 3.27: Kiểm tra dung lượng bô ̣ nhớ còn trống trên Router HNI-7609-PE-02 54
Hình 3.28: Kiểm tra bô ̣ nhớ còn trống của server vms-tc-02 55
Trang 6Đồ án tốt nghiê ̣p Đa ̣i ho ̣c Mu ̣c lu ̣c hình ảnh Hình 3.29: Kiểm tra băng thông vào – ra của interface 53 Router
HNI_ASR_9010_P_01 56
Hình 3.30: Kiểm tra tra ̣ng thái cổng TenGE0/1/0/1 và TenGE0/1/0/2 của Router HNI_ASR9010_P_01 57
Hình 3.31: Thông tin tra ̣ng thái cổng TenGiga4/48 của Router HNI-7609-PE-02 58
Hình 3.32: Kiểm tra IP SLA Sing_MBFG trên Router HNI-7609-PE-02 59
Hình 3.33: Tra ̣ng thái IP SLA Japan_VTN trên Router HNI-7609-PE-02 60
Hình 3.34: Kiểm tra thời gian up của Router HNI-7609-PE-02 61
Hình 3.35: Trạng thái của service OSPF Neighbors của host HNI_ASR9010_P_03 61
Hình 3.36: Thông tin về các host trong NMS Server group 62
Hình 3.37: Các service trên vms-lb-01 62
Hình 3.38: Thông tin về các service giám sát trên Huawei ACC30_2H 63
Hình 3.39: Thông báo tra ̣ng thái về service Link status 63
Hình 3.40: Tin nhắn thông báo service đã khôi phu ̣c la ̣i tra ̣ng thái 64
Hình 3.41: Email thông báo tra ̣ng thái critical của port 64
Trang 7THUẬT NGỮ VIẾT TẮT
ACL Access Control List Danh sách điều khiển truy nhập CPU Central Processing Unit Bộ xử lí trung tâm
DES Data Encryption Standard Tiêu chuẩn mật mã hoá dữ liệu
DHCP
Dynamic Host Configuration
DNS Domain Name System Hệ thống tên miền
FTP File Transfer Protocol Giao thức truyền file
GUI Graphic User Interface Giao diện người dùng đồ hoạ
HTTP HyperText Transfer Protocol Giao thức truyền tải siêu văn bản
ICMP Internet Control Message Protocol
Giao thức kiểm soát thông báo Internet
IETF Internet Engineering Task Force Tổ chức hỗ trợ kĩ thuật Internet
IM Instant Messaging Tin nhắn tức thời
IMAP Internet Message Access Protocol
MD5 Message-Digest Algorithm 5 Giải thuật Tiêu hóa tin 5
MIB Management Information Base Cơ sở thông tin quản lí
NCSA Nagios Service Check Acceptor Chấp nhâ ̣n kiểm tra di ̣ch vu ̣ Nagios NMS Network Management Station Trạm quản lí mạng
Network Management System Hệ thống quản lí mạng
NRPE Nagios Remote Plugin Executor Bộ thực thi plugin Nagios từ xa
Trang 8Đồ án tốt nghiê ̣p Đa ̣i ho ̣c Thuâ ̣t ngữ viết tắt OID Object Identifier Nhận dạng đối tượng
PDU Protocol Data Unit Đơn vị dữ liệu giao thức
RFC Request For Comment Tài liệu về các chuẩn internet
RMON Remote Monitoring Kiểm soát từ xa
SHA Secure Hash Algorithm Giải thuật băm an toàn
SMPP Short Message Peer-to-Peer
Giao thức phân tán tin nhắn ngang hàng
SMS Short Message Services Dịch vụ tin nhắn ngắn
SMTP Simple Mail Transfer Protocol Giao thức truyền tải thư đơn giản
SNMP
Simple Network Management
Protocol Giao thức quản lí ma ̣ng đơn giản SLA Service Level Agreement Thỏa thuâ ̣n mức đô ̣ di ̣ch vu ̣
Protocol/Internet Protocol (Suite) Chồng giao thức TCP/IP
UDP User Datagram Protocol Giao thức dữ liệu người dùng
UDP/IP
User Datagram Protocol/Internet
USM User-based Security Model Mô hình bảo mâ ̣t người dùng cơ bản
Trang 9LỜI MỞ ĐẦU
Nền Công nghê ̣ thông tin nước ta đã và đang phát triển trên mo ̣i lĩnh vực của cuô ̣c sống Với viê ̣c phát triển nhanh ma ̣ng lưới thiết bi ̣ Công nghê ̣ thông tin đã gây ra những khó khăn nhất đi ̣nh trong viê ̣c quản lý hê ̣ thống ma ̣ng Do đó vấn đề quản tri ̣
ma ̣ng hiê ̣n nay là không thể thiếu được Tùy thuộc vào các giải pháp công nghệ và các ứng dụng triển khai mà các nhà khai thác lựa chọn và xây dựng các hệ thống quản lí mạng thích hợp để nâng cao hiệu quả vận hành và khai thác mạng
Quản tri ̣ ma ̣ng theo giao thức SNMP là phương pháp được sử du ̣ng rô ̣ng rãi nhất Đây là giao thức quản lý mạng đơn giản, cung cấp khả năng giám sát và điểu khiển các thiết bị mạng Với ưu điểm cài đặt khá đơn giản, khả năng mềm dẻo trong việc mở rộng, SNMP trở thành một giải pháp hiệu quả cho việc quản lý thiết bị nhiều nhà cung cấp
Bên cạnh đó có rất nhiều phần mềm hỗ trợ quản lý và giám sát mạng ra đời Nagios là hệ thống giám sát mạng có chi phí đầu tư thấp Tuy nhiên nó có khả năng rất mạnh mẽ trong việc giám sát hoạt động của các thiết bị trên mạng Bởi vậy Nagios rất được tin tưởng và sử dụng rộng rãi trên toàn cầu Đây là bộ công cụ hỗ trợ đắc lực cho nhà quản trị nhằm phân tích, giám sát cũng như các công cụ quản lý việc thực thi trên
hệ thống mạng Phần lớn các công cụ trong Nagios đều sử dụng giao thức SNMP để
truyền thông Vì vậy, trong đề tài này em sẽ đi sâu tìm hiểu về “Giao thứ c SNMP và ứng du ̣ng với phần mềm giám sát hê ̣ thống Nagios” Nội dung của đồ án chia làm 3 chương:
Chương 1: Giới thiê ̣u về giao thức SNMP
Chương 2: Các phiên bản của SNMP
Chương 3: Giám sát hê ̣ thống với phần mềm Nagios
Hà Nội, tháng 11 năm 2014 Sinh viên thực hiện:
Trang 10Đồ án tốt nghiê ̣p Đa ̣i ho ̣c Lời cảm ơn
LỜI CẢM ƠN
Trong thời gian làm đồ án tốt nghiệp, được sự hướng dẫn, chỉ bảo tận tình của
thầy giáo Tri ̣nh Bảo Khánh và sự cố gắng nỗ lực của bản thân, em đã hoàn thành đồ
án tốt nghiệp với đề tài “Giao thức SNMP và ứng du ̣ng với phần mềm giám sát hê ̣ thống Nagios” Bên cạnh đó, em cũng muốn gửi lời cảm ơn tới các thầy cô bộ môn trong khoa Viễn Thông 1 đã truyền đạt cho em những kiến thức bổ ích để hoàn thành khóa tốt nghiệp này
Do kiến thức và thời gian tiếp cận thực tế nghiên cứu còn hạn chế vì vậy đồ án của em sẽ không tránh khỏi được những thiếu sót Em rất mong nhân được sự góp ý và hướng dẫn của các thầy cô để đồ án của em được hoàn thiện hơn
Hà Nội, tháng 11 năm 2014 Sinh viên thực hiện:
Trang 11CHƯƠNG 1 GIỚI THIỆU VỀ SNMP
Các cơ chế quản lí mạng được nhận từ hai góc độ, góc độ mạng chỉ ra hệ thống quản lí nằm tại các mức cao của mô hình OSI và từ phía người điều hành quản lí hệ thống Mặc dù có nhiều quan điểm khác nhau về mô hình quản lí nhưng chúng đều thống nhất bởi ba chức năng quản lí cơ bản gồm: giám sát, điều khiển và đưa ra báo cáo tới người điều hành
- Chức năng giám sát có nhiệm vụ thu thập liên tục các thông tin về trạng thái của các tài nguyên được quản lí sau đó chuyển các thông tin này dưới dạng các sự kiện và đưa ra các cảnh báo khi các tham số của tài nguyên mạng được quản lí vượt quá ngưỡng cho phép
- Chức năng quản lí có nhiệm vụ thực hiện các yêu cầu quản lí hoặc các ứng dụng nhằm thay đổi trạng thái hay cấu hình của một tài nguyên được quản lí
- Chức năng đưa ra báo cáo có nhiệm vụ chuyển đổi và hiển thị báo cáo dưới dạng
mà người quản lí có thể đọc, đánh giá hoặc tìm kiếm, tra cứu thông tin được báo cáo
Dưới góc độ của người điều hành quản lí mạng, có một số yêu cầu cơ bản thường đặt ra gồm:
- Khả năng giám sát và điều khiển hệ thống cũng như các thành phần của hệ thống mạng
- Có thể truy nhập từ và cấu hình từ xa các tài nguyên được quản lí
- Dễ dàng trong việc cài đặt, vận hành, bảo dưỡng hệ thống quản lí cũng như các ứng dụng của nó
- Bảo mật hoạt động quản lí và truy nhập người sử dụng, bảo mật truyền thông các thông tin quản lí
- Có khả năng đưa ra các báo cáo đầy đủ và rõ nghĩa về các thông tin quản lí
- Quản lí theo thời qian thực và hoạt động quản lí được thực hiện một cách tự động
- Mềm dẻo trong việc nâng cấp hệ thống và có khả năng tương thích với nhiều công nghệ khác nhau
- Có khả năng lưu trữ và khôi phục thông tin quản lí
Hiện nay có hai phương pháp quản lí mạng được sử dụng phổ biến là quản lí mạng tập trung và quản lí mạng phân cấp
Đối với hình thức quản lí mạng tập trung: Chỉ có một thiết bị quản lí thu nhận
các thông tin và điều khiển toàn bộ hệ thống mạng Các chức năng quản lí được thực
Trang 12Đồ án tốt nghiê ̣p Đa ̣i ho ̣c Chương 1 Giới thiê ̣u về SNMP manager Kiến trúc này thường được sử dụng rất nhiều và có trung tâm quản trị mạng
So với các chức năng thuộc manager chức năng agent thường rất đơn quản, thông tin trao đổi từ manager tới các agent thông qua các giao thức thông tin quản lí như SNMP Tuy nhiên hệ thống quản lí tập trung khó mở rộng vì mức độ phức tạp của hệ thống tăng
Hình 1.1: Mô hình quản lí tập trung
Ưu điểm: Quan sát cảnh báo và các sự kiện mạng từ một vị trí Bảo mật được khoanh
vùng đơn giản
Nhược điểm: Khi hệ thống quản lí có lỗi sẽ gây tác hại tới toàn bộ mạng Tăng độ phức
tạp khi có thêm các phần tử mới vào mạng
Đối với phương thức quản lí phân tán: Hệ thống được chia thành các vùng tùy
theo nhiệm vụ quản lí tạo ra hệ thống phân cấp quản lí Trung tâm xử lí đặt tại gốc của cây phân cấp, các hệ thống phân tán được đặt tại nhánh cây
Trang 13Hình 1.2: Mô hình quản lí phân tán
Ưu điểm: Có khả năng mở rộng hệ thống quản lí nhanh
Nhược điểm: Danh sách các thiết bị phải được xác định và cấu hình trước
Đây là hai phương thức cơ bản của các kỹ thuật giám sát hệ thống, nhiều phần mềm và giao thức được xây dựng dựa trên hai phương thức này, trong đó có SNMP Việc hiểu rõ hoạt động của Poll & Alert và ưu nhược điểm của chúng sẽ giúp chúng ta
dễ dàng tìm hiểu nguyên tắc hoạt động của các giao thức hay phần mềm giám sát Hoặc nếu muốn tự phát triển một cơ chế giám sát của riêng mình thì nó cũng là cơ sở để giúp chúng ta xây dựng một nguyên tắc hoạt động đúng đắn
1.2.1 Phương thức Poll
Nguyên tắc hoạt động: Trung tâm giám sát (manager) sẽ thường xuyên hỏi thông tin của thiết bị cần giám sát (device) Nếu Manager không hỏi thì Device không trả lời, nếu Manager hỏi thì Device phải trả lời Bằng cách hỏi thường xuyên, Manager sẽ luôn cập nhật được thông tin mới nhất từ Device Ví dụ : Người quản lí cần theo dõi khi nào thợ làm xong việc Anh ta cứ thường xuyên hỏi người thợ “Anh đã làm xong chưa ?”,
và người thợ sẽ trả lời “Xong” hoặc “Chưa”
Trang 14Đồ án tốt nghiê ̣p Đa ̣i ho ̣c Chương 1 Giới thiê ̣u về SNMP
Hình 1.3: Minh họa cơ chế Poll
1.2.2 Phương thức Alert
Nguyên tắc hoạt động: Mỗi khi trong Device xảy ra một sự kiện (event) nào đó thì Device sẽ tự động gửi thông báo cho Manager, gọi là Alert Manager không hỏi thông tin định kỳ từ Device Ví dụ: Người quản lí cần theo dõi tình hình làm việc của thợ, anh
ta yêu cầu người thợ thông báo cho mình khi có vấn đề gì đó xảy ra Người thợ sẽ thông báo các sự kiện đại loại như “Tiến độ đã hoàn thành 80%”, “Mất kết nối lúc 10h”, “Khôi phu ̣c la ̣i kết nối lúc 11h”, “Mới có tai nạn xảy ra”
Hình 1.4: Minh họa cơ chế Alert Device chỉ gửi những thông báo mang tính sự kiện chứ không gửi những thông tin thường xuyên thay đổi, nó cũng sẽ không gửi Alert nếu chẳng có sự kiện gì xảy ra Chẳng hạn khi một port down/up thì Device sẽ gửi cảnh báo, còn tổng số byte truyền qua port đó sẽ không được Device gửi đi vì đó là thông tin thường xuyên thay đổi Muốn lấy những thông tin thường xuyên thay đổi thì Manager phải chủ động đi hỏi Device,tức
là phải thực hiện phương thức Poll
Trang 151.3 Giới thiệu về giao thức SNMP
SNMP là “giao thức quản lí mạng đơn giản”, dịch từ cụm từ “Simple Network Management Protocol”
Giao thức là một tập hợp các thủ tục mà các bên tham gia cần tuân theo để có thể giao tiếp được với nhau Trong lĩnh vực thông tin, một giao thức quy định cấu trúc, định dạng (format) của dòng dữ liệu trao đổi với nhau và quy định trình tự, thủ tục để trao đổi dòng dữ liệu đó Nếu một bên tham gia gửi dữ liệu không đúng định dạng hoặc không theo trình tự thì các bên khác sẽ không hiểu hoặc từ chối trao đổi thông tin SNMP
là một giao thức, do đó nó có những quy định riêng mà các thành phần trong mạng phải tuân theo
Một thiết bị hiểu được và hoạt động tuân theo giao thức SNMP được gọi là “có
hỗ trợ SNMP” (SNMP supported) hoặc “tương thích SNMP” (SNMP compartible)
SNMP dùng để quản lí, nghĩa là có thể theo dõi, có thể lấy thông tin, có thể được thông báo, và có thể tác động để hệ thống hoạt động như ý muốn Một số khả năng của phần mềm SNMP:
Theo dõi tốc độ đường truyền của một router, biết được tổng số byte đã truyền/nhận
Lấy thông tin máy chủ đang có bao nhiêu ổ cứng, mỗi ổ cứng còn trống bao nhiêu
Tự động nhận cảnh báo khi switch có một port bị down
Điều khiển tắt (shutdown) các port trên switch
SNMP dùng để quản lí mạng, nghĩa là nó được thiết kế để chạy trên nền TCP/IP
và quản lí các thiết bị có nối mạng TCP/IP Các thiết bị mạng không nhất thiết phải là máy tính mà có thể là switch, router, firewall, adsl gateway, và cả một số phần mềm cho phép quản trị bằng SNMP Giả sử bạn có một cái máy giặt có thể nối mạng IP và nó hỗ trợ SNMP thì bạn có thể quản lí nó từ xa bằng SNMP
SNMP là giao thức đơn giản, do nó được thiết kế đơn giản trong cấu trúc bản tin
và thủ tục hoạt động, và còn đơn giản trong bảo mật (ngoại trừ SNMP version 3) Sử dụng phần mềm SNMP, người quản trị mạng có thể quản lí, giám sát tập trung từ xa toàn mạng của mình
1.3.1 Ưu, nhược điểm của giao thức SNMP
Ưu điểm trong thiết kế của SNMP:
- Việc cài đặt SNMP vào thiết bị trong cấu hình mạng đơn giản SNMP được thiết
Trang 16Đồ án tốt nghiê ̣p Đa ̣i ho ̣c Chương 1 Giới thiê ̣u về SNMP
một thiết bị mới với các thuộc tính, tính năng mới thì người ta có thể thiết kế tùy chọn SNMP để phục vụ cho riêng mình
- SNMP được thiết kế để có thể hoạt động độc lập với các kiến trúc và cơ chế của
các thiết bị hỗ trợ SNMP Các thiết bị khác nhau có thể hoạt động khác nhau nhưng đáp ứng SNMP là giống nhau
Khác nhau ở cấu trúc bản tin SNMP (message format): các phiên bản khác nhau
sẽ khác nhau ở cấu trúc các bản tin
IETF tạo ra SNMP nhằm cho phép quản lí từ xa các thiết bị dựa trên nền tảng IP
Nó hỗ trợ một cách rộng rãi các thiết bị như máy chủ, máy in, bộ nối, bộ định tuyến, hub Giao thức này được trình bày một cách chi tiết trong tài liệu RFC 1157 của IETF
Tháng 4 năm 1993, SNMP Version 2 (SNMPv2) được IETF đưa ra với mục đích giải quyết vấn đề tồn tại trong SNMPv1 là cơ chế đảm bảo bảo mật SNMPv2 có nhiều thay đổi so với SNMPv1 như hổ trợ các mạng trung tâm cấp cao, mạng phân tán, cơ chế bảo mật, làm việc với khối dữ liệu lớn Tuy nhiên SNMPv2 không được chấp nhận hoàn toàn bởi vì SNMPv2 chưa thoả mãn vấn đề bảo mật và quản trị bởi vậy năm 1996 những phần bảo mật trong SNMPv2 bị bỏ qua và SNMPv2 được gọi là “SNMPv2 trên
cơ sở truyền thông” hay SNMPv2c
SNMPv2u: đây là phiên bản SNMPv2 sử dụng cơ chế bảo mật có chứng thực
bằng băm và mã hóa đối xứng dữ liệu, gọi là User-based SNMPv2 hay SNMPv2u Sau
này phiên bản SNMPv3 ra đời đã thay thế hoàn toàn SNMPv2u và người ta không còn
ưu tiên dùng SNMPv2u nữa Trong thực tế rất khó tìm thấy một thiết bị còn hỗ trợ SNMPv2u
Năm 1997, IETF bắt đầu đưa ra SNMPv3 được định nghĩa trong RFCs
2571-2575 Về bản chất, SNMPv3 mở rộng để đạt được cả hai mục đích là bảo mật và quản trị SNMPv3 hổ trợ kiến trúc theo kiểu module để có thể dể dàng mở rộng Như thế nếu các giao thức bảo mật được mở rộng chúng có thể được hổ trợ bởi SNMPv3 bằng cách định nghĩa như là các module riêng
Trang 17Bên cạnh đó một phần quan trọng của quản trị mạng là kiểm soát từ xa Tính năng kiểm soát từ xa (Remote Monitoring - RMON) định nghĩa thêm vào SNMP MIB nhằm hỗ trợ việc quản trị liên mạng RMON tạo cho người quản trị mạng khả năng kiểm soát toàn bộ mạng con hơn là các thiết bị đơn lẻ trong mạng con
1.4 Quản li ́ truyền thông trong SNMP
Hệ thống quản lí mạng dựa trên SNMP gồm ba thành phần: bộ phận quản lí (manager), thiết bị chịu sự quản lí – còn gọi là đại lí (agent) và cơ sở dữ liệu gọi là Cơ
sở thông tin quản lí (MIB)
Mặc dù SNMP là một giao thức quản lí việc chuyển giao thông tin giữa ba thực thể trên, song nó cũng định nghĩa mối quan hệ client-server (chủ tớ) Cơ sở dữ liệu do agent SNMP quản lí là đại diện cho MIB của SNMP
Trang 18Đồ án tốt nghiê ̣p Đa ̣i ho ̣c Chương 1 Giới thiê ̣u về SNMP với bộ phận quản lí, biến mặt bằng phần cứng thành Trạm quản lí mạng (NMS) Ngày nay, trong thời kỳ các chương trình giao diện người sử dụng đồ họa (GUI), hầu hết những chương trình ứng dụng cung cấp môi trường cửa sổ chỉ và click chuột, thực hiện liên vận hành với bộ phận quản lí để tạo ra những bản đồ họa và biểu đồ cung cấp những tổng kết hoạt động của mạng dưới dạng thấy được
Qua bộ phận quản lí, những yêu cầu được chuyển tới một hoặc nhiều thiết bị chịu
sự quản lí Ban đầu SNMP được phát triển để sử dụng trên mạng TCP/IP và những mạng này tiếp tục làm mạng vận chuyển cho phần lớn các sản phẩm quản lí mạng dựa trên SNMP Tuy nhiên SNMP cũng có thể được chuyển qua NetWare IPX và những cơ cấu vận chuyển khác
Hình 1.6: Truyền thông giữa manager và agent trong SNMP
1.4.2 Agent
Thiết bị chịu sự quản lí (Agent) là một nút mạng hỗ trợ giao thức SNMP và thuộc
về mạng bị quản lí Thiết bị có nhiệm vụ thu thập thông tin quản lí và lưu trữ để phục
vụ cho hệ thống quản lí mạng Những thiết bị chịu sự quản lí, đôi khi được gọi là những phần tử mạng, có thể là các bộ định tuyến và máy chủ truy nhập (Access Server), switch
và bridge, hub, máy tính hay là máy in trong mạng
Mỗi thiết bị chịu sự quản lí bao gồm phần mềm hoặc phần sụn (firmware) dưới dạng mã phiên dịch những yêu cầu SNMP và đáp ứng của những yêu cầu đó Phần mềm hoặc phần sụn này được coi là một agent Mặc dù mỗi thiết bị bắt buộc bao gồm một agent chịu quản lí trực tiếp, những thiết bị không tương thích với SNMP cũng có thể quản lí được nếu như chúng hỗ trợ một giao thức quản lí độc quyền Để thực hiện được điều này phải có agent ủy nhiệm (proxy agent) Proxy agent này có thể được coi như một bộ chuyển đổi giao thức vì nó phiên dịch những yêu cầu SNMP thành giao thức quản lí độc quyền của thiết bị không hoạt động theo giao thức SNMP
Mặc dù SNMP chủ yếu là giao thức đáp ứng thăm dò (poll-respond) với những yêu cầu do bộ phận quản lí tạo ra dẩn đến những đáp ứng trong agent, agent cũng có khả năng đề xướng ra một “đáp ứng tự nguyện” Ðáp ứng tự nguyện này là điều kiện cảnh
Trang 19báo từ việc giám sát agent với hoạt động đã được định nghĩa trước và chỉ ra rằng đã tới ngưỡng định trước Dưới sự điều khiển của SNMP, việc truyền cảnh báo này được coi
là cái bẫy (trap)
1.4.3 Cơ sở thông tin quản lí – MIB
Mỗi thiết bị chịu sự quản lí có thể có cấu hình, trạng thái và thông tin thống kê định nghĩa chức năng và khả năng vận hành của thiết bị Thông tin này rất đa dạng, có thể bao gồm việc thiết lập chuyển mạch phần cứng, những giá trị khác nhau lưu trữ trong các bảng ghi nhớ dữ liệu, bộ hồ sơ hoặc các trường thông tin trong hồ sơ lưu trữ ở các file và những biến hoặc thành phần dữ liệu tương tự Nhìn chung, những thành phần dữ liệu này được coi là Cơ sở thông tin quản lí của thiết bị chịu sự quản lí Xét riêng, mỗi thành phần dữ liệu biến đổi được coi là một đối tượng bị quản lí và bao gồm tên, một hoặc nhiều thuộc tính và một tập các hoạt động (operation) thực hiện trên đối tượng đó
Vì vậy MIB định nghĩa loại thông tin có thể khôi phục từ một thiết bị chịu sự quản lí và cách cài đặt thiết bị mà hệ thống quản lí điều khiển
1.4.4 Mô hình giao thức SNMP
SNMP sử dụng các dịch vụ chuyển tải dữ liệu thông qua các giao thức UDP/IP Một ứng dụng của Manager phải nhận dạng được Agent cần thông tin với nó Một ứng dụng của Agent được nhận dạng bởi địa chỉ IP của nó và một cổng UDP Một ứng dụng Manager đóng gói yêu cầu SNMP trong một UDP/IP, UDP/IP chứa mã nhận dạng cổng nguồn, địa chỉ IP đích và mã nhận dạng cổng UDP của nó Khung UDP sẽ được gửi đi thông qua thực thể IP tới hệ thống chịu sự quản lí, tại đó khung UDP sẽ được phân phối bởi thực thể UDP tới Agent Tương tự, các bản tin TRAP phải được các Manager nhận dạng Các bản tin sử dụng địa chỉ IP và mã nhận dạng cổng UDP của Manager SNMP
SNMP sử dụng 3 lệnh cơ bản là Read, Write, Trap và một số lệnh tùy biến để quản lí thiết bị (hình 1.6)
Lệnh Read: Được SNMP dùng để đọc thông tin từ thiết bị Các thông tin này được
cung cấp qua các biến SNMP lưu trữ trên thiết bị và được thiết bị cập nhật
Lệnh Write: Được SNMP dùng để ghi các thông tin điều khiển lên thiết bị bằng cách
thay đổi giá trị các biến SNMP
Lệnh Trap: Dùng để nhận các sự kiện gửi từ thiết bị đến SNMP Mỗi khi có một sự
kiện xảy ra trên thiết bị một lệnh Trap sẽ được gửi tới NMS
SNMP điều khiển, theo dõi thiết bị bằng cách thay đổi hoặc thu thập thông tin qua các biến giá trị lưu trên thiết bị Các Agent cài đặt trên thiết bị tương tác với những chip điều khiển hỗ trợ SNMP để lấy nội dung hoặc viết lại nội dung
Giao thức SNMP sử dụng kiểu kết nối vô hướng (connectionless) để trao đổi
Trang 20Đồ án tốt nghiê ̣p Đa ̣i ho ̣c Chương 1 Giới thiê ̣u về SNMP biệt Tuy vậy có thể tùy ý sử dụng các giao thức khác để truyền các gói tin SNMP Khi gửi các gói tin qua mạng, các phần tử mạng hay hệ thống quản lí mạng vẫn giữ nguyên định dạng của SNMP
Hình 1.7: Mô hình giao thức hoạt động SNMP Quản lí liên lạc giữa management với các agent
- Nhìn trên phương diện truyền thông, nhà quản lí (manager) và các tác nhân (agent) cũng là những người sử dụng, sử dụng một giao thức ứng dụng Giao thức quản lí yêu cầu cơ chế vận tải để hổ trợ tương tác giữa các tác nhân và nhà quản lí
- Management trước hết phải xác định được các agent mà nó muốn liên lạc có thể xác định được ứng dụng tác nhân bằng địa chỉ IP của nó và cổng UDP được gán cho nó Cổng UDP 161 được dành riêng cho các agent SNMP Management gói lệnh SNMP vào một phong bì UDP/IP Phong bì này chứa cổng nguồn, địa chỉ
IP đích và cổng 161 Một thực thể IP tại chổ sẽ chuyển giao khung UDP tới hệ thống bị quản lí Tiếp đó, một thực thể UDP tại chổ sẽ chuyển phát nó tới các agent Tương tự như vậy, lệnh TRAP cũng cần xác định những management mà
nó cần liên hệ Chúng sử dụng địa chỉ IP cũng như cổng UDP dành cho mamagement SNMP, đó là cổng 162
Trang 21Hình 1.8: Vị trí của SNMP trong chồng giao thức TCP/IP Hình 1.8 cho thấy vị trí giao thức SNMP trong mô hình chồng giao thức TCP/IP
Ta thấy, SNMP thuộc về lớp ứng dụng trong mô hình giao thức, nó sử dụng UDP làm giao thức lớp vận chuyển trên mạng IP
1.4.4.1 Cơ chế vận chuyển thông tin giữa management và agent
Việc lựa chọn cơ chế vận chuyển có tính trực giao với giao thức truyền thông đó SNMP chỉ đòi hỏi cơ chế truyền tải không tin cậy dữ liệu đồ (datagram) để truyền đưa các PDU (đơn vị dữ liệu giao thức) giữa management và các agent Ðiều này cho phép
sự ánh xạ của SNMP tới nhiều nhóm giao thức Mô hình vận chuyển datagram giảm được độ phức tạp của ánh xạ tầng vận chuyển Tuy nhiên, vẩn phải nhận thức thấy sự tham gia của một số lựa chọn tầng vận chuyển Các tầng vận chuyển khác nhau có thể
sử dụng nhiều kỹ thuật đánh địa chỉ khác nhau Các tầng vận chuyển khác nhau có thể đua ra những hạn chế quy mô của PDU Ánh xạ tầng vận chuyển có trách nhiệm phải
xử lí các vấn đề đánh địa chỉ, hạn chế quy mô PDU và một số tham số tầng vận chuyển khác
Trong phiên bản thứ hai của SNMP, người ta sử dụng kinh nghiệm để làm sắc nét và đơn giản hóa quá trình ánh xạ tới các chuẩn vận chuyển khác nhau Giao thức quản lí được tách khỏi môi trường vận chuyển một cách trực giao, điều này cũng được khuyến khích sử dụng cho bất cứ nhóm giao thức nào
Trang 22Đồ án tốt nghiê ̣p Đa ̣i ho ̣c Chương 1 Giới thiê ̣u về SNMP
1.4.4.2 Bảo vệ truyền thông liên lạc giữa management và các agent khỏi sự cố
Trong điều kiện mạng thiếu ổn định và thiếu độ tin cậy thì sẽ liên lạc quản lí càng trở nên quan trọng Làm thế nào để các management liên lạc với các agent một cách tin cậy? Việc SNMP sử dụng cơ chế UDP để liên lạc đã có nghĩa là thiếu đi độ tin cậy SNMP hoàn toàn để lại cho chương trình management chịu trách nhiệm và xử lí việc mất thông tin Các lệnh GET, GET-NEXT, và SET đều được phúc đáp bằng một lệnh GET-RESPONSE Hệ thống có thể dễ dàng phát hiện ra việc bị mất một lệnh khi không nhận được lệnh trả lại Nó có thể lặp lại yêu cầu đó một lần nữa hoặc có những hành động khác Tuy nhiên, các bản tin TRAP do agent tạo ra và không được phúc đáp khẳng định Khi lệnh TRAP bị thất lạc, các chương trình agent sẽ không biết về điều đó (tất nhiên là management cũng không hay biết về điều này) Thông thường các bản tin TRAP mang những thông tin hết sức quan trọng cho management, do vậy management cần chú
ý và cần bảo đảm việc chuyển phát chúng một cách tin cậy
Một câu hỏi đặt ra là làm thế nào để chuyển phát các bản tin TRAP tránh mất mát, thất lạc? Ta có thể thiết kế cho các agent lặp lại bản tin TRAP Biến số MIB có thể đọc số lần lặp lại theo yêu cầu Lệnh SET của management có thể đặt cấu hình cho biến
số này Có một cách khác là agent có thể lặp lại lệnh TRAP cho đến khi management đặt biến số MIB để chấm dứt sự cố Hãy ghi nhớ rằng, cả hai phương pháp trên đều chỉ cho ta những giải pháp từng phần Trong trường hợp thứ nhất, số lần lặp lại có thể không
đủ để đảm bảo liên lạc một cách tin cậy Trong trường hợp thứ hai, một sự cố mạng có thể dẩn đến việc hàng loạt bản tin TRAP bị mất tùy thuộc vào tốc độ mà các agent tạo
ra chúng Ðiều này làm cho sự cố mạng trở nên trầm trọng hơn Trong cả hai trường hợp, nếu ta cần chuyển phát những bản tin TRAP tới nhiều management, thì có thể xảy
ra tình trạng không nhất quán giữa các management hoặc xảy ra hiện tượng thất lạc thông tin rất phức tạp Nếu các agent phải chịu trách nhiệm về thiết kế cho việc phục hồi những bản tin TRAP thì càng làm tăng thêm độ phức tạp trong việc quản lí các agent trong môi trường đa nhà chế tạo
Người ta cũng đã theo đuổi cải tiến cơ chế xử lí bản tin sự cố cho phiên bản thứ hai của SNMP Thứ nhất là đơn nguyên TRAP được bỏ đi và thay thế nó bằng một lệnh
GET/RESPONSE không yêu cầu Lệnh này do agent tạo ra và chuyển đến cho
“management bẫy” tại cổng UDP-162 Ðiều này phản ánh một quan điểm là nhà quản lí
sự cố có thể thống nhất các bản tin sự cố rồi trả lại cho các yêu cầu ảo Bằng cách bỏ đi một đơn thể, giao thức được đơn giản hóa Người ta cũng bổ sung thêm một cơ sở thông tin quản lí đặc biệt TRAP MIB để thống nhất việc xử lí sự cố, các management nhận bản tin về các sự cố này và việc lặp lại để cải thiện độ tin cậy trong chuyển phát thông tin
Trang 231.4.4.3 Ảnh hưởng của tầng vận chuyển tới khả năng quản lí mạng
Việc sử dụng mạng bị quản lí để hỗ trợ các nhu cầu thông tin liên lạc quản lí (quản lí trong băng) đã gây ra nhiều vấn đề thú vị Việc quản lí trong băng và ngoài băng độc lập với việc lựa chọn giao thức quản lí Quản lí trong băng có thể dẫn đến tình trạng mất liên lạc với một agent đúng lúc agent đó cần sự chú ý về quản lí (tùy thuộc vào nguồn của sự cố) Người ta có thể làm giảm nhẹ được vấn đề này nếu chính các thực thể
mà agent quản lí lại bảo vệ đường truy nhập tới các agent này
Có một ảnh hưởng nhỏ về khả năng quản lí xuất hiện trong việc đánh địa chỉ tầng vận chuyển Ví dụ: có thể xác định duy nhất một agent SNMP bằng địa chỉ IP và số cổng UDP Điều này có nghĩa là với một địa chỉ IP cho trước thì ta chỉ có thể tiếp cận được một agent duy nhất Hơn thế nữa agent này lại chỉ duy trì một cơ sở thông tin quản
lí MIB duy nhất Do vậy, với một địa chỉ IP duy nhất chỉ tồn tại một MIB Việc
gắn kết MIB với địa chỉ IP có thể hạn chế được độ phức tạp của biến số liệu mà agent cung cấp Xem xét trong cùng một hoàn cảnh trong đó hệ thống yêu cầu nhiều MIB để quản lí các thành phần khác nhau của nó Cần phải thống nhất các MIB khác nhau này dưới một cây MIB tĩnh duy nhất để có thể truy nhập chúng thông qua một agent duy nhất Trong một số hoàn cảnh nhất định, việc thống nhất đó không thể thực hiện được Trong những trường hợp như vậy, mỗi MIB đòi hỏi phải có riêng một nhóm giao thức SNMP/UDP/IP Điều này làm tăng phức tạp trong việc tổ chức quản lí (các thông tin tương quan từ nhiều MIB thuộc một hệ thống cho trước) cũng như việc truy nhập nó (thông qua nhiều địa chỉ IP)
Có một cách khác là một agent duy nhất trong một hệ thống có thể giữ vai trò như một proxy mở rộng cho các agent phụ đóng gói những cơ sở dữ liệu MIB khác nhau cùng liên quan tới một phân hệ cho trước Các phiên bản mở rộng SNMPv2 hỗ trợ phương pháp này để xử lí nhu cầu truyền thông của manager Các phiên bản mở rộng này cho phép agent đóng vai trò như một manager của các agent con tại chỗ, do vậy cho phép tiếp cận hàng loạt các agent con
Một SNMP management station có thể quản lí/giám sát nhiều SNMP element, thông qua hoạt động gửi request và nhận trap Tuy nhiên một SNMP element có thể được cấu hình để chỉ cho phép các SNMP management station nào đó được phép quản lí/giám sát mình
Các cơ chế bảo mật đơn giản này gồm có : community string, view và SNMP access control list
Trang 24Đồ án tốt nghiê ̣p Đa ̣i ho ̣c Chương 1 Giới thiê ̣u về SNMP
1.5.1 Community string
Community string là một chuỗi ký tự được cài đặt giống nhau trên cả SNMP manager và SNMP agent, đóng vai trò như “mật khẩu” giữa 2 bên khi trao đổi dữ liệu Community string có 3 loại: Read-Community, Write- Community, Trap-Community
Khi manager gửi GetRequest, GetNextRequest đến agent thì trong bản tin gửi đi
có chứa Community Khi agent nhận được bản tin request thì nó sẽ so sánh community do manager gửi và Read-community mà nó được cài đặt Nếu 2 chuỗi này giống nhau, agent sẽ trả lời; nếu 2 chuỗi này khác nhau, agent sẽ không trả lời
Read- Write-Community được dùng trong bản tin SetRequest Agent chỉ chấp nhận thay đổi dữ liệu khi write-community 2 bên giống nhau
Trap-community nằm trong bản tin trap của trap sender gửi cho trap receiver Trap receiver chỉ nhận và lưu trữ bản tin trap chỉ khi trap-community 2 bên giống nhau, tuy nhiên cũng có nhiều trap receiver được cấu hình nhận tất cả bản tin trap mà không quan tâm đến trap-community
Community string có 3 loại như trên nhưng cùng một loại có thể có nhiều string khác nhau Nghĩa là một agent có thể khai báo nhiều read-community, nhiều write-community
Trên hầu hết hệ thống, read-community mặc định là “public”, write-community mặc định là “private” và trap-community mặc định là “public” Community string chỉ
là chuỗi ký tự dạng cleartext, do đó hoàn toàn có thể bị nghe lén khi truyền trên mạng Hơn nữa, các community mặc định thường là “public” và “private” nên nếu người quản trị không thay đổi thì chúng có thể dễ dàng bị dò ra Khi community string trong mạng
bị lộ, một người dùng bình thường tại một máy tính nào đó trong mạng có thể quản lí/giám sát toàn bộ các device có cùng community mà không được sự cho phép của người quản trị
1.5.2 View
Khi manager có read-community thì nó có thể đọc toàn bộ OID của agent Tuy nhiên agent có thể quy định chỉ cho phép đọc một số OID có liên quan nhau, tức là chỉ đọc được một phần của MIB Tập con của MIB này gọi là view, trên agent có thể định nghĩa nhiều view Ví dụ : agent có thể định nghĩa view interfaceView bao gồm các OID liên quan đến interface, storageView bao gồm các OID liên quan đến lưu trữ, hay AllView bao gồm tất cả các OID
Một view phải gắn liền với một community string Tùy vào community string nhận được là gì mà agent xử lí trên view tương ứng Ví dụ : agent định nghĩa read-community “inf” trên view interfaceView, và “sto” trên storageView; khi manager gửi request lấy OID ifNumber với community là “inf” thì sẽ được đáp ứng do ifNumber nằm trong interfaceView; nếu manager request OID hrStorageSize với community “inf”
Trang 25thì agent sẽ không trả lời do hrStorageSize không nằm trong interfaceView; nhưng nếu manager request hrStorageSize với community “sto” thì sẽ được trả lời do hrStorageSize nằm trong storageView
Việc định nghĩa các view như thế nào tùy thuộc vào từng SNMP agent khác nhau
Có nhiều hệ thống không hỗ trợ tính năng view
1.5.3 SNMP access control list
Khi manager gửi không đúng community hoặc khi OID cần lấy lại không nằm trong view cho phép thì agent sẽ không trả lời Tuy nhiên khi community bị lộ thì một manager nào đó vẫn request được thông tin
Để ngăn chặn hoàn toàn các SNMP manager không được phép, người quản trị có thể dùng đến SNMP access control list (ACL) SNMP ACL là một danh sách các địa chỉ IP được phép quản lí/giám sát agent, nó chỉ áp dụng riêng cho giao thức SNMP và được cài trên agent Nếu một manager có IP không được phép trong ACL gửi request thì agent sẽ không xử lí, dù request có community string là đúng
Đa số các thiết bị tương thích SNMP đều cho phép thiết lập SNMP ACL
Chương 1 giới thiê ̣u tổng quan về quản lí ma ̣ng và giao thức quản lí ma ̣ng đơn giản SNMP bao gồm:
- Các yêu cầu và phương pháp quản lí ma ̣ng cơ bản
- Hai phương thứ c giám sát Poll và Alert
- Trình bày về các ưu, nhược điểm của giao thức SNMP
- Giớ i thiê ̣u về các phiên bản của SNMP: SNMPv1, SNMPv2, SNMPv3
- Tìm hiều về các thành phần của các hê ̣ thống quản lí ma ̣ng dựa trên SNMP bao gồm: bô ̣ phâ ̣n quản lí (manager), thiết bi ̣ chi ̣u sự quản lí (agent) và cơ sở thông tin quản lí (MIB)
- Mô hình giao thức SNMP trình bày về cơ chế truyền thông, bảo vê ̣ truyền thông và ảnh hưởng của tầng vâ ̣n chuyển tới khả năng quản lí ma ̣ng
- Ba cơ chế bảo mâ ̣t trong SNMP là community string, view và SNMP access control list
Như vâ ̣y trong chương 1 chúng ta đã có cái nhìn tổng quan về giao thức SNMP Chương 2, chúng ta sẽ tìm hiểu kĩ hơn về các phiên bản của SNMP
Trang 26Đồ án tốt nghiê ̣p Đa ̣i ho ̣c Chương 2 Các phiên bản SNMP
- GetRequest: Manager gửi GetRequest cho agent để yêu cầu agent cung cấp thông
tin nào đó dựa vào OID
- GetNextRequest: Manager gửi GetRequest cho agent để yêu cầu agent cung cấp
thông tin nằm kế tiếp OID trong MIB
- SetRquest: Manager gửi SetRequest cho agent để đặt giá trị cho đối tượng của
agent dựa vào OID
- GetResponse: Agent gửi GetResponse cho manager để trả lời khi nhận được
GetRequest/ GetNextRequest
- Trap: Agent tự động gửi Trap cho manager khi có một sự kiện xảy ra đối với một
object nào đó trong agent
Trong một bản tin GetRequest có thể chứa nhiều OID, nghĩa là dùng một GetRequest có thể lấy về cùng lúc nhiều thông tin
bộ thông tin của agent
2.1.1.3 SetRequest
Bản tin SetRequest được manager gửi cho agent để thiết lập giá trị cho một object nào đó Ví dụ :
Trang 27- Có thể đặt lại tên của một máy tính hay router bằng phần mềm SNMP manager, bằng cách gửi bản tin SetRequest có OID là 1.3.6.1.2.1.1.5.0 (sysName.0) và có giá trị là tên mới cần đặt
- Có thể shutdown một port trên switch bằng phần mềm SNMP manager, bằng cách gửi bản tin có OID là 1.3.6.1.2.1.2.2.1.7 (ifAdminStatus) và có giá trị là 2 (ifAdminStatus có thể mang 3 giá trị là UP (1), DOWN (2) và TESTING (3) )
Chỉ những object có quyền READ_WRITE mới có thể thay đổi được giá trị
Tuy nhiên không phải mọi biến cố đều được agent gửi trap, cũng không phải mọi agent đều gửi trap khi xảy ra cùng một biến cố Việc agent gửi hay không gửi trap cho biến cố nào là do hãng sản xuất device/agent quy định
Phương thức trap là độc lập với các phương thức request/response SNMP request/response dùng để quản lí còn SNMP trap dùng để cảnh báo Nguồn gửi trap gọi
là Trap Sender và nơi nhận trap gọi là Trap Receiver Một trap sender có thể được cấu hình để gửi trap đến nhiều trap receiver cùng lúc Có 2 loại trap : trap phổ biến (generic trap) và trap đặc thù (specific trap) Generic trap được quy định trong các chuẩn SNMP, còn specific trap do người dùng tự định nghĩa (người dùng ở đây là hãng sản xuất SNMP device)
Trang 28Đồ án tốt nghiê ̣p Đa ̣i ho ̣c Chương 2 Các phiên bản SNMP
Đối với các phương thức Get/Set/Response thì SNMP Agent lắng nghe ở port UDP 161, còn phương thức trap thì SNMP Trap Receiver lắng nghe ở port UDP 162
Trường Data trong bản tin SNMP gọi là PDU (Protocol Data Unit) SNMPv1 có
5 phương thức hoạt động tương ứng 5 loại PDU Tuy nhiên chỉ có 2 loại định dạng bản tin là PDU và Trap-PDU; trong đó các bản tin Get, GetNext, Set, GetResponse có cùng định dạng là PDU, còn bản tin Trap có định dạng là Trap-PDU
Trang 292.1.2.1 Cấu trúc của PDU GetRequest
Hình 2.3: Cấu trúc Get/GetNext/Set/Response PDU
request-id : mã số của request ID này là số ngẫu nhiên do manager tạo ra, agent khi gửi bản tin GetResponse cho request nào thì nó phải gửi requestID giống như lúc nhận Giữa manager và agent có thể có nhiều request và response, một request và một response là cùng một phiên trao đổi khi chúng
có requestID giống nhau
error-status: nếu = 0 là thực hiện thành công không có lỗi, nếu < > 0 là có lỗi xảy ra và giá trị của nó mô tả mã lỗi Trong bản tin GetRequest, GetNextRequest, SetRequest thì error-status luôn = 0
error-index: số thứ tự của objectid liên quan đến lỗi nếu có Trong bindings có nhiều objectid, được đánh số từ 1 đến n, một bản tin GetRequest
variable-có thể lấy cùng lúc nhiều object
variable-bindings : danh sách các cặp [ObjectID – Value] cần lấy thông tin, trong đó objectId là định danh của object cần lấy, còn value không mang giá trị Khi agent gửi bản tin trả lời thì nó sẽ copy lại bản tin này và điền vào value bằng giá trị của object
Ví dụ: Giám sát switch bằng phần mềm PRTG sử dụng phần mềm bắt gói tin Wireshark, ta thấy được cấu trúc bản tin Get-request
Trang 30Đồ án tốt nghiê ̣p Đa ̣i ho ̣c Chương 2 Các phiên bản SNMP
Hình 2.4: Bản tin Get-request Trong hình trên là cấu trúc của một bản tin SNMP với PDU là GetRequest, g ồm các thông tin:
- version là v1, số 0 trong ngoặc là giá trị của trường version, 0 ở đây có nghĩa là version1
- value = unSpecified Do bản tin là GetRequest nên value sẽ không mang giá trị, giá trị sẽ được ghi vào và trả về trong bản tin GetRespone
2.1.2.2 Cấu trúc của PDU GetResponse
- request-id : mã số của request ID này phải giống với request-id của bản tin GetRequest trước đó
- error-status : mang một trong các giá trị noError(0), tooBig(1), noSuchName(2), badValue(3), readOnly(4), genErr(5) Nếu agent lấy thông tin để trả lời request thành công thì error-status là noError(0)
- objectid : định danh của object được trả về Nếu trước đó là GetRequest thì objectid sẽ giống với objectid trong bản tin request, nếu trước đó là
Trang 31GetNextRequest thì objectid sẽ là định danh của object nằm sau (nằm sau trong mib) objectid của request
2.1.2.3 Cấu trúc của PDU GetNextRequest
Bản tin GetNextrequest cũng dùng để lấy thông tin và cũng có chứa OID, tuy nhiên nó dùng để lấy thông tin của object nằm kế tiếp object được chỉ ra trong bản tin
Một MIB bao gồm nhiều OID được sắp xếp theo thứ tự nhưng không liên tục, nếu biết được một OID thì không xác định được OID kế tiếp Do đó ta cần phương thức GetNextRequest để lấy giá trị của OID kế tiếp Nếu thức hiện GetNextRequest liên tục thì sẽ lấy được toàn bộ thông tin của agent
Cấu trúc GetNextRequest giống với GetRequest, chỉ khác ở byte chỉ ra bản tin là GetNextRequest PDU
Ví du ̣: Bản tin GetNextRequest với object là sysContact, sau đó agent sẽ gửi bản tin GetResponse trả lời với object là sysName, vì sysName nằm ngay sau sysContact trong MIB, chú ý rằng request-id là giống nhau
Hình 2.5: Bản tin GetNextRequest
Trang 32Đồ án tốt nghiê ̣p Đa ̣i ho ̣c Chương 2 Các phiên bản SNMP
Hình 2.6: Bản tin GetResponse
2.1.2.4 Cấu trúc của PDU SetRequest
Cấu trúc SetRequest cũng giống với GetRequest, bản tin SetRequest được manager gửi cho angent để thiết lập giá trị cho một object nào đó Objectid-value chỉ ra đối tượng và giá trị cần set Chỉ có những object có quyền READ-WRITE mới có thể thay đổi được giá trị
Hình 2.7 là bản tin SetRequest đặt lại tên của thiết bị là “Cisco2950”, tiếp theo agent sẽ gửi bản tin GetResponse thông báo gái trị của sysName sau khi set
Hình 2.7: Quá trình đặt lại tên cho router thông qua SetRequest
Hình 2.8: Router (agent) gửi trả thông điệp GetResponse khi đã được đổi tên
Trang 332.1.2.5 Cấu trúc của PDU Trap
Hình 2.9: Cấu trúc Trap PDU Cấu trúc của bản tin trap của SNMPv1:
- enterprise: kiểu của object gửi trap Đây là một OID giúp nhận dạng thiết bị gửi trap là thiết bị gì; nhận dạng chi tiết đến hãng sản xuất, chủng loại, model OID này bao gồm một chỉ số doanh nghiệp (enterprise number) và chỉ số id của thiết bị của hãng do hãng tự định nghĩa
- agent address : địa chỉ IP của nguồn sinh ra trap Có thể bạn sẽ thắc mắc tại sao lại có IP của nguồn sinh ra trap trong khi bản tin IP chứa gói SNMP đã có địa chỉ nguồn Giả sử ta có mô hình giám sát như sau: tất cả trap sender được cấu hình để gửi trap đến một trap receiver trung gian, gọi là trap relay, sau đó trap relay mới gửi đến nhiều trap receiver cùng lúc; thì lúc này bản tin trap nhận được tại trap receiver sẽ có IP source là của trap relay, trong khi IP của nguồn phát sinh trap thực sự nằm trong agent address
- generic-trap: kiểu của các loại trap phổ biến
- specific-trap: kiểu của các loại trap do người dùng tự định nghĩa
- time-stamp: thời gian tính từ lúc thiết bị được khởi động đến lúc gửi bản tin
Trang 34Đồ án tốt nghiê ̣p Đa ̣i ho ̣c Chương 2 Các phiên bản SNMP
- variable-bindings: các cặp objectID – value mô tả các object có liên quan đến trap
Sự khác biệt của SNMPv2 so với SNMPv1:
Có nhiều phương thức hơn so với SNMPv1
Cấu trúc bản tin Trap PDU khác so với SNMPv1
Có thêm bản tin Bulk PDU với cấu trúc riêng
2.2.1 Các phương thức của SNMPv2
SNMPv2c có 8 phương thức gồm: GetRequest, GetNextRequest, Response, SetRequest, GetBulkRequest, InformRequest, Trap và Report Như vậy so với SNMPv1 thì SNMPv2c có thêm các phương thức GetBulk, Inform và Report
Hình 2.10: Các phương thức của SNMPv2c
GetBulkRequest: phương thức này dùng để lấy một loạt nhiều object chỉ trong 1 bản tin GetBulk Các bản tin Get/GetNext vẫn có thể lấy cùng lúc nhiều object bằng cách đưa tất cả chúng vào danh sách variable-bindings trong bản tin request, nhưng GetBulk có thể lấy nhiều object mà chỉ cần chỉ ra 1 object trong variable-bindings
InformRequest: có tác dụng tương tự như trap, nhưng khi manager nhận được InformRequest thì nó sẽ gửi lại Response để xác nhận đã nhận được thông báo, còn Trap thì không có cơ chế xác nhận
Report: bản tin Report không được định nghĩa trong RFC3416, các hệ thống có
sử dụng Report phải tự định nghĩa chúng, tuy nhiên bản tin Report vẫn có cấu trúc giống như các bản tin khác
Agent lắng nghe request ở cổng UDP 161 còn manager nhận trap & inform ở
Trang 35cổng UDP 162
2.2.2 Cấu trúc bản tin của SNMPv2
Hình 2.11: Cấu trúc bản tin SNMPv2 Cấu trúc của các phương thức GetRequest, GetNextRequest, SetRequest, Response, Trap và kể cả InForm PDU của SNMPv2 có cấu trúc PDU tương tự như cấu trúc PDU của SNMPv1
2.2.2.1 Cấu trúc của Bulk PDU
Hình 2.12: Cấu trúc GetBulk PDU GetBulkRequest có thể lấy về nhiều object mà chỉ cần chỉ ra một vài object trong bản tin gửi đi Nguyên lí của nó là khai báo số lượng object tính từ object được chỉ ra trong request mà agent phải lần lượt trả về thông tin, kiểu như “hãy lấy cho tôi 10 object tính từ object có id là ” Như vậy, GetBulkRequest có thể giảm bớt lưu lượng truyền
Trang 36Đồ án tốt nghiê ̣p Đa ̣i ho ̣c Chương 2 Các phiên bản SNMP
- request-id : tương tự như cấu trúc của PDU
- non-repeaters: Số lượng item đầu tiên trong variable-bindings của GetBulk mà agent phải trả lời bằng item nằm kế tiếp trong mib, mỗi item trong request thì sẽ có một item trong response
- max-repetitions : các item còn lại trong variable-bindings sẽ được agent trả lời bằng max-repetitions item nằm kế tiếp chúng trong mib, mỗi item còn lại trong request này sẽ có max-repetitions item tương ứng trong response
2.2.2.2 Cấu trúc của SNMPv2 Trap PDU và InformRequest PDU
Trap là câu lệnh độc lập, không phụ thuộc vào đáp ứng hoặc yêu cầu từ các
manager hoặc các agent Trap đưa ra các thông tin liên quan tới các điều kiện được định nghĩa trước và được gửi từ các agent tới manager
InformRequest: câu lệnh InformRequest cung cấp khả năng hỗ trợ các manager
bố trí theo cấu hình phân cấp Câu lệnh này cho phép một manager trao đổi thông tin với các manager khác Các cảnh báo và sự kiện được gửi đi trong lệnh InformRequest
để phát hiện và khởi tạo lại các tuyến truyền bản tin
2.3.1 Các phương thức của SNMPv3
SNMPv3 có 8 phương thức gồm : GetRequest, GetNextRequest, Response, SetRequest, GetBulkRequest, InformRequest, Trap và Report So với SNMPv1 thì SNMPv3 có thêm các phương thức GetBulk, Inform và Report và giống với SNMPv2c
Trang 37Hình 2.13: Cấu trúc bản tin SNMPv3
MessageVersion: Trường đầu tiên trong bản tin là trường phiên bản SNMP
Trường này cung cấp tính tương thích với các phiên bản khác nhau Giá trị trong trường này chỉ ra đây là một bản tin SNMPv3 Giá trị 2 và 1 tương ứng với SNMPv2 và SNMPv1
MessageID: Nhận dạng bản tin là một số được sử dụng giữa hai thực thể cho bản
tin tương quan Đơn vị dữ liệu giao thức PDU chứa trường nhận dạng yêu cầu và được
sử dụng nhận dạng trong SNMPv1 và SNMPv2c, nhưng từ SNMPv3 cả mã hóa PDUs, messageID đều nằm trong tiêu đề
MaxMessageSize: Kích thước bản tin lớn nhất MaxMessageSize là kích thước
lớn nhất của bản tin được hỗ trợ bởi bên gửi bản tin Đây là gói kích thước lớn nhất để giao thức vận chuyển có thể mang mà không cần phân đoạn Bên phía thu sử dụng giá trị MaxMessageSize để bảo đảm sự trả lời của nó vẫn nằm trong phạm vi kích thước cho phép
MessageFlags: Cờ đánh dấu bản tin có độ dài 1 byte, xác định sự thiết lập chứng
thực và đặt riêng cho bản tin Nó cũng thông báo khi bản tin yêu cầu sự đáp lại từ phía máy thu Có ba bít được sử dụng khi việc mã hóa không thành công:
- Không có chứng thực và không có sự riêng lẻ (giá trị bít 000)
- chứng thực và không có sự riêng lẻ (giá trị bít 001)
- chứng thực và riêng lẻ (giá trị bít 011)
Cả ba trường hợp trên đều có thể đặt cảnh báo tùy chọn
MessageSecurity: Bảo mật bản tin là một đối tượng số nguyên được đặt bảo mật cho bản
tin Phạm vi hỗ trợ như sau:
- 0 được dành cho any (bất kỳ)
- 1 dành cho SNMPv1
- 2 dành cho SNMPv2c
- 3 được danh cho USM (User-based Security Model)
Trang 38Đồ án tốt nghiê ̣p Đa ̣i ho ̣c Chương 2 Các phiên bản SNMP
- Các giá trị ngoài 255 có thể được dùng cho mô hình bảo mật tiêu chuẩn, bên thu cũng phải có cùng mô hình bảo mật đó khi xử lí bảo mật hoạt động
Mô hình bảo mật dữ liệu chung
Phần chung của mô hình bảo mật bao gồm các trường sau:
- EngineID: Sự nhận dạng duy nhất của Engine SNMPv3
- EngineBoots: Là khoảng thời gian mà engine SNMP bắt đầu up hoặc reset giá trị của usmUserTable cuối cùng bị sửa đổi
- EngineTime: Số giây mà giá trị EngineBoots cuối được sửa đổi
- UserName: Tên của người dùng
Những trường trên đi trước các vùng dữ liệu chứng thực và riêng lẻ Engine ID
và UserName được dùng để tạo một chit số trong một bảng gọi là usmUserTable Bảng này lưu giữ dữ liệu mô hình bảo mật cho EngineID và cặp người dùng
Mô hình bảo mật dữ liệu qua chứng thực:
- Hai giao thức chứng thực hỗ trợ trong SNMPv3 là MD5 và SHA Cả hai giao thức cùng phục vụ cho mục đích xác nhận thông báo SNMPv3 Thuật toán MD5 tính toán 16 byte (128 bits) digest và 12 byte đầu tiên (96 bit) bao gồm các thành phần của bản tin bên trong các trường chứng thực Người dùng phải chọn một chìa khóa bí mật 16-octet (byte) để dùng cho thuật toán MD5 Nếu người dùng chọn thuật toán chứng thực SHA thì thuật toán tính toán 20 byte (160 bits) digest
và một lần nữa 12 byte đầu tiên (96 bits) bao gồm những thành phần của bản tin chứng thực Người dùng phảo chọn một chìa khóa bí mật 20-octet để dùng thuật toán SHA
- Dù giải thuật nào được dùng thì trường giao thức chứng thực là một chuỗi 12 byte được dùng làm nhận dạng để chứng thực bản tin Khi một thực thể SNMPv3 (manager) muốn gửi một yêu càu cho thực thể khác (agent) phải dùng một chìa khóa bí mật cho cả hai phía
Mô hình bảo mật qua giao thức dữ liệu riêng: Trường của giao thức riêng lẻ là chuỗi 18
byte octet dùng cho thuật toán tiêu chuẩn mã hóa dữ liệu DES (Data Encryption Standard) Mã hóa dùng khóa 16 byte 8 octet đầu tiên của khóa bí mật 16 octet dùng như khóa DES 8 octet tiếp theo được dùng như một vector khởi tạo Cả hai dùng một khóa riêng bí mật để mã hóa và giải mã bản tin
- SNMP có 3 phiên bản v1, v2 và v3
GetResonse và Trap
- Bản tin SNMPv1 có hai loa ̣i: PDU và Trap-PDU
Trang 39- SNMPv2 và SNMPv3 có 8 phương thức GetRequest, GetNextRequest,
SetRequest, GetResonse, Trap, InformRequest và Report
- Bản tin SNMPv3 được phân chia trong bốn phần: dữ liê ̣u chung, mô hình bảo
mâ ̣t dữ liê ̣u, context và PDU
Như vâ ̣y trong chương 2 chúng ta đã tìm hiểu về các phương thức và bản tin của
ba phiên bản SNMP Chương 3, chúng ta sẽ tìm hiểu về phần mềm giám sát hê ̣ thống Nagios, đây là mô ̣t công cu ̣ ma ̣nh mẽ trong giám sát hê ̣ thống ma ̣ng
Trang 40Đồ án tốt nghiê ̣p Đa ̣i ho ̣c Chương 3 Giám sát hê ̣ thống với phần mềm Nagios
CHƯƠNG 3 GIÁM SÁT HỆ THỐNG VỚI PHẦN MỀM NAGIOS
Nagios là một công cụ giám sát hệ thống, mục đích chính của hệ thống giám sát
là để phát hiện và cảnh báo sự cố hệ thống càng sớm càng tốt Nagios là hệ thống giám sát mạng có chi phí đầu tư thấp Tuy nhiên nó có khả năng rất mạnh mẽ trong việc giám sát hoạt động của các thiết bị trên mạng Bởi vậy Nagios rất được tin tưởng và sử dụng rộng rãi trên toàn cầu
Từ khi ra đời 2002 đến nay Nagios đã liên tục phát triển và rất được quan tâm của cộng đồng và những người sử dụng Nagios Cho đến nay theo thống kê của https://www.nagios.org/ ướ c tính có khoảng 1.000.000 người sử du ̣ng Nagios Từ phiên bản 1.0 đầu tiên, đến nay Nagios đã phát triển nên phiên bản 4.x và vẫn liên tục cho ra những phiên bản mới với tính năng mạnh mẽ hơn Đặc biệt Nagios có khả năng phân tán Vì vậy nó có thể giám sát các mạng khổng lồ, đạt cỡ 100.000 node
Chức năng của Nagios:
Giám sát trạng thái hoạt động của các dịch vụ mạng (SMTP, POP3, IMAP, HTTP, ICMP, FTP, SSH, DHCP, LDAP, DNS, name server, web proxy, TCP port, UDP port, cở sở dữ liệu: mysql, portgreSQL, oracle)
Giám sát các tài nguyên các máy phục vụ và các thiết bị đầu cuối (chạy hệ điều hành Unix/Linux, Windows, Novell netware): tình trạng sử dụng CPU,số người dùng đang log on, tình trạng sử dụng ổ đĩa cứng, tình trạng sử dụng bộ nhớ trong
và swap, số tiến trình đang chạy, các tệp log hệ thống
Giám sát các thông số an toàn thiết bị phần cứng trên host như: nhiệt độ CPU, tốc độ quạt, pin, giờ hệ thống…
Giám sát các thiết bị mạng có IP như router, switch và máy in Với Router, Switch, Nagios có thể theo dõi được tình trạng hoạt động, trạng thái bật tắt của từng cổng, lưu lượng băng thông qua mỗi cổng, thời gian hoạt động liên tục (Uptime) của thiết bị
Cảnh báo cho người quản trị bằng nhiều hình thức như email, tin nhắn tức thời (IM), âm thanh… nếu như có thiết bị, dịch vụ gặp trục trặc
Tổng hợp, lưu giữ và báo cáo định kỳ về tình trạng hoạt động của mạng
Đặc điểm của Nagios:
- Các hoạt động kiểm tra được thực hiện bởi các plugin cho máy phục vụ Nagios
và các mô đun client trên các thiết bị của người dùng cuối, Nagios chỉ định kỳ nhận các thông tin từ các plugin và xử lí những thông tin đó (thông báo cho người quản lí, ghi vào tệp log, hiển thi lên giao diện web…)