只说一下在ubuntu下如何进行基本的配置。
ubuntu Server 12.04
apt-get install snmp snmpd
安装完成之后还要安装snmp-mibs-downloader
该包包含了MIB文件以及一个脚本,该脚本将这些文件抽取出来以便被简单网络管理库使用。
配置文件:
配置文件是分段的,包含(agent behaviour)代理行为,SNMPv3 验证,访问控制,系统信息,ACTIVE MONITORING, 以及代理扩展
- 代理行文
其中代理行为主要设定代理监听的地址及端口,agentaddress是代理监听端口,默认监听IPv4 UDP161端口
agentAddress udp:161,udp6:[::1]:161
- SNMPv3设定
SNMPv3主要设定v3的用户及密码信息,对于使用v1 v2的可以忽略
- 访问控制
访问控制如果刚开始接触还是相对难理解的,
对于SNMP v1 或v2c版本来说,唯一的访问控制是基于共同体的访问控制(community based control)
警告:
由于共同体识别符对于所有的客户端都是同一个,而且以纯文本方式在网上传输,该认证方式仅提供了最基本的安全控制,所以不要在公共网络上或不安全的网络上使用,尤其不要开放写权限。
1.SNMPv1 or SNMPv2c基于共同体的认证方式:
在安装阶段我们已经配置了最基本的基于共同体的认证方式,即直接声明只读共同体。
rocommunity COMMUNITY [SOURCE [OID]]
rocommunity6 COMMUNITY [SOURCE [OID]]
如你所看到的,在客户端只需要你提供共同体识别符,可以通过指定SOURCE源进一步限制访问,也可以指定OID限制访问MIB的特定分支。为了兼容SNMPv3的VACM,rocommunity也可以指定访问特定的视图(view),如下面的例子,我们定义了一个只读共同体,它限制访问特定的view,其中源地址掩码是必须的。
rocommunity COMMUNITY SOURCE -V VIEW
rocommunity6 COMMUNITY SOURCE -V VIEW
例子:
rocommunity public localhost ////允许本机可以读取所有的信息
rocommunity public 10.192.0.0/24 ////允许10.192.0.0网段的client可以访问本机所有的信息
rocommunity public 10.192.0.0/24 .1.3.6.1.2.1.1 ////允许10.192.0.0网段的client可以访问分支.1.3.6.1.2.1.1的信息
view systemonly included .1.3.6.1.2.1.1
view systemonly included .1.3.6.1.2.1.25.1
rocommunity public default -V systemonly
////默认所有的client仅能访问视图systemonly的信息
2.SNMPv3基于用户的认证方式:
////偷懒掠过
3.使用VACM,基于视图的访问控制模型(view-based access control model)
它既适用于v2c也适用于v3版本,对于v2c版本
# Mappings between community strings and security names
# security name source mask community id com2sec limited 10.0.0.0/8 public # Mappings between security names and group names
# group name security model security name group limited_grp v1 limited
group limited_grp v2c limited group hw_admin_grp usm john
group sw_admin_grp usm holly
group management_grp usm max # View definitions
# view name included/excluded subtree view basic_view excluded .iso
view basic_view included SNMPv2-MIB::system view hardware_view excluded .iso
view hardware_view included LM-SENSORS-MIB::lmSensors view software_view excluded .iso
view software_view included UCD-SNMP-MIB::systemStats # Access control directives
# group name context model level match read write notify
access limited_grp "" any noauth exact basic_view none none
access hw_admin_grp "" usm priv exact hardware_view none none
access sw_admin_grp "" usm priv exact software_view none none
access management_grp "" usm priv exact all none none
画删除线的是针对v3版本的设定,暂且忽略。
community id ==> security name ==> group=|||
view=|||
# group name context model level match read write notify
access limited_grp "" any noauth exact basic_view none none
解释一下上面一句话:
access即访问控制
group name允许访问的组
context 不知何意,按照例子留空
model 认证方式?对于v2c填any,v3填usm
level 有noauth priv 及 auth,对于v2c需要填写noauth
match exact
read/write 可读写的view
参考
http://www.mad-hacking.net/documentation/linux/management/snmp/snmpd-security.xml