我不是 SNMP 协议的专家,也没有在协议 RFC 文档中找到任何有关 SNMP 社区字符串中连字符的容忍度的内容。这似乎是一个双重标准,有些设备(如 Cisco)支持它,而其他设备(如 HP 和 NetApp)则不支持。
有没有关于此现象的文献资料或者双重标准的理由?
答案1
我确信官方没有说明原因,但通过查看不同供应商对该标准的不同实现可能会找到一些线索。更糟糕的是,对于某些供应商来说,它甚至依赖于版本(就像这个 VMWare KB 中说的一样,其中对连字符的支持是在更新/补丁中添加的)。
您始终可以搜索社区字符串中允许或禁止的字符列表,但对于不同的供应商来说也会有所不同(Cisco 使用@
索引SNMP
,尽管他们的一些设备无论如何都会允许它)。
最好的办法就是不要在SNMP
社区字符串中使用特殊字符,因为值无论如何都会被传递plaintext
,因此您不会通过使plaintext
传输的值更难猜测来增加任何明显的安全性措施。它不需要猜测;它可以简单地被读取。
依靠良好的密码保护您的SNMP
社区字符串,而不是复杂的社区字符串。同样的建议适用于更广泛的领域,而不仅仅是SNMP
-用户名不为账户提供安全保障,密码做。