一.snmp简介

snmp概念

SNMP(Simple Network Management Protocol,简单网络管理协议)的前身是简单网关监控协议(SGMP),用来对通信线路进行管理。随后,人们对SGMP进行了很大的修改,特别是加入了符合Internet定义的SMI和MIB:体系结构,改进后的协议就是著名的SNMP。SNMP的目标是管理互联网Internet上众多厂家生产的软硬件平台,因此SNMP受Internet标准网络管理框架的影响也很大。现在SNMP已经出到第三个版本的协议,其功能较以前已经大大地加强和改进了。

SNMP工作过程

在典型的SNMP用法中,有许多系统被管理,而且是有一或多个系统在管理它们。每一个被管理的系统上又运行一个叫做代理者(agent)的软件元件,且透过SNMP对管理系统报告资讯。

基本上,SNMP代理者以变量呈现管理资料。管理系统透过GET,GETNEXT和GETBULK协定指令取回资讯,或是代理者在没有被询问的情况下,使用TRAP或INFORM传送资料。管理系统也可以传送配置更新或控制的请求,透过SET协定指令达到主动管理系统的目的。配置和控制指令只有当网络基本结构需要改变的时候使用,而监控指令则通常是常态性的工作。

可透过SNMP存取的变量以阶层的方式结合。这些分层和其他元数据(例如变量的类型和描述)以管理信息库(MIBs)的方式描述。

SNMP风险

接入Internet的网络面临许多风险,Web服务器可能面临***,邮件服务器的安全也令人担忧。但除此之外,网络上可能还存在一些隐性的漏洞。大多数网络总有一些设备运行着SNMP服务,许多时候这些SNMP服务是不必要的,但却没有引起网络管理员的重视。

根据SANS协会的报告,对于接入Internet的主机,SNMP是威胁安全的十大首要因素之一;同时,SNMP还是Internet主机上最常见的服务之一。特别地,SNMP服务通常在位于网络边缘的设备(防火墙保护圈之外的设备)上运行,进一步加剧了SNMP带来的风险。这一切听起来出人意料,但其实事情不应该是这样的。

背景知识

SNMP开发于九十年代早期,其目的是简化大型网络中设备的管理和数据的获取。许多与网络有关的软件包,如HP的Open View和Nortel Networks的Optivity Network Management System,还有Multi Router Traffic Grapher(MRTG)之类的免费软件,都用SNMP服务来简化网络的管理和维护。

由于SNMP的效果实在太好了,所以网络硬件厂商开始把SNMP加入到它们制造的每一台设备。今天,各种网络设备上都可以看到默认启用的SNMP服务,从交换机路由器,从防火墙到网络打印机,无一例外。

仅仅是分布广泛还不足以造成威胁,问题是许多厂商安装的SNMP都采用了默认的通信字符串(例如密码),这些通信字符串是程序获取设备信息和修改配置必不可少的。采用默认通信字符串的好处是网络上的软件可以直接访问设备,无需经过复杂的配置。

通信字符串主要包含两类命令:GET命令,SET命令。GET命令从设备读取数据,这些数据通常是操作参数,例如连接状态、接口名称等。SET命令允许设置设备的某些参数,这类功能一般有限制,例如关闭某个网络接口、修改路由器参数等功能。但很显然,GET、SET命令都可能被用于拒绝服务***(DoS)和恶意修改网络参数。

最常见的默认通信字符串是public(读/写)和private(只读),除此之外还有许多厂商私有的默认通信字符串。几乎所有运行SNMP的网络设备上,都可以找到某种形式的默认通信字符串。

SNMP2.0和SNMP1.0的安全机制比较脆弱,通信不加密,所有通信字符串和数据都以明文形式发送。***者一旦捕获了网络通信,就可以利用各种嗅探工具直接获取通信字符串,即使用户改变了通信字符串的默认值也无济于事。

近几年才出现的SNMP3.0解决了一部分问题。为保护通信字符串,SNMP3.0使用DES(DataEncryptionStandard)算法加密数据通信;另外,SNMP3.0还能够用MD5和SHA(SecureHashAlgorithm)技术验证节点的标识符,从而防止***者冒充管理节点的身份操作网络。

虽然SNMP3.0出现已经有一段时间了,但目前还没有广泛应用。如果设备是2、3年前的产品,很可能根本不支持SNMP3.0;甚至有些较新的设备也只有SNMP2.0或SNMP1.0。

即使设备已经支持SNMP3.0,许多厂商使用的还是标准的通信字符串,这些字符串对***组织来说根本不是秘密。因此,虽然SNMP3.0比以前的版本提供了更多的安全特性,如果配置不当,其实际效果仍旧有限。

禁用SNMP

要避免SNMP服务带来的安全风险,最彻底的办法是禁用SNMP。如果你没有用SNMP来管理网络,那就没有必要运行它;如果你不清楚是否有必要运行SNMP,很可能实际上不需要。即使你打算以后使用SNMP,只要现在没有用,也应该先禁用SNMP,直到确实需要使用SNMP时才启用它。

下面列出了如何在常见的平台上禁用SNMP服务。

