Net-SNMP VACM配置
本文记录是如何配置 Net-SNMP VACM. VACM,即 View Based Access Control.分为两部分: 1. VACM的快速配置 2. VACM的综合配置,该配置能够更加精细地配置用户的访问控制权限.
###一、VACM的快速配置###
####1. SNMPv1 and SNMPv2 rocommunity/rwcommunity####
对于SNMPv1和SNMPv2c,对基于COMMUNITY
的请求,能够将其访问权限限定在特定的OID树,且将访问来源限定在特定的IP访问内,通常采用如下格式:
1 | rocommunity COMMUNITY [SOURCE [OID]] |
对于SNMP 5.3及其以上的版本,该指示符也能够将其访问权限限定在特定的视图VIEW中,语法如下:
1 | rocommunity COMMUNITY SOURCE -V VIEW |
####2. SNMPv3 rouser/rwuser####
可使用终端命令net-snmp-create-v3-user
快速创建用户,这需要root权限,创建完成后,默认情况下该用户能够访问所有的OID树,通常情况下,可使用如下语法修改访问控制权限:
1 | rouser USER [noauth|auth|priv [OID]] |
对于SNMP 5.3及其以上的版本,该指示符也能够将其访问权限限定在特定的视图VIEW中,语法如下:
1 | rouser USER noauth|auth|priv -V NAME |
###二、VACM的综合配置###
VACM的配置需要用到四个配置标识符,分别是 com2sec
,
group
, view
, access
,
这些标识符能够直接配置底层 VACM
表格。下面对这四个标识符进行简要分析。
####1. com2sec####
1 | com2sec [-Cn CONTEXT] SECNAME SOURCE COMMUNITY |
SECNAME
: security name, SNMPv3中 username = security
name.
SOURCE
:
可以理解为访问者来源地址.可以来自特定范围的源地址,比如一个特定的主机名或者地址,或者使用
IP/MASK(eg.
10.10.10.0/255.255.255.0)或IP/BITS(eg.10.10.10.0/24)表征的子网,也可以使用其默认值("default",
表示允许来自任何IP地址的访问).
COMMUNITY
: community string, 是 SNMP 管理工作站和 SNMP
代理之间沟通的口令,也就是,如果管理工作站(例如用户)需要从SNMP代理获取需要的信息,则必须指定正确的口令(community
string),
不同的SOURCE+COMMUNITY
组合可以映射相同的SECNAME
.
com2sec
, 将 community string 映射到 security name,
可以理解为为用户分配口令。
如果使用标识符-Cn
指定特定CONTEXT
环境,则COMMUNITY
将会映射到已命名的
SNMPv3 CONTEXT
, 否则使用默认的CONTEXT("")
.
####2. group#### 1
group GROUP {v1|v2c|usm} SECNAME
SECNAME
映射到一个命名用户组(group)。
####3. view####
1 | view VNAME TYPE OID [MASK] |
view
标识符用于创建一个命名为VNAME
的view,即一个
OID
树的子集,通常情况是一单一子树。多个view标识符可以使用同一个VNAME
,为其创建复杂的
OIDs 集合,当然每个view标识符需指定不同的OID子树。
TYPE
:可以是
included或者excluded,二者配合可以从已具有访问权限的view中排除子view,从而生成复杂的view视图。
MASK
的使用见: 对Net-SNMP访问权限控制VACM中mask的理解
####4. access####
1 | access GROUP CONTEXT {any|v1|v2c|usm} LEVEL MATCH READ WRITE NOTIFY |
将指定CONTEXT环境中的用户组映射到三类视图(read/write/notify)中,简单点说,就是将上一步中命名的group关联到特定view,确定group中用户的访问权限。
LEVEL
: 有 noauth, auth, priv,
分别代表不认证不加密,认证不加密和认证并加密三种等级,且 noauth
< auth < priv
MATCH
: 指定访问来源 context 实例与 SNMP
坏境名CONTEXT
匹配的方式(exact 或者
prefix)
对于SNMPv1和SNMPv2c, LEVEL
等级应设置为
noauth.
####5. 实例分析####
下面是VACM的实例配置分析,其作用包括可根据SNMPv3用户的不同安全等级限定不同的视图访问权限。
第一步,创建了两个安全名sec.name, 第一个名为local,指定其访问来源为localhost,即本机,其访问口令是secret42;第二个名为custom_sec,其访问来源限定为子网192.168.1.0/24,访问口令是public.
1 | #### |
第二步,将安全名sec.name根据不同的安全模型sec.model创建分组
1 | #### |
第三步,创建不同的OID视图,即不同的子树。
1 | #### |
最后,根据不同的安全等级赋予group不同的可访问OID视图
1 | #### |
上面的配置中,本地用户(MyRWGroup)
在SNMP v1
模式下,能够访问所有OID
树;在v2c
模式下,仅能访问IF-MIB::ifTable
中数据.
默认来源用户(custom_grp)
,即所有用户在SNMPv1
模式下仅能得到sysUpTime.0
的数据,在SNMPv2c
模式下,能够访问sysUpTime.0
和hrStorageTable
中数据;
usm
模式下,noauth
安全等级下,用户(cici)
仅能访问sysUpTime.0
的数据,auth
安全等级下,能够访问sysUpTime.0
和hrStorageTable
数据,priv
安全等级下,能够访问所有的OID
树。
参考: