跳到主要内容

11.2. Defining Users (定义用户)

11.2. Defining Users (定义用户)

本节提供有关如何在基于用户的安全模型中定义用户的指导。

Clone-From Template Users (从模板用户克隆)

定义用户的推荐方法是使用模板用户进行克隆。模板用户是在权威 SNMP 引擎上定义的用户, 用作克隆源以创建新用户。

过程:

  1. 在权威引擎上定义模板用户, 包含:

    • 认证协议
    • 隐私协议
    • 本地化认证密钥
    • 本地化隐私密钥
  2. 使用 usmUserCloneFrom 对象克隆模板用户以在以下位置创建新用户:

    • 同一权威引擎, 或
    • 非权威引擎
  3. 克隆后, 使用 usmUserAuthKeyChangeusmUserPrivKeyChange 为新用户设置唯一密钥。

Password-Based Key Derivation (基于密码的密钥派生)

创建用户时, 可以使用附录 A.2 中定义的密码到密钥算法将密码转换为密钥。此算法:

  1. 接受密码 (任意长度的 OCTET STRING)
  2. 重复应用哈希函数 (MD5 或 SHA)
  3. 生成适当长度的密钥

重要提示: 如果不同的密码由重复模式组成, 则可能产生相同的密钥。例如, 密码 "maplesyrupmaples" 和 "maplesyrup" 可能产生相似的中间哈希值。因此:

  • 避免重复的密码模式
  • 使用至少 8 个字符长的密码
  • 确保密码复杂性

User Table Management (用户表管理)

用户存储在 usmUserTable 中。每个条目包含:

  • usmUserEngineID: SNMP 引擎的 snmpEngineID
  • usmUserName: 用户名
  • usmUserSecurityName: 安全名称
  • usmUserCloneFrom: 要从中克隆的模板用户
  • usmUserAuthProtocol: 认证协议
  • usmUserAuthKeyChange: 用于更改认证密钥的对象
  • usmUserOwnAuthKeyChange: 用于更改自己认证密钥的对象
  • usmUserPrivProtocol: 隐私协议
  • usmUserPrivKeyChange: 用于更改隐私密钥的对象
  • usmUserOwnPrivKeyChange: 用于更改自己隐私密钥的对象
  • usmUserPublic: 可公开读取和写入的对象
  • usmUserStorageType: 存储类型
  • usmUserStatus: 行状态

Security Considerations for User Definition (用户定义的安全考虑)

  1. Initial User (初始用户): 在 SNMP 引擎可用于已认证通信之前, 必须至少定义一个具有适当安全凭据的用户。

  2. Key Strength (密钥强度): 确保密钥 (无论是从密码派生还是随机生成) 具有足够的熵以抵抗暴力攻击。

  3. User Rights (用户权限): 使用最小必要权限定义用户。使用基于视图的访问控制模型 (VACM) 限制每个用户可以访问的内容。

  4. User Lifecycle (用户生命周期): 建立以下过程:

    • 安全地创建用户
    • 定期更新用户凭据
    • 在不再需要时禁用或删除用户
    • 审计用户活动