11.2. Defining Users (定义用户)
11.2. Defining Users (定义用户)
本节提供有关如何在基于用户的安全模型中定义用户的指导。
Clone-From Template Users (从模板用户克隆)
定义用户的推荐方法是使用模板用户进行克隆。模板用户是在权威 SNMP 引擎上定义的用户, 用作克隆源以创建新用户。
过程:
-
在权威引擎上定义模板用户, 包含:
- 认证协议
- 隐私协议
- 本地化认证密钥
- 本地化隐私密钥
-
使用
usmUserCloneFrom对象克隆模板用户以在以下位置创建新用户:- 同一权威引擎, 或
- 非权威引擎
-
克隆后, 使用
usmUserAuthKeyChange和usmUserPrivKeyChange为新用户设置唯一密钥。
Password-Based Key Derivation (基于密码的密钥派生)
创建用户时, 可以使用附录 A.2 中定义的密码到密钥算法将密码转换为密钥。此算法:
- 接受密码 (任意长度的 OCTET STRING)
- 重复应用哈希函数 (MD5 或 SHA)
- 生成适当长度的密钥
重要提示: 如果不同的密码由重复模式组成, 则可能产生相同的密钥。例如, 密码 "maplesyrupmaples" 和 "maplesyrup" 可能产生相似的中间哈希值。因此:
- 避免重复的密码模式
- 使用至少 8 个字符长的密码
- 确保密码复杂性
User Table Management (用户表管理)
用户存储在 usmUserTable 中。每个条目包含:
usmUserEngineID: SNMP 引擎的 snmpEngineIDusmUserName: 用户名usmUserSecurityName: 安全名称usmUserCloneFrom: 要从中克隆的模板用户usmUserAuthProtocol: 认证协议usmUserAuthKeyChange: 用于更改认证密钥的对象usmUserOwnAuthKeyChange: 用于更改自己认证密钥的对象usmUserPrivProtocol: 隐私协议usmUserPrivKeyChange: 用于更改隐私密钥的对象usmUserOwnPrivKeyChange: 用于更改自己隐私密钥的对象usmUserPublic: 可公开读取和写入的对象usmUserStorageType: 存储类型usmUserStatus: 行状态
Security Considerations for User Definition (用户定义的安全考虑)
-
Initial User (初始用户): 在 SNMP 引擎可用于已认证通信之前, 必须至少定义一个具有适当安全凭据的用户。
-
Key Strength (密钥强度): 确保密钥 (无论是从密码派生还是随机生成) 具有足够的熵以抵抗暴力攻击。
-
User Rights (用户权限): 使用最小必要权限定义用户。使用基于视图的访问控制模型 (VACM) 限制每个用户可以访问的内容。
-
User Lifecycle (用户生命周期): 建立以下过程:
- 安全地创建用户
- 定期更新用户凭据
- 在不再需要时禁用或删除用户
- 审计用户活动