Linux SNMP

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

编译和安装

首先我们需要下载Net-SNMP的源代码,选择一个版本,比如5.7.1,地址如下:

http://sourceforge.net/projects/net-snmp/files/net-snmp/5.7.1/

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

suse10:~ # tar xzvf net-snmp-5.7.1.tar.gz

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

suse10:~ # cd net-snmp-5.7.1
suse10:~ # ./configure --prefix=/usr/local/snmp --with-mib-modules=ucd-snmp/diskio

注意,以上的

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

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

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

suse10:~ # make
suse10:~ # 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.4.2.1。

v2c

先来看如何配置v2c版本的SNMP代理,我们来创建snmpd的配置文件,默认情况下它是不存在的,我们来创建它,如下:

suse10:~ # vi /usr/local/snmp/share/snmp/snmpd.conf

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

# rocommunity jiankongbao 60.195.249.83 自2012年2月21日起,此ip不再使用
rocommunity jiankongbao 60.195.252.107
rocommunity jiankongbao 60.195.252.110
# 如果您使用的是插件 此处的ip 应该安装采集器的机器的ip

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

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

紧接着的“jiankongbao”相当于密码,很多平台喜欢使用“public”这个默认字符串。这里的“jiankongbao”只是一个例子,你可以设置其它字符串作为密码。

最右边的“60.195.249.83,60.195.252.107,60.195.252.110”代表指定的监控点IP,这些IP地址是监控宝专用的监控点,这意味着只有监控宝有权限来访问你的SNMP代理程序。

所以,以上这段配置中,只有“jiankongbao”是需要你进行修改的,同时在监控宝上添加服务器的时候,需要提供这个字符串。

v3

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

v3支持另一种验证方式,需要创建一个v3的帐号,我们同样修改以下配置文件:

suse10:~ # vi /usr/local/snmp/share/snmp/snmpd.conf

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

rouser jiankongbao auth

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

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

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

suse10:~ # vi /var/net-snmp/snmpd.conf

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

createUser jiankongbao MD5 mypassword

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

密码至少要有8个字节

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

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

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

启动SNMP代理程序

经过配置后,现在可以启动snmpd,如下:

/usr/local/snmp/sbin/snmpd

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

killall -9 snmpd

增强的安全机制

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

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

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

# iptables -A INPUT -i eth0 -p udp -s 60.195.249.83 --dport 161 -j ACCEPT 自2012年2月21日起,不再使用
iptables -A INPUT -i eth0 -p udp -s 60.195.252.107 --dport 161 -j ACCEPT
iptables -A INPUT -i eth0 -p udp -s 60.195.252.110 --dport 161 -j ACCEPT

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

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

CentOS SNMP

 

安装 Net-SNMP

CentOS及其它RedHat系列产品提供了net-snmp的二进制包。我们可以直接从源里安装。

shell> yum install net-snmp net-snmp-devel net-snmp-utils

说明:net-snmp-devel是为了使用net-snmp-config, net-snmp-utils是为了使用snmpwalk。

配置 Net-SNMP

在笔者的试验环境下,CentOS下的net-snmp无法在selinux环境下正常使用v3。 如果您想使用snmp v3,请先禁用selinux。

shell> net-snmp-config --create-snmpv3-user -ro -A snmp@jiankongbao -a MD5 jiankongbao

以上命令,创建一个snmpv3用户,只读,使用MD5,用户名为jiankongbao,密码为snmp@jiankongbao。

注意:运行之前请先停用net-snmp服务。

shell> service snmpd stop

运行 Net-SNMP

运行 Net-SNMP 服务的方法比较简单,不过Net-SNMP服务的名字是snmpd。

shell> service snmpd start

您可能需要把它加入开机自动运行服务列表。

shell> chkconfig snmpd on

检测 Net-SNMP

我们可以使用 snmpwalk 来检测snmp服务是否正常开启。

shell> snmpwalk -v 3 -u jiankongbao -a MD5 -A "snmp@jiankongbao" -l authNoPriv 127.0.0.1 sysDescr

如果一切正常,就会返回正常结果。 有关snmpwalk的参数说明,请参见其man文档。

配置 防火墙

Net-SNMP 使用 udp 协议,161端口。 同时,我们会从以下三个IP访问您的服务器。

  • 60.195.249.83 自2012年2月21日起,不再使用
  • 60.195.252.107
  •   60.195.252.110

一个可能的配置文件是:

## -I INPUT -p udp -s 60.195.249.83 --dport 161 -j ACCEPT
-I INPUT -p udp -s 60.195.252.107 --dport 161 -j ACCEPT
-I INPUT -p udp -s 60.195.252.110 --dport 161 -j ACCEPT

说明:以上只是一个可能的配置。请您在写之前明白每一句话的含义,而不是直接复制。要不然如果这里异常的出现

-I INPUT -j DROP

时,您就只能哭着骂我了,嘻嘻。

