SNMP的默认OID访问

时间:2017-09-14 11:02:39

标签: snmp net-snmp snmpv2c

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

view all included .1

它暴露了看起来很好的mgmt(RFC1213),它还暴露了snmpV2 mib(snmpMIB,snmpFrameworkMIB,VacmMIB等)。

我无法找到任何最佳实践文档来详细说明除了打开我们的企业oid树之外应该暴露什么,安全风险等等。

3 个答案:

答案 0 :(得分:2)

  

安全风险是什么

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

  • 泄漏数据,
  • 更改设置请求中的内容,以触发目标上不可取的内容(例如,您可以通过这种方式重新启动某些目标)。

此外,查询可以通过UDP完成,因此IP源地址无需正确路由回源。因此,IP欺骗可用于绕过IP ACL并从伪造的IP源向目标发送SNMP 设置请求。

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

因此,要么增加安全性,添加另一个网络层(例如IPsec),要么只展示 READ-ONLY 带有公共内容的OID。

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

首先,SNMP v1根本没有安全保护。 因此,已经提出SNMP v2来增加安全性以及其他新功能。但它非常复杂,新的安全功能已被删除,其他功能已被保留,协议最终以名称SNMP v2c 发布。最后,创建SNMP v3 主要是为了提供安全功能,但实现的方式比使用SNMP v2更简单。

答案 1 :(得分:1)

非常小心对整个ISO(.1)树进行全面访问(甚至是只读),尤其是在使用SNMPv3 USM进行身份验证和{{ 3}}用于授权。

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

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

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

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

我不认为Net-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

答案 2 :(得分:0)

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

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