一种业务服务器执行命令的捕获方法及***
技术领域
本发明属于运维人员操作行为审计技术领域,具体涉及一种业务服务器执行命令的捕获方法及***。
背景技术
当前,众多企业的核心业务***运行在linux等业务服务器上,运维人员是指负责全面管理、控制和维护业务服务器的人员,其主要工作内容包括:维护业务服务器的安全性、控制和监控用户对业务服务器的存取访问、监控和优化业务服务器的性能、灾难出现时对业务服务器信息进行恢复、维护适当介质上的存档或者备份数据、备份和恢复业务服务器数据等。因此,全面对运维人员的运维行为进行有效的管控和审计,可提高业务服务器的安全性。
现有技术中,主要采用以下方法对运维人员的运维行为进行监控:
在业务服务器上安装审计软件,通过审计软件拦截运维人员通过运维终端发送的对业务服务器的运维指令并作记录。然而,该种监控方式存在以下问题:在业务服务器上安装审计软件,直接为业务服务器的安全和性能带来不良影响,严重时,甚至会导致业务服务器停止工作,造成严重后果。
为克服安装审计软件所带来的不良影响,当前流行的方式为:在运维终端和业务服务器之间的某一通信网络节点上布署代理主机,在运维终端通过网络向业务服务器发送运维操作指令的过程中,该代理主机截取该运维操作指令,然后对该运维操作指令进行分析并记录,然后再通过代理主机,将运维操作指令发送到业务服务器上。通过分析代理主机记录的内容,可实现对运维人员运维行为的监控。后续过程中,通过检索代理主机所存储的记录内容,可实现查询代理主机历史运维行为的作用。
上述采用代理主机进行监控的方法主要存在以下问题:
(1)需要更改用户的现有网络结构,额外布署物理网络节点,而由于用户的网络结构千差万别,复杂度很高,因此,额外布署物理网络节点的布置难度较大,施工成本较高,特殊情况时,甚至无法布署物理网络节点;因此,具有较大的使用局限性;
(2)由于运维终端和业务服务器之间的通讯报文均需要经过代理主机分析处理,因此,对代理主机的可靠性要求极高;一旦代理主机自身发生故障时,会直接影响运维终端和业务服务器之间的正常通讯,使运维人员无法对业务服务器进行正常运维行为;
(3)需要实时升级SSH(安全外壳协议)等网络通信协议,具有***维护成本高的问题。
为解决上述问题,现有技术中还出现了另一种对运维人员的运维行为进行监控的方法,包括:在运维终端运行某个运维工具的过程中,使用键盘钩子记录器捕获向该运维工具输入的键盘输入字符,从而实现对运维行为进行监控的目的。
但是,该种方法仍然具有不足之处,即:当用户需要输入的操作指令为ping192.168.1.100时,如果用户一次性输入正确,则键盘钩子记录器直接记录到ping192.168.1.100这一操作指令;但是,如果用户在输入操作指令时存在修改,例如,用户首先输入pong 192.168.2.100,然后,回退字符到字母o位置,将字母o修改为字母i,然后再回退字符到数字2位置,将数字2修改为数字1,经修改后,虽然屏幕显示的操作指令仍然为192.168.1.100,但是,键盘钩子记录器的记录结果为:pong 192.168.2.101 i 1,因此,对于此种存在修改的情况,通过分析键盘钩子记录器的记录内容,无法还原得到正确的执行命令。再例如,对于通过复制操作复制到屏幕的操作指令,或者,对于通过操作上下键等重复执行的操作指令,通过分析键盘钩子记录器的记录内容,均存在无法得到正确执行命令的问题。由此可见,采用该种方法对运维行为进行监控,仍然具有较大的局限性。
发明内容
针对现有技术存在的缺陷,本发明提供一种业务服务器执行命令的捕获方法及***,可有效解决上述问题。
本发明采用的技术方案如下:
本发明提供一种业务服务器执行命令的捕获方法,包括以下步骤:
S1,在运维终端上安装多个用于登陆并操作业务服务器的运维工具,各个运维工具在所述运维终端上占用各自独立的进程运行;对每一个运行状态的运维工具,获得该运维工具的类型,然后均执行以下步骤:
S2,监听所述运维工具,每当所述运维工具所在的编辑窗口输出文本内容时,即获得所输出的文本内容以及该文本内容在编辑窗口中的行标号信息,然后实时将所述文本内容与所述行标号信息的映射关系存储到数据缓存中;其中,所述文本内容包括执行命令文本内容和非执行命令文本内容;
同时,监听I/0模块的工作状态,当监听到I/0模块发出对某一指定执行命令文本内容的执行确认指令时,同时执行以下四个操作:
操作一:对当前屏幕进行截屏操作,获得屏幕视频帧;
操作二:获得当前登录所述数据库维护命令编辑工具的账户信息;
操作三:记录当前时刻的时间戳;
操作四:获得所述指定执行命令文本内容在所述编辑窗口中的指定区域,然后获得并记录该指定执行命令文本内容在所述编辑窗口中的指定行标号信息;然后发出对所述指定区域重新绘制的命令,使所述编辑窗口在所述指定区域重新输出所述指定执行命令文本内容;同时,重新输出的所述指定执行命令文本内容以及对应的指定行标号信息被存储到所述数据缓存中;
S3,以所记录的所述指定行标号信息为关键词查找所述数据缓存,查找到与所述指定行标号信息对应的最近时刻存储的文本内容,该文本内容即为完整的所述指定执行命令文本内容;
S4,将S3所查找到的所述指定执行命令文本内容、S2获得的所述屏幕视频帧、S2获得的所述账户信息、S2记录的所述时间戳以及S1获得的运维工具的类型之间的映射关系存储到映射关系配置表。
优选的,所述业务服务器为运行linux操作***或unix操作***的主机;所述运维工具包括SecureCRT运维工具、PUTTY运维工具、Xshell运维工具和SShCleint运维工具。
优选的,S2中,监控I/0模块的工作状态,监控I/0模块是否发出对某一指定执行命令文本内容的执行确认指令,具体为:
所述I/O模块为所述运维终端的键盘;
监听所述键盘的执行状态,当监听到所述键盘的回车键被触发时,即为监听到I/O模块发出执行确认指令。
优选的,S2的操作四中,所述指定执行命令文本内容在所述编辑窗口中的指定区域通过以下方法获得:
首先定位到所发生的回车键操作在所述编辑窗口中的光标位置,然后以所定位到的光标位置为起点位置,反向逐个字符查找,直到查找到提示符为止,该提示符为终点位置;所述起点位置到所述终点位置之间的区域即为所述指定区域。
优选的,S2的操作四中,所述指定执行命令文本内容在所述编辑窗口中的指定行标号信息具体为:
如果所述指定区域为一行,则所述指定行标号信息即为该指定区域所在行的行标号;
如果所述指定区域为两行以上,则所述指定行标号信息为该指定区域所属的行标号范围信息。
优选的,S4之后,还包括:
S5,接收对业务服务器执行命令进行检索回放的指令,其中,该检索回放的指令中携带检索关键词;所述检索关键词为账户信息、需检索的时间信息以及需检索的运维工具类型的一种或几种组合信息;
S6,根据所述检索关键词检索所述映射关系配置表,定位到与所述检索关键词对应的执行命令文本内容和执行命令文本内容时的指定屏幕视频帧。
优选的,S6之后,还包括:
S7,按所设定的播放帧数参数,检索到位于所述指定屏幕视频帧之前且与所述指定屏幕视频帧相邻的连续的若干张屏幕视频帧,还检索到位于所述指定屏幕视频帧之后且与所述指定屏幕视频帧相邻的连续的若干张屏幕视频帧;然后,根据各张检索到的屏幕视频帧的时间戳信息,按时间先后顺序播放所检索到的各张屏幕视频帧,从而还原得到执行命令发生时的操作场景。
本发明还提供一种业务服务器执行命令的捕获***,该捕获***运行于运维终端,所述运维终端上安装多个用于登陆并操作业务服务器的运维工具,各个运维工具在所述运维终端上占用各自独立的进程运行;所述捕获***包括:
第一获取模块,用于获取运维工具的类型;
第一监听模块,用于监听所述运维工具,判断所述运维工具所在的编辑窗口是否输出文本内容;
第二获取模块,用于当所述第一监听模块监听到运维工具所在的编辑窗口输出文本内容时,获得所输出的文本内容以及该文本内容在编辑窗口中的行标号信息;其中,所述文本内容包括执行命令文本内容和非执行命令文本内容;
数据缓存模块,用于实时缓存所述第二获取模块所获取到的文本内容与所述行标号信息的映射关系;
第二监听模块,用于监听I/0模块的工作状态,判断I/0模块是否发出对某一指定执行命令文本内容的执行确认指令;
截屏模块,用于当所述第二监听模块监听到I/0模块发出对某一指定执行命令文本内容的执行确认指令时,对当前屏幕进行截屏操作,获得屏幕视频帧;
账户信息获取模块,用于当所述第二监听模块监听到I/0模块发出对某一指定执行命令文本内容的执行确认指令时,获得当前登录所述数据库维护命令编辑工具的账户信息;
时间戳记录模块,用于当所述第二监听模块监听到I/0模块发出对某一指定执行命令文本内容的执行确认指令时,记录当前时刻的时间戳;
执行命令文本内容获取模块,用于当所述第二监听模块监听到I/0模块发出对某一指定执行命令文本内容的执行确认指令时,获取所述指定执行命令文本内容;具体包括:
指定区域获取子单元,用于当所述第二监听模块监听到I/0模块发出对某一指定执行命令文本内容的执行确认指令时,获得所述指定执行命令文本内容在所述编辑窗口中的指定区域;
记录子单元,用于当所述指定区域获取子单元获取到所述指定区域后,获得并记录该指定区域的指定执行命令文本内容在所述编辑窗口中的指定行标号信息;
重绘指令发送子单元,用于当所述指定区域获取子单元获取到所述指定区域后,向编辑窗口发出对所述指定区域重新绘制的命令,使所述编辑窗口在所述指定区域重新输出所述指定执行命令文本内容;同时,重新输出的所述指定执行命令文本内容以及对应的指定行标号信息被存储到所述数据缓存中;
查找子单元,用于以所述记录子单元记录的指定行标号信息为关键词查找所述数据缓存,查找到与所述指定行标号信息对应的最近时刻存储的文本内容,该文本内容即为完整的所述指定执行命令文本内容;
映射关系配置表,用于存储所述查找子单元查找到的所述指定执行命令文本内容、所述截屏模块获得的所述屏幕视频帧、所述账户信息获取模块获得的所述账户信息、所述时间戳记录模块所记录的所述时间戳、所述第一获取模块获得的运维工具的类型之间的映射关系。
本发明提供的业务服务器执行命令的捕获方法及***,具有以下优点:
(1)只需要在运维终端上布署捕获***,不需要更改用户的现有网络结构,也不需要代理主机,具有对运维人员运维行为的监控成本低的优点;
(2)在对运维人员运维行为的监控过程中,完全不会影响运维终端和业务服务器之间的通讯过程;
(3)运维人员通过编辑窗口输入文本内容时,无论是一次性正确输入执行命令,还是修改后得到执行命令、重复执行某一执行命令、对某一执行命令复制复制后得到执行命令,均能快速方便的监控到通过运维终端发送到运维服务器的执行命令;也就是说,本发明监控效率与最终执行的执行命令的获得途径完全无关,具有适用范围广的优点;
(4)可方便迅速的查找到执行命令文本内容、屏幕视频帧、账户信息和时间戳的对应关系,实现对运维人员全面审计监控,对于及时查找到业务服务器出现的问题具有重要作用。
附图说明
图1为本发明提供的业务服务器执行命令的捕获方法的流程示意图;
图2为本发明提供的业务服务器执行命令的捕获***的结构示意图。
具体实施方式
以下结合附图对本发明进行详细说明:
如图1所示,本发明提供一种业务服务器执行命令的捕获方法,包括以下步骤:
S1,在运维终端上安装多个用于登陆并操作业务服务器的运维工具,各个运维工具在所述运维终端上占用各自独立的进程运行;对每一个运行状态的运维工具,获得该运维工具的类型。
其中,业务服务器为运行linux操作***或unix操作***的主机,对于linux操作***,可以为启动redhat或suse***等;运维工具包括但不限于SecureCRT运维工具、PUTTY运维工具、Xshell运维工具和SShCleint运维工具,在运维终端的windows上安装各种运维工具,运维人员通过操作运维工具,发送对业务服务器的执行命令,进而实现对业务服务器的远程操作控制。
对于每一个运维工具,均执行以下步骤:
S2,监听所述运维工具,每当所述运维工具所在的编辑窗口输出文本内容时,即获得所输出的文本内容以及该文本内容在编辑窗口中的行标号信息,然后实时将所述文本内容与所述行标号信息的映射关系存储到数据缓存中;其中,所述文本内容包括执行命令文本内容和非执行命令文本内容;
例如,运维人员在编辑窗口的第3行屏幕输出以下文本内容A:ping192.168.1.100,则数据缓存中分别存储第3行与文本内容A中各字符的对应关系,如:第3行对应1,第2行对应9,第3行对应2等。可见,数据缓存中存储的为分散的字符与行号的对应关系,直接查找数据缓存,难以将各字符组合还原为原来的文本内容。
同时,监听I/0模块的工作状态,当监听到I/0模块发出对某一指定执行命令文本内容的执行确认指令时,同时执行以下四个操作:
操作一:对当前屏幕进行截屏操作,获得屏幕视频帧;
操作二:获得当前登录所述数据库维护命令编辑工具的账户信息;
操作三:记录当前时刻的时间戳;
操作四:包括以下两步骤:
步骤1:获得所述指定执行命令文本内容在所述编辑窗口中的指定区域,然后获得并记录该指定执行命令文本内容在所述编辑窗口中的指定行标号信息;
其中,I/O模块可以为运维终端的键盘;可监听键盘的执行状态,当监听到键盘的回车键被触发时,即为监听到I/O模块发出执行确认指令。
由于用户在使用SecureCRT运维工具或PUTTY运维工具时,操作方法一般为:在SecureCRT或PUTTY工具的编辑窗口输入由多个字符组成的执行文本内容B,然后,当需要执行执行文本内容B时,将光标置于执行文本内容B的最后一个字符,然后按下回车键,即表示将执行文本内容B发送到业务服务器。因此,本发明中,可通过监听回车键的触发状态作为捕获执行文本的时刻。
相应的,指定执行命令文本内容在编辑窗口中的指定区域通过以下方法获得:
首先定位到所发生的回车键操作在所述编辑窗口中的光标位置,然后以所定位到的光标位置为起点位置,反向逐个字符查找,直到查找到提示符为止,该提示符为终点位置;所述起点位置到所述终点位置之间的区域即为所述指定区域。
在定位到指定区域后,指定执行命令文本内容在编辑窗口中的指定行标号信息通过以下方式获得:如果所述指定区域为一行,则所述指定行标号信息即为该指定区域所在行的行标号;
如果所述指定区域为两行以上,则所述指定行标号信息为该指定区域所属的行标号范围信息。例如,如果指定区域为第2行-第4行,则行标号信息即为第2行-第4行。
步骤2:然后发出对所述指定区域重新绘制的命令,使所述编辑窗口在所述指定区域重新输出所述指定执行命令文本内容;同时,重新输出的所述指定执行命令文本内容以及对应的指定行标号信息被存储到所述数据缓存中;
重绘操作是指将指定区域文本内容在其原位置重新快速输出一遍。例如:用户在编辑窗口第3行输入以下文本内容C:ping 192.168.1.100;然后将光标位于文本内容C最后一个字符的后面,当用户操作键盘按下回车键时,获得第3行为指定区域,然后自动重绘第3行,也就是在第3行快速重新输出文本内容C。由于监听模块实时监听运维工具所在的编辑窗口,能够重新输出的文本内容C以及第3行的对应关系当然也会被存储到数据缓存中,并且,由于此处为重绘后快速输出的文本内容C,因此,数据缓存中存储的并不是第3行与分散的文本内容C中各字符的对应关系,而是将文本内容C中各字符作为一个整体,存储的为整体文本内容C与第3行的对应关系。因此,以行号为关键词查找数据缓存,可以方便快速的查找到文本内容C,而完全不需要对多个字符进行重组而得到文本内容C。
S3,以所记录的所述指定行标号信息为关键词查找所述数据缓存,查找到与所述指定行标号信息对应的最近时刻存储的文本内容,该文本内容即为完整的所述指定执行命令文本内容;
此处需要说明的是,由于用户在编辑窗口中某一行输入文本内容时,存在对所输入的原始文本内容修改后才按回车键执行的情况,因此,与指定行标号信息对应的最近时刻存储的文本内容才为执行命令文本内容。例如,在编辑窗口第3行,首先输入文本内容a1为:ping 192.168.1.100,此时,缓存中存储第3行与文本内容a1中各个字符之间的分散对应关系;然后,在未对文本内容a1执行的情况下,将文本内容a1修改为文本内容a2,即:ping 192.168.1.101,此时,缓存中存储第3行与文本内容a2中各个字符之间的分散对应关系;然后,如果用户按动回车键执行文本内容a2,则重绘第3行,将文本内容a2在第3行重新输出,则缓存中存储第3行与整体的文本内容a2的对应关系。由此可见,对于存在修改的情况,缓存中对于第3行的行标号,存储多个与该行标号的对应关系,但是,只有最近时刻的对应关系才是需要筛选到的执行命令文本内容。另外,可采用多种方式获得数据缓存中与某一行标号对应的最近文本内容,例如:数据缓存可按时间先后顺序存储各个对应关系,然后即可方便查找到与某一行标号对应的最近文本内容;另外,也可以向数据缓存中存储行标号、文本内容与获取该文本内容的时间戳的对应关系,然后,通过比较时间戳,也可快速查找到与某一行标号对应的最近文本内容,本发明对此并不限制。
S4,将S3所查找到的所述指定执行命令文本内容、S2获得的所述屏幕视频帧、S2获得的所述账户信息、S2记录的所述时间戳以及S1获得的运维工具的类型之间的映射关系存储到映射关系配置表。
S4之后,还包括:
S5,接收对业务服务器执行命令进行检索回放的指令,其中,该检索回放的指令中携带检索关键词;所述检索关键词为账户信息、需检索的时间信息以及需检索的运维工具类型的一种或几种组合信息;
S6,根据所述检索关键词检索所述映射关系配置表,定位到与所述检索关键词对应的执行命令文本内容和执行命令文本内容时的指定屏幕视频帧。
因此,通过上述检索回放方式,可非常方便迅速的检索到某一时刻运维人员通过运维终端发送到运维服务器的执行命令,从而可全面对运维人员的运维行为进行监控。此外,当基于账户信息进行检索时,可检索到同一账户的所有执行命令,可全面方便获取某一运维人员的所有执行命令。
S6之后,还包括:
S7,按所设定的播放帧数参数,检索到位于所述指定屏幕视频帧之前且与所述指定屏幕视频帧相邻的连续的若干张屏幕视频帧,还检索到位于所述指定屏幕视频帧之后且与所述指定屏幕视频帧相邻的连续的若干张屏幕视频帧;然后,根据各张检索到的屏幕视频帧的时间戳信息,按时间先后顺序播放所检索到的各张屏幕视频帧,从而还原得到执行命令发生时的操作场景。
例如,当需要检索2014年8月5日19:00的操作场景时,为方便说明,仅以设定的播放帧数参数为前后各2张为例进行说明:
设映射关系配置表中按时间戳先后顺序存储以下内容:映射关系1:18:30分-屏幕视频帧1-账户a-执行命令文本内容1-运维工具1;映射关系2:18:50分-屏幕视频帧2-账户a-执行命令文本内容2-运维工具1;映射关系3:19:00分-屏幕视频帧3-账户a-执行命令文本内容3-运维工具1;映射关系4:19:30分-屏幕视频帧4-账户a-执行命令文本内容4-运维工具1;映射关系5:19:32分-屏幕视频帧5-账户a-执行命令文本内容5-运维工具1;则自动播放屏幕视频帧1、屏幕视频帧2、屏幕视频帧3、屏幕视频帧4和屏幕视频帧5,从而实现还原执行命令3时的操作场景。
其中,播放帧数参数的具体值可手工设置,也可由监控***自动设置。
如图2所示,本发明还提供一种业务服务器执行命令的捕获***,该捕获***运行于运维终端,所述运维终端上安装多个用于登陆并操作业务服务器的运维工具,各个运维工具在所述运维终端上占用各自独立的进程运行;所述捕获***包括:
第一获取模块,用于获取运维工具的类型;
第一监听模块,用于监听所述运维工具,判断所述运维工具所在的编辑窗口是否输出文本内容;
第二获取模块,用于当所述第一监听模块监听到运维工具所在的编辑窗口输出文本内容时,获得所输出的文本内容以及该文本内容在编辑窗口中的行标号信息;其中,所述文本内容包括执行命令文本内容和非执行命令文本内容;
数据缓存模块,用于实时缓存所述第二获取模块所获取到的文本内容与所述行标号信息的映射关系;
第二监听模块,用于监听I/0模块的工作状态,判断I/0模块是否发出对某一指定执行命令文本内容的执行确认指令;
截屏模块,用于当所述第二监听模块监听到I/0模块发出对某一指定执行命令文本内容的执行确认指令时,对当前屏幕进行截屏操作,获得屏幕视频帧;
账户信息获取模块,用于当所述第二监听模块监听到I/0模块发出对某一指定执行命令文本内容的执行确认指令时,获得当前登录所述数据库维护命令编辑工具的账户信息;
时间戳记录模块,用于当所述第二监听模块监听到I/0模块发出对某一指定执行命令文本内容的执行确认指令时,记录当前时刻的时间戳;
执行命令文本内容获取模块,用于当所述第二监听模块监听到I/0模块发出对某一指定执行命令文本内容的执行确认指令时,获取所述指定执行命令文本内容;具体包括:
指定区域获取子单元,用于当所述第二监听模块监听到I/0模块发出对某一指定执行命令文本内容的执行确认指令时,获得所述指定执行命令文本内容在所述编辑窗口中的指定区域;
记录子单元,用于当所述指定区域获取子单元获取到所述指定区域后,获得并记录该指定区域的指定执行命令文本内容在所述编辑窗口中的指定行标号信息;
重绘指令发送子单元,用于当所述指定区域获取子单元获取到所述指定区域后,向编辑窗口发出对所述指定区域重新绘制的命令,使所述编辑窗口在所述指定区域重新输出所述指定执行命令文本内容;同时,重新输出的所述指定执行命令文本内容以及对应的指定行标号信息被存储到所述数据缓存中;
查找子单元,用于以所述记录子单元记录的指定行标号信息为关键词查找所述数据缓存,查找到与所述指定行标号信息对应的最近时刻存储的文本内容,该文本内容即为完整的所述指定执行命令文本内容;
映射关系配置表,用于存储所述查找子单元查找到的所述指定执行命令文本内容、所述截屏模块获得的所述屏幕视频帧、所述账户信息获取模块获得的所述账户信息、所述时间戳记录模块所记录的所述时间戳、所述第一获取模块获得的运维工具的类型之间的映射关系。
综上所述,本发明提供的业务服务器执行命令的捕获方法及***,具有以下优点:
(1)只需要在运维终端上布署捕获***,不需要更改用户的现有网络结构,也不需要代理主机,具有对运维人员运维行为的监控成本低的优点;
(2)在对运维人员运维行为的监控过程中,完全不会影响运维终端和业务服务器之间的通讯过程;
(3)运维人员通过编辑窗口输入文本内容时,无论是一次性正确输入执行命令,还是修改后得到执行命令、重复执行某一执行命令、对某一执行命令复制复制后得到执行命令,均能快速方便的监控到通过运维终端发送到运维服务器的执行命令;也就是说,本发明监控效率与最终执行的执行命令的获得途径完全无关,具有适用范围广的优点;
(3)可方便迅速的查找到执行命令文本内容、屏幕视频帧、账户信息和时间戳的对应关系,实现对运维人员全面审计监控,对于及时查找到业务服务器出现的问题具有重要作用。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视本发明的保护范围。