Linux SNMP - linux oop.com.cn 开源技术学习 - 面向对象技术开发

面向对象技术开发

会员投稿 投稿指南 站长资讯通告:
您的位置: 首页 > 计算机相关技术 > 操作系统 > Linux > 正文

Linux SNMP

来源: 360 阅读:

目录

1Linux SNMP一键安装SNMP服务

 以下的示例采用CentOS Linux环境,但它同样适用于其它Linux发行版。

编译和安装

请使用root账号或者使用sudo权限安装,否则会提示权限错误。

首先我们需要下载Net-SNMP的源代码,请选择一个相对比较新的SNMP版本,例如5.7.2(当前最新版本),地址如下:

http://download.cloud.360.cn/yjk/net-snmp.tar.gz

使用wget下载代码:

[email protected]~# wget http://download.cloud.360.cn/yjk/net-snmp.tar.gz

接下来对下载的源代码包进行解压缩,如下:

[email protected]~# tar xzvf net-snmp.tar.gz

然后通过源码的configure来生成编译的Makefile规则,如下:

[email protected]~# cd net-snmp-5.7.2
[email protected]~# ./configure --prefix=/usr/local/snmp --with-mib-modules=ucd-snmp/diskio -enable-mfd-rewrites

请注意参数:

--prefix=/usr/local/snmp

选项,选择snmp的安装路径。

--with-mib-modules=ucd-snmp/diskio

选项,可以让服务器支持磁盘I/O监控。

–enable-mfd-rewrites

选项,允许用新的MFD重写mid模块,这样编译的snmp就能支持64位的计数器,能正常采集到流量。

SNMP在安装时需要选择使用的协议版本,包含三个选项:1,2(for 2c)和3。为了安全, 1 版本不能添加snmp监控,所以不推荐使用!其他选项直接跳过就可以啦。

接下来,开始编译和安装:

[email protected]~# make
[email protected]~# make install

到现在为止,我们已经拥有了可以运行的SNMP程序,它位于/usr/local/snmp/sbin/snmpd,在启动它之前,我们还要进行一些必要的设置。

设置安全的验证方式

将SNMP代理程序暴露给网络上的所有主机是很危险的,为了防止其它您不允许的主机访问你的SNMP代理程序,我们需要在SNMP代理程序上加入身份验证机制。

SNMP支持不同的验证机制,这取决于不同的SNMP协议版本,云监控目前支持v2c和v3两个版本,其中v2c版本的验证机制比较简单,它基于明文密码和授权IP来进行身份验证,而v3版本则通过用户名和密码的加密传输来实现身份验证,我们建议使用v3,当然,只要按照以下的介绍进行配置,不论是v2c版本还是v3版本,都可以保证一定的安全性,你可以根据情况来选择。

请注意,SNMP协议版本和SNMP程序版本是两回事,刚才说的v2c和v3是指SNMP通用协议的版本,而Net-SNMP是实现SNMP协议进行通信的程序套件,目前它的最新版本是5.7.2。

★ v2c

先来看如何配置v2c版本的SNMP配置,2c版本的SNMP配置有两种配法,在此我们只介绍最简单的配置方式,如果想了解更多,请您自行查找。

如果您是按照我们刚才教由你的方式进行的手工编译的SNMP,首先我们来创建snmpd的配置文件,如果不存在,请在以下目录创建它如下所示:

[email protected]~# vim /usr/local/snmp/share/snmp/snmpd.conf

然后我们需要创建一个只读帐号,也就是read-only community,在snmpd.conf中添加以下内容:

rocommunity yunjiankong default

注意:添加用户时,请在添加完成后重启snmp服务,这样添加才会成功。同时由于云监控可能会变动监测点的IP,到时候就需要重新设置,还请注意

这里的“rocommunity”表示这是一个只读的访问权限,云监控只可以从你的服务器上获取信息,而不能对服务器进行任何设置。

紧接着的“yunjiankong”叫做community,相当于snmp的密码,很多平台喜欢使用“public”这个默认字符串。这里的“yunjiankong”只是一个样例,请务必将此字符串设置复杂,请不要使用默认的public,我们的样例yunjiankong等字串

最右的“default”代表云监控能访问您的服务器的SNMP,目前云主机监控处于不断迭代开发状态,所以我们暂时还未最终确定客户端的固定IP(目前暂有:101.199.100.150新加入), 220.181.150.98, 180.153.229.230,220.181.150.125, 103.28.10.223。但是会经常变动,还请关注我们的官方说明)

如果想限定指定IP访问您的SNMP,只需要将default替换成您想要被访问的IP,多行需要填写多个:

rocommunity yunjiankong 101.199.100.150
rocommunity yunjiankong 220.181.150.98
rocommunity yunjiankong 180.153.229.230
# 更多IP请按以上格式填写

所以,以上这段配置中,只有“yunjiankong”是需要你进行修改的(如果指定IP,会在以后会可能需要修改),同时在云监控上添加服务器并选择2c版本时,只需要您提供这个字串作为密码即可。

★ v3

当然,我们强烈建议您使用v3版本来进行身份验证。对于一些早期版本的Linux分发版,其内置的SNMP程序可能并不支持v3,所以我们建议您按照前边介绍的方法,编译和安装最新的Net-Snmp。

v3使用的是另一种验证方式,会比v2c版本复杂一些,我们需要创建一个v3的帐号,我们同样修改以下配置文件:

