Danh mục sản phẩm
Bài 69: SNMP — Giám Sát Thiết Bị Mạng Từ Xa
💡 Liên hệ thực tế
Một bệnh viện lớn không thể để bác sĩ trực tiếp chạy đến từng phòng bệnh mỗi 5 phút để hỏi thăm tình trạng bệnh nhân. Thay vào đó, mỗi giường bệnh có máy đo chỉ số sinh tồn (nhịp tim, huyết áp, SpO2) tự động gửi dữ liệu về trạm điều dưỡng trung tâm — nếu chỉ số bất thường, máy sẽ báo động ngay lập tức thay vì chờ đến vòng kiểm tra định kỳ tiếp theo.
🩺 SNMP hoạt động đúng theo mô hình này trong mạng máy tính: thay vì Admin phải SSH vào từng Router/Switch để gõ show từng cái một, SNMP Manager (trạm điều dưỡng trung tâm) sẽ tự động "hỏi thăm" hàng loạt thiết bị (SNMP Agent), và các thiết bị cũng có thể tự gửi cảnh báo khẩn (Trap) ngay khi có sự cố — ví dụ Interface bị down, CPU quá tải.
📘 Kiến thức cốt lõi
4 thành phần cốt lõi trong kiến trúc SNMP:
| Thành phần | Vai trò |
|---|---|
| SNMP Manager | Phần mềm giám sát trung tâm (NMS — Network Management System), nơi Admin xem dashboard tổng quan toàn mạng |
| SNMP Agent | Chạy trên từng Router/Switch, thu thập số liệu cục bộ và trả lời khi Manager hỏi |
| MIB (Management Information Base) | "Cuốn từ điển" định nghĩa toàn bộ các thông số mà 1 thiết bị có thể báo cáo (CPU, nhiệt độ, trạng thái Interface...) |
| OID (Object Identifier) | Địa chỉ số định danh duy nhất cho từng thông số cụ thể trong MIB, dạng chuỗi số phân cấp như 1.3.6.1.2.1.1.5.0 (chính là sysName — tên thiết bị) |
🎯 Có thể hình dung MIB giống như mục lục cuốn sách, còn OID là số trang cụ thể dẫn thẳng đến đúng thông tin cần tìm — ví dụ nhánh
1.3.6.1.2.1làmib-2, chuẩn chung mọi hãng đều hỗ trợ, còn nhánh1.3.6.1.4.1.9là vùng riêng của Cisco (enterprise number 9) chứa các chỉ số đặc thù như CPU, bộ nhớ, nhiệt độ.
2 cơ chế giao tiếp — chủ động hỏi và bị động chờ báo:
| Cơ chế | Ai khởi tạo | Khi nào dùng |
|---|---|---|
| Polling (GET) | Manager chủ động hỏi Agent theo chu kỳ | Thu thập số liệu định kỳ để vẽ biểu đồ (băng thông, CPU theo thời gian) |
| Trap | Agent tự động gửi khi có sự kiện bất thường | Cảnh báo tức thời — Interface down, thiết bị khởi động lại... |
💡 Điểm khác biệt quan trọng: Trap không được xác nhận (gửi xong không cần biết Manager có nhận được không, dùng UDP nên có thể thất lạc), trong khi Inform là phiên bản cải tiến của Trap ở SNMPv2c/v3 — có cơ chế xác nhận (acknowledgement), nếu Manager không phản hồi thì Agent sẽ gửi lại.
3 phiên bản SNMP — khác biệt cốt lõi nằm ở bảo mật:
| Phiên bản | Cơ chế xác thực | Mã hóa dữ liệu | Đánh giá |
|---|---|---|---|
| SNMPv1 | Community string (chuỗi văn bản thuần, gửi rõ trên đường truyền) | Không | Lỗi thời, không nên dùng |
| SNMPv2c | Community string (vẫn dạng văn bản thuần) | Không | Phổ biến trong lab/hệ thống cũ, nhưng vẫn thiếu bảo mật thực sự |
| SNMPv3 | Username + xác thực bằng MD5/SHA | Có (DES/AES) | Chuẩn bảo mật, nên dùng cho mọi hệ thống production |
⚠️ "Community string" trong SNMPv1/v2c về bản chất chỉ là 1 "mật khẩu" gửi dưới dạng văn bản thuần (plain text) — ai bắt được gói tin trên đường truyền đều đọc được, hoàn toàn không có mã hóa. Đây là lý do SNMPv3 ra đời với 3 mức bảo mật tăng dần: noAuthNoPriv (chỉ cần username, không xác thực), authNoPriv (xác thực bằng MD5/SHA nhưng không mã hóa nội dung), và authPriv (xác thực + mã hóa đầy đủ bằng DES/AES) — mức khuyến nghị cho hệ thống thật.
Cấu hình SNMPv2c cơ bản trên Cisco IOS:
Router(config)# access-list 10 permit host 10.10.10.50 Router(config)# snmp-server community VNEXPERTS-RO RO 10 Router(config)# snmp-server location Hanoi-HQ-Rack1 Router(config)# snmp-server contact admin@vnexperts.vn Router(config)# snmp-server host 10.10.10.50 version 2c VNEXPERTS-RO
📎 Giải thích từng dòng lệnh:
access-list 10 permit host 10.10.10.50— tạo Standard ACL số10, chỉ cho phép đúng địa chỉ10.10.10.50(SNMP Manager) được dùng community string này. Do ACL Standard mặc định códeny anyẩn ở cuối, mọi địa chỉ khác tự động bị từ chối dù có biết đúng community string.snmp-server community VNEXPERTS-RO RO 10— tạo community stringVNEXPERTS-RO, quyềnRO, và gắn thêm ACL số 10 vào cuối dòng lệnh. Đây chính là bước "khóa" community string chỉ dùng được từ đúng NMS đã khai báo — nếu không gắn ACL, bất kỳ ai biết được community string đều có thể pull dữ liệu SNMP từ thiết bị. Community string cũng nên đặt tên khó đoán, tuyệt đối không dùng mặc định nhưpublic/privatevì đây là 2 giá trị kẻ tấn công luôn thử đầu tiên.snmp-server location Hanoi-HQ-Rack1vàsnmp-server contact admin@vnexperts.vn— chỉ là thông tin mô tả (vị trí lắp đặt, người phụ trách), hiển thị trên NMS để Admin dễ nhận diện thiết bị, không ảnh hưởng đến hoạt động SNMP.snmp-server host 10.10.10.50 version 2c VNEXPERTS-RO— khai báo địa chỉ IP của SNMP Manager (10.10.10.50) sẽ nhận Trap từ Router, sử dụng SNMPv2c với đúng community string đã tạo ở trên.⚠️ Lưu ý quan trọng: gắn ACL vào
snmp-server communitychỉ giới hạn được ai được phép hỏi (Polling), không ảnh hưởng đến việc Router gửi Trap đi đâu (dòngsnmp-server hostlà lệnh riêng, độc lập với ACL này) — cần đảm bảo cả 2 luôn khớp đúng cùng 1 địa chỉ NMS để tránh cấu hình rời rạc, dễ gây nhầm lẫn khi audit bảo mật sau này.
RO(Read-Only) chỉ cho phép Manager đọc số liệu, không thể thay đổi cấu hình thiết bị — đây là lựa chọn an toàn mặc định nên dùng.RW(Read-Write) cho phép Manager chỉnh sửa cấu hình từ xa qua SNMP, rất hiếm khi cần thiết và tiềm ẩn rủi ro bảo mật lớn nếu community string bị lộ.
Cấu hình SNMPv3 với mức bảo mật cao nhất (authPriv):
Router(config)# snmp-server group VNE-ADMIN v3 priv Router(config)# snmp-server user tienanh VNE-ADMIN v3 auth sha AuthPass2026 priv aes 128 PrivPass2026 Router(config)# snmp-server host 10.10.10.50 version 3 priv tienanh
📎 Giải thích từng dòng lệnh:
snmp-server group VNE-ADMIN v3 priv— tạo 1 Group tênVNE-ADMIN, áp dụng cho SNMP phiên bảnv3, với mức bảo mậtpriv(authPriv — yêu cầu cả xác thực lẫn mã hóa). Group giống như 1 "khuôn mẫu quyền hạn" dùng chung cho nhiều User, chưa gắn với người dùng cụ thể nào.snmp-server user tienanh VNE-ADMIN v3 auth sha AuthPass2026 priv aes 128 PrivPass2026— tạo User têntienanh, gán vào GroupVNE-ADMINvừa tạo, dùng SNMPv3 vớiauth sha AuthPass2026(xác thực bằng thuật toán SHA, mật khẩu xác thựcAuthPass2026) vàpriv aes 128 PrivPass2026(mã hóa dữ liệu bằng AES 128-bit, mật khẩu mã hóaPrivPass2026). Hai mật khẩu này nên khác nhau để tăng độ an toàn.snmp-server host 10.10.10.50 version 3 priv tienanh— khai báo Manager tại10.10.10.50sẽ nhận Trap qua SNMPv3 ở mứcpriv, xác thực bằng Usertienanhđã tạo ở trên.
🎯 Cấu trúc SNMPv3 luôn đi theo 2 bước: tạo Group (định nghĩa mức bảo mật
auth/noauth/priv) trước, sau đó gán User vào Group đó — khác hẳn SNMPv1/v2c chỉ cần 1 dòng lệnh community string duy nhất.
💬 Hỏi & Đáp nhanh
❓ SNMPv2c có an toàn để dùng trong mạng công ty thật không?
❌ Không nên — mặc dù SNMPv2c phổ biến và dễ cấu hình (chỉ 1 dòng lệnh community string), nhưng community string được gửi dưới dạng văn bản thuần, ai bắt gói tin trên đường truyền cũng đọc được. Nếu kẻ tấn công có được community string dạng RW, họ có thể thay đổi toàn bộ cấu hình thiết bị từ xa. Với hệ thống production, nên dùng SNMPv3 ở mức authPriv để có cả xác thực lẫn mã hóa.
❓ Trap và Inform khác nhau ở điểm nào, tại sao không dùng Trap cho mọi trường hợp?
✅ Trap gửi đi và không chờ xác nhận — nếu gói tin bị mất trên đường truyền (do UDP không đảm bảo), Manager sẽ không bao giờ biết sự cố đó từng xảy ra. Inform thì có cơ chế xác nhận — nếu Manager không phản hồi trong thời gian quy định, Agent sẽ gửi lại, đảm bảo cảnh báo quan trọng không bị thất lạc. Đánh đổi là Inform tốn thêm tài nguyên xử lý (bộ nhớ lưu lại để chờ xác nhận) so với Trap.
❓ MIB và OID, cái nào là "tên gọi" và cái nào là "địa chỉ"?
✅ MIB là tập hợp định nghĩa — giống như 1 cuốn từ điển liệt kê tất cả các thông số 1 thiết bị có thể báo cáo, còn OID là địa chỉ số cụ thể trỏ đến đúng 1 thông số trong MIB đó, ví dụ 1.3.6.1.2.1.1.5.0 chính là OID của sysName (tên thiết bị). Có thể hiểu MIB là "cuốn sách", OID là "số trang" — cần cả hai để tra đúng thông tin cần tìm.
📝 Bài tập đánh giá
Câu 1: Vì sao SNMPv3 được xem là an toàn hơn SNMPv1/v2c?
- A. Vì SNMPv3 chạy trên TCP thay vì UDP
- B. Vì SNMPv3 dùng username kèm xác thực MD5/SHA và có thể mã hóa dữ liệu bằng DES/AES, thay vì chỉ dùng community string dạng văn bản thuần
- C. Vì SNMPv3 không cần cấu hình Agent
- D. Vì SNMPv3 chỉ hoạt động trong mạng nội bộ
Câu 2: Điểm khác biệt cốt lõi giữa Trap và Polling (GET) là gì?
- A. Trap do Manager khởi tạo định kỳ, Polling do Agent tự động gửi khi có sự cố
- B. Polling do Manager chủ động hỏi định kỳ, Trap do Agent tự động gửi ngay khi có sự cố
- C. Trap và Polling hoạt động giống hệt nhau, chỉ khác tên gọi
- D. Polling chỉ dùng được với SNMPv3
👉 Đáp án:
Câu 1: B — SNMPv3 bổ sung xác thực bằng username + MD5/SHA và mã hóa dữ liệu bằng DES/AES, khắc phục điểm yếu của community string dạng văn bản thuần ở SNMPv1/v2c.
Câu 2: B — Polling là cơ chế Manager chủ động gửi yêu cầu GET theo chu kỳ để thu thập số liệu, còn Trap là cơ chế Agent tự động gửi cảnh báo ngay khi phát hiện sự cố, không cần chờ Manager hỏi.
📚 Bài viết thuộc khóa học CCNA của VNExperts
🧭 Điều hướng
| ⬅️ Bài trước | 🏠 Mục lục khóa học | Bài kế tiếp ➡️ |
|---|---|---|
| Bài 68: QoS — Classification, Marking, Queuing, Policing, Shaping | Mục lục khóa học CCNA | Bài 70: Syslog — facility và severity level |
