搜索
您的当前位置:首页正文

SNMP关闭

来源:意榕旅游网
novartis关闭打印机SNMP服务小结

漏洞 snmp (161/udp) Snmp口令 Snmp口令: \"public\"

很多朋友不清楚.我在这里为大家讲解下..........

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

SNMP的体系结构是围绕着以下四个概念和目标进行设计的:保持管理代理(agent)的软件成本尽可能低;最大限度地保持远程管理的功能,以便充分利用Internet的网络资源;体系结构必须有扩充的余地;保持SNMP的独立性,不依赖于具体的计算机、网关和网络传输协议。在最近的改进中,又加入了保证SNMP体系本身安全性的目标。

另外,SNMP中提供了四类管理操作:get操作用来提取特定的网络管理信息;get-next操作通过遍历活动来提供强大的管理信息提取能力;set操作用来对管理信息进行控制(修改、设臵);trap操作用来报告重要的事件。

从上面的介绍可以看出,snmp其实是可以得到对方许多主机资料的............. 接入Internet的网络面临许多风险,Web服务器可能面临攻击,邮件服务器的安全也令人担忧。但除 此之外,网络上可能还存在一些隐性的漏洞。大多数网络总有一些设备运行着SNMP服务,许多时候这些SNMP服务是不必要的,但却没有引起网络管理员的重视。 根据SANS协会的报告,对于接入Internet的主机,SNMP是威胁安全的十大首要因素之一;同时,SNMP还是Internet主机上最常见的服务之一。特别地,SNMP服务通常在位于网络边缘的设备(防火墙保护圈之外的设备)上运行,进一步加剧了SNMP带来的风险。这一切听起来出人意料,但其实事情不应该是这样的。 〖一、背景知识〗 SNMP开发于九十年代早期,其目的是简化大型网络中设备的管理和数据的获取。许多与网络有关的软件包,如HP的OpenView和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的网络设备上,都可以找到某种形式的默认通信字符串。

SNMP 2.0和SNMP 1.0的安全机制比较脆弱,通信不加密,所有通信字符串和数据都以明文形式发送。攻击者一旦捕获了网络通信,就可以利用各种嗅探工具直接获取通信字符串,即使用户改变了通信字符串的默认值也无济于事。 近几年才出现的SNMP 3.0解决了一部分问题。为保护通信字符串,SNMP 3.0使用DES(Data Encryption Standard)算法加密数据通信;另外,SNMP 3.0还能够用MD5和SHA(Secure Hash Algorithm)技术验证节点的标识符,从而防止攻击者冒充管理节点的身份操作网络。

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

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

〖二、禁用SNMP〗

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

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

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

打开控制面板的网络设臵程序,在“配臵”页中,从已安装的组件清单中选择“Microsoft SNMP代理”,点击“删除”。检查

HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\RunServic

es和HKEY_LOCAL_MACHINE\\

SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run注册键,确认不存在

snmp.exe。

■ Cisco Systems硬件

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

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

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

对于Red Hat Linux,可以用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 ip host w.x.y any access-list 100 deny udp any any eq snmp access-list 100 deny udp any any eq snmptrap 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之类并非必需的服务——至少尽量设法保障其安全。

打印设备和主机的连接方式(printer interface)形态多样,从历史悠久的串口并口到现在流行的网络打印和USB连接,另类的红外连接和蓝牙技术,还有超炫的火线连接(IEEE 1394)。

我这篇文章试着探讨一下网络打印两个基本端口(LPD和9100)的相关知识。

网络打印最大的好处就是空间上不受限制,不被串口线/并口线/USB线的长度所禁锢,北京办公室的员工可以直接把文件打印到上海办公室老板身边的打印机,这要感谢TCP/IP协议族建立的强大的通讯基础设施。

在速度上,网络打印只能处于中等水平,这倒不是它的强项。

技术 并行(1284) 变化形式 (Centronics) ECP/EPP 速度 250 Kbps 35 Mbps 100 Mbps 4 Mbps TCP/IP IrDA 火线(FireWire)(1394) (最多 63个设备) 400 Mbps USB 1.0 2.0 蓝牙(Bluetooth) 12 Mbps 480 Mbps 23 Mbps

伴随着TCP/IP的诞生和发展,人们立即把这项技术应用到打印领域,比较早形成标准的就是 Line Printer Daemon Protocol,通称为 LPR 协议,记录在 RFC1179 文档中。LPR 协议在Unix系统上广泛应用和实现(那时候还没有Windows)。LPR协议规定发送方的端口从721到731,接收方端口是515。

