linxu安装SNMP

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

转载于:https://www.cnblogs.com/dingxiaoyue/p/4926833.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
linux环境下的snmp测试脚本, Installing SNMPv2C Agent Conformance Test Package 2008/04/08 IPv6 Promotion Council Terminology =========== Tester Node (TN) A tester node for the conformance tests. Node Under Test (NUT) A testee node for the conformance tests. Network Under Test The network where the conformance tests are executed. Tester Interface The network interface of TN hooked up to the Network Under Test. Interface Under Test The network interface of NUT hooked up to the Network Under Test. Prerequisites ============= Prerequisites for TN: - The package supports FreeBSD 6.0-RELEASE or higher version. - The package can also coexist with FreeBSD version of KAME. Installing the package onto TN ============================== 0. Before Starting (A) You need to install following softwares. - Perl (Required version : 5.8.7 or higher) - Net-SNMP (Required version : 5.3.1 or higher) *** You can download it from the following URL: http://net-snmp.sourceforge.net/ - v6eval (Required version : 3.0.11 or higher) Please refer to 00README.v6eval in "v6eval" for more information. *** You can download it from the following URL: http://www.tahi.org/release/ - koi (Required version : 1.1.1 or higher) Please refer to README file in "koi" package for more information. *** You can download it from the following URL: http://www.tahi.org/release/ 1. Extracting ct package % tar zxvf ct-snmpv2c-ag-X.X.tar.gz 2. Copying ct package Copy ct directory to any directory you like. % cp -pR $ORGDIR/ct-snmpv2c-ag-X.X $SOMEWHERE/ct-snmpv2c-ag-X.X % chmod -R +w $SOMEWHERE/ct-snmpv2c-ag-X.X 4. Setup ct environment % (enable TN's ipv6 capibility) % cd $SOMEWHERE/ct-snmpv2c-ag-X.X % edit config.txt % make test [End of INSTALL]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值