跳到主要内容

11.1. Recommended Practices (推荐做法)

本节描述了使用基于用户的安全模型以最大化安全性的推荐做法。

Password Selection (密码选择)

应选择密码以最大化安全性:

  1. Length (长度): 密码应该至少 8 个字符长。更长的密码提供更好的安全性。

  2. Complexity (复杂性): 密码应该包含以下混合:

    • 大写字母
    • 小写字母
    • 数字
    • 特殊字符
  3. Avoid Patterns (避免模式): 密码不应该是:

    • 字典单词
    • 简单模式 (例如, "12345678", "password")
    • 个人信息 (姓名, 生日等)
    • 重复字符串 (例如, "aaaaaaaa")

Key Management (密钥管理)

  1. Key Storage (密钥存储): 认证和隐私密钥必须安全存储并防止未经授权的访问。

  2. Key Distribution (密钥分发): 初始密钥分发应该通过安全的带外机制执行。

  3. Key Updates (密钥更新): 密钥应该定期更改。频率取决于部署的安全要求。

  4. Key Localization (密钥本地化): 始终使用本地化密钥 (每个 SNMP 引擎特定的密钥) 而不是全局密钥。

Time Synchronization (时间同步)

  1. Initial Synchronization (初始同步): 非权威 SNMP 引擎在发送已认证消息之前必须与权威引擎执行时间同步。

  2. Clock Accuracy (时钟准确性): SNMP 引擎应该保持合理准确的时钟。较大的时钟偏差可能导致合法消息被拒绝。

  3. Boots Counter (启动计数器): 每当 SNMP 引擎重新初始化时, msgAuthoritativeEngineBoots 计数器必须递增。此计数器必须在重启后保持。

User Management (用户管理)

  1. User Creation (用户创建): 创建用户时, 始终指定认证和隐私协议, 即使隐私不会立即使用。

  2. User Deletion (用户删除): 删除用户时, 确保所有关联的密钥和配置数据都被安全擦除。

  3. Template Users (模板用户): 使用模板用户 (在权威引擎上配置的用户) 进行克隆以在非权威引擎上创建新用户。

Message Security Levels (消息安全级别)

为每个消息选择适当的安全级别:

  1. noAuthNoPriv: 仅用于发现消息或非敏感信息。不建议用于操作使用。

  2. authNoPriv: 提供认证但不提供隐私。适用于不需要机密性但需要消息完整性和源认证的情况。

  3. authPriv: 提供认证和隐私。建议用于所有敏感操作。

Implementation Considerations (实现考虑)

  1. Random Number Generation (随机数生成): 实现必须使用加密强度的随机数生成器来生成密钥和初始化向量。

  2. Clock Synchronization (时钟同步): 实现应该提供与外部时间源 (例如, NTP) 同步的机制以保持准确的时间。

  3. Audit Logging (审计日志): 实现应该记录与安全相关的事件, 包括认证失败和时间同步失败。

  4. Error Handling (错误处理): 实现必须安全地处理错误条件, 避免可能帮助攻击者的信息泄漏。