linux 安装开启SNMP协议,最下面是yum安装的更多相关文章

  1. linux中开启snmp协议

    1.安装软件#yum -y install net-snmp 2.修改配置文件#vim /etc/snmp/snmpd.conf确保snmpd.conf文件中包含以下绿色内容:com2sec notC ...

  2. 华为Quidway S5700开启SNMP协议

    开启SNMP协议通过Console口登录主要用于交换机第一次上电或者本地配置.或者无法通过远程访问时,可通过Console口登录.如何才能通过Console口登录交换机呢?在配置通过Console口配 ...

  3. [Linux]Linux下开启snmp支持IPV4和IPV6

    SNMP简介 简单网络管理协议(SNMP),由一组网络管理的标准组成,包含一个应用层协议(application layer protocol).数据库模型(database schema)和一组资源 ...

  4. [Linux]Linux下修改snmp协议的默认161端口

    一.Linux SNMP的配置 SNMP的简介和Linux下IPV4,IPV6地址的snmp协议开启可以参考上一个随笔:[Linux]CentOS6.9开启snmp支持IPV4和IPV6 二.修改默认 ...

  5. ESXI开启snmp协议方法

    公司用VMware做虚拟化,15+HPE 服务器做集群,现需要用zabbix监控其状态,于是想通过打开主机的snmp协议来采集数据,监控其状态,注意其数据是ESXI系统返回的. ssh登录到ESXI上 ...

  6. 最简单实用的MongoDB安装教程:在CentOS中使用 yum 安装MongoDB及服务器端配置详解

    一.准备工作: 运行yum命令查看MongoDB的包信息 [root@vm ~]# yum info mongo-10gen (提示没有相关匹配的信息,) 说明你的centos系统中的yum源不包含M ...

  7. linux应用之mysql数据库指定版本的yum安装(centos)

    A Quick Guide to Using the MySQL Yum Repository Abstract The MySQL Yum repository provides RPM packa ...

  8. 用SNMP协议实现系统信息监控--Windows Server 2008

    简单了解: SNMP简单网络管理协议,是一种属于应有层的协议,主要有三个部分组成,被管理部分.代理部分和网络管理系统. 被管理部分是一个网络节点,也称为网络单元.SNMP代理是被管理设备上的一个网络管 ...

  9. 【转载】 java利用snmp4j包来读取snmp协议数据(Manager端)

    https://www.cnblogs.com/xdp-gacl/p/4187089.html http://doc.okbase.net/yuanfy008/archive/265663.html ...

随机推荐

  1. idea maven项目模块中的Content Root

  2. 定义查询构建器IFeatureLayerDefinition

    在宗地出图,需要实现,只显示某一户人的地块.在ArcMap里,有个定义查询,可只显示过滤后的要素. 在代码中,也比较好实现,使用IFeatureLayerDefinition接口即可. IFeatur ...

  3. 随机数的生成:给定1-n的随机数生成器randn(),生成1-m的随机数

    1.当m < n时比较简单: 只当randn()生成的数落在1-m上时,就输出,否则继续生成: 2.当m > n时就比较麻烦一点, 基本思路还是和第一种情况是一样的,问题是怎样才能利用ra ...

  4. bitBucket readme文件图片添加

    bitBucket一个和github一样的强大的代码托管站点,前者支持免费无限的私有仓库:后者私有仓库要付费: 在bitbucket项目中可以使用markDown语法创建一个README.md文件,但 ...

  5. Python 转义符

    定义字符串前面我们讲解了什么是字符串.字符串可以用''或者""括起来表示.如果字符串本身包含'怎么办?比如我们要表示字符串 I'm OK ,这时,可以用" "括 ...

  6. linux(Centos)下编译安装gcc4.8.2

    欢迎转载.转载请注明原文地址:http://blog.csdn.net/majianfei1023/article/details/46811159 近期要用到c++ 11,所以没办法仅仅得把那台ce ...

  7. RHEL 7 基础配置

    一.修改运行级别 查看运行级别: [root@rhel7Oracle ~]# systemctl get-defaultgraphical.target [root@rhel7Oracle ~]# r ...

  8. 分享阿里云SLB-负载均衡的实现基本原理架构

    负载均衡技术原理浅析 https://help.aliyun.com/knowledge_detail/39444.html?spm=5176.7839438.2.6.XBbX5l 阿里定制版的LVC ...

  9. 携程实时大数据平台演进:1/3 Storm应用已迁到JStorm

    携程大数据平台负责人张翼分享携程的实时大数据平台的迭代,按照时间线介绍采用的技术以及踩过的坑.携程最初基于稳定和成熟度选择了Storm+Kafka,解决了数据共享.资源控制.监控告警.依赖管理等问题之 ...

  10. Linux中内存挂载到目录下

    [日期:2012-11-14]   /dev/shm是linux下的一块共享内存结构.默认大小是真实内存的一半.它用来存储进程间通讯时的一些共享数据结构.在物理内存足够时,会在内存中进行数据交换,如果 ...