0x01 前言
我家里的服务器运行着许多虚拟机,之前想了解系统的状况,只能逐一通过SSH登录到系统里察看。登陆到系统里察看的信息是实时的,如果想了解半小时前,甚至一周前或者是一周内的数据却素手无策。
为此,我再开一台虚拟机,装上cacti,对服务器和虚拟机进行定时监控。我将在这里阐述我的net-snmp配置过程。
0x02 安装/运行
通过yum即可进行简单的安装:
yum install net-snmp net-snmp-utils -y
启动与设定开机启动:
#立即启动 systemctl start snmpd #开机启动 systemctl enable snmpd #检查启动状况 [root@test_1 ~]# ps -aux | grep snmpd root 1167 0.4 0.2 222840 10416 ? Ss 23:26 0:00 /usr/sbin/snmpd -LS0-6d -f
0x03 配置
首先需要配置防火墙,snmp默认端口事UDP 161端口,如果你需要使用snmp trap,那么还需要开放UDP 162端口。
snmp有三种安全模式,分别是:
- v1
- v2c
- v3
其中v1是不安全的,这里不作说明;v2c是基于共同体(community)的管理架构;v3是对数据进行鉴别和加密,提供较为安全的管理方式。
0x03.1 v2c
v2c的配置方法比较简单,只需要设置共同体(community)名称即可使用snmp协议访问snmp服务器。
#修改snmpd.conf vim /etc/snmp/snmpd.conf
主要的默认配置信息是这样的:
# First, map the community name "public" into a "security name" # sec.name source community com2sec notConfigUser default public #### # Second, map the security name into a group name: # groupName securityModel securityName group notConfigGroup v1 notConfigUser group notConfigGroup v2c notConfigUser #### # Third, create a view for us to let the group have rights to: # Make at least snmpwalk -v 1 localhost -c public system fast again. # name incl/excl subtree mask(optional) view systemview included .1.3.6.1.2.1.1 view systemview included .1.3.6.1.2.1.25.1.1 #### # Finally, grant the group read-only access to the systemview view. # group context sec.model sec.level prefix read write notif access notConfigGroup "" any noauth exact systemview none none
我们需要将其中的56、57行注释掉,增加:
#增加次行 view all included .1
注释掉第65行,增加:
access notConfigGroup "" any noauth exact all none none
完成后重启snmp程序:
#重启snmp systemctl restart snmpd
在本地测试:
snmpwalk -v 1 localhost -c public
输入上面命令后,你会发现突然间弹出许多东西,看得眼花缭乱。与MIB和OID的信息我有空再写文章介绍介绍。至此snmp v2c的管理架构配置已经完成。下面是snmp v3的配置方法:
0x03.2 v3
在配置snmp v3前请讲snmp关闭,以便添加用户:
#关闭snmp服务 systemctl stop snmpd
首先是修改snmpd.conf:
#修改snmpd.conf vim /etc/snmp/snmpd.conf
主要的默认配置信息是这样的:
# First, map the community name "public" into a "security name" # sec.name source community com2sec notConfigUser default public #### # Second, map the security name into a group name: # groupName securityModel securityName group notConfigGroup v1 notConfigUser group notConfigGroup v2c notConfigUser #### # Third, create a view for us to let the group have rights to: # Make at least snmpwalk -v 1 localhost -c public system fast again. # name incl/excl subtree mask(optional) view systemview included .1.3.6.1.2.1.1 view systemview included .1.3.6.1.2.1.25.1.1 #### # Finally, grant the group read-only access to the systemview view. # group context sec.model sec.level prefix read write notif access notConfigGroup "" any noauth exact systemview none none
在42行下面添加一个只读的账号:
#增加只读账号 rocommunity proj default
建立上面的账号,这里要注意的是:密码最少8个字符。
#修改文件 vim /var/lib/net-snmp/snmpd.conf #在空白处添加下面这行并保存退出 createUser proj MD5 12345678
完成后即可重新启动snmp服务:
#启动snmp服务 systemctl start snmpd
本地测试:
snmpwalk -v 3 -u proj -a MD5 -A 12345678 -l authNoPriv localhost
0x04 结语
在用过snmp后才发现,原来snmp也是一个很庞大的系统。我目前用它监控我的HP硬件温度、CPU使用率和电功率,还监控虚拟机的负载,包括centos7与windows系统。
我有空就将我所学到的snmp知识记录在这里。