10/26 早間:一次學一個核心概念
1. SNMP 是什麼?
SNMP(Simple Network Management Protocol,簡易網路管理協定)讓管理系統監看交換器、路由器或伺服器的名稱、介面狀態與流量等資訊。
像設備旁的管理櫃檯,你可以詢問資料,但櫃檯會依你的身分與權限決定回答多少。SNMP 列舉就是有系統地整理這些回應,用於授權的設備盤點與資訊揭露檢查,不是看到服務開著就可以任意操作。
2. 四個必要角色
- Manager(管理端):提出查詢的管理工具。
- Agent(代理程式):設備上接收並處理管理要求的程式。
- MIB(管理資訊庫):定義可管理物件的名稱、型別與意義,像欄位說明書;不等於可直接下載的整份設備資料。
- OID(物件識別碼):管理物件在階層樹中的識別。例如 1.3.6.1.2.1.1.5.0 對應 sysName.0,也就是系統名稱這個純量物件的實例。
白話說:管理端拿著 OID 問代理程式,代理程式依權限回傳值,MIB 幫你理解這個值代表什麼。
3. GET、WALK 與 SET 差在哪?
GET:取得指定物件實例的值。
GETNEXT:取得依 OID 排序的下一個可存取實例,不是把最後一個數字加一。
WALK:工具反覆查詢,走訪指定子樹。Net-SNMP 的 snmpwalk 使用 GETNEXT;WALK 不是獨立的協定訊息。
SET:嘗試修改物件的值,需要物件支援且具備相應寫入權限。本課只討論唯讀查詢,不實際修改設備。
因此,「能列出資料」不能直接跳成「能設定設備」。Net-SNMP 查詢教學;RFC 3416
4. 連接埠與安全版本
常見情況是 Agent 在 UDP 161 接收查詢;Trap/Inform 等通知送到接收端的 UDP 162。這是常見配置,不代表 SNMP 只能使用 UDP 或這兩個連接埠。
v1/v2c 使用 community string,傳統協定本身不提供它的加密保護。唯讀或可寫取決於設備設定,不是由字串名稱決定。
v3 也不等於一定加密,要看安全層級:
- noAuthNoPriv:沒有訊息認證,也沒有加密。
- authNoPriv:有認證與完整性保護,沒有加密。
- authPriv:有認證、完整性與加密保護。
訊息有加密,仍不代表這個身分可以讀取所有資料或修改設定,授權範圍要另外確認。RFC 3417;RFC 3411
5. 一個合成例子
假設隔離實驗室裡有一台交換器,管理員只授權你讀取 system 子樹。
你用 GET 查詢 sysName.0,收到 lab-switch-01;再用 WALK 取得允許讀取的系統描述與名稱。
這份證據只能支持:「這個身分,在這個時間與設定下,能讀到這些物件。」
它不能證明你可以使用 SET,更不能證明你能登入設備管理介面。沒有回應時,也不能直接判定服務不存在,可能是防火牆、認證或設定問題。
合成案例;讀取結果不代表寫入或登入權限。
- Manager → Agent|提出查詢
GET sysName.0
- Agent|檢查存取範圍
依身分、設定與 MIB view 處理。
- Agent → Manager|回覆值
lab-switch-01:本次讀取證據。
6. 防護與證據判讀
限制管理來源與網段,採最小權限及受限的 MIB view;不需要的 SNMP 停用,需要時優先採合適演算法與金鑰設定的 v3 authPriv。
報告記錄時間、來源、版本/安全層級、查詢 OID 與必要回應,但不記錄 community 或金鑰。設備回傳的版本字串是調查線索,不足以單獨證明漏洞存在。
小檢核:
你成功讀到交換器名稱,能不能因此判定自己可以修改設定?還要確認哪一類權限?
用一兩句回答就好。
概念 Q&A
待補:收到相關問題後,會整理為匿名教學版。