SNMP在网络体系中处于什么位置
SNMP是一种应用层协议,和网页浏览器、邮件客户端一样运行在底层网络协议之上,但它是专门为设备与设备之间的管理通信而设计,而非面向人类用户。它使用UDP而非TCP进行通信,更看重轻量、快速的交互而非可靠送达保证,这正好契合它频繁重复轮询的使用场景。如果某次轮询丢失,管理站在下一个周期再询问一次即可。
SNMP的基本安全防护要点
如果把社区字符串保留为默认的“public”、“private”,同时又把SNMP端口暴露在公网上,任何人都可以查询甚至在最坏情况下修改设备的配置。暴露在外的SNMP服务还曾被用于反射攻击:攻击者发送伪造来源地址的小请求,设备则向受害者回复大得多的响应。至少应该修改默认字符串、通过防火墙规则或访问控制列表把SNMP访问限制在特定的管理IP地址范围内、关闭用不到的写入权限,并在设备支持的前提下尽量使用具备真正身份验证和加密能力的SNMPv3。
一份简单的排障清单
如果设备对轮询没有响应,可以依次检查:设备上是否启用了SNMP服务;社区字符串或SNMPv3用户是否完全一致;防火墙或访问控制列表是否允许监控服务器访问UDP 161;管理站上配置的版本与代理的版本是否一致。常见SNMP软件包里自带的snmpwalk、snmpget等命令,可以直接对单台设备进行测试。超时通常意味着防火墙或凭据有问题,而“no such object”通常说明设备不支持该OID。
常见问题
家庭网络中也会用到SNMP吗?
部分高端路由器和NAS设备也支持SNMP监控功能,但它在需要管理大量设备的企业和数据中心环境中应用要广泛得多。
社区字符串保持默认值会有风险吗?
会。如果把“public”、“private”这类默认值原样保留,同时把SNMP端口暴露在互联网上,任何人都可能查询到设备信息,最坏情况下甚至能修改设备配置,因此务必修改默认值,并把访问权限限制在特定的可信IP地址范围内。
陷阱和轮询有什么区别?
轮询是管理站按计划向设备索取数值,陷阱则是设备在事件发生时主动发出告警。轮询能提供用于绘制图表的连续记录,陷阱能更快地提示突发问题。大多数监控方案会同时使用两者。
应该选用哪个SNMP版本?
在设备支持的前提下,开启认证与加密的SNMPv3是最安全的选择。SNMPv2c因为简单,在封闭的内部网络中很常见,但它的社区字符串是明文传输的,应当只限于可信的管理网络。
SNMP只能用于网络设备吗?
不是。服务器、打印机、UPS电源和环境传感器往往也内置SNMP支持,所以只要各设备提供了相应的MIB,一个监控工具就可以管理多种多样的设备。