■Windows XP和Windows 2000

在XP和Win2K中,右击“我的电脑”,选择“管理”。展开“服务和应用程序”、“服务”,从服务的清单中选择SNMP服务,停止该服务。然后打开服务的“属性”对话框,将启动类型改为“禁用”(按照微软的默认设置,Win2K/XP默认不安装SNMP服务,但许多软件会自动安装该服务)。

■WindowsNT4.0

选择“开始”→“设置”,打开服务设置程序,在服务清单中选择SNMP服务,停止该服务,然后将它的启动类型改为禁用。

■Windows9x

打开控制面板的网络设置程序,在“配置”页中,从已安装的组件清单中选择“MicrosoftSNMP代理”,点击“删除”。检查HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunServices和HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run注册键,确认不存在snmp.exe

■Cisco Systems硬件

对于Cisco的网络硬件,执行“noSNMP-server”命令禁用SNMP服务。如果要检查SNMP是否关闭,可执行“showSNMP”命令。这些命令只适用于运行CiscoIOS的平台;对于非IOS的Cisco设备,请参考随机文档。

■HP硬件

对于所有使用Jet Direct卡(绝大部分HP网络打印机都使用它)的HP网络设备,用telnet连接到Jet Direct卡的IP地址,然后执行下面的命令:

SNMP-config:0

quit

这些命令将关闭设备的SNMP服务。但必须注意的是,禁用SNMP服务会影响服务的发现操作以及利用SNMP获取设备状态的端口监视机制。

■RedHatLinux

对于RedHatLinux,可以用Linuxconf工具从自动启动的服务清单中删除SNMP,或者直接从/etc/services文件删除启动SNMP的行。对于其他Linux系统,操作方法应该也相似。

保障SNMP的安全

如果某些设备确实有必要运行SNMP,则必须保障这些设备的安全。首先要做的是确定哪些设备正在运行SNMP服务。除非定期对整个网络进行端口扫描,全面掌握各台机器、设备上运行的服务,否则的话,很有可能遗漏一、二个SNMP服务。特别需要注意的是,网络交换机、打印机之类的设备同样也会运行SNMP服务。确定SNMP服务的运行情况后,再采取下面的措施保障服务安全。

■加载SNMP服务的补丁

安装SNMP服务的补丁,将SNMP服务升级到2.0或更高的版本。联系设备的制造商,了解有关安全漏洞和升级补丁的情况。

■保护SNMP通信字符串

一个很重要的保护措施是修改所有默认的通信字符串。根据设备文档的说明,逐一检查、修改各个标准的、非标准的通信字符串,不要遗漏任何一项,必要时可以联系制造商获取详细的说明。

■过滤SNMP

另一个可以采用的保护措施是在网络边界上过滤SNMP通信和请求,即在防火墙或边界路由器上,阻塞SNMP请求使用的端口。标准的SNMP服务使用161和162端口,厂商私有的实现一般使用199、391、705和1993端口。禁用这些端口通信后,外部网络访问内部网络的能力就受到了限制;另外,在内部网络的路由器上,应该编写一个ACL,只允许某个特定的可信任的SNMP管理系统操作SNMP。例如,下面的ACL只允许来自(或者走向)SNMP管理系统的SNMP通信,限制网络上的所有其他SNMP通信:

access-list 100 permit iphost w.x.y any

access-list 100 deny udp any any eq snmp

access-list 100 deny udp any any eq snmp trap

access-list 100 permit ip any any

这个ACL的第一行定义了可信任管理系统(w.x.y)。利用下面的命令可以将上述ACL应用到所有网络接口:

interface serial 0

ip access-group 100 in

总之,SNMP的发明代表着网络管理的一大进步,现在它仍是高效管理大型网络的有力工具。然而,SNMP的早期版本天生缺乏安全性,即使最新的版本同样也存在问题。就象网络上运行的其他服务一样,SNMP服务的安全性也是不可忽视的。不要盲目地肯定网络上没有运行SNMP服务,也许它就躲藏在某个设备上。那些必不可少的网络服务已经有太多让人担忧的安全问题,所以最好关闭SNMP之类并非必需的服务——至少尽量设法保障其安全。

二.snmp的配置案例

1.实验目的

在网络设备上开启snmp管理协议。

2.实验环境及设备

网络设备:

路由器  两台  华为  serial quidway 2000

交换机  一台  华为 s2000 HI (在这里只作为中间设备未配置snmp)

3.实验拓扑图

p_w_picpath

注释:

PC 1 是一个linux虚拟机(两块网卡!搭建apache)

PC 2 是我的物理机(安装检测工具what’s up)

pc 3  是windows 2003 的虚拟机(搭建ftp服务器)

交换机 S3 起到了一个连接的作用。在试验中不进行配置。由于受限于主机个数的限制 ,故这样搭建的拓扑图。

4.实验配置

R4的配置:

①.配置接口ip及静态路由路由

interface Ethernet0
  ip address 192.168.2.2 255.255.255.0
!
interface Ethernet1
  ip address 192.168.3.1 255.255.255.0

ip route-static 192.168.1.0 255.255.255.0 192.168.2.1 preference 60

②.启用snmp及设置community

snmp-agent
snmp-agent local-engineid 800007DB0300E0FC2DFDA1
snmp-agent community read public
snmp-agent community write private

snmp-agent sys-info version all

③.开启 trap

snmp-agent trap enable

snmp-agent target-host trap address 192.168.3.100 securityname private
snmp-agent target-host trap address 192.168.3.100 securityname public

④.路由表:

[R4]dis ip rou
Routing Tables:
  Destination/Mask  Proto   Pref     Metric     Nexthop    Interface
      127.0.0.0/8   Direct    0         0        127.0.0.1 LoopBack0          
      127.0.0.1/32  Direct    0         0        127.0.0.1 LoopBack0          
    192.168.1.0/24  Static   60         0      192.168.2.1 Ethernet0          
    192.168.2.0/24  Direct    0         0      192.168.2.2 Ethernet0          
    192.168.2.2/32  Direct    0         0        127.0.0.1 LoopBack0          
    192.168.3.0/24  Direct    0         0      192.168.3.1 Ethernet1          
    192.168.3.1/32  Direct    0         0        127.0.0.1 LoopBack0      

R9的配置:

①.配置接口ip及静态路由路由

interface Ethernet0
  ip address 192.168.2.1 255.255.255.0
!
interface Ethernet1
  ip address 192.168.1.1 255.255.255.0

ip route-static 192.168.3.0 255.255.255.0 192.168.2.2 preference 60

②.启用snmp及设置community

snmp-agent community read public
snmp-agent community write private

snmp-agent sys-info version all

③.开启 trap

snmp-agent trap enable

snmp-agent target-host trap address 192.168.3.100 securityname private
snmp-agent target-host trap address 192.168.3.100 securityname public

④.路由表:

[R9]dis ip rou
Routing Tables:
  Destination/Mask  Proto   Pref     Metric     Nexthop    Interface
      127.0.0.0/8   Direct     0         0        127.0.0.1 LoopBack0          
      127.0.0.1/32  Direct    0         0        127.0.0.1 LoopBack0          
    192.168.1.0/24  Direct    0         0      192.168.1.1 Ethernet1          
    192.168.1.1/32  Direct    0         0        127.0.0.1 LoopBack0          
    192.168.2.0/24  Direct    0         0      192.168.2.1 Ethernet0          
    192.168.2.1/32  Direct    0         0        127.0.0.1 LoopBack0          
    192.168.3.0/24  Static   60         0      192.168.2.2 Ethernet0         

pc1(linux)上的配置:

①.安装简单的apache服务器

挂载光盘,进入光盘文件的Server目录

rpm –ivh  httpd<tab><tab>

②.启动服务

service httpd start

③.安装snmp管理服务器

挂载光盘后使用yum安装

yum  install snmp

④.修改snmp配置并启动服务

[root@localhost ~]# rpm  -qc   net-snmp //snmp服务的所有可修改的配置文件
/etc/logrotate.d/snmpd
/etc/rc.d/init.d/snmpd
/etc/rc.d/init.d/snmptrapd
/etc/snmp/snmpd.conf   //snmpd 服务的主配置文件
/etc/sysconfig/snmpd.options
/etc/sysconfig/snmptrapd.options

修改/etc/snmp/snmp.conf ,修改如下

添加如下几行

15 rocommunity public
16 rwcommunity private

65 access  notConfigGroup ""      any       noauth    exact  all  none none

88 view all     included  .1                        80

pc3(windows)上的配置:

①.安装snmp服务

②.在服务和应用程序-》服务寻找-》snmp和snmp trap 两个服务

点选“属性”配置如下:

设置代理的信息:

p_w_picpath_thumb6_thumb 
触发“团体”及“目标地址”

p_w_picpath_thumb8_thumb

设置团体指定“NMS”

p_w_picpath_thumb13_thumb

snmp trap 服务点选“属性”配置如下:

默认即可

p_w_picpath_thumb15_thumb

pc2上(物理机)

安装what's up

p_w_picpath_thumb30_thumb

下一步

p_w_picpath_thumb31_thumb

默认

p_w_picpath_thumb32_thumb

默认

p_w_picpath_thumb33_thumb

默认

p_w_picpath_thumb34_thumb

打开文件,新建

p_w_picpath_thumb24_thumb

discover

p_w_picpath_thumb36_thumb

使用 SNMP 寻找 网络

p_w_picpath_thumb39_thumb

指定根端口

p_w_picpath_thumb38_thumb

监控的服务类型

p_w_picpath_thumb40_thumb

在pc2 上监控网络如下结果

p_w_picpath_thumb44_thumb

可以进行网络的监控管理.

下面就是一些关于 what’s up 软件的使用了。可以再what‘s up 软件上以拓扑图的形式进行监控。服务器及网络正常,颜色显示是绿色。出现×××或红色即表示出现问题。可以选中图标,右键进入配置界面。相关内容在此不再赘述!!!

           嗯,韩宇说的对!!!