3

我已经编写了一个扩展 netsnmp 的自定义 SNMPV2C 代理(agentx 协议),截至目前,我允许对 snmpd.conf 中的所有内容进行查看访问,如下所示

view all included .1

它公开了看起来不错的 mgmt (RFC1213),它还公开了 snmpV2 mib (snmpMIB、snmpFrameworkMIB、VacmMIB 等)。

除了打开我们的企业 oid 树之外,我找不到任何最佳实践文档来详细说明应该公开哪些内容、安全风险是什么等。

4

3 回答 3

3

什么是安全风险

使用 SNMP v2c,您没有加密,也没有签名。这意味着中间人攻击可以:

  • 泄露数据,
  • 更改Set请求中的内容,以在目标上触发一些不受欢迎的事情(例如,您可以通过这种方式重新启动某些目标)。

此外,查询可以通过 UDP 完成,因此 IP 源地址无需正确路由回源。因此,IP 欺骗可用于绕过 IP ACL 并将 SNMP Set请求从虚假 IP 源发送到目标。

请注意,使用 SNMP v3可以避免所有这些风险。

因此,要么增加另一个网络层(例如 IPsec)来提高安全性,要么只公开带有公共内容的只读OID 。

例如,性能计数器或基本配置参数(如 IP 地址、主机名、计数器)可能会被暴露。也许您应该进行风险分析,以找出真正可以暴露哪些信息。

起初,SNMP v1 根本不安全。因此,SNMP v2 已被提议用于增加安全性以及其他新功能。但这太复杂了,新的安全特性被删除了,其他特性被保留了,协议最终以 SNMP v2c的名称发布。最后,创建 SNMP v3主要是为了提供安全功能,但比使用 SNMP v2 更容易实现。

于 2017-09-17T10:20:56.237 回答
3

对整个ISO.1_ _ _ _

USM 用户数据库在 MIB 本身 ( usmUserTable) 中公开,因此:

  • 通过对它的只读访问,攻击者可以简单地遍历表并获取所有有效的主体(引擎 ID/用户名组合)值;
  • 通过读写访问,攻击者将能够破坏随机(<strong>)甚至所有用户存储的身份验证和/或隐私密钥,从而导致拒绝服务。(例如,这可以通过snmpusm(1)为旧/新密码短语运行垃圾来完成。)

同样,VACM MIB 包含访问策略信息,例如:

  • 哪个 SNMP 上下文在本地可用(vacmContextTable);
  • 哪个 USM 用户或 SNMPv2c 社区映射到哪个 VACM 组(vacmSecurityToGroupTable);
  • 哪个 VACM 组可以访问 OID 树的哪些部分(vacmAccessTablevacmViewTreeFamilyTable)。

我不认为 N​​et-SNMP 允许对这些 VACM 表进行读写访问(该策略取自/etc/snmp/snmpd.conf代理并且不被代理修改),但即使是只读访问也可能会泄露太多信息。例如,它可以让攻击者找出哪个 USM 用户可以访问攻击者感兴趣的视图,并对那个特定的 USM 用户发起密码破解攻击。

SNMPv3 USM 和 VACM RFC 本身明确警告您这些表的敏感程度:

11.5  Access to the SNMP-USER-BASED-SM-MIB

   The objects in this MIB may be considered sensitive in many
   environments.  Specifically the objects in the usmUserTable contain
   information about users and their authentication and privacy
   protocols.  It is important to closely control (both read and write)
   access to these MIB objects by using appropriately configured Access
   Control models (for example the View-based Access Control Model as
   specified in [RFC3415]).

和:

7.4.  Access to the SNMP-VIEW-BASED-ACM-MIB

   The objects in this MIB control the access to all MIB data that is
   accessible via the SNMP engine and they may be considered sensitive
   in many environments.  It is important to closely control (both read
   and write) access to these to these MIB objects by using
   appropriately configured Access Control models (for example the
   View-based Access Control Model as specified in this document).

我建议至少明确排除 USM 和 VACM MIB。例子:

view most included .1
view most excluded .1.3.6.1.6.3.15
view most excluded .1.3.6.1.6.3.16
于 2017-09-29T03:10:46.517 回答
0

不添加之前答案中给出的一般建议,我建议用于snmpwalk -v2c -c community localhost .1 | your_pager浏览您可以看到的所有信息。然后决定您可能不想看到哪些信息。

例如,在 Linux 上,您通常可以看到所有进程及其参数以及已安装的磁盘设备和文件系统。

于 2021-01-08T08:33:31.073 回答