centos 编译安装net-snmp 5.6.2
1、准备环境
yum -y install make gcc gcc-c++ gcc-g77 openssl openssl-devel
2、编译和安装
首先我们需要下载Net-SNMP的源代码,
官方地址:
http://sourceforge.net/projects/net-snmp/files/net-snmp/
下载net-snmp-5.6.2
下载地址:http://pan.baidu.com/s/1gd5TLT5
接下来对下载的源代码包进行解压缩,
tar xzvf net-snmp-5.6.2.1.tar.gz
然后通过configure来生成编译规则,
cd net-snmp-5.6.2.1
./configure \
--prefix=/server/snmp \
--with-mib-modules=ucd-snmp/diskio \
--with-default-snmp-version="3" \
--with-sys-contact=yjken \
--with-sys-location="shanghai" \
--with-logfile="/server/snmp/log/snmpd.log" \
--with-persistent-directory="/var/net-snmp"
注意,以上的
--with-mib-modules=ucd-snmp/diskio
选项,可以让服务器支持磁盘I/O监控。
回车出现下面问题,可以直接回车而不用回答,系统会采用默认信息,其中日志文件默认安装在/var/log/snmpd.log.数据存贮目录默认存放在/var/net-snmp下。
配置默认snmp协议版本(1,2c,3),配置为v3版的话,支持登录验证功能,相对来说更安全了
--with-default-snmp-version="3"
配置该设备的联系人信息,也可以是邮箱地址
--with-sys-contact=yjken
配置该系统设备的地理位置
--with-sys-location="shanghai"
配置日志文件位置
--with-logfile="/server/snmp/log/snmpd.log"
配置数据存储目录
--with-persistent-directory="/var/net-snmp"
接下来,开始编译和安装:
make && make install
到现在为止,我们已经有了可以运行的SNMP代理程序,它位于/server/snmp/sbin/snmpd,在启动它之前,我们还要进行一些必要的设置。
3、设置安全的验证方式
将SNMP代理程序暴露给网络上的所有主机是很危险的,为了防止其它主机访问你的SNMP代理程序,我们需要在SNMP代理程序上加入身份验证机制。
SNMP支持不同的验证机制,这取决于不同的SNMP协议版本,v2c版本的验证机制比较简单,它基于明文密码和授权IP来进行身份验证,而v3版本则通
过用户名和密码的加密传输来实现身份验证,我们建议使用v3,当然,只要按照以下的介绍进行配置,不论是v2c版本还是v3版本,都可以保证一定的安全
性,你可以根据情况来选择。
注意一点,SNMP协议版本和SNMP代理程序版本是两回事,刚才说的v2c和v3是指SNMP协议的版本,而Net-SNMP是用来实现SNMP协议的程序套件。
v2c
先来看如何配置v2c版本的SNMP代理,我们来创建snmpd的配置文件,默认情况下它是不存在的,我们来创建它,如下:
vi /server/snmp/share/snmp/snmpd.conf
然后我们需要创建一个只读帐号,也就是read-only community,在snmpd.conf中添加以下内容:
rocommunity yjken 127.0.0.1
rocommunity yjken 192.168.0.230
注意:添加用户时,请确保snmp服务没有运行,否则无法添加。
注意,这里的"rocommunity"表示这是一个只读的访问权限,其它客户端只能从你的服务器上获取信息,而不能对服务器进行任何设置。
紧接着的"yjken"相当于密码,很多平台喜欢使用"public"这个默认字符串。这里的"yjken"只是一个例子,你可以设置其它字符串作为密码。
最右边的"127.0.0.1,192.168.0.230"代表指定的监控点IP,这意味着只有IP为"127.0.0.1" 或 "192.168.0.230"的机器有权限来访问你的SNMP代理程序。
所以,以上这段配置中,只有"yjken"是需要你进行修改的,从客户端访问时,需要提供这个字符串。
v3
当然,我们建议您使用v3版本来进行身份验证。对于一些早期版本的Linux分发版,其内置的SNMP代理程序可能并不支持v3,所以我们建议您按照前边介绍的方法,编译和安装最新的Net-Snmp。
v3支持另一种验证方式,需要创建一个v3的帐号,我们同样修改以下配置文件(默认情况下它是不存在的,我们来创建它。):
注意:我曾经安装的v2版协议,却用了默认的配置文件,总是报错,快漰溃了,就是因为默认的配置文件是v3格式的配置语法,v3版协议配置语法与v2版的不同了!
vi /server/snmp/share/snmp/snmpd.conf
然后添加一个只读帐号,
rouser yjken auth
注意:添加用户时,请确保snmp服务没有运行,否则无法添加。
可以看到,在v3中,"rouser"用于表示只读帐号类型,随后的"yjken"是指定的用户名,后边的"auth"指明需要验证。
接下来,需要先运行一下:
/server/snmp/sbin/snmpd -c /server/snmp/share/snmp/snmpd.conf &
执行后会生成/var/net-snmp/snmpd.conf配置文件,再使用命令结束这个进程:
killall -9 snmpd
接着我们还要添加"yjken"这个用户到配置文件中,这就是v3中的特殊机制,我们打开配置文件:
net-snmp版本为5.6.2的可以写入/var/net-snmp/snmpd.conf这个文件,而版本为5.6.2.1的,则须要写入/server/snmp/share/snmp/snmpd.conf 这个文件中
#5.6.2
vi /var/net-snmp/snmpd.conf
这个文件会在snmpd启动的时候被自动调用,我们需要在它里边添加创建用户的指令
#Only "createUser" tokens should be placed here by snmpd administrators
createUser yjken MD5 mypassword
#5.6.2.1
vi /server/snmp/share/snmp/snmpd.conf
这个文件会在snmpd启动的时候被自动调用,我们需要在它里边添加创建用户的指令
createUser yjken MD5 mypassword
#执行一下命令
/server/snmp/sbin/snmpd -c /server/snmp/share/snmp/snmpd.conf &
这行配置的意思是创建一个名为"yjken"的用户,密码为"mypassword",并且用MD5进行加密传输。这里要提醒的是:
密码至少要有8个字节
这是SNMP协议的规定,如果小于8个字节,通信将无法进行。
值得注意的是,一旦snmpd启动后,出于安全考虑,以上这行配置会被snmpd自动删除,当然,snmpd会将这些配置以密文的形式记录在其它文件中,重新启动snmpd是不需要再次添加这些配置的,除非你希望创建新的用户。
4、启动SNMP代理程序
经过配置后,现在可以启动snmpd,
/server/snmp/sbin/snmpd -c /var/net-snmp/snmpd.conf &
如果要关闭,则可以直接kill这个进程,
killall -9 snmpd
5、将snmpd加入开机启动
进入源码目录,如/root/net-snmp-5.6.2目录,将启动配置文件范例复制到/etc/init.d/目录:
cp /root/net-snmp-5.6.2/dist/snmpd-init.d /etc/init.d/snmpd
修改/etc/init.d/snmpd文件
将其中的
vi /etc/init.d/snmpd
prog="/usr/local/sbin/snmpd"
修改为
prog="/server/snmp/sbin/snmpd"
将其中的
[ -x $prog -a -f /usr/local/share/snmp/snmpd.conf ] || exit 0
修改为
[ -x $prog -a -f /var/net-snmp/snmpd.conf ] || exit 0
如果不修改/etc/init.d/snmpd文件,则创建软连接
ln -fs /server/snmp/sbin/snmpd /usr/local/sbin/snmpd
ln -fs /var/net-snmp/snmpd.conf /usr/local/share/snmp/snmpd.conf
or
ln -fs /server/snmp/share/snmp/snmpd.conf /usr/local/share/snmp/snmpd.conf
加入系统启动项
echo "/etc/init.d/snmpd start" >> /etc/rc.local
服务控制:
设置好上面的内容就可以用下列命令控制服务了。
启动:
/etc/init.d/snmpd start
停止:
/etc/init.d/snmpd stop
重新启动:
/etc/init.d/snmpd restart
服务状态:
/etc/init.d/snmpd status
6、增强的安全机制
有了以上的验证机制,你就可以放心的使用SNMP代理了。但是,如果你的SNMP代理程序版本较低,可能会有一些别有用心的破坏者利用一些固有的漏洞进行
破坏,比如发送较长的数据导致SNMP代理程序内存泄漏或者拒绝服务等,为此,你还可以使用防火墙(iptables)来进行增强的安全过滤。
在Linux中,我们用iptables来实现防火墙,一般情况下,除了流入指定端口的数据包以外,我们应该将其它流入的IP数据包抛弃。你可能已经配置了一定的防火墙规则,那么只要增加针对SNMP的规则即可。
SNMP代理程序默认监控在udp161端口,为你的iptables增加以下规则:
如果192.168.0.230不是该监控机IP的话,需要设置防火墙
iptables -A INPUT -i eth0 -p udp -s 192.168.0.230 --dport 161 -j ACCEPT
以上设置中假设服务器外网网卡是eth0,你可以根据实际情况来修改。
这样一来,192.168.0.230这台机器可以发送UDP数据包到你的服务器的161端口,与SNMP代理程序进行通信。
7、测试:
ln -fs /server/snmp/bin/* /usr/local/bin/
v2 输入 snmpget -v2c -cyjken localhost .1.3.6.1.2.1.1.1.0
v3 输入 snmpget -v3 -cyjken -uyjken -lauthNoPriv -aMD5 -Amypassword localhost .1.3.6.1.2.1.1.1.0
snmpwalk -v3 -cyjken -uyjken -lauthNoPriv -aMD5 -Amypassword localhost .1.3.6.1.2.1.1.1.0
如果能够得到数据则表明安装已经成功
附Security Levels in SNMPv3安全文档:
http://www.webnms.com/simulator/help/sim_network/netsim_conf_snmpv3.html#security_levels
centos 编译安装net-snmp 5.6.2的更多相关文章
- CentOS编译安装NodeJS+Express
NodeJS是基于Chrome’s Javascript runtime,也就是Google V8引擎执行Javascript的快速构建网络服务及应用的平台,其优点有: 在CentOS编译安装Node ...
- Centos编译安装PHP 5.5笔记
本篇是在 Centos 6.4 32bit 下编译安装 php 5.5.5 的笔记,接上篇 Centos编译安装Apache 2.4.6笔记.php 5.5.x 和 centos 源里面的 php 5 ...
- nginx php-fpm安装配置 CentOS编译安装php7.2
CentOS编译安装php7.2 介绍: 久闻php7的速度以及性能那可是比php5系列的任何一版本都要快,具体性能有多好,建议还是先尝试下再说.如果你是升级或新安装,那你首先需要考虑php7和程序是 ...
- CentOS编译安装nodejs
1. 从node.js官网下载最新版的node.js安装包,node.tar.gz wget https://nodejs.org/dist/v4.3.1/node-v4.3.1.tar.gz ...
- CentOS 编译安装 mysql
1.前期准备 1.1 环境说明: 操作系统: CentOS release 6.4 (Final) [查看命令 cat /etc/redhat-release ] mysql : mysql-5.6. ...
- CentOS编译安装lamp
LAMP环境搭建(编译安装CentOS+httpd2.2+mysql5.5+php5.4) 首先准备以下压缩包 <ignore_js_op> (1)编译安装apache 1.配置防火墙,开 ...
- CentOS编译安装Python3
前话 最近想学一下一门新的高级语言,无意中看到用python仿AIphaGo的github项目,就决定是他了. AIphaGo的Git传送门: https://github.com/Rochester ...
- CentOS编译安装LNMP环境
这里是教大家如何在centos下利用源码编译安装LNMP环境. 工具/原料 centos服务器一台 自用电脑一台 准备篇 配置好IP.DNS .网关,确保使用远程连接工具能够连接服务器 配置防火墙,开 ...
- CentOS编译安装emacs并配置
Liunxs中CentOS系列一向以稳定为目标,然而也会存在版本太旧的问题,emacs就是其中的一个,目前emacs都发行到25.2了,而CentOS上的emacs版本却还是23.1.所以需要下载源代 ...
- centos编译安装php5.6.20+nginx1.8.1+mysql5.6.17
LNMP 代表的就是:Linux系统下Nginx+MySQL+PHP这样的站点服务器架构. 本次实践需求: 实践centos6.5编译安装 LNMP生产环境 架构 web生产环境 使用 xcache ...
随机推荐
- 个人整理方幂和公式(∑i^k 公式)
有个Oier小学妹问了我一个Σi^k,i<=1e8 ,k<=1e6的问题,我认为这个用伯努利数列可能可以解决他的问题,所以整理了以下文章,给学弟学习学习~~~本人水平有限,也只能帮到这里了 ...
- 【Java学习笔记之六】java三种循环(for,while,do......while)的使用方法及区别
第一种:for循环 循环结构for语句的格式: for(初始化表达式;条件表达式;循环后的操作表达式) { 循环体; } eg: class Dome_For2{ public st ...
- Spring配置集群定时任务
正常配置定时任务的时候配置定时任务调度工厂的代码如下 <bean id="" class="org.springframework.scheduling.quart ...
- 《SpringMVC从入门到放肆》五、SpringMVC配置式开发(处理器适配器)
上一篇我们大致讲解了处理器映射器的处理流程以及跟了一下源码的执行流程.今天我们来了解一下处理器适配器. 一.适配器模式 在阎宏博士的<JAVA与模式>一书中开头是这样描述适配器(Adapt ...
- 安卓Acitivity的启动模式
活动的四大启动模式 Ps:除了standar模式外,其他启动模式都要在AndroidManifest.xml中设置 android:lauchMode的值 安卓活动的启动模式(LaunchMode)有 ...
- Oracle:对表的CREATE、ALTER、INSERT、RENAME、DELETE操作练习以及主外键约束
-创建一个student表,设定表的主键为学号CREATE TABLE student( sno VARCHAR2(10) PRIMARY KEY, --列级约束 sno VARCHAR2(20) C ...
- 织梦dedecms如何去除版权中的Power by DedeCms
很多站长在使用dedecms建站过程中,很多人都会调用到dedecms自带的powerby标签,这样在版权信息中就会多出Power by DedeCms这个连接.今天教大家如何去除. 工具/原料 de ...
- ubuntu-apache下隐藏thinkphp入口文件index.php
按照thinkphp手册中来讲,apache服务器下,隐藏thinkphp入口文件有3步: httpd.conf配置文件中加载了mod_rewrite.so模块 AllowOverride None ...
- Intellij idea 导入 jdbc
第一步,去官网https://dev.mysql.com/downloads/connector/j/ 下载驱动程序 第二步,解压压缩包,记住路径 第三步,打开你的idea工程,打开Project S ...
- ADO.NET复习总结(5)--工具类SqlHelper 实现登录
工具类SqlHelper 即:完成常用数据库操作的代码封装 一.基础知识1.每次进行操作时,不变的代码: (1)连接字符串:(2)往集合存值:(3)创建连接对象.命令对象:(4)打开连接:(5)执行命 ...