APP下载

基于SNMP的监控系统关键技术研究与开发

2018-06-25吴威王鸣

无线互联科技 2018年6期
关键词:远程控制视频监控

吴威 王鸣

摘 要:Avocent公司开发了DSView3 IT基础设施统一管理平台。它的数据中心远程集中控制解决方案允许多名操作人员同时对数据中心内的服务器、小型机、刀片式服务器、虚拟主机和网络设备等进行远程集中统一操作控制,但操作人员远端对机房内目标设备具体的操作事项和操作内容却无法进行实时跟踪记录、监控和审计,这样对于一些安全性级别要求极高的信息中心、数据中心来说,集中控管系统就存在安全缺憾。而国内外市场上的相关软件还存在着各种突出问题,无法满足客户的需要。针对这种现状,文章从视频监控系统所涉及的SNMP接收解析、内存图象抓取、视频编码压缩存储、产品注册验证、多线程同步、进程消息通信等技术点入手,结合调查分析和实际实验,实现视频监控系统。

关键词:SNMP;视频监控;远程控制

1 前沿

通过DSView软件远程登录的用户将被实行监控,记录用户会话的开始结束时间,访问设备的名称,并可根据管理员的预先配置,对指定用户或用户在指定设备上的操作进行7×24小时视频录制。全程记录操作人员对目标设备的操作画面内容可以用来跟踪并规范操作人员的操作行为。不但可以及时发现操作人员常见的、无意的误操作,进行事后分析与纠正;更可以对操作人员的恶意操作行为进行追溯,提供恶意操作的第一手证据[1]。

2 SNMP的监控系统关键技术研究与开发

该软件的用户日常通过DSView3平台访问平台管控下的远程电脑,但是管理者反映DSView3平臺缺少对用户访问操作的监控,即无法记录用户的访问时间与操作内容,因此在大型企业特别是金融行业的数据安全保障中存在隐患。通信、银行、纸币印刷、金融机构等需要保存10年甚至更长时间的用户使用记录和视频文件作为今后追溯的依据,同时要求能够以网站形式提供快捷的用户访问历史、视频记录、操作日志等的检索和视频记录的在线播放功能。

根据这种现状,决定研究并通过技术手段解决这些问题。所设计的视频监控系统构架如图1所示。

系统将通过以下几个步骤来实现对用户的监控:

(1)远程用户通过Web页面远程访问网络服务器。

(2)远程用户在网页中输入用户名称与访问密码。

(3)认汪服务器验证远程用户是否合法。

(4)网页显示开启服务器的列表。

(5)远程用户选择操控的HOST。

(6)在远程用户开启会话的同时,监控服务器的监控程序接收到从DSV3服务器发来的SNMP Trap开始信号,通过API调用AvctVideoViewer.exe来显示窗口,监控服务器的监控程序对该窗口进行录制。在多台目标设备的会话被打开的情况下,监控服务器的监控程序通过对AvctVideoViewer.exe窗口最小化方式,实现后台分别录制。程序将通过访问DSVIEW的API来在监控服务器上打开图像显示窗口,直接读取内存图像并存入自定义的缓冲区等待下一步处理[2]。

(1)远程用户端显示HOST的界面。

(2)远程用户端操作HOST的界面。

(3)远程用户结束对HOST的操作,结束回话。

(4)监控程序接受到DSV3服务器发来的远程用户结束SNMP Trap时,结束对该HOST的录制。

简单网络管理协议( Simple Network ManagementProtocol,SNMP)首先是由Internet工程任务组织(InternetEngineering Task Force,IETF)的研究小组为了解决Internet上的路由器管理问题而提出的。SNMP的基本功能包括监视网络性能、检测分析网络差错和配置网络设备等。在网络正常工作时,SNMP可实现统计、配置和测试等功能。当网络出故障时,可实现各种差错检测和恢复功能。SNMP也为设备向网络管理工作站报告问题和错误提供了一种方法。

在SNMP的典型配置中,整个系统必须有一个管理站(Management Station),它实际上是网控中心。在管理站内运行管理进程。在每个被管对象中一定要有代理进程。管理进程和代理继承利用SNMP报文进行通信,而SNMP报文又使用用户数据报协议(User Datagram Protocol,UDP)来传送。图中有两个主机和一个路由器。这些协议栈中带有阴影的部分是原来这些主机和路由器所具有的,而没有阴影的部分是为实现网络管理而增加的。其中在代理进程端是用熟知端口161俩接收get或set报文,而在管理进程端是用熟知端口162来接收trap报文。这就要求我们实际使用SNMP协议进行通信时设置防火墙开放计算机的161,162端口[3]。

接下来我们了解一下SNMP的报文格式。封装成UDP数据报操作的SNMP报文格式如图2所示。可见一个SNMP报文共由3个部分组成,即公共SNMP首部、get/set首部trap首部、变量绑定。以下简述各个部分的组成和不同类型代码所代表的含义。

(1)公共SNMP首部。共3个字段:①版本。写入版本字段的是版本号减l,对于SNMP(即SNMPVl)则应写入0。②共同体(community)。共同体就是一个字符串,作为管理进程和代理进程之间的明文口令,常用的是6个字符“public”。③PDU类型。根据PDU的类型,填入0~4中的一个数字,其中0代表get-request,1代表get-next-request,2代表get-response,3代表set-request,4代表trap。

(2) get/set首部。①请求标识符(request ID)。这是由管理进程设置的一个整数值。代理进程在发送get-response报文时也要返回此请求标识符。管理进程可同时向许多代理发出get报文,这些报文都使用UDP传送,先发送的有可能后到达。设置了请求标识符可使管理进程能够识别返回的响应报文对于哪一个请求报文。②差错状态(error status)。由代理进程回答时填入0~5中的一个数字,其中0代表“一切正常”,1代表“代理无法将回答装入到一个SNMP报文之中”,2代表“操作指明了一个不存在的变量”,3代表“一个set操作指明了一个无效值或无效语法”,4代表“管理进程试图修改一个只读变量”,5代表“某些其他的差错”。③差错索引(error index)。当出现no SuchName、badValue或readOnly的差错时,由代理进程在回答时设置的一个整数,它指明有差错的变量在变量列表中的偏移。

(3) trap首部。①企业(enterprise)。填入trap报文的网络设备的对象标识符。此对象标识符肯定是在图3的对象命名树上的enterprise结点{l-3.6.1.4.1}下面的一棵子树上。②trap类型。此字段正式的名称是generic-trap,其中trap类型0代表coldStart代理进行了初始化,1代表warmStart代理进行了重新初始化,2代表linkDown-个接口从工作状态变为故障状态,3代表linkup-个接口从故障状态变为工作状态,4代表authenticationFailure从SNMP管理进程接收到具有一个无效共同体的报文,5代表egpNeighborLoss-个EGP相邻路由器变为故障状态,6代表enterpriseSpecific代理自定义的事件,需要用后面的“特定代码”来指明。

当使用上述类型2,3,5时,在报文后面变量部分的第一个变量应标识响应的接口。①特定代码(specific-code)。指明代理自定义的时间(若trap类型为6),否则为0。②时间戳(timestamp)。指明自代理进程初始化到trap报告的事件发生所经历的时间,单位为10 ms。例如时间戳为1908表明在代理初始化后l 908 ms发生了该时间。

(4)变量绑定(variable-bindings)。指明一个或多个变量的名和对应的值。在get或get-next报文中,变量的值应忽略。

通过对SNMP协议的理解,我们已经可以通过程序代码来构造SNMP的数据结构来实现对消息的存储接收,可直接调用Windows的api來实现这个功能。其中snmpapi.dll是微软Microsoft简单网络管理协议(SNMP)相关模块,用于监视你的LAN局域网网络状态,而mgmtapi.dll是微软Microsoft简单网络管理应用程序接口API模块,inetmibl.dll是WindowsNT的简单网络管理协议SNMP相关模块。

有了上述api接口之后,我们在一个永不停止的线程中利用如下代码即可实现SNMP消息的持续接收:

while (SnmpMgrGetTrap(@enterprise, @IPAddress.@genericTrap, @specificTrap, @timeStamp, @VarBindList》do Begin接收后的处理操作End

在我们的系统中,SNMP消息是由交换设备硬件自动发出的,在配置好目标地址和发送时机后,交换设备(下文中简称KVM)在新的会话开启,会话结束和设备出现掉电情况时会发送不同的消息。

我们利用网络监测软件wireshark抓取了多个消息并发现消息格式如下:

会话开始(SNMP Trap来源:KVM设备)

KVM掉电(SNMP Trap来源:DSView3服务器设备)

多次尝试后发现结果一致,得到结论:对SNMP Trap头信息进行判断。

①Specific Trap=2为开始会话

②Specific Trap=3为结束会话

③Specific Trap=3为结束会话

为了方便起见我们将这3个类型定义为枚举的常量:

TSNMPCindType= (sctKVMStop=1,//1为掉电的标志

sctConnectStart=2,//2为用户连接的标志

sctConnectClose=3,//3为用户断开的标志

并对每条消息做相应的转化

connection.CMDType

:=TSNMPCmdType(SpecificTrap);

然后我们就可以通过对消息中信息的SpecificTrap类型进行判断得出消息的含义:

//用户关闭连接

if (AConnectInfo.CMDType= sctConnectClose) then

begin

输出日志显示已经进入用户关闭逻辑分支……

输出日志显示已经进入用户打开逻辑分支……

End

∥KVM掉电处理

if (AConnectInfo.CMDType= sctKVMStop) then

begin

输出日志显示已经进入掉电处理逻辑分支……

end;

之后通过尝试发现SNMP消息中oid以10418.7.2.6.1结尾的数据包含了信息来源的用户名称,oid以10418.7.2.6.?结尾的数据包含了信息来源的设备名称,并且?位不同代表了不同的设备,于是我们得到了消息来源的全部信息,同样我们将其输出到日志当中。

其中采取程序运行一段时间后写出的日志信息如下:

[3/24-15:06:19]user:testl set: pc-adconnec t

[3/24-15:06:55]user:testl set: pc-addisconnect

[3/24-15:07:35] user:set: dsr8035 disconnect

[3/24-15:10:07]user:testl set: pc-adconnect

[3/24-15:10:15] user:testl set: pc-ad disconnect

[3/24-15:10:54] user: set: dsr8035 disconnect

分析上面的实际程序运行结果,我们可以看到日志中正确显示了主动连接设备进行会话开始和会话结束以及KVM掉电的日志信息,并且列出了开始结束会话的用户名以及发送信息的源设备名称,这就给我们统一管理消息带来了可能,也为今后还原计算机事故现场提供了第一手的依据。

3结语

结合上文中提出的问题,解决方案和实验结果分析,我们已经解决了视频监控系统中的关键问题并给出了代码实现。接下来就可以按照既定计划,一步一步实现各个模块,然后整合实现整个系统。在系统理论基础问题的前提下进行开发避免了重复的调查和研究,减少了代码开发的周期并且降低了研发的风险系数,为系统能够按时交付上线,产品能够顺利投向市场提供了有力支持。

[参考文献]

[1]石志强.大规模可运营视频监控网络系统的安全机制[J]北京邮电大学学报,2009( sl):66-72

[2]苗立刚.视频监控中的图像拼接与合成算法研究[J].仪器仪表报,2009 (4):857-861

[3]岑峰,戚飞虎,陈茂林.长期视频监控系统的多分布模型背景差方法[J]红外与毫米波学报,2002 (1):59-63

猜你喜欢

远程控制视频监控
基于GSM的远程控制系统