Snmpd配置项
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Snmpd配置项
snmpd.conf 是Net-SNMP的SNMP Agent(一般为snmpd)的配置文件。
Net-SNMP的Agent使用一个或更多的配置文件,这些配置文件控制了Agent的启动方式以及Agent提供的信息。
这些配置文件可以放置在多个地方(/$SNMP_HOME/share/snmp /etc/snmp /var/snmp等)
可以使用snmpconf这个perl脚本帮助我们完成snmpd.conf文件的基本配置。
可以试用以下命令,并按照提示完成配置
snmpconf -g basic_setup
snmpd.conf中有很多控制项可以指定,但是大体上可以分为4类
1、可以指定此Agent的访问
2、可以指定此Agent提供的信息
3、可以指定此Agent监控本机系统
4、可以指定此Agent的扩展功能。
这四类并不能覆盖所有的配置项。
但是绝大多数典型配置项都可以在这四类中找到。
想要看所有的配置项可以使用以下命令查看snmpd -H
第一类Agent的行为
尽管绝大多数的配置项是用来控制Agent提供的MIB信息。
但是还有一些配置项用来控制Agent的行为。
比如可以控制snmpd按照一个提供网络服务的守护进程方式启动。
这里面的配置项主要是有以下几点:
agentaddress [:][,...]
定义了此Agent监听的SNMP请求的网络协议以及对应的地址端口号。
默认情况下snmpd监听UDP161端口所有来自IPv4的SNMP请求。
此配置项最简单的格式就是至指定协议的端口号。
就如默认的情
况下相同接收所有IPv4客户端的请求。
所有的部分按照下面表格进行解析:
format
udp (default) hostname[:port] or IPv4-address[:port]
tcp hostname[:port] or IPv4-address[:port]
unix pathname
ipx [network]:node[/port]
aal5pvc or pvc [interface.][VPI.]VCI
udp6 or udpv6 or udpipv6 hostname[:port] or IPv6-address[:port]
tcp6 or tcpv6 or tcpipv6 hostname[:port] or IPv6-address[:port]
注意transport-specifier这部分大小写不敏感,所以tcp和TCP 是相同的。
下面是一些配置示例:
127.0.0.1:161 监听UDP161端口,但是仅是回环网卡(本机)。
这样防
止了远程的请求。
在这个写法中“:161”可以省略。
因为
默认为UDP161端口
TCP:1161 listen on TCP port 1161 on all IPv4 interfaces.
ipx:/40000 listen on IPX port 40000 on all IPX interfaces.
unix:/tmp/local-agent listen on the Unix domain socket /tmp/local-
agent.
/tmp/local-agent is identical to the previous specification,
since the Unix domain is assumed if the first
character o f the is a€?/a€?.
PVC:161 listen on the AAL5 permanent virtual circuit
with VPI=0 and VCI=161 (decimal) on the first
ATM adapter in the machine.
udp6:10161 listen on port 10161 on all IPv6 interfaces.
注意:上述的列出的所有的传输域总是可用的。
比如,主机端没有使用IPv6,那么配置
udp6配置项就会引发错误。
如果启动就会得到以下错误"Error opening specified endpoint"。
类似的,由于AAL5、PVC这几项仅支持linux上。
如果你在其他平台打开将会得到相同的错
误。
agentgroup {GROUP|#GID}
此选项的英文原文如下:
changes to the specified group after opening the
listening port(s).This may refer to a group by name (GROUP), or
a numeric group ID starting with a€?#a€? (#GID).
agentuser {USER|#UID}
changes to the specified user after opening the
listening port(s). This may refer to a user by name (USER), or a numeric user ID starting with a€?#a€? (#UID).
leave_pidfile yes
instructs the agent to not remove its pid file on
shutdown.Equivalent to specifying "-U" on the command line.
指明当Agent结束时,保留其pid文件。
可以在启动Agent时加入-U 等同效果
maxGetbulkRepeats NUM
设置getbulk请求最大回复数目。
此设定的回复数目针对于table 的节点。
此值为0为默认条数,-1是此数目不做限制。
通常内存在回复之前申请,设置为-1并不是一种安全做法。
当有table记录数超过设置的数目,table的记录数只能返回此配置项指定的数目。
maxGetbulkResponses NUM
此配置项与上面雷同。
只不过最大回复数目为总体的最大回复数目,不单单指table节点的。
通常讲,总的返回数目不能超过此配置项设置数目。
SNMPv3独有配置项
Snmpv3为了响应Snmpv3的请求,要求SNMP Agent要定义一个唯一的Engine ID。
这个ID会被自动检测进行决定。
使用两种合理没有预测的值一个随机的数字或者当前的开机时间精确到秒。
以上的两种类型只是推荐使用。
然而实际情况中用其它方式来定义EngineID
engineID STRING
指定EngineID必须包含有指定的字符串
engineIDType 1|2|3
指明什么协议地址请求需要指定上述的EngineID。
1、IPv4的请求地址需要包含指定的EngineID;
2、IPv6的请求地址需要包含指定的EngineID
3、MAC地址的请求需要包含指定的EngineID
注意:修改IP地址(或者网卡)可能会引起错误
EngineIDNic INTERFACE
当上述使用MAC地址请求需要指定EngineID时,需要指定网卡接口
如engineIDType不为3 此选项没有任何影响。
默认情况下此配置项使用eth0
访问控制
Net-SNMP中snmpd目前支持the View-Based Access Control Model (VACM)控制。
也支持一些访问控制。
SNMPv3 访问控制
Snmpv3是具有认证和加密两部分组成的。
createUser [-e ENGINEID] username (MD5|SHA) authpassphrase [DES|AES] [privpassphrase]
MD5和SHA为认证密码(authpassphrase)的加密方式;DES和AES为加密串
(privpassphrase)的加密方式。
如果加密串没有指定的话,加
密串为认证密码。
注意SHA认证,DES/AES加密都需要OpenSSL。
MD5认证不需要
注意,认证密码最少为八位字符。
SNMPv3的用户可以在运行时使用snmpusm创建。
你可以使用net-snmp-config –create-snmpv3-user 命令来创建snmpv3用户而不需要关注配置命令。
配置SNMPv3用户时需要将含有配置项文件放置在/var/net-snmp/snmpd.conf文件中。
当snmpd启动时,会在此文件读取这一行,并将其擦除,替换为加密过后的字符串。
这个加密过后的字符串为一个本地的加密串,即便不法将此加密串获取也不能够使用。
但是加密前的密码是可以的。
如果你想指定用户的engineID,你可以使用-e来指定一个十六进制的数。
你也可以将你的密码或者加密串用十六进制数来表示,不过前面需要加入-l或者-m标记。
SNMP传统的访问控制
绝大多数SNMP的简单控制只需要以下配置项
Rouser/rwuser 这两个配置项是针对SNMPv3
rocommunity/rwcommunity这两个配置项为之前版本的SNMP (v1、v2c)
rouser USER [noauth|auth|priv [OID | -V VIEW [CONTEXT]]]
rwuser USER [noauth|auth|priv [OID | -V VIEW [CONTEXT]]]
这两项配置项用来指定SNMPv3用户;指定此用户的可读(Get、Getnext)或者是读写权限(Get、Getnext、Set);默认情况下,这些用户在经过认证之后,可以访问整个MIB树信息。
在这其中noauth 是安全最低的不需要认证和加密。
而priv是安全性最高的,既要求认证又要求加密请求报文。
OID为提供访问的子树。
CONTEXT可以省略。
也可以写成“Context*”或者“*”这种通配模式。
rocommunity COMMUNITY [SOURCE [OID | -V VIEW
[CONTEXT]]]
rwcommunity COMMUNITY [SOURCE [OID | -V VIEW [CONTEXT]]]
这两项配置项用来指定SNMPv1和SNMPv2c 的认证字符串。
与上面类同但是此认证字符串不能选择控制级别(即只能是非认证非加密形式)。
SOURCE可以用来指定响应哪些系统的请求。
这将在com2sec中定义。
注意:此配置项用在IPv4中即SOURCE中定义为IPv4系统的请求。
rocommunity6 COMMUNITY [SOURCE [OID | -V VIEW [CONTEXT]]] rwcommunity6 COMMUNITY [SOURCE [OID | -V VIEW [CONTEXT]]] 这两项与上面两项类同,只是SOURCE选项接收IPv6的客户端请求。
在上述所列出的配置项中,每一种情况最好只配置一条。
如:指定一个SNMPv3用户(或者一个commounity string)既有可写权限又有只读权限。
因为可写的权限将可读的权限都包含了。
更为复杂的权限控制就需要另外的控制结构。
如果不同的SNMPv3用户(community string)具有相同的权限,那么使用VACM配置管理可能更为高效。
VACM配置
更为灵活的配置权限我们可以使用以下四个配置项
com2sec, group, view and access。
这四个配置项将提供VACM的配置组功能。
com2sec [-Cn CONTEXT] SECNAME SOURCE COMMUNITY com2sec6 [-Cn CONTEXT] SECNAME SOURCE COMMUNITY 将SNMPv1或者SNMPv2c的community string映射到一个加密的名称或者SOURCE组合。
SOURCE可以为指定的ip地址或者所有的ip地址(default)。
可以使用指定的主机名字、子网(包括,IP/掩码或者扩展子网形式如:10.10.10.0/255.255.255.0 10.10.10.0/24)或者IPv6的方式进行指定。
同一个community string 可以被指定到多个配置项中(假定这些配置项的SOURCE都不相同)。
请求中ip地址与communitystring 与配置文件SOURCE和community string匹配将会被接受。
不同的source/community组合可以映射到一个密码中。
如果指定CONTEXT,在发送请求时要使用-Cn标识。
CONTEXT 字段将会与SNMPv3中的CONTEXT进行匹配,完成community的事情。
com2secunix [-Cn CONTEXT] SECNAME SOCKPATH COMMUNITY
此配置项是unix上的com2sec配置项。
group GROUP {v1|v2c|usm} SECNAME
将加密的名称映射到一个组名中。
几个不同的group配置项可以指定同一个组名。
这样保证多个不同的用户或者community string有一个相同的访问权限。
注意:一个组必须建立在两个以community为基础的分离模型。
通常情况下一条com2sec 配置项跟随者两天group配置项。
view VNAME TYPE OID [MASK]
用来控制访问数据信息。
不同的配置项可以使用相同的VNAME。
Type提供两个选择included/excluded。
access GROUP CONTEXT {any|v1|v2c|usm} LEVEL PREFX READ WRITE NOTIFY 将一个组的用户/communities映射到三个View中。
LEVEL可以是noauth, auth, or priv。
PREFX为指定CONTEXT 如何匹配。
对于v1或者是v2c LEVEL选项必须是noauth。