SNMP 团体字就是明文口令
SNMP v1/v2c 用“团体字”做认证,它随报文明文传输,而 public、private 这两个默认值几乎是扫描器的必试项。拿到团体字后用 snmpwalk 就能读出接口列表、路由表、进程与设备型号,是内网踩点的第一步。监控需求真实存在时,正确解法是升级到 SNMPv3 并启用认证与加密,同时把查询来源限制到监控服务器地址,而不是简单地把服务关掉或不设口令。
基本信息
| 加固项 | 管理协议收敛 |
|---|---|
| 适用平台 | Linux(net-snmp)、Windows、交换机与路由器等网络设备 |
| 权限要求 | root 或设备管理员 |
| 达标判据 | 不使用 v1/v2c 团体字,改用 v3 的 authPriv |
| 端口 | 161/udp(查询)、162/udp(Trap) |
典型使用场景
- 等保测评中“管理协议安全”条款整改
- 监控系统从 v2c 迁移到 v3 过程中的并行验证
- 网络设备与打印机等品类繁多的资产统一清默认团体字
- 应急排查中确认内网拓扑能否被 snmpwalk 批量枚举
- 新增设备上线时把 SNMP 配置纳入标准模板
核查团体字与版本
核查团体字与版本
grep -RiE 'rocommunity|rwcommunity|com2sec' /etc/snmp/ 2>/dev/null # 找团体字配置
snmpwalk -v2c -c public 127.0.0.1 1.3.6.1.2.1.1.1.0 2>&1 | head -3 # 本机自测:能通说明 v2c 可用
systemctl status snmpd --no-pager 2>/dev/null | head -5
ss -lunp | grep ':161' # 确认 161 的监听地址与进程v3 配置要点(net-snmp)
v3 配置要点(net-snmp)
# 1) 先建 v3 用户(认证 + 加密),口令长度需满足本地口令策略
# net-snmp-create-v3-user -ro -a SHA -A '<认证口令>' -x AES -X '<加密口令>' monitor
# 2) /etc/snmp/snmpd.conf 只保留 v3 授权行,删掉 com2sec 与 rocommunity
# rouser monitor authpriv
# 3) 绑定内网管理地址,避免监听在所有接口
# agentaddress udp:10.0.0.5:161
systemctl restart snmpd && ss -lunp | grep ':161' # 重启后复核监听地址版本安全对比
| 版本 | 认证方式 | 加密 | 结论 |
|---|---|---|---|
| v1 | 团体字(明文) | 无 | 禁用 |
| v2c | 团体字(明文) | 无 | 仅限隔离网临时使用并登记 |
| v3 noAuthNoPriv | 用户名 | 无 | 风险等同 v2c,不推荐 |
| v3 authPriv | 用户名加认证 | 有(AES/DES) | 推荐,配合来源限制 |
迁移顺序很关键:先让监控系统按 v3 并行采集一段时间,确认数据完整后再关闭 v2c,否则会出现采集中断而告警并不明显的空窗。老设备的监控模板若只支持 v2c,需要在监控侧改造完成后再收敛设备配置。
可写团体字(rwcommunity)风险更高:它能修改设备配置,必须彻底清理并单独列出。另外仅靠防火墙限制来源不如在监听地址上加一层,agentaddress 或设备的管理地址配置把 161 限制在管理网段,更贴近数据源也更可靠。