11.1. Recommended Practices (推荐做法)
11.1. Recommended Practices (推荐做法)
本节描述了使用基于用户的安全模型以最大化安全性的推荐做法。
Password Selection (密码选择)
应选择密码以最大化安全性:
-
Length (长度): 密码应该至少 8 个字符长。更长的密码提供更好的安全性。
-
Complexity (复杂性): 密码应该包含以下混合:
- 大写字母
- 小写字母
- 数字
- 特殊字符
-
Avoid Patterns (避免模式): 密码不应该是:
- 字典单词
- 简单模式 (例如, "12345678", "password")
- 个人信息 (姓名, 生日等)
- 重复字符串 (例如, "aaaaaaaa")
Key Management (密钥管理)
-
Key Storage (密钥存储): 认证和隐私密钥必须安全存储并防止未经授权的访问。
-
Key Distribution (密钥分发): 初始密钥分发应该通过安全的带外机制执行。
-
Key Updates (密钥更新): 密钥应该定期更改。频率取决于部署的安全要求。
-
Key Localization (密钥本地化): 始终使用本地化密钥 (每个 SNMP 引擎特定的密钥) 而不是全局密钥。
Time Synchronization (时间同步)
-
Initial Synchronization (初始同步): 非权威 SNMP 引擎在发送已认证消息之前必须与权威引擎执行时间同步。
-
Clock Accuracy (时钟准确性): SNMP 引擎应该保持合理准确的时钟。较大的时钟偏差可能导致合法消息被拒绝。
-
Boots Counter (启动计数器): 每当 SNMP 引擎重新初始化时, msgAuthoritativeEngineBoots 计数器必须递增。此计数器必须在重启后保持。
User Management (用户管理)
-
User Creation (用户创建): 创建用户时, 始终指定认证和隐私协议, 即使隐私不会立即使用。
-
User Deletion (用户删除): 删除用户时, 确保所有关联的密钥和配置数据都被安全擦除。
-
Template Users (模板用户): 使用模板用户 (在权威引擎上配置的用户) 进行克隆以在非权威引擎上创建新用户。
Message Security Levels (消息安全级别)
为每个消息选择适当的安全级别:
-
noAuthNoPriv: 仅用于发现消息或非敏感信息。不建议用于操作使用。
-
authNoPriv: 提供认证但不提供隐私。适用于不需要机密性但需要消息完整性和源认证的情况。
-
authPriv: 提供认证和隐私。建议用于所有敏感操作。
Implementation Considerations (实现考虑)
-
Random Number Generation (随机数生成): 实现必须使用加密强度的随机数生成器来生成密钥和初始化向量。
-
Clock Synchronization (时钟同步): 实现应该提供与外部时间源 (例如, NTP) 同步的机制以保持准确的时间。
-
Audit Logging (审计日志): 实现应该记录与安全相关的事件, 包括认证失败和时间同步失败。
-
Error Handling (错误处理): 实现必须安全地处理错误条件, 避免可能帮助攻击者的信息泄漏。