当HP公司推出JetDirect打印机系列的时候,他们没有在他们的打印服务器上采用LPD协议,而是开发了一种新的网络打印协议,这个新协议被称为 RAW 打印协议或 Socket API。打印设备上开启的TCP端口是9100,这个端口提供到打印引擎(print engine)的直接连接,类似于以前的串口或并口,这也就是它被称为 RAW 的原因。这个连接通常是全双工的,并在打印时提供错误报告和状态信息。

花开两朵,各表一枝。我们回头再谈LPR和9100传输的细节问题,先看一下网络打印技术在Windows操作系统上的发展。

我这里只讲Win OS作为打印客户端的情况,Win OS作为打印服务器的情况不在讨论之列。

我们编辑/查看文档的应用程序,比如MS Word/Excel/PPT,Notepad,Adobe

Acrobat等,不会直接跟网络打印设备建立连接。当我们从这些程序打印文档的时候,操作系统上有一类叫做端口监视器(Port Monitor)的程序在运行,它们把客户端连接到对应的打印机上。在Win2000之前,端口和port monitor的种类比较多也比较乱,因为那时打印行业标准还不统一。每个打印设备生产商如果定义了自己的接口,就要有相应的端口类型和port monitor。比如安装在WinNT4上的Digital Network port monitor,Hewlett-Packard JetAdmin,和Lexmark Port Monitors。我们可以通过打印机属性页看到自己电脑上安装的端口类型,每个类型都有自己的port monitor。

从Win2000起,微软推出了Standard TCP/IP Port Monitor(SPM),SPM跟打印设备建立TCP连接。SPM是一种服务,而不是一个协议。SPM可以使用 RAW 或 LPR 协议向打印机发送作业。对大多数打印设备来说,RAW是默认的协议。如果在端口配臵中选择了LPR 协议,SPM 就用LPR协议发送作业。

我们在Win2k和WinXP上还可以看到LPR Port和LPR Port Monitor,请不要把LPR Port和LPR 协议混淆在一起,虽然它们是有联系的。LPR Port默认情况下不会安装,需要在“添加/删除Windows组件”中选择“Other Network File and Print Services”——>“Print Services for Unix”。从细节上讲,LPR Port是由lprmon.dll来管理的,而SPM是由tcpmon.dll来执行的。

SPM中实现的LPR协议跟标准的LPR协议还是有所不同的。标准的LPR协议使用端口 721到731来发送数据,Windows SPM在使用LPR协议时则使用>1023的未保留的端口。另外一个不同是,SPM向spooler发送打印作业时无需确定作业的大小,而标准的LPR协议规定打印作业必须包含作业大小的信息。这样的

话,标准的LPR Port Monitor就要 spool 作业两次 — 一次确定作业大小,一次把作业发给spooler。相比之下,SPM Spool作业一次,提高了打印效率。

我们可以比较一下网络上抓下来的标准LPR包和SPM实现的LPR包。

标准LPR包:

Tcp: SrcPort=XSRP(721), DstPort=LPD(515) //注:源端口在721-731之间

SPM实现的LPR包:

Tcp: SrcPort=1844, DstPort=LPD(515) //注:源端口>1023

它们的源端口差别如上文所述,目标端口是一致的,另外,我这里没贴出来的,LPR协议本身携带的数据在两种情况下是一致的。

再回过头来看9100端口和LPD端口配臵的不同。

LPR协议因为起源的原因,规定了line printer daemon客户端和服务端交互的一系列命令,大概的内容如下:

switch(command code){ case 01:

Print any waiting jobs; case 02:

//Receive a printer job; //second level commands

Send positive acknowledgement; switch(subcommands code) { case 01:

Abort job; case 02:

Send positive acknowledgement; Receive control file; case 03:

Send positive acknowledgement; Receive data file; } case 03:

Send queue state (short); case 04:

Send queue state (long); case 05:

Remove jobs; }

LPR协议规定的一套逻辑细节请参看RFC1179。

我们可以看到,这些命令对我们现在打印的要求来说似乎有些繁琐,HP当年设

立9100端口的意思大概也是跳过这些命令来往,直接把准备好的PDL(page description language)数据扔给打印引擎,RAW数据就是PDL用的数据类型,PCL和PostScript都是RAW数据,打印引擎可以直接处理。

通过比较同一个作业分别用9100和LPR端口发的数据包,我们可以看到,LPR子命令发送的“Data File”的内容跟TCP协议9100端口发出去的数据内容是一样的。这个数据内容,我们可以用具体打印机的“Print to file”方式得到。

SPM用9100端口向打印设备发送打印数据,作业完成后就关闭连接。对打印机的管理则遵照RFC 1759(Printer MIB)用SNMP协议来进行,LPR端口则是数据和控制信息都在一个连接上处理。打个比方,9100端口是双车道,数据和控制信息分开走,LPR则是单车道。

简而言之,9100端口打印更加高效快捷,更具有扩展性。

因篇幅问题不能全部显示,请点此查看更多更全内容

Top