Nghiên cứu, xây dựng hệ thống giám sát hạ tầng cntt với giải pháp mã nguồn mở

  • 59 trang
  • file .pdf
TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
LUẬN VĂN THẠC SĨ
Nghiên cứu, xây dựng hệ thống giám sát
hạ tầng CNTT với giải pháp mã nguồn mở
VŨ XUÂN HẢI
Ngành Mạng máy tính và An toàn thông tin
Giảng viên hướng dẫn: TS. Trần Hoàng Hải
Viện: Công nghệ Thông tin và Truyền thông
HÀ NỘI, 2020
TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
LUẬN VĂN THẠC SĨ
Nghiên cứu, xây dựng hệ thống giám sát
hạ tầng CNTT với giải pháp mã nguồn mở
VŨ XUÂN HẢI
Ngành Mạng máy tính và An toàn thông tin
Giảng viên hướng dẫn: TS. Trần Hoàng Hải
Chữ ký của GVHD
Viện: Công nghệ Thông tin và Truyền thông
HÀ NỘI, 2020
CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
Độc lập – Tự do – Hạnh phúc
BẢN XÁC NHẬN CHỈNH SỬA LUẬN VĂN THẠC SĨ
Họ và tên tác giả luận văn : VŨ XUÂN HẢI
Đề tài luận văn: Nghiên cứu, xây dựng hệ thống giám sát hạ tầng CNTT
với giải pháp mã nguồn mở
Chuyên ngành: Mạng máy tính và An toàn thông tin
Mã số SV: CB180195
Tác giả, Người hướng dẫn khoa học và Hội đồng chấm luận văn xác nhận tác
giả đã sửa chữa, bổ sung luận văn theo biên bản họp Hội đồng ngày
27/06/2020 với các nội dung sau:
- Sửa chương 1 : Mục tiêu, quy mô của đề tài, hiện trạng phần mềm giám
sát mạng
- Trình bày hiện trạng hạ tầng CNTT
- Trình bày đối tượng được giám sát
Ngày tháng năm 2020
Giáo viên hướng dẫn Tác giả luận văn
TS. Trần Hoàng Hải Vũ Xuân Hải
CHỦ TỊCH HỘI ĐỒNG
LỜI CẢM ƠN
Tôi xin gửi lời chân thành cảm ơn đến toàn thể thầy, cô giáo trong Viện
Công nghệ thông tin Trường Đại học Bách Khoa Hà Nội. Đồng thời tôi xin bày
tỏ lòng cảm ơn sâu sắc tới TS. Trần Hoàng Hải - Người đã tận tình hướng dẫn,
định hướng và chỉ bảo cho tôi trong suốt quá trình nghiên cứu hoàn thành Luận
văn.
Trong quá trình hoàn thiện luận văn, mặc dù đã nỗ lực cố gắng với tinh thần
trách nhiệm cao nhất, song bản luận văn không thể tránh khỏi những thiếu sót,
hạn chế nhất định. Tôi rất mong nhận được sự đóng góp ý kiến của các Thầy/Cô
giáo; các anh, chị đồng nghiệp và các bạn quan tâm để bản luận văn này được
hoàn thiện hơn nữa.
Xin trân trọng cảm ơn !
Hà Nội, ngày tháng năm 2020
Học viên
Vũ Xuân Hải
MỤC LỤC
CHƯƠNG 1. MỞ ĐẦU ........................................................................................ 1
1.1 Lý do chọn đề tài ............................................................................................. 1
1.2 Mục tiêu của đề tài........................................................................................... 2
CHƯƠNG 2. TỔNG QUAN VỀ HỆ THỐNG GIÁM SÁT ............................. 4
2.1 Khái niệm hệ thống giám sát ........................................................................... 4
2.2 Vai trò của hệ thống giám sát mạng ................................................................ 5
2.3 Giao thức giám sát mạng SNMP ..................................................................... 5
2.3.1 Các phương thức của SNMP ............................................................ 6
2.3.2 Các cơ chế bảo mật cho SNMP ...................................................... 10
2.3.3 Cấu trúc bản tin SNMP .................................................................. 11
CHƯƠNG 3. XÂY DỰNG GIẢI PHÁP GIÁM SÁT SỬ DỤNG ZABBIX .. 13
3.1 Mô tả hiện trạng hạ tầng CNTT của Công ty cổ phần Thương mại và Dịch vụ
Lotteshop Việt Nam ............................................................................................. 13
3.2 Lựa chọn giải pháp Zabbix ............................................................................ 14
3.2.1 Kiến trúc của Zabbix .................................................................... 17
3.2.2 Bảo mật trong Zabbix .................................................................. 19
3.2.3 Cơ chế thu thập dữ liệu của Zabbix ............................................. 19
3.2.4 Các mô hình triển khai Zabbix ..................................................... 22
3.3 Triển khai thử nghiệm ................................................................................... 25
3.3.1 Cài đặt Zabbix server ................................................................... 26
3.3.2 Giới thiệu giao diện Dashboard ................................................... 31
3.3.3 Cấu hình giám sát thêm 1 server .................................................. 31
3.3.4 Template trong Zabbix ................................................................. 35
3.3.5 Auto Discovery ............................................................................ 40
3.3.6 Cấu hình cảnh báo trong Zabbix thông qua ứng dụng Telegram 42
3.3.7 Kết quả thử nghiệm ...................................................................... 47
CHƯƠNG 4. KẾT LUẬN .................................................................................. 50
4.1 Kết luận.......................................................................................................... 50
4.2 Hướng phát triển của luận văn trong tương lai .............................................. 50
TÀI LIỆU THAM KHẢO ................................................................................. 51
DANH MỤC HÌNH VẼ
Hình 2.1: Cấu trúc bản tin SNMP ........................................................................ 11
Hình 3.1 : Mô hình hạ tầng CNTT Công ty cổ phần Thương mại và dịch vụ
Lotteshop Việt Nam ............................................................................................. 13
Hình 3.2 : Zabbix Monitor ................................................................................... 16
Hình 3.3 : Kiến trúc Zabbix ................................................................................. 17
Hình 3.4 : Các thành phần Zabbix ....................................................................... 18
Hình 3.5: Zabbix check ........................................................................................ 21
Hình 3.6 : Mô hình triển khai Zabbix trên 1 node ............................................... 23
Hình 3.7 : Mô hình triển khai Zabbix có tính sẵn sàng cao ................................. 24
Hình 3.8 : Mô hình Zabbix phân tán .................................................................... 25
Hình 3.9 : Cài đặt Zabbix server .......................................................................... 27
Hình 3.10 : Cài đặt Databases cho Zabbix........................................................... 28
Hình 3.11 : Cấp quyền user Zabbix trên Database .............................................. 28
Hình 3.12: Cấu hình Zabbix server, php .............................................................. 29
Hình 3.13 : Restart services Zabbix server .......................................................... 29
Hình 3.14 : Cấu hình Zabbix server ..................................................................... 30
Hình 3.15: Giao diện đăng nhập Zabbix .............................................................. 30
Hình 3.16: Giao diện Dashboard ......................................................................... 31
Hình 3.17: Giao diện Graphs ............................................................................... 31
Hình 3.18: Install Zabbix-agent ........................................................................... 32
Hình 3.19: Cấu hình Zabbix agent ....................................................................... 32
Hình 3.20: Start Zabbix-agent ............................................................................. 32
Hình 3.21: Create hosts ........................................................................................ 33
Hình 3.22: Add hosts ........................................................................................... 33
Hình 3.23: Screen trong Zabbix ........................................................................... 34
Hình 3.24: Template trong Zabbix ...................................................................... 36
Hình 3.25: Multiple templates ............................................................................. 36
Hình 3.26: Items trong Zabbix ............................................................................. 37
Hình 3.27: Import template .................................................................................. 38
Hình 3.28: Add template cho hosts ...................................................................... 38
Hình 3.29: Cấu hình send items ........................................................................... 39
Hình 3.30: New template ..................................................................................... 39
Hình 3.31: Triggers trong Zabbix ........................................................................ 40
Hình 3.32: Biểu đổ trong Zabbix ......................................................................... 40
Hình 3.33: Auto discovery ................................................................................... 41
Hình 3.34: Tạo bot Telegram ............................................................................... 43
Hình 3.35: API, token mà Telegram cung cấp ..................................................... 44
Hình 3.36: Test API của telegram ........................................................................ 44
Hình 3.37 : Cấu hình gửi cảnh báo qua Telegram trên agent .............................. 45
Hình 3.38: Cấu hình media type trên Zabbix server ............................................ 45
Hình 3.39 : Tạo Media Telegram ......................................................................... 46
Hình 3.40: Cấu hình action trong Zabbix server .................................................. 46
Hình 3.41: Telegram gửi tin nhắn cảnh báo......................................................... 47
Hình 3.42: Giám sát hiệu nang CPU .................................................................... 48
Hình 3.43: Giám sát dung lượng HDD ................................................................ 48
Hình 3.44: Giám sát sử dụng RAM ..................................................................... 48
Hình 3.45: Giám sát băng thông .......................................................................... 49
Hình 3.46: Cảnh báo qua Telegram ..................................................................... 49
DANH MỤC BẢNG BIỂU
Bảng 2.1 Các phương thức của SNMP .................................................................. 8
Bảng 3.1: So sánh Zabbix, Nagios, Cacti ............................................................ 16
Bảng 3.2: Phân quyền User trong Zabbix ............................................................ 19
Bảng 3.3: Cấu hình tối thiểu cài đặt Zabbix ........................................................ 26
Bảng 3.4 : Cấu hình database............................................................................... 26
Bảng 3.5: Yêu cầu software chạy trên Zabbix frontend ...................................... 27
Bảng 3.6: Các mức độ cảnh báo trong Zabbix .................................................... 42
CHƯƠNG 1. MỞ ĐẦU
1.1 Lý do chọn đề tài
Hiện nay, Internet đã trở thành một phần không thể thiếu trong đời sống của
con người. Internet giúp quá trình trao đổi thông tin, truyền thông nhanh chóng.
Trong thời đại 4.0 rất nhiều nước đã coi sự phát triển công nghệ thông tin và
truyền thông là hướng ưu tiên trong chiến lược phát triển kinh tế xã hội. Thế giới
dưới những tác động của công nghệ thông tin và truyền thông, đang đi vào nền
kinh tế tri thức, trong đó công nghệ thông tin có một vai trò quyết định. Các công
ty/tập đoàn công nghệ luôn nằm trong phần lớn top 10 các tập đoàn lớn nhất thế
giới.
Hiện nay trong hạ tầng công nghệ thông tin của bất kỳ doanh nghiệp, tổ
chức nào hầu hết đều có những thiết bị mạng, máy chủ dịch vụ phục vụ cho các
công việc nội bộ cũng hoạt động kinh doanh mang lại lợi ích kinh tế cao. Câu hỏi
đặt ra cho người quản trị hệ thống IT của doanh nghiệp là: Làm thế nào có được
bức tranh toàn cảnh của toàn bộ hệ thống đang hoạt động như nào. Làm thế nào
có thể giám sát tài nguyên của tất cả máy chủ hàng ngày, hàng giờ để kịp thời
phát hiện các máy chủ sắp bị quá tải? Giám sát tài nguyên máy chủ (Tỷ lệ sử
dụng bộ nhớ RAM. Theo dõi tỷ lệ chiếm dụng CPU, dung lượng còn lại của ổ
cứng,...) Chúng ta không thể kết nối vào từng thiết bị mạng, từng máy chủ để mà
theo dõi hiệu năng của chúng, cũng như xem các ứng dụng có đang chạy hay
không? Rồi làm thế nào để biết ai đó đã cố kết nối (login) vào thiết bị nhưng
nhập sai username và password, thiết bị vừa mới bị khởi động lại (restart)…
Chính vì vậy việc đảm bảo hạ tầng công nghệ thông tin hoạt động ổn định
là vô cùng quan trọng trong doanh nghiệp. Phần mềm giám sát chính là công cụ
giúp chúng ta có thể thực hiện việc này một cách tối ưu nhất.
Phần mềm giám sát giúp cho việc quản lý theo dõi, giám sát tập trung hệ
thống mạng, dịch vụ, thực hiện các tác vụ quản lý vận hành mạng. Ghi thông tin
và hiển thị chi tiết theo giờ, ngày, tuần, tháng, năm việc sử dụng các thông số
chính của từng thiết bị: lưu lượng qua các giao tiếp mạng, sử dụng CPU, HDD,
RAM…
Ghi thông tin và hiển thị chi tiết theo giờ, ngày, tuần, tháng, năm các dịch
vụ mạng, các máy chủ…
• Giám sát các hoạt động của người sử dụng, các tấn công và các hoạt động
không bình thường, có thể gây hại cho hệ thống
1
• Quản lý và giám sát chi tiết về bảo mật, lưu lượng, sử dụng băng thông sử
dụng
• Giám sát và thống kê các lưu lượng, các giao thức, các dịch vụ được sử
dụng trong hệ thống, sử dụng hết bao nhiêu.
Đối với hạ tầng hệ thống Công nghệ thông tin hiện nay, đặc biệt là các hệ
thống cung cấp dịch vụ cho khách hàng, thì độ an toàn, ổn định, tính sẵn sàng
cao luôn là ưu tiên hàng đầu. Việc theo dõi, giám sát, đưa ra các cảnh bảo của
các hạ tầng công nghệ thông tin là điều không thể thiếu. Do nguồn nhân lực về
con người là có hạn nên không thể giám sát thủ công liên tục hàng ngày hàng
giờ, nên việc phải có một hệ thống giám sát là điều không thể thiếu.
Hiện nay có rất nhiều công cụ giám sát hỗ trợ cho công việc của người quản
trị. Có những công cụ thương mại trả phí như Polestar, SolarWinds… có rất
nhiều chức năng giám sát, phục vụ hầu hết các yêu cầu giám sát của doanh
nghiệp. Tuy nhiên giá thành thường khá cao, thích hợp với các hệ thống của các
công ty lớn. Trong khi đó có những công cụ giám sát mã nguồn mở cho phép
giám sát rất hiệu quả như Zabbix, Nagios, Cacti…Các công cụ này có thể tùy
biến linh hoạt để đáp ứng nhu cầu giám sát hệ thống một cách hiệu quả nhất.
Nên việc chọn đề tài “Nghiên cứu, xây dựng hệ thống giám sát hạ tầng
CNTT với giải pháp mã nguồn mở” cũng mang ý nghĩa cấp thiết cho việc đảm
bảo hạ tầng CNTT hoạt động ổn định và giảm thiểu các rủi ro về an toàn thông
tin trong doanh nghiệp.
1.2 Mục tiêu của đề tài, quy mô của đề tài
Mục tiêu nghiên cứu của đề tài bao gồm :
• Tìm hiểu hệ thống giám sát mạng
• Tìm hiểu phần mềm mã nguồn mở Zabbix
• Ứng dụng triển khai thử nghiệm giám sát cho hệ thồng của Công ty cổ
phần Thương mại và Dịch vụ Lotteshop Việt Nam
• Nghiên cứu triển khai hệ thống cảnh báo qua Telegram Messager
Đối tượng nghiên cứu:
• Phần mềm giám sát Zabbix và ứng dụng
Phạm vi nghiên cứu:
• Tìm hiểu chung về các phần mềm giám sát Zabbix, và các phần mềm trả
phí như : SolarWinds, Datadog, Atera…
• Nghiên cứu triển khai mô hình Zabbix và ứng dụng cho mô hình của Công
ty cổ phần Thương mại và Dịch vụ Lotteshop Việt Nam.
2
Phương pháp nghiên cứu:
• Phương pháp nghiên cứu lý thuyết kết hợp với cài đặt thử nghiệm trong
môi trường thực tế hạ tâng của công ty.
• Phương pháp theo dõi, đánh giá
3
CHƯƠNG 2. TỔNG QUAN VỀ HỆ THỐNG GIÁM SÁT
2.1 Khái niệm hệ thống giám sát
Hệ thống giám sát mạng là một phần của hệ thống mạng thông qua nó cho
phép giám sát, thu thập thông tin trên các thành phần của hệ thống, phân tích các
thông tin, dấu hiệu nhằm đánh giá và đưa ra các cảnh báo cho người quản trị hệ
thống. Đối tượng của hệ thống giám sát gồm: các máy trạm; cơ sở dữ liệu, các
ứng dụng, các server, các thiết bị mạng,...
Các bước thực hiện của một hệ thống giám sát mạng bao gồm:
- Thu thập dữ liệu :
Việc thu thập dữ liệu là việc lấy các thông tin liên quan đến tình trạng hoạt
động của các thiết bị trong hệ thống mạng. Với mỗi thiết bị có những đặc điểm
riêng và có các loại log khác nhau. Log là một thành phần quan trọng của hệ
thống mạng nó lưu lại một cách chính xác mọi hoạt động của hệ thống, tình trạng
hoạt động của các ứng dụng, các thiết bị đã và đang hoạt động trong hệ thống.
Để có thể thu thập được dữ liệu trong hệ thống, ta có thể sử dụng 2
phương pháp :
* The Push Method : Các sự kiện từ các thiết bị, server sẽ được tự động
chuyển về các server giám sát theo thời gian thực hoặc sau mỗi khoảng thời gian
phụ thuộc vào việc cấu hình trên các thiết bị tương ứng. Các server giám sát sẽ
thực hiện việc nghe và nhận các sự kiện khi chúng xảy ra. Ví dụ như: Syslog-ng
* The Pull Method: Các server giám sát tự thu thập từ các sự kiện được
phát sinh và lưu trữ trên chính các thiết bị, server cần giám sát qua các agent
được cài đặt trên thiết bị, server hoặc qua giao thức giám sát mạng. Giao thức
phổ biến để thu thập được các sự kiện là SNMP (Simple Network Management
Protocol – Giao thức hỗ trợ quản lý các thiết bị từ xa)
- Phân tích dữ liệu :
Khi đã thu thập được những thông tin về hệ thống và các thiết bị thì công
việc tiếp theo là phân tích thông tin, cụ thể là việc thực hiện chỉ mục hóa dữ liệu
và phát hiện những điều bất thường, những mối đe dọa của hệ thống. Dựa trên
những thông tin về thông tin log của hệ thống, lưu lượng truy cập, trạng thái truy
cập, định dạng request.
- Cảnh bảo :
Sau khi đã thực hiện việc phân tích dữ liệu từ các thông tin thu thập được việc
tiếp theo là thực hiện việc đánh giá các dữ liệu đó, dựa vào các ngưỡng người
4
quản trị tự cấu hình để đưa ra được các quyết định các sự kiện đó có ảnh hưởng
như nào đến hệ thống. Khi dữ liệu thu thập và phân tích được chạm đến các
ngưỡng, hệ thống sẽ tự động gửi email, sms cho người quản trị để khắc phục các
sự cố có thể xảy ra.
2.2 Vai trò của hệ thống giám sát mạng
Hệ thống giám sát mạng đóng vai trò quan trọng, không thể thiếu trong hạ
tầng công nghệ thông tin của các đơn vị, tổ chức. Hệ thống này cho phép thu
thập, chuẩn hóa, lưu trữ và phân tích toàn bộ các sự kiện an toàn mạng được sinh
ra trong hệ thống. Ngoài ra, hệ thống giám sát an toàn mạng phát hiện kịp thời
các các điểm yếu, của các thiết bị, ứng dụng và dịch vụ trong hệ thống, phát hiện
kịp thời sự bùng nổ virus trong hệ thống mạng. Các sự kiện của toàn bộ hệ thống
được theo dõi chặt chẽ giúp sớm phát hiện nhưng lỗi phát sinh giảm thiểu rủi ro
đảm bảo hệ thống hoạt động an toàn ổn định.
Hệ thống giám sát mạng sẽ giúp định hướng trong môi trường mạng phức
tạp, đưa ra các báo cáo và các nhận định để đảm bảo công tác giám sát mạng an
toàn hiệu quả. Thông qua hệ thống giám sát mạng giúp cho người quản trị hệ
thống có thể:
- Có cái nhìn toàn cảnh các sự kiện đang diễn ra trên hệ thống.
- Tiết kiệm chi phí tiềm lực bằng cách tìm nguồn dữ liệu dư thừa.
- Xác định điểm yếu của hệ thống và nút thắt cổ chai.
- Nhanh chóng xác định được sự kiện lỗi phát sinh, từ đó nhanh chóng có
giải pháp hạn chế ngăn chặn các lỗi lớn xảy ra.
- Trợ giúp xác định năng xuất của nhân viên nhờ việc không phải monitor
thủ công hệ thống liên tục
2.3 Giao thức giám sát mạng SNMP
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à “hỗ trợ SNMP” (SNMP supported) hoặc “tương
thích SNMP” (SNMP compatible). Kiến trúc của SNMP bao gồm 2 thành phần:
các trạm quản lý mạng và các thành phần mạng. Thành phần mạng là các thiết bị,
máy tính, hoặc phần mềm tương thích SNMP và được quản lý bởi Trạm Quản lý.
Ngoài ra còn có khái niệm SNMP agent. SNMP agent là một tiến trình
(process) chạy trên thành phần mạng, có nhiệm vụ cung cấp thông tin của thành
phần cho trạm, nhờ đó trạm có thể quản lý được thành phần trong mạng.
5
2.3.1 Các phiên bản của SNMP [1]
SNMP có 4 phiên bản: SNMPv1, SNMPv2c, SNMPv2u và SNMPv3. Các
phiên bản này khác nhau một chút ở định dạng bản tin và phương thức hoạt
động. Hiện tại SNMPv1 là phổ biến nhất do có nhiều thiết bị tương thích nhất và
có nhiều phần mềm hỗ trợ nhất. Trong khi đó chỉ có một số thiết bị và phần mềm
hỗ trợ SNMPv3.
SNMP version 1: chuẩn của giao thức SNMP được định nghĩa trong RFC
1157 và là một chuẩn đầy đủ của IETF. Vấn đề bảo mật của SNMPv1 dựa trên
nguyên tắc cộng đồng, không có nhiều password, chuỗi văn bản thuần và cho
phép bất kỳ một ứng dụng nào đó dựa trên SNMP có thể hiểu các chuỗi này để
có thể truy cập vào các thiết bị quản lý. Có 3 tiêu chuẩn trong: read-only, read-
write và trap.
SNMP version 2: phiên bản này dựa trên các chuỗi “community”. Do đó
phiên bản này được gọi là SNMPv2c, được định nghĩa trong RFC 1905, 1906,
1907 và đây chỉ là bản thử nghiệm của IETF. Mặc dù chỉ là thử nghiệm nhưng
nhiều nhà sản xuất đã đưa nó vào thực nghiệm.
SNMP version 3: là phiên bản tiếp theo được IETF đưa ra bản đầy đủ
(phiên bản gần đây của SNMP), đóng vai trò an ninh cao trong quản trị mạng và
đóng vai trò mạnh trong vấn đề thẩm quyền, quản lý kênh truyền riêng giữa các
thực thể. Nó được khuyến nghị làm bản chuẩn, được định nghĩa trong RFC 1905,
RFC 1906, RFC 1907, RFC 2271 RFC 2571, RFC 2572, RFC 2573, RFC 2574
và RFC 2575. Nó hỗ trợ các loại truyền thông riêng tư và có xác nhận giữa các
thực thể.
2.3.2 Các thành phần trong kiến trúc SNMP [1]
Kiến trúc của SNMP bao gồm 2 thành phần: các trạm quản lý mạng và các
phần tử mạng
Trạm quản lý mạng thường là một máy tính chạy phần mềm quản lý
SNMP, dùng để giám sát và điều khiển tập trung các phần tử mạng.
Phần tử mạng là các thiết bị, máy tính, hoặc phần mềm tương thích SNMP
và được quản lý bởi trạm quản lý mạng. Như vậy phẩn tử bao gồm thiết bị, máy
trạm và ứng dụng.
Một trạm quản lý có thể quản lý nhiều phần tử, một phần tử cũng có thể
được quản lý bởi nhiều trạm. Ngoài ra còn có khái niệm SNMP agent. SNMP
agent là một tiến trình chạy trên phần từ mạng, có nhiệm vụ cung cấp thông tin
của phần tử cho trạm, nhờ đó trạm có thể quản lý được phần tử. Chính xác hơn là
6
ứng dụng chạy trên trạm và agent chạy trên phần tử mới là 2 tiến trình SNMP
trực tiếp liên hệ với nhau. Các ví dụ minh họa sau đây sẽ làm rõ hơn các khái
niệm này:
Để dùng một máy chủ quản lý các máy con chạy HĐH Windows thông qua
SNMP thì phải: cài đặt một phần mềm quản lý SNMP trên máy chủ, bật dịch vụ
SNMP trên máy con.
Để dùng một máy chủ giám sát lưu lượng của một router thì phải: cài phần
mềm quản lý SNMP trên máy chủ, bật tính năng SNMP trên router.
Một thiết bị hỗ trợ SNMP có thể cung cấp nhiều thông tin khác nhau, mỗi
thông tin đó gọi là một object. Ví dụ:
Máy tính có thể cung cấp các thông tin: tổng số ổ cứng, tổng số port nối
mạng, tổng số byte đã truyền/nhận, tên máy tính, tên các tiến trình đang chạy, ….
Router có thể cung cấp các thông tin: tổng số card, tổng số port, tổng số
byte đã truyền/nhận, tên router, tình trạng các port của router, ….Mỗi object có
một tên gọi và một mã số để nhận dạng object đó, mã số gọi là Object ID (OID).
Từng chữ số trong OID sẽ được giải thích trong phần sau. Một object chỉ có
một OID, chẳng hạn tên của thiết bị là một object. Tuy nhiên nếu một thiết bị lại
có nhiều tên thì làm thế nào để phân biệt? Lúc này người ta dùng thêm 1 chỉ số
gọi là “scalar instance index” (cũng có thể gọi là “sub-id”) đặt ngay sau OID.
OID của các object phổ biến có thể được chuẩn hóa, OID của các object do bạn
tạo ra thì bạn phải tự mô tả chúng. Để lấy một thông tin có OID đã chuẩn hóa thì
SNMP application phải gửi một bản tin SNMP có chứa OID của object đó cho
SNMP agent, SNMP agent khi nhận được thì nó phải trả lời bằng thông tin ứng
với OID đó.
Một trong các ưu điểm của SNMP là nó được thiết kế để chạy độc lập với
các thiết bị khác nhau. Chính nhờ việc chuẩn hóa OID mà ta có thể dùng một
SNMP application để lấy thông tin các loại device của các hãng khác nhau.
MIB (Management Information Base) là một cấu trúc dữ liệu gồm các đối
tượng được quản lý (managed object), được dùng cho việc quản lý các thiết bị
chạy trên nền TCP/IP. MIB là kiến trúc chung mà các giao thức quản lý trên
TCP/IP nên tuân theo, trong đó có SNMP. MIB được thể hiện thành 1 file (MIB
file), và có thể biểu diễn thành 1 cây (MIB tree). MIB có thể được chuẩn hóa
hoặc tự tạo.
Các OID của các hãng tự thiết kế nằm dưới iso.org.dod.internet.private.
enterprise. Các objectID trong MIB được sắp xếp thứ tự nhưng không phải là liên
7
tục, khi biết một OID thì không chắc chắn có thể xác định được OID tiếp theo
trong MIB. Một manager có thể quản lý được một device chỉ khi ứng dụng
SNMP manager và ứng dụng SNMP agent cùng hỗ trợ một MIB. Các ứng dụng
này cũng có thể hỗ trợ cùng lúc nhiều MIB.
2.3.3 Các phương thức của SNMP [1]
Giao thức SNMPv1 có 5 phương thức hoạt động, tương ứng với 5 loại bản
tin như sau: GetRequest, GetNextRequest, SetRequest, GetResponse và Trap.
Bảng 2.1 Các phương thức của SNMP
Bản tin/phương thức Mô tả tác dụng
Manager gửi GetRequest cho agent để yêu cầu agent
GetRequest
cung cấp thông tin
Manager gửi GetNextRequest có chứa một ObjectID
GetNextRequest cho agent để yêu cầu cung cấp thông tin nằm kế tiếp
ObjectID đó trong MIB.
Manager gửi SetRequest cho agent để đặt giá trị cho
SetRequest
đối tượng của agent dựa vào ObjectID.
Agent gửi GetResponse cho Manager để trả lời khi
GetResponse
nhận được
Agent tự động gửi Trap cho Manager khi có một sự
Trap
kiện xảy ra đối với một
Mỗi bản tin đều có chứa OID để cho biết object mang trong nó là gì. OID
trong GetRequest cho biết nó muốn lấy thông tin của object nào. OID trong
GetResponse cho biết nó mang giá trị của object nào. OID trong SetRequest chỉ
ra nó muốn thiết lập giá trị cho object nào. OID trong Trap chỉ ra nó thông báo sự
kiện xảy ra đối với object nào.
Bản tin GetRequest được manager gửi đến agent để lấy một thông tin nào
đó. Trong GetRequest có chứa OID của object muốn lấy. VD: Muốn lấy thông
tin tên của Device1 thì manager gửi bản tin GetRequest OID = 1.3.6.1.2.1.1.5
đến Device1, tiến trình SNMP agent trên Device1 sẽ nhận được bản tin và tạo
bản tin trả lời.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ả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
8
trong bản tin. Một MIB bao gồm nhiều OID được sắp xếp thứ tự nhưng không
liên tục, nếu biết một OID thì không xác định được OID kế tiếp. Do đó ta cần
GetNextRequest để lấy về giá trị của OID kế tiếp. Nếu thực hiện GetNextRequest
liên tục thì ta sẽ lấy được toàn bộ thông tin của agent.
Bản tin SetRequest được manager gửi cho agent để thiết lập giá trị cho
một object nào đó. Ví dụ:
• 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ị
Mỗi khi SNMP agent nhận được các bản tin GetRequest, GetNextRequest
hay SetRequest thì nó sẽ gửi lại bản tin GetResponse để trả lời. Trong bản tin
GetResponse có chứa OID của object được request và giá trị của object đó.
Bản tin Trap được agent tự động gửi cho manager mỗi khi có sự kiện xảy
ra bên trong agent, các sự kiện này không phải là các hoạt động thường xuyên
của agent mà là các sự kiện mang tính biến cố. Ví dụ: Khi có một port down, khi
có một người dùng login không thành công, hoặc khi thiết bị khởi động lại, agent
sẽ gửi trap cho manager.
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). Loại trap
là một số nguyên chứa trong bản tin trap, dựa vào đó mà phía nhận trap biết bản
tin trap có nghĩa gì
9
2.3.4 Các cơ chế bảo mật cho SNMP
Một Trạm Quản lý SNMP có thể quản lý/giám sát nhiều thành phần SNMP,
thông qua hoạt động gửi request và nhận trap. Tuy nhiên một thành phần SNMP
có thể được cấu hình để chỉ cho phép các Trạm Quản lý SNMP nào đó được
phép quản lý/giám sát mình. Các cơ chế bảo mật này gồm có: community string,
view và SNMP access control list.
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 và Trap-Community.
Khi manager gửi GetRequest, GetNextRequest đến agent thì trong bản tin
gửi đi có chứa Read- Community. Khi agent nhận được bản tin request thì nó sẽ
so sánh Read-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. 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ị.
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
10
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” thì 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.
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
2.3.5 Cấu trúc bản tin SNMP
SNMP chạy trên nền UDP. Cấu trúc của một bản tin SNMP bao gồm:
version, community và data. Phần Data trong bản tin SNMP gọi là PDU
(Protocol Data Unit).
Hình 2.1: Cấu trúc bản tin SNMP [1]
11
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.
12