linxu安装SNMP

时间:2021-10-10 02:42:13

http://wiki.jiankongbao.com/doku.php/%E6%96%87%E6%A1%A3:%E5%AE%89%E5%85%A8%E6%8C%87%E5%BC%95#linux_snmp

安全指引

以下内容将帮助您更加安全的在监控宝上创建各类监控项目。

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

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

Windows SNMP

在Windows服务器上开启SNMP服务非常简单,您可以参考http://blog.jiankongbao.com/?p=185

MySQL 监控

创建MySQL权限

您需要在被监控的MySQL服务器上为监控宝创建一个专用的MySQL用户,这样做的好处是:

  • 与您的其它MySQL用户进行有效隔离,独立管理。
  • 对该用户进行受限管理,不需要给予任何MySQL权限。
  • 指定监控宝的访问IP地址,阻止其它非法访问。

操作非常简单,在MySQL中操作如下:

CREATE USER 'jiankongbao'@'60.195.252.106' IDENTIFIED BY  'your_password';
CREATE USER 'jiankongbao'@'60.195.252.108' IDENTIFIED BY 'your_password';
# CREATE USER 'jiankongbao'@'60.195.249.83' IDENTIFIED BY 'your_password';

在以上操作中,我们创建的MySQL用户名为“jiankongbao”,密码为“your_password”,建议您对其进行修改。除此之外,目前我们不需要对该MySQL账户授予任何权限。

同时,监控宝目前指定的授权IP地址为:60.195.252.106、60.195.252.108,请同时添加,随后如有变更,我们会及时通知用户。

防火墙安全配置

尽管以上的MySQL配置已经相当安全,您仍然可以通过防火墙来保护您的MySQL服务器,以Linux的iptables为例,您可以仅开放监控宝指定IP地址来访问MySQL服务器的端口。

iptables操作如下:

iptables -A INPUT -i eth0 -p tcp -s 60.195.252.106 --dport 3306 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp -s 60.195.252.108 --dport 3306 -j ACCEPT
 
# iptables -A INPUT -i eth0 -p tcp -s 60.195.249.83 --dport 3306 -j ACCEPT

注意:在MySQL或者防火墙中指定授权IP地址的时候,请只开放我们指定的IP地址,而不要直接开放整个C类网段,比如60.195.252.0/24,因为该网段中其它服务器不在我们的可控范围内。

Apache 监控

修改httpd.conf

在添加Apache监控之前,我们需要开启Apache的status模块,以Apache2.x版本为例,我们需要修改httpd.conf,增加以下配置段:

ExtendedStatus On
<Location /server-status>
SetHandler server-status
Order deny,allow
Deny from all
Allow from 60.195.252.106 60.195.252.108
# Allow from 60.195.249.83
</Location>

这样一来,假如你的Apache所在服务器的域名和IP地址为

www.domain.com -> 10.0.0.1

那么,Apache的状态页面地址便为:

http://www.domain.com/server-status

或者

http://10.0.0.1/server-status

受限访问设置

我们当然不希望其它人浏览status页面,所以您可以做一些限制,首先,对于默认的status地址,您可以进行修改,比如将:

<Location /server-status>

修改为:

<Location /my-domain-status>

其次,您已经看到,我们提供了指定的授权IP地址:60.195.252.106、60.195.252.108、60.195.249.83,您可以仅授权这个地址访问您的status页面。

正确的Apache状态页

我们在分析Apache状态时,需要页面包括以下内容:

  • Apache Server Status
我们以此标记来判断是否为Apache状态页面
  • Current Time 与 Restart Time
我们需要以上两个标记来得出Apache启动时间及其它数据
  • Total accesses
我们需要这个来(间接)统计吞吐率
  • requests currently being processed
我们需要此数据统计并发连接数

对于正常的Apache状态页面来说,都会提供以上值。如果出现“很抱歉,您填写的URL不是正确的Apache状态页面地址”,请您认真检查,是否全部满足了以上的要求。

注意:以上只是部分必要条件,不是充要条件。

Lighttpd 监控

Lighttpd的状态监控依赖于mod_status模块,幸运的是,Lighttpd缺省已经内置了mod_status模块,我们要做的就是打开配置文件lighttpd.conf,开启这个模块,也就是删除模块前边的“#”注释符,比如:

server.modules              = (
# "mod_rewrite",
# "mod_redirect",
# "mod_alias",
"mod_access",
# "mod_trigger_b4_dl",
# "mod_auth",
"mod_status",
"mod_fastcgi",
"mod_accesslog" )

为了便于描述,以上配置部分省略了其它的模块。

然后,在lighttpd.conf中找到以下部分:

#### status module
status.status-url = "/server-status"

默认情况下以上语句是被注释的,同样,删掉注释符,保存配置文件,重启lighttpd,大功告成。

假如lighttpd所在服务器的IP为10.0.0.1,同时指向它的域名为www.domain.com。那么,这样一来,状态页面便是:

http://10.0.0.1/server-status

或者

http://www.domain.com/server-status

最后,建议您修改默认的server-status,比如:

#### status module
status.status-url = "/my-lighttpd-status"

Nginx 监控

需要注意的是,Nginx默认安装不包含状态模块stub_status,所以,在编译Nginx的时候,需要添加以下参数:

--with-http_stub_status_module

一旦包含stub_status模块后,我们就可以在配置文件nginx.conf中开启状态页面:

http {
server {
listen 80;
server_name localhost; location / {
root html;
index index.html index.htm;
} location /nginx-status {
stub_status on;
access_log off;
}
}
}

以上配置文件中,我们实际增加的部分是:

        location /nginx-status {
stub_status on;
access_log off;
}

同样,假如Nginx所在服务器的IP为10.0.0.1,同时指向它的域名为www.domain.com,这样一来,Nginx的状态页面便是:

http://10.0.0.1/nginx-status

或者

http://www.domain.com/nginx-status

同样,建议您将以上示例中的nginx-status修改为其它字符串。

另外,Nginx的stub_status也支持授权IP的配置,您可以参考Nginx的手册,监控宝提供的服务监控点IP地址为:

60.195.252.106
# 60.195.249.83

linxu安装SNMP的更多相关文章

  1. Powershell批量安装SNMP服务

    我要给node5-8的节点都安装snmp服务 如果不知道要安装的服务的名字,用get-windowsfeature 能显示出来所有的名字 Invoke-Command -ComputerName no ...

  2. Linux安装snmp

    1.yum安装 yum -y install net-snmp* 2.修改配置文件/etc/snmp/snmpd.conf com2sec notConfigUser default public 默 ...

  3. CentOS 7使用yum安装SNMP教程

    一.安装SMNP yum install -y net-snmp net-snmp-utils 可以理解为net-snmp是服务端,net-snmp-utils是客户端工具集:如果机器上只需要搭建服务 ...

  4. 学习MongoDB&lpar;一&rpar; 如何在Linxu安装与启动

    1.官方下载地址 https://www.mongodb.org/downloads#production,选择对应的Linxu版本. 2.mkdir -p /usr/mongodb 创建一个目录用来 ...

  5. Linxu安装Tomcat与Jdk并卸载自带OpenJdk

    下载安装tomcat 1.下载apache-tomcat-7.0.47.tar.gz tomcat压缩包上传到linxu服务器 2.cd到文件存放目录使用(tar -xvzf apache-tomca ...

  6. CentOS 下安装 SNMP 服务

    CentOS 中搭建 SNMP 服务 0.前言 首先这个服务我不知道有什么用,学习CCNA的也许有了解.所以这里仅仅只是教做题,下面还有一些搜到的配置文件希望会大家有所帮助. 简单网络管理协议(SNM ...

  7. Linxu 安装Scala

    在安装Scala的时候遇到以下错: Exception in thread "main" java.lang.NoClassDefFoundError: scala.tools.n ...

  8. Ubuntu 安装snmp报Unlinked OID in IPATM-IPMC-MIB&colon; marsMIB &colon;&colon;&equals; &lbrace; mib-2 57 &rcub;错误

    首先运行下面的脚本(脚本摘自:http://www.th7.cn/system/lin/201304/38800.shtml) #!/bin/bashfor i in /usr/share/mibs/ ...

  9. Linxu安装Lamp环境

    安装MySQL数据库 sudo apt-get install mysql-server mysql-client 下图为提示输入数据库密码,然后回车,之后还有提示,再重复输入一次,再回车 最后安装完 ...

随机推荐

  1. Linux驱动学习 —— 在&sol;sys下面创建目录示例

    有时我们需要在/sys下面创建一些目录, 下面给出了一个示例. 在加载驱动模块后, 在/sys下面会创建一个名为sysfs_demo的目录,并在其中在创建几个文件和目录. [root@tiny4412 ...

  2. SQL实用

    实用的SQL语句   行列互转 create table test(id int,name varchar(20),quarter int,profile int) insert into test  ...

  3. EF事务嵌套

    EF中采用的是数据上下文DbContext,当针对数据库的所有操作共用一个数据上下文的时候,会使用同一个连接对象,因此连接打开一次,最后Save的时候关闭连接,避免了频繁的创建连接对象打开关闭,这在一 ...

  4. hash查找

    这里使用了编号代替真实的数据,只用来表示算法 #ifndef HASH_DATA_T #define HASH_DATA_T int #endif //HASH_DATA_T typedef stru ...

  5. Unity3D中Update&lpar;&rpar;与FixedUpdate&lpar;&rpar;的区别

    Unity3D中Update()与FixedUpdate()的区别是什么呢?从字面上理解,它们都是在更新时会被调用,并且会循环的调用.但是Update会在每次渲染新的一帧时,被调用.而FixedUpd ...

  6. CF&num; Educational Codeforces Round 3 B&period; The Best Gift

    B. The Best Gift time limit per test 2 seconds memory limit per test 256 megabytes input standard in ...

  7. 电脑知识--Windows一片

    .com档 Dos可执行命令文件,一般小于64kb, .com文件包括程序的一个绝对映像.就是说,为了执行程序准确的处理器指令和内存中的数据.Ms-Dos通过直接把该映像从文件复制到内存. 而 载入. ...

  8. 【转】NOR Flash擦写和原理分析

    1. NOR FLASH 的简单介绍 NOR FLASH 是很常见的一种存储芯片,数据掉电不会丢失.NOR FLASH支持Execute On Chip,即程序可以直接在FLASH片内执行(这意味着存 ...

  9. 大雄和哆啦A梦

    题目:大雄和哆啦A梦题目介绍:这个图片名称有点奇怪?! 1,打开链接会看到大雄和哆啦A梦的照片,把它下载下来.就是下面这个图片. 2,用wireshark打开,会看到最后面出现 rar ,还有flag ...

  10. django channle的使用

    频道在PyPI上可用 - 要安装它,只需运行:   参照:https://channels.readthedocs.io/en/latest/introduction.html pip install ...