一种基于Telnet协议的会话解析方法及系统与流程

文档序号:11156469阅读:425来源:国知局
一种基于Telnet协议的会话解析方法及系统与制造工艺
本发明属于计算机网络
技术领域
,具体涉及到一种基于Telnet协议的会话解析方法及系统。
背景技术
:Telnet协议是TCP/IP族中的成员之一,是Internet远程登陆服务的标准协议和主要方式。Telnet协议能够为用户提供在本地计算机上完成远程工作的能力。在终端使用者的电脑上使用Telnet客户端来连接到服务器。终端使用者可以在Telnet客户端输入命令,这些命令会在服务器上运行,就像直接在服务器的控制台上输入一样。为了适应异构环境,Telnet协议定义了数据和命令在Internet上的传输方式,此定义为网络虚拟端NVT。Telnet是常用的远程控制网页服务器的方法。随着互联网的发展,网络安全问题也更加突出,在某些企业或者机构的业务系统中,需要对用户端的登陆和操作行为进行监控和记录,用于业务审计。对用于行为的监控一般采用在服务端和客户端之间加入中间人来实现。对Telnet协议而言,中间人截获的均为明文数据,对明文数据解析,并根据系统功能要求,完成密码代填与命令黑名单功能,并生成解析日志。密码代填可以根据主账号等信息,实现代填密码的功能,命令黑名单功能则可以实时阻断一些预设的命令。明文解析后会生成解析日志,审计人员可以通过日志重现客户端的所有操作行为。协议解析的效率是中间人处理非常重要的一步,而中间人的处理效率直接影响到客户端和服务端的通信质量,因此高效的协议解析是非常必须的。Telnet协议解析的关键在于还原用户命令,目前,基于Telnet协议的解析较少,对于Telnet命令的还原,一般采用分析客户端数据的方法,这种方法对用户输入为可打印字符时效果较好,但当Telnet登录和操作过程中出现控制键或快捷键时,如上翻、下翻、删除时,较难还原正确的命令,另外一种方法则过滤服务端回显数据,利用回显数据还原用户命令,这种方法能够以较高的准确率还原用户命令,但在没有回显数据的Telnet通信中则无能为力。技术实现要素:本发明的目的在于克服目前Telnet协议解析方法中存在的上述缺陷,提出了一种基于Telnet协议的会话解析方法,该方法将Telnet会话通信过程分为不同阶段,构造会话解析状态转移图,对不同阶段的数据包作差异化处理;提高了数据处理的速度和效率。为了实现上述目的,本发明提供一种基于Telnet协议的会话解析方法,所述方法包括:步骤101)接收基于Telnet协议会话的数据包,并根据数据包特征与会话解析状态转移图判定当前会话所处阶段;步骤102)根据会话所处的阶段对数据包进行解析,获取日志信息数据;步骤103)将日志信息数据封装到固定格式的日志中,生成解析日志。上述技术方案中,所述步骤103)之后还包括:步骤104)将生成的解析日志采用流式发送模式发送至存储服务器;步骤105)所述存储服务器收到日志信息数据后,根据日志类型和结束段信息拼凑出完整的日志并存储在服务器中。上述技术方案中,所述步骤101)中的会话解析状态转移图包括:协商阶段,用户名处理阶段,密码处理阶段,请求输入阶段和请求完成阶段;若会话解析状态为初始状态,连接建立收到Telnet会话数据包后,置会话解析状态为协商阶段;若会话解析状态为协商阶段,收到数据包后,若数据包为服务端发向客户端且含有登陆标识,则完成相应解析后将会话解析状态置为用户名处理阶段;若会话解析状态为用户名处理阶段,收到数据包后,若数据包为服务端发向客户端且含有密码输入标识,则完成相应解析后将会话解析状态置为密码处理阶段;若会话解析状态为密码处理阶段,收到数据包后,若数据包为服务端发向客户端且含有登陆标识,则上次登陆失败,重新进入用户名处理阶段,否则登陆成功,完成相应解析后将会话解析状态置为请求输入阶段;若会话解析状态为请求输入阶段,收到数据包后,若数据包为客户端发向服务端且含有请求输入完成标识,则完成相应解析后将会话解析状态置为请求完成阶段,若会话解析状态为请求完成阶段,收到数据包后,若数据包为客户端发向服务端,则完成相应解析后将会话解析状态置为请求输入阶段。上述技术方案中,所述步骤102)具体包括:步骤102-1)若会话解析状态为用户名处理阶段,将客户端发向服务端的数据或服务端发向客户端的回显数据进行缓存,用户名处理完成后,利用缓存的数据还原用户名;步骤102-2)若会话解析状态为请求输入阶段,利用客户端发向服务端的数据或者服务端向客户端的回显数据还原用户命令。上述技术方案中,所述步骤102-1)之后还包含:步骤102-1-1)若会话解析状态为密码处理阶段,而且系统功能要求密码代填,则将TCP/IP四元组、会话ID、登陆主账号和登陆用户名信息进行处理,获取处理后的返回值;若返回值表示仍需用户自行输入密码,则由用户自行输入密码;若返回值表示可以进行密码代填,则返回密码并将返回的密码替换用户输入的密码,发送至服务器;若返回值表示必须终止会话,则返回错误终止会话信息。上述技术方案中,所述步骤102-2)之后还包含:步骤102-2-1)若会话解析状态为请求完成阶段,而且系统功能要求命令黑名单,则将还原的用户命令信息与系统设定的黑名单进行匹配;获取返回值;若返回值表示命令符合要求,则该命令通过;若返回值表示该命令可以通过,但需要生成告警日志,则生成告警日志;若返回值表示阻断命令,则将命令输入完成标识“\r\n”替换为“Ctrl+c”发送至服务端,不执行该命令;若返回值,表示阻断会话,则返回错误终止会话。上述技术方案中,所述步骤103)中的日志信息数据包括:TCP/IP四元组、流标识、登陆会话的用户名、登陆时间、登出时间、流标识、操作标识、客户端请求的命令、命令开始时间、服务端返回客户端的响应数据和响应结束时间,并将日志字段信息封装成固定格式的日志;日志字段采用AVP编码,AVP编码由AttributeType值、AttributeLength值、Value值构成,日志每一字段的AttributeType值固定,AttributeLength值为Value域的长度,Value为日志数据;特别地,对于无法一次获取的日志字段信息,采取AVP嵌套模式,即第一层Value类型仍为AVP封装,第一层Value值为封装的第二层AVP数据,封装的第二层AVP数据为日志字段数据,但由于日志字段数据不完整,需加入分段号标识当前数据,存储服务器收到多条日志后,根据分段号进行排序拼接获取完整日志字段。上述技术方案中,所述步骤104)中的流式发送模式为:当解析到一条完整日志中的部分字段或一个完整日志字段的部分数据时,向日志服务器发送解析日志信息,而无需缓存生成一条完整日志或完整字段再发送。本发明还提供了一种基于Telnet协议的会话解析系统,所述系统包括:数据包接收模块:用于接收基于Telnet协议会话的数据包,并根据数据包特征与会话解析状态转移图判定当前会话所处阶段;数据包解析模块:用于根据会话所处的阶段对数据包进行解析,获取日志信息数据;将日志信息数据发送到日志封装模块;所述日志封装模块,用于将日志信息数据封装到固定格式的日志中,生成解析日志;日志发送模块,用于将生成的解析日志采用流式发送模式发送至存储服务器。与现有技术相比,本发明的优势在于:1、本发明将Telnet会话通信过程分为不同阶段,构造会话解析状态转移图,对不同阶段的数据包作差异化处理;提高了数据处理的速度和效率;2、本发明将Telnet命令的还原在会话解析状态为请求输入阶段完成,可根据不同应用场景,选择性地利用客户端数据或服务端回显数据,区分客户端数据或服务端回显数据依靠方向即可,无需复杂改动,可扩展性好;3、本发明的命令黑名单功能使得系统可以实时阻断命令或阻断会话,实现实时审计;日志传输采用流式发送的方式,无需缓存大量数据,节约了内存空间,提高了日志发送的效率。附图说明图1为本发明一个实施例的解析系统的各模块的逻辑结构示意图;图2为本发明一个实施例的应用场景示意图;图3为本发明一个实施例的会话解析状态转移图。具体实施方式下面结合附图和具体实施例对本发明做进一步详细的说明。如图1和图2所示,一种基于Telnet协议的会话解析方法,所述方法包括:步骤101)接收基于Telnet协议会话的数据包,并根据数据包特征与会话解析状态转移图判定当前会话所处阶段;如图2所示,初始化时置Telnet会话状态为初始阶段,连接建立收到数据包后,则将会话解析状态置为协商阶段,Telnet的协商操作用以协商通信过程中细节,格式如表1所示,其中IAC为保留码,用以区分协商数据还是普通数据,SB为子选项开 始,SE为子选项结束;若会话解析状态为协商阶段,收到数据包后,若数据包为服务端发向客户端且含有登陆标识(如“login:”),则完成相应解析后将会话解析状态置为用户名处理阶段,否则不变;若会话解析状态为用户名处理阶段,收到数据包后,若数据包为服务端发向客户端且含有密码输入标识(如“password:”),则完成相应解析后将会话解析状态置为密码处理阶段,否则不变;若会话解析状态为密码处理阶段,收到数据包后,若数据包为服务端发向客户端且含有登陆标识(如“login:”),则上次登陆失败,重新进入用户名处理阶段,否则登陆成功,完成相应解析后将会话解析状态置为请求输入阶段;若会话处于请求输入阶段,收到数据包后,若数据包为客户端发向服务端且含有请求输入完成标识(如“\r\n”或“Ctrl+c”),则完成相应解析后将会话解析状态置为请求完成阶段,否则不变;若会话处于请求完成阶段,收到数据包后,若数据包为客户端发向服务端,则完成相应解析后将会话解析状态置为请求输入阶段,否则不变。若连接断开,则该Telnet会话结束,解析完毕。表1Telnet选项协商命令格式IAC命令码选项码Telnet子选项协商命令格式IACSB选项码参数IACSE步骤102)根据会话所处的阶段对数据包进行解析,获取日志信息数据;若会话解析状态为密码处理阶段,而且系统功能要求密码代填,则将TCP/IP四元组、会话ID、登陆主账号和登陆用户名信息进行处理,获取处理后的返回值;若返回值表示仍需用户自行输入密码,则由用户自行输入密码;若返回值表示可以进行密码代填,则返回密码并将返回的密码替换用户输入的密码,发送至服务器;若返回值表示必须终止会话,则返回错误终止会话信息;若会话解析状态为用户名处理阶段,将客户端发向服务端的数据或服务端发向客户端的回显数据进行缓存,用户名处理完成后,利用缓存的数据还原用户名;在会话解析状态处于请求输入阶段时,根据方向区分客户端数据与服务端发向客户端的回显数据,该实施例中利用服务端向客户端的回显数据还原用户命令;用户请求输入完成后,则将还原的用户命令信息与系统设定的黑名单进行匹配;获取返回值。例如,用户输入字符‘1’,服务端回显数据‘l’,用户输入‘s’,服务端回 显数据‘s’,用户继续输入回车,此时命令输入完毕,通过回显数据还原用户命令为“ls”,将该命令与系统设定的黑名单进行匹配,获取返回值;若返回值为0,表示“ls”命令符合要求,命令通过;若返回值为1,表示“ls”命令可以通过,但需要生成告警日志;若返回值为2,表示“ls”命令需要被阻断,则将用户输入回车后客户端所产生的“\r\n”替换为0x03,服务端收到0x03后,则判断为“Ctrl+c”,取消该命令的执行,并继续Telnet会话;若返回值为3,表示需要阻断会话,则返回错误终止会话。在该实施例中,用户可能会较多的借助各种功能键或快捷键,且数据传输中存在服务端的回显数据,因此选择在请求输入阶段利用服务端的回显数据来还原命令,还原的关键在于识别回显数据中的转义字符,该实施例的回显数据中的转义字符集见表2:表2操作字符功能07无意义,直接忽略左移08光标向左移一位右移1b5b43光标向右移一位删除至行尾1b5b4b删除当前光标至行尾的字符插入字符1b5bPn40在当前光标出插入Pn个空字符删除字符1b5bPn50从当前光标开始向后删除Pn个字符回显数据中包括用户输入的数据与转义字符,通过对转义字符的解析能够准确的还原用户命令。步骤103)获得日志信息数据,并将数据封装到固定格式的日志中;在该实施例中,日志分为会话日志和操作日志,每一个基于Telnet协议的会话产生一条会话日志与多条操作日志。一条完整的会话日志和操作日志都包含多个字段,且部分字段获取的时间会很晚,如会话日志中的登出时间,在会话结束时才能获得,若按照普通方法生成完整日志后再发送,则需要缓存大量信息,且缓存的时间可能较长。本实施例中日志字段均采用AVP封装,每个字段都有特定的TYPE值,收到该字段后,即可封装发送给存储服务器,特别地,对于无法一次获取的的日志字段信息,如返回数据等,采取AVP嵌套模式,即第一层Value类型仍为AVP封装,第一层Value值为封装的第二层AVP数据,封装的第二层AVP数据为日志字段数据,但 由于日志字段数据不完整,需加入分段号标识当前数据,存储服务器收到多条日志后,根据分段号进行排序拼接获取完整日志字段。将第一层AVP封装的TYPE值高位置1即表示该类型为AVP嵌套;表3是本发明的一个实例中会话日志AVP定义;表4是本发明的另一个实例中操作日志AVP定义;表3表4如表5所示,本实施例的日志格式为:会话标识是网络会话的唯一标识;协议标识区分不同协议;日志类型0x01表示会话日志,0x02表示操作日志;本段长度,是封装在本段的网络会话日志的长度;会话日志内容,必须包含一个或多个完整的AVP封装。当总长度为12字节时,没有载荷,代表一路网络会话日志结束。表5步骤104)将生成的解析日志采用流式发送模式发送至存储服务器;所述流式发送模式为:当解析到一条完整日志中的部分字段或一个完整日志字段的部分数据时,就向日志服务器发送解析日志信息,而无需缓存生成一条完整日志或完整字段再发送。该步骤不仅提高了日志发送的效率,还减少了缓存日志的开销。步骤105)所述存储服务器收到日志信息数据后,根据日志类型和结束段信息拼凑出完整的日志并存储在服务器中。本发明还提供了一种基于Telnet协议的会话解析系统,所述系统包括:数据包接收模块:接收基于Telnet协议会话的数据包,并根据数据包特征与会话解析状态转移图判定当前会话所处阶段;数据包解析模块:根据会话所处的阶段对数据包进行解析,获取日志信息数据;将日志信息数据发送到日志封装模块;所述日志封装模块,用于将日志信息数据封装到固定格式的日志中,生成解析日志;日志发送模块,用于将生成的解析日志采用流式发送模式发送至存储服务器。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1