[email protected]~#  vim /usr/local/snmp/share/snmp/snmpd.conf

然后添加一个只读帐号,如下:

rouser yunjiankong auth

注意:添加用户时,请确保snmp服务没有运行,否则无法添加。

在v3中,“rouser”用于表示只读帐号类型,随后的“yunjiankong”是指定的用户名,后边的“auth”指明需要验证。

接下来,我们还要添加“yunjiankong”这个用户,这就是v3中的特殊机制,我们打开以下配置文件:

[email protected]~#  vim /var/net-snmp/snmpd.conf

这个文件会在snmpd启动的时候被自动调用,我们需要在它里边添加创建用户的指令,如下:

createUser yunjiankong MD5 mypassword

这行配置的意思是创建一个名为“yunjiankong”的用户,密码为“mypassword”,并且用MD5进行加密传输。这里要提醒的是:

密码至少要有8个字节

这是SNMP协议的规定,如果小于8个字节,通信将无法进行。

值得注意的是,一旦snmpd启动后,出于安全考虑,以上这行配置会被snmpd自动删除,当然,snmpd会将这些配置以密文的形式记录在其它文件中,重新启动snmpd是不需要再次添加这些配置的,除非你希望创建新的用户。

以上配置中的用户名、密码和加密方式,在云监控添加服务器的时候需要添加。

启动SNMP代理程序

经过配置后,现在可以启动snmpd  (最好使用绝对路径启动),如下:

/usr/local/snmp/sbin/snmpd

如果要关闭,则可以直接kill这个进程,如下:

killall -9 snmpd

增强的安全机制

请注意,此步并不是必须要进行的步骤,建议如果您了解linux网络防火墙(iptables)才进行设置,否则可能导致您的网站无法被访问到。正常情况下如果不暴露您的服务器ip的情况下,snmp是非常安全的。

有了以上的验证机制,你就可以放心的使用SNMP代理了。但是,如果你的SNMP代理程序版本较低,可能会有一些别有用心的破坏者利用一些固有的漏洞进行破坏,比如发送较长的数据导致SNMP代理程序内存泄漏或者拒绝服务等,为此,你还可以使用防火墙(iptables)来进行增强的安全过滤。

在Linux中,我们用iptables来实现防火墙,一般情况下,除了流入指定端口的数据包以外,我们应该将其它流入的IP数据包抛弃。你可能已经配置了一定的防火墙规则,那么只要增加针对SNMP的规则即可。

SNMP代理程序默认监控在udp161端口,为你的iptables增加以下规则:

iptables -A INPUT -i eth0 -p udp -s 220.181.150.98 --dport 161 -j ACCEPT
iptables -A INPUT -i eth0 -p udp -s 180.153.229.230 --dport 161 -j ACCEPT

以上设置中假设服务器外网网卡是eth0,你可以根据实际情况来修改。

这样一来,只有云监控的专用监控器可以发送UDP数据包到你的服务器的161端口,与SNMP代理程序进行通信。

2Windows SNMP

Windows的snmp程序安装起来很简单,这里以Windows Server 2003为例,对于其它Windows服务器产品,方法类似。

首先你必须确认当前的Windows组件中是否已经安装了SNMP协议,很简单,在控制面板的“添加或删除程序”中,查看已安装的Windows组件,在“管理和监控工具”中你会发现“简单网络管理协议(SNMP)”,如果没有安装,则打勾进行安装,期间你可能需要定位Windows安装盘,这些对你来说并不困难。

\

SNMP组件安装成功后,接下来打开“管理”菜单中的“服务”。

\

找到SNMP Service,双击它进行配置。这里需要注意的是,在前边安装SNMP协议后,SNMP Service会默认启动,而它下边的SNMP Trap Service是不需要开启的,如果它已被开启,请关闭它。

\

在SNMP Service的配置窗口中,你只需要切换到“安全”选项卡,按照以下的图示进行填写,这里的团体名称就是前边介绍过的SNMP v2c版本中的密码字符串,这里的“public”只是一个例子,你可以填写其它的字符串,随后在云监控中添加服务器时,选择2c协议,同时在Community输入框中填写这个团体名称即可。

另一个需要特别设置的地方是下边的授权主机,因为云监控目前的监测点IP无法具体确定,建议选择接受来自任何主机的SNMP数据包。 如果选择“接受来自这些主机的SNMP数据包”,则在下边的指定主机中添加“101.199.100.150新加入),220.181.150.98, 180.153.229.230,220.181.150.125, 103.28.10.223”这几个IP,这是云监控的专用监控点,使得除此之外的其它服务器无法获取你的服务器监控信息(暂时不推荐用户指定IP访问)。

\

一切配置好后,保证SNMP Service已经开启,并且如果以后重启了服务器,也请来检查是否开启了SNMP Service,当然,如果该服务被关闭,云监控会在服务器监控视图中提醒你。

另外,还要保证你的服务器已经打开了SNMP Service的端口,默认为UDP 161。如果你启用了系统防火墙,那么请添加这个例外端口,打开本地连接->属性->高级->防火墙->例外,添加端口如下:

\地连接->属性->高级->防火墙->例外->
添加端口.

\

然后就可以在云监控中添加服务器了。

3测试SNMP

在SNMP程序安装部署完成之后,只要在添加服务器页面填入刚配置好的服务器SNMP设置后点击下一步。


Tags:Linux SNMP