注意:snmp V3,需要需要关闭selinux和防火墙;
关闭selinux方法:
#vi /etc/selinux/config
将文件中的SELINUX="" 为 disabled ,然后重启。
关闭防火墙方法:
service iptables stop
开机不启动防火墙:
chkconfig iptables off
1. 检查服务器是否已经安装了 net-snmp服务,如果已经安装跳过此环节。
安装前期安装必备套件net-snmp net-snmp-devel net-snmp-utils
说明:
net-snmp:提供了一个入口,使得监控服务器可以通过snmp协议从这个入口与被监控机器通信
net-snmp-devel: 是为了使用net-snmp-config, net-snmp-utils是为了使用snmpwalk
net-snmp-libs: 提供了运行需要的库文件
net-snmp-utils: 提供了一套工具,可以利用snmp协议进行通信
我的安装如下:
yum -y install net-snmp net-snmp-devel net-snmp-utils
2. 已经成功后,开始配置/etc/snmp/snmpd.conf
如果已经启动,先停止后再进行配置:
[root@hxweb101 ~]$ service snmpd stop
#注意:-a是密码,-A是密码加密方式,而用户名跟在最后面
# -ro表示只读用户组,可以采集信息,但是不能更改系统设置
#说明:在snmpwalk测试的时候,-a表示加密方式,-A是密码,所以这一点很重要 [root@hxweb101 ~]$ net-snmp-config --create-snmpv3-user -ro -a mypass -A MD5 myname
#执行完成后会输出
#adding the following line to /var/lib/net-snmp/snmpd.conf:
# createUser myname MD5 "Jian.kong@bao1" DES
#adding the following line to /etc/snmp/snmpd.conf:
# rouser myname
注意这里,配置文件的路径发生了变化:
Centos .X是: /var/net-snmp/snmpd.conf
Centos .X是: /var/lib/net-snmp/snmpd.conf
然后启动,进行测试:
[root@hxweb101 ~]$ service snmpd start
[root@hxweb101 ~]$ snmpwalk -v3 -u myname -l auth -a MD5 -A mypass 127.0.0.1 if #如果输出下面信息,说明配置成功:
IF-MIB::ifIndex. = INTEGER:
IF-MIB::ifIndex. = INTEGER:
IF-MIB::ifIndex. = INTEGER:
IF-MIB::ifDescr. = STRING: lo
IF-MIB::ifDescr. = STRING: em1
IF-MIB::ifDescr. = STRING: em2
IF-MIB::ifType. = INTEGER: softwareLoopback()
IF-MIB::ifType. = INTEGER: ethernetCsmacd()
IF-MIB::ifType. = INTEGER: ethernetCsmacd()
IF-MIB::ifMtu. = INTEGER:
IF-MIB::ifMtu. = INTEGER:
IF-MIB::ifMtu. = INTEGER:
....
....
IF-MIB::ifOutDiscards. = Counter32:
IF-MIB::ifOutDiscards. = Counter32:
IF-MIB::ifOutDiscards. = Counter32:
IF-MIB::ifOutErrors. = Counter32:
IF-MIB::ifOutErrors. = Counter32:
IF-MIB::ifOutErrors. = Counter32:
IF-MIB::ifOutQLen. = Gauge32:
IF-MIB::ifOutQLen. = Gauge32:
IF-MIB::ifOutQLen. = Gauge32:
IF-MIB::ifSpecific. = OID: SNMPv2-SMI::zeroDotZero
IF-MIB::ifSpecific. = OID: SNMPv2-SMI::zeroDotZero
IF-MIB::ifSpecific. = OID: SNMPv2-SMI::zeroDotZero
我创建用户的时候没有没有设定privpass,是为了简化过程,如果要创建带privpass验证,而且这个privpass也可以选择不同于密码的加密方式,比如,我密码采用MD5加密,而privpass采用AES加密,增加破解难度,那么可以这样写
net-snmp-config:
--create-snmpv3-user [-ro] [-a authpass] [-x privpass] [-X DES] [-A MD5|SHA] [username]
snmpwalk V3验证常用参数:
-v |2c| specifies SNMP version to use
-u USER-NAME set security name (e.g. bert)
-l LEVEL set security level (noAuthNoPriv|authNoPriv|authPriv)
-a PROTOCOL set authentication protocol (MD5|SHA)
-A PASSPHRASE set authentication protocol pass phrase
-x PROTOCOL set privacy protocol (DES|AES)
-X PASSPHRASE set privacy protocol pass phrase
snmpwalk V2c/V1验证常用:
-c COMMUNITY set the community string
例如,SNMP V3 用户创建实例:
[root@hxweb101 ~]$ net-snmp-config --create-snmpv3-user -ro -a mypass -A MD5 -x myprivpass -X DES myname #snmpwalk要这样写
[root@hxweb101 ~]$ snmpwalk -v3 -u myname -l authPriv -a MD5 -A mypass -x DES -X myprivpass 127.0.0.1 if
命令执行之后将自动建立新的配置文件snmpd.conf,而内容也十分简单。只有用户名和权限,而关于认证方式的信息则会存储在/var/net-snmp/snmpd.conf文件中。
[root@hxweb101 ~]$ cat /var/lib/net-snmp/snmpd.conf
3.设置IPtables,确保安全
接下来的事情,就是就是开放指定IP访问161的UDP端口
#注意:
# . 假设服务器外网网卡是em1,请根据实际情况修改。
# . 只有x.x.x.x可以发送UDP数据包到你的服务器的161端口 #--------Specail Setting for SNMP --------------#
iptables -A INPUT -i em1 -p udp -s x.x.x.x --dport -j ACCEPT
iptables -A INPUT -i em1 -p udp -s x.x.x.x --dport -j ACCEPT
原文:http://blog.hexu.org/archives/1698.shtml/comment-page-1