Snmpv3加强了分组安全性,配置分几步走:
首先建立用户,用户的属于哪个组
其次建立访问VACM_VIEW,VACM_VIEW其实就是把mib数据库细分了,比如说interfaces 属于view1,tcp属于view2
再建立VACM_ACCESS,VACM_ACCESS说白了就是把访问具体VACM_VIEW的读或者写的权利赋予之前建的用户
这样限定特定的用户访问特定的mib对象的策略就建立了
为用户配置陷阱条目白话解释
Mib对象信息发给网管主机就需要知道网管主机的ip和网管主机的接受哪些信息和加密的算法,其中TARGET_ADDRESS 就是ip, TARGET_PARAMETERS配置哪个用户接受什么信息,用的是什么算法加密来着
如何通过手工编辑 /etc/snmpdv3.conf 和 /etc/clsnmp.conf 文件在 SNMPv3 中创建用户。
在此情形中将会创建用户 u1。用户 u1 可以得到认证密钥但是不会得到专用密钥(只有您已经安装了 snmp.crypto 文件集,专用密钥才可用)。 ul 的认证密钥要使用 HMAC-MD5 协议来创建。在配置好 ul 以后,它会被放到一个组里,然后我们会给那个组定义查看和访问许可权。最后创建 u1 的陷阱条目。
/etc/snmpdv3.conf 和 /etc/clsnmp.conf 文件中所用的每个单独的值都不能超过 32 个字节。
步骤 1. 创建用户
请确定您希望使用哪种安全性协议,是 HMAC-MD5 还是 HMAC-SHA。此情形中使用 HMAC-MD5。
使用 pwtokey 命令来生成认证密钥。根据您使用的认证协议以及是否使用专用密钥,您的输出看上去会有所不同。这些密钥将会用在 /etc/snmpdv3.conf 和 /etc/clsnmp.conf 文件中。用户 u1 使用的命令如下:
pwtokey -p HMAC-MD5 -u auth anypassword 9.3.230.119所指定的 IP 地址是运行代理的IP 地址。密码可以是任意密码,但是务必要把它保存在一个安全的地方以供将来使用。输出看上去应该类似于以下:
Display of 16 byte HMAC-MD5 authKey:
63960c12520dc8829d27f7fbaf5a0470
Display of 16 byte HMAC-MD5 localized authKey:
b3b6c6306d67e9c6f8e7e664a47ef9a0 利用超级权限,用您最喜欢的文本编辑器打开 /etc/snmpdv3.conf 文件。
按照文件中给定的格式添加一条 USM_USER 条目来创建一个用户。authKey 的值将是用 pwtokey 命令生成的本地化的认证密钥。用户 u1 的此条目如下所示:
#---------------------------------------------------------------------------
# USM_USER entries
# Defines a user for the User-based Security Model (USM).
# Format is:
# userName engineID authProto authKey privProto privKey keyType storageType
#
USM_USER u1 - HMAC-MD5 b3b6c6306d67e9c6f8e7e664a47ef9a0 - - L -
#----------------------------------------------------------------------------userName 是用户名。在该例中就是 u1。
authProto 必须是您创建这些密钥时所用的协议。在该例中就是 HMAC-MD5。
authKey 是使用 pwtokey 命令创建的本地化的认证密钥。
privProto 和 privkey 都没有指定,原因是在此情形中,我们没有使用专用密钥。
keyType 是 L,因为我们使用本地化的认证密钥。
保存然后关闭 /etc/snmpdv3.conf 文件。
使用您最喜欢的文本编辑器打开 SNMP 管理器上的 /etc/clsnmp.conf 文件。
按照文件中给定的格式添加新用户。u1 的条目如下:
#----------------------------------------------------------------------------------------------------
#
# Format of entries:
# winSnmpName targetAgent admin secName password context secLevel authProto authKey privProto privKey
#
user1 9.3.230.119 SNMPv3 u1 - - AuthNoPriv HMAC-MD5 63960c12520dc8829d27f7fbaf5a0470 - -
#----------------------------------------------------------------------------------------------------winSnmpName 可以是任何值。在使用 clsnmp 命令进行 SNMP 请求时会使用此值。
targetAgent 是运行代理的 IP 地址,创建认证密钥时也曾使用过此 IP 地址。
admin 设成 SNMPv3,因为要发送 SNMPv3 请求。
secName 是要创建的用户名。在该例中就是 u1。
seclevel 设成 AuthNoPriv,因为它被配置成使用认证而不是专用密钥(因此,privProto 和 privKey 没有值)。
authproto 设成创建认证密钥时所使用的认证协议。
authKey 是 pwtokey 命令生成的非本地化密钥。
保存并关闭 /etc/clsnmp.conf 文件。
步骤 2. 配置组
现在必须把用户放到一个组中。如果您已经有一个组,已经配置好所有您希望赋予用户的查看和访问许可权,那么您就可以把此用户放在那个组中。如果您想给此用户一些其它的组都没有的查看和访问许可权,或者如果您根本没有配置任何组,那么就请创建一个组然后把此用户添加进去。
要把用户添加到一个新组中,请在 /etc/snmpdv3.conf 文件中创建一个新的条目 VACM_GROUP。 u1 的组条目如下:
#--------------------------------------------------------------
# VACM_GROUP entries
# Defines a security group (made up of users or communities)
# for the View-based Access Control Model (VACM).
# Format is:
# groupName securityModel securityName storageType
VACM_GROUP group1 USM u1 -
#--------------------------------------------------------------groupName 可以是任何名称。它成为了您的组名称。在该例中就是 group1。
securityModel 设为 USM,利用 SNMPv3 的安全功能。
securityName 是用户名。在该例中就是 u1。
步骤 3. 配置查看和访问许可权
必须给刚创建的新组设置查看和访问许可权。通过向 /etc/snmpdv3.conf 文件中添加 VACM_VIEW 和 VACM_ACCESS 条目来设置这些许可权。
确定您想让新组拥有哪些查看和访问许可权。
在此情形中将会创建用户 u1。用户 u1 可以得到认证密钥但是不会得到专用密钥(只有您已经安装了 snmp.crypto 文件集,专用密钥才可用)。 ul 的认证密钥要使用 HMAC-MD5 协议来创建。在配置好 ul 以后,它会被放到一个组里,然后我们会给那个组定义查看和访问许可权。最后创建 u1 的陷阱条目。
/etc/snmpdv3.conf 和 /etc/clsnmp.conf 文件中所用的每个单独的值都不能超过 32 个字节。
步骤 1. 创建用户
请确定您希望使用哪种安全性协议,是 HMAC-MD5 还是 HMAC-SHA。此情形中使用 HMAC-MD5。
使用 pwtokey 命令来生成认证密钥。根据您使用的认证协议以及是否使用专用密钥,您的输出看上去会有所不同。这些密钥将会用在 /etc/snmpdv3.conf 和 /etc/clsnmp.conf 文件中。用户 u1 使用的命令如下:
pwtokey -p HMAC-MD5 -u auth anypassword 9.3.230.119所指定的 IP 地址是运行代理的IP 地址。密码可以是任意密码,但是务必要把它保存在一个安全的地方以供将来使用。输出看上去应该类似于以下:
Display of 16 byte HMAC-MD5 authKey:
63960c12520dc8829d27f7fbaf5a0470
Display of 16 byte HMAC-MD5 localized authKey:
b3b6c6306d67e9c6f8e7e664a47ef9a0 利用超级权限,用您最喜欢的文本编辑器打开 /etc/snmpdv3.conf 文件。
按照文件中给定的格式添加一条 USM_USER 条目来创建一个用户。authKey 的值将是用 pwtokey 命令生成的本地化的认证密钥。用户 u1 的此条目如下所示:
#---------------------------------------------------------------------------
# USM_USER entries
# Defines a user for the User-based Security Model (USM).
# Format is:
# userName engineID authProto authKey privProto privKey keyType storageType
#
USM_USER u1 - HMAC-MD5 b3b6c6306d67e9c6f8e7e664a47ef9a0 - - L -
#----------------------------------------------------------------------------userName 是用户名。在该例中就是 u1。
authProto 必须是您创建这些密钥时所用的协议。在该例中就是 HMAC-MD5。
authKey 是使用 pwtokey 命令创建的本地化的认证密钥。
privProto 和 privkey 都没有指定,原因是在此情形中,我们没有使用专用密钥。
keyType 是 L,因为我们使用本地化的认证密钥。
保存然后关闭 /etc/snmpdv3.conf 文件。
使用您最喜欢的文本编辑器打开 SNMP 管理器上的 /etc/clsnmp.conf 文件。
按照文件中给定的格式添加新用户。u1 的条目如下:
#----------------------------------------------------------------------------------------------------
#
# Format of entries:
# winSnmpName targetAgent admin secName password context secLevel authProto authKey privProto privKey
#
user1 9.3.230.119 SNMPv3 u1 - - AuthNoPriv HMAC-MD5 63960c12520dc8829d27f7fbaf5a0470 - -
#----------------------------------------------------------------------------------------------------winSnmpName 可以是任何值。在使用 clsnmp 命令进行 SNMP 请求时会使用此值。
targetAgent 是运行代理的 IP 地址,创建认证密钥时也曾使用过此 IP 地址。
admin 设成 SNMPv3,因为要发送 SNMPv3 请求。
secName 是要创建的用户名。在该例中就是 u1。
seclevel 设成 AuthNoPriv,因为它被配置成使用认证而不是专用密钥(因此,privProto 和 privKey 没有值)。
authproto 设成创建认证密钥时所使用的认证协议。
authKey 是 pwtokey 命令生成的非本地化密钥。
保存并关闭 /etc/clsnmp.conf 文件。
步骤 2. 配置组
现在必须把用户放到一个组中。如果您已经有一个组,已经配置好所有您希望赋予用户的查看和访问许可权,那么您就可以把此用户放在那个组中。如果您想给此用户一些其它的组都没有的查看和访问许可权,或者如果您根本没有配置任何组,那么就请创建一个组然后把此用户添加进去。
要把用户添加到一个新组中,请在 /etc/snmpdv3.conf 文件中创建一个新的条目 VACM_GROUP。 u1 的组条目如下:
#--------------------------------------------------------------
# VACM_GROUP entries
# Defines a security group (made up of users or communities)
# for the View-based Access Control Model (VACM).
# Format is:
# groupName securityModel securityName storageType
VACM_GROUP group1 USM u1 -
#--------------------------------------------------------------groupName 可以是任何名称。它成为了您的组名称。在该例中就是 group1。
securityModel 设为 USM,利用 SNMPv3 的安全功能。
securityName 是用户名。在该例中就是 u1。
步骤 3. 配置查看和访问许可权
必须给刚创建的新组设置查看和访问许可权。通过向 /etc/snmpdv3.conf 文件中添加 VACM_VIEW 和 VACM_ACCESS 条目来设置这些许可权。
确定您想让新组拥有哪些查看和访问许可权。
给 /etc/snmpdv3.conf 文件添加 VACM_VIEW 条目来定义该组可以访问哪些 MIB 对象。
在此情形中,group1 能访问 interfaces、tcp、icmp 和 system MIB 子树。然而,我们要限制 group1 对 system MIB 子树内的 sysObjectID MIB 变量的访问。
#----------------------------------------------------------------
# VACM_VIEW entries
# Defines a particular set of MIB data, called a view, for the
# View-based Access Control Model.
# Format is:
# viewName viewSubtree viewMask viewType storageType
VACM_VIEW group1View interfaces - included -
VACM_VIEW group1View tcp - included -
VACM_VIEW group1View icmp - included -
VACM_VIEW group1View system - included -
VACM_VIEW group1View sysObjectID - excluded -
#----------------------------------------------------------------
#----------------------------------------------------------------
# VACM_VIEW entries
# Defines a particular set of MIB data, called a view, for the
# View-based Access Control Model.
# Format is:
# viewName viewSubtree viewMask viewType storageType
VACM_VIEW group1View interfaces - included -
VACM_VIEW group1View tcp - included -
VACM_VIEW group1View icmp - included -
VACM_VIEW group1View system - included -
VACM_VIEW group1View sysObjectID - excluded -
#----------------------------------------------------------------
viewName 是查看的名称。在该例中就是 group1View。
viewSubtree 是您想要授予访问权的 MIB 子树。
viewType 决定查看中是否包括所定义的 MIB 子树。在该例中,包括了所有的子树在内,但是作为 system 子树的一部分的 MIB 变量 sysObjectID 除外。
viewSubtree 是您想要授予访问权的 MIB 子树。
viewType 决定查看中是否包括所定义的 MIB 子树。在该例中,包括了所有的子树在内,但是作为 system 子树的一部分的 MIB 变量 sysObjectID 除外。
在 /etc/snmpdv3.conf 文件中添加 VACM_ACCESS 条目来定义组对上面指定的 MIB 对象拥有的许可权。给 group1 的是只读访问权。
#-----------------------------------------------------------------------------------------------------------
# VACM_ACCESS entries
# Identifies the access permitted to different security groups
# for the View-based Access Control Model.
# Format is:
# groupName contextPrefix contextMatch securityLevel securityModel readView writeView notifyView storageType
VACM_ACCESS group1 - - AuthNoPriv USM group1View - group1View -
#-----------------------------------------------------------------------------------------------------------
groupName 是组名。在该例中就是 group1。
securityLevel 是所用的安全级别。在此情形中,使用的是认证密钥而不是专用密钥。因此此值被设为 AuthNoPriv。
securityModel 是您使用的安全模型(SNMPv1、SNMPv2c 或 USM)。在此情形中,它被设为 USM 以允许使用 SNMPv3 安全功能。
readView 确定组对哪些 VACM_VIEW 拥有读访问权。在此情形中,给定的是 group1View,它授予 group1 对 group1View VACM_VIEW 条目的读访问权。
writeView 确定组对哪些 VACM_VIEW 拥有写访问权。在此情形中,没有给 group1 写访问权。
notifyView 指定了在由访问表中的条目控制来执行陷阱时所适用的查看名称。
securityLevel 是所用的安全级别。在此情形中,使用的是认证密钥而不是专用密钥。因此此值被设为 AuthNoPriv。
securityModel 是您使用的安全模型(SNMPv1、SNMPv2c 或 USM)。在此情形中,它被设为 USM 以允许使用 SNMPv3 安全功能。
readView 确定组对哪些 VACM_VIEW 拥有读访问权。在此情形中,给定的是 group1View,它授予 group1 对 group1View VACM_VIEW 条目的读访问权。
writeView 确定组对哪些 VACM_VIEW 拥有写访问权。在此情形中,没有给 group1 写访问权。
notifyView 指定了在由访问表中的条目控制来执行陷阱时所适用的查看名称。
注:
在有些情况下,一个组可能会需要多个 VACM_ACCESS 条目。如果组中的用户具有不同的认证和专用设置(noAuthNoPriv、AuthNoPriv 或 AuthPriv),就需要有多个 VACM_ACCESS 条目,并相应设置 securityLevel 参数。
步骤 4. 为用户配置陷阱条目
通过向/etc/snmpdv3.conf 文件添加 NOTIFY TARGET_ADDRESS 和 TARGET_PARAMETERS 条目就能创建 SNMPv3 中的陷阱条目。TARGET_ADDRESS 条目将指定您希望把陷阱发送到哪里,而 TARGET_PARAMETERS 条目将会使 TARGET_ADDRESS 信息映射到 group1
NOTIFY 条目是按缺省配置的。缺省的 NOTIFY 条目如下所示:
NOTIFY notify1 traptag trap 在此情形中,我们使用缺省条目中指定的值 traptag。
添加 TARGET_ADDRESS 条目来指定您想把陷阱发送到哪里。
#-------------------------------------------------------------------------------------
# TARGET_ADDRESS
# Defines a management application's address and parameters
# to be used in sending notifications.
# Format is:
# targetAddrName tDomain tAddress tagList targetParams timeout retryCount storageType
#-------------------------------------------------------------------------------------
TARGET_ADDRESS Target1 UDP 9.3.207.107 traptag trapparms1 - - -
targetAddrName 可以是任何名称。在此情形中,我们使用了 Target1。
tAddress 是组的陷阱应该发送到的 IP 地址
tagList 是 NOTIFY 条目中配置的名字。在该例中就是 traptag。
targetParams 可以是任何值。我们使用的是 trapparms1,它会用在 TARGET_PARAMETERS 条目中。
添加 TARGET_PARAMETERS 条目。
#-------------------------------------------------------------------------
# TARGET_PARAMETERS
# Defines the message processing and security parameters
# to be used in sending notifications to a particular management target.
# Format is:
# paramsName mpModel securityModel securityName securityLevel storageType
#-------------------------------------------------------------------------
TARGET_PARAMETERS trapparms1 SNMPv3 USM u1 AuthNoPriv
paramsName 和 TARGET_ADDRESS 条目中的 targetParams 值一模一样,在该例中,此值是 trapparms1。
mpModel 是所用的 SNMP 的版本。
securityModel 是您使用的安全模型(SNMPv1、SNMPv3 或 USM)。在此情形中,它被设为 USM 以允许使用 SNMPv3 安全功能。
securityName 是 USM_USER 条目中指定的用户名,在该例中就是 u1。
securityLevel 被设为 AuthNoPriv,因为我们使用认证密钥而不是专用密钥。
步骤 5. 停止和启动 snmpd 守护程序
更改完 /etc/snmpdv3.conf 文件后,请先停止然后再启动 snmpd 守护程序。
输入以下命令以停止 snmpd 守护程序:
stopsrc -s snmpd输入以下命令以启动 snmpd 守护程序:
startsrc -s snmpd新的设置现在生效了。
注:
在 SNMPv1 中使用 refresh -s snmpd 简单刷新代理在 SNMPv3 中无效。如果您对 /etc/snmpdv3.conf 文件进行了更改,您必须按上面所指示的那样停止然后再启动守护程序。SNMPv3 中支持的动态配置功能不允许您进行刷新。
步骤 6. 测试您的配置
要验证您的配置是正确的,您可以在 SNMP 管理器上运行以下命令。
clsnmp -h user1 walk mib其中,mib 是用户能访问的 MIB 子树。在此情形中,它可能是 interfaces、tcp、icmp 或 system。如果配置是正确的,那么您就会在指定的子树中看到信息。
如果您没有得到正确的输出,那么请重温一遍本文档中的各步骤,并验证您正确的输入了所有的信息。
mpModel 是所用的 SNMP 的版本。
securityModel 是您使用的安全模型(SNMPv1、SNMPv3 或 USM)。在此情形中,它被设为 USM 以允许使用 SNMPv3 安全功能。
securityName 是 USM_USER 条目中指定的用户名,在该例中就是 u1。
securityLevel 被设为 AuthNoPriv,因为我们使用认证密钥而不是专用密钥。
步骤 5. 停止和启动 snmpd 守护程序
更改完 /etc/snmpdv3.conf 文件后,请先停止然后再启动 snmpd 守护程序。
输入以下命令以停止 snmpd 守护程序:
stopsrc -s snmpd输入以下命令以启动 snmpd 守护程序:
startsrc -s snmpd新的设置现在生效了。
注:
在 SNMPv1 中使用 refresh -s snmpd 简单刷新代理在 SNMPv3 中无效。如果您对 /etc/snmpdv3.conf 文件进行了更改,您必须按上面所指示的那样停止然后再启动守护程序。SNMPv3 中支持的动态配置功能不允许您进行刷新。
步骤 6. 测试您的配置
要验证您的配置是正确的,您可以在 SNMP 管理器上运行以下命令。
clsnmp -h user1 walk mib其中,mib 是用户能访问的 MIB 子树。在此情形中,它可能是 interfaces、tcp、icmp 或 system。如果配置是正确的,那么您就会在指定的子树中看到信息。
如果您没有得到正确的输出,那么请重温一遍本文档中的各步骤,并验证您正确的输入了所有的信息。