一种Telnet代理转发机制的制作方法

文档序号:7807824阅读:550来源:国知局
一种Telnet代理转发机制的制作方法
【专利摘要】本发明公开一种Telnet代理转发机制,包括主进程完成状态的初始化并建立连接线程步骤和连接线程建立连接并转发消息步骤,还包括socket连接线程对转发数据的监控步骤,具体为:(1)当接到回车指令时,调用函数解析出正确的命令;(2)调用命令过滤模块,判断是否允许执行该命令,如果允许将解析出的正确命令发送给监控程序,如果不允许,给客户端转发不允许执行命令的信息;(3)Thread_loop循环处理所有的读写事件,直到socket连接关闭。本发明对TELNET会话命令分析、会话监测、切断、回放功能,在运维过程中实现了事前预防、事中干预和事后分析处理,在一定程度上帮助企业提升内部风险控制水平。
【专利说明】一种Te I net代理转发机制

【技术领域】
[0001] 本发明涉及一种Telnet代理转发机制,具体涉及一种对会话进行监测的Telnet 代理转发机制。

【背景技术】
[0002] Telnet协议是TCP/IP协议族中的一员,是Internet远程登陆服务的标准协议和 主要方式。它为用户提供了在本地计算机上完成远程主机工作的能力。在终端使用者的电 脑上使用telnet程序,用它连接到服务器。终端使用者可以在telnet程序中输入命令,这 些命令会在服务器上运行,就像直接在服务器的控制台上输入一样。可以在本地就能控制 服务器。要开始一个telnet会话,必须输入用户名和密码来登录服务器。Telnet是常用的 远程控制Web服务器的方法。Telnet协议是TCP/IP协议族中的一员,是Internet远程登陆 服务的标准协议和主要方式。它为用户提供了在本地计算机上完成远程主机工作的能力。 在终端使用者的电脑上使用telnet程序,用它连接到服务器。终端使用者可以在telnet程 序中输入命令,这些命令会在服务器上运行,就像直接在服务器的控制台上输入一样。可以 在本地就能控制服务器。要开始一个telnet会话,必须输入用户名和密码来登录服务器。 Telnet是常用的远程控制Web服务器的方法。
[0003] 然而通过Telnet协议链接设备是明文传送的,具有很大的安全隐患。因此要求我 们在代理转发的同时,也要有相应的TELNET会话命令分析、会话监测、切断、回放的过程。


【发明内容】

[0004] 发明目的:本发明目的在于针对现有技术的不足,提供一种有相应的TELNET会话 命令分析、会话监测、切断、回放的过程的Telnet代理转发机制。
[0005] 技术方案:本发明所述一种Telnet代理转发机制,在服务器和客户端之间建立 Telnet转发机制,包括Telnet会话主进程完成状态的初始化并建立socket连接线程步骤 和socket连接线程建立连接并转发消息步骤,还包括socket连接线程对转发数据的监控 步骤,具体为:
[0006] (1)当接到回车指令时,调用vtlOOline来判断buffer的含义,解析出正确的命 令;
[0007] (2)调用命令过滤模块,判断是否允许执行该命令,如果允许调用proxy_data_ write,将解析出的正确命令发送给监控程序,如果不允许,给客户端转发不允许执行命令 的信息,给服务器转发ctrl+c,不让服务器执行这条命令;
[0008] (3)Thread_loop循环处理所有的读写事件,直到socket连接关闭。
[0009] 本发明技术方案的进一步限定为,所述Telnet会话主进程完成状态的初始化并 建立socket连接步骤具体方法为:
[0010] (1)调用 proxy_mod_init,proxy_session_init,proxy_data_init 三个函数来初 始化程序的模式、会话、数据信息,并完成互斥操作初始化及处理信号操作;
[0011 ] (2)调用socket函数创建socket,并调用bind, listen来绑定地址及监听端口;
[0012] (3)监听是否有新的socket连接请求,如果有新的连接请求,则调用accept函数 接受请求,并创建一个新线程来处理这个连接请求;
[0013] (4)当主线程要结束时,调用 proxy_mod_destroy, proxy_session_ destroy, proxy_data_destroy三个函数来释放掉相关资源。
[0014] 进一步地,所述socket连接线程建立连接步骤具体为:
[0015] (1) socket 连接线程调用函数 pthread_mutex_lock 和 pthread_mutex_unlock 来 进行互斥操作,然后给客户端发user和password提示符,提示用户输入用户名和密码,再 调用函数 get_remote_line ;
[0016] (2)当用户输入时,解析这个输入,将信息转换成telnet的格式,再调用parse_ iac2函数,判断通信双方协商的状态;
[0017] ⑶得到有效的用户名和密码后,调用proxy_auth_check来验证是否正确,如果 不正确,直接断开telnet连接,如果正确,则调用socket和connect函数连接到真正的服 务器。
[0018] 进一步地,所述socket连接线程转发信息步骤具体为:
[0019] (1) socket线程调用函数deVice_l〇gin_l〇〇p跟服务器进行通信,然后调用 threacLloop函数处理所有的读写事件,如果有事件发生,则根据序号对每个事件分别进行 处理;
[0020] (2)处理过程调用handle_message函数,首先调用recv函数来接收buffer,之后 判断发信息者的socket类型,如果是客户端所发,则判断buffer命令的类型,并赋予相应 的标识位,之后把buffer转发给服务器。
[0021] 进一步地,上述Telnet转发机制的会话过程中,对命令的解析采用如下方法:
[0022] (1)初始化一个有效的待解匹配的终端控制码表;
[0023] (2)对缓冲区的字符逐个进行解析,当解析的字符匹配了某个终端控制码后,就按 照相应的终端控制码的功能对输出缓冲区进行处理;
[0024] (3)如果当前处理的字符不是控制码,则将其记录到输出缓冲区中;
[0025] (4)当输入缓冲区处理完成之后,根据当前输出缓冲区以及光标的位置输出有效 的命令内容。
[0026] 有益效果:本发明提供的一种Telnet代理转发机制,现了在运维人员对目标服务 器进行运维操作中,对TELNET会话命令分析、会话监测、切断、回放功能,这样在运维过程 中实现了事前预防、事中干预和事后分析处理。本发明会嵌入到运维审计的堡垒机中,在一 定程度上帮助企业提升内部风险控制水平。

【专利附图】

【附图说明】
[0027] 图1为本发明提供的telnet会话代理模块的结构示意图;
[0028] 图2为本发明提供的Telnet代理转发机制的工作流程图;
[0029] 图3为本发明提供的Tlenet代理转发机制中会话解析算法的流程图。

【具体实施方式】
[0030] 下面通过附图对本发明技术方案进行详细说明,但是本发明的保护范围不局限于 所述实施例。
[0031] 实施例1 :Telnet是一种较简单的远程登录协议,它的整个过程不需要加密,但是 应用相当广泛,可以工作在任何主机或任何终端之间,这其中是靠 NVT(网络虚拟终端)来 实现。NVT是虚拟设备,连接的双方,即客户机和服务器,都必须把他们的物理终端和NVT进 行相互转换。
[0032] 术语NVT ACSII代表7比特的ACSII字符集。每个7比特的字符都以8比特格式 发送,最高位比特为0。Telnet通信时,要发送字节Oxff,这个字节叫做IAC (作为命令来解 释)。
[0033] 在Telnet连接时,双方首先进行交互的信息是选项协商数据。选项协商是对称 的,也就是说任何一方都可以主动发送选项协商请求给对方。对于任何给定的选项,连接的 任何一方都可以发送下面4种请求的任意一个请求:(l)will :发送方本身将激活(enable) 选项(2) do :发送方想叫接收端激活选项(3) wont :发送方本身想禁止选项(4) don't :发送 方想让接收端去禁止选项。选项协商需要3个字节:一个IAC字节,接着一个字节是will, do, wont, don' t这四者之一,最后一个ID字节指明激活或禁止选项。
[0034] 而有些选项不是仅仅用激活或禁止就能够表达的,指定终端类型就是一个例子, 客户进程必须发送用一个ASCII字符串来表示终端类型,为了处理这种选项,我们必须定 义子选项协商机制。首先连接的某一方(通常是客户进程)发送3个字节的字符序列来请 求激活改选项:
[0035] <IAC, WILL, 24>
[0036] 这里的24(十进制)是终端类型选项的ID号。如果收端(通常是服务器进程) 同意,那么响应数据是:
[0037] <IAC, DO, 24>
[0038] 然后服务器进程再发送如下的字符串:
[0039] <IAC, SB, 24, 1, IAC, SE>
[0040] 该字符串询问客户进程的终端类型,其中SB是子选项协商的起始命令。下一个字 节的"24"代表这是终端类型选项的子选项。下一个"1"表示"发送你的终端类型"。子选 项协商的结束命令标识也是IAC,就像SB是起始命令标志一样。如果终纟而类型是ibmpc,客 户进程的响应命令将是:
[0041] 〈IAC, SB,24, 0, ' Γ,,B,,,M,,,P,,,C,,IAC, SE>
[0042] 第4个字节"0"代表"我的终端类型是"。在Telnet子选项协商过程中,终端类型 用大写表示,当服务器收到该字符串后会自动转换为小写字符。更详细的Telnet协议相关 的信息请参考RFC相关文档。
[0043] Telnet会话代理模块通过使用代理转发技术,实现telnet会话数据的记录、转 发、回放、监控等功能,代理转发的结构示意图如图1所示。
[0044] TELNET运维会话审计功能包含的数据主题域及数据实体,如表1所示:
[0045] 表 1 :
[0046]
[0047]

【权利要求】
1. 一种Telnet代理转发机制,在服务器和客户端之间建立Telnet转发机制,包括 Telnet会话主进程完成状态的初始化并建立socket连接线程步骤和socket连接线程建立 连接并转发消息步骤,其特征在于,还包括socket连接线程对转发数据的监控步骤,具体 为: (1) 当接到回车指令时,调用vtlOOline来判断buffer的含义,解析出正确的命令; (2) 调用命令过滤模块,判断是否允许执行该命令,如果允许调用proxy_data_write, 将解析出的正确命令发送给监控程序,如果不允许,给客户端转发不允许执行命令的信息, 给服务器转发ctrl+c,不让服务器执行这条命令; (3) Thread_loop循环处理所有的读写事件,直到socket连接关闭。
2. 根据权利要求1所述的一种Telnet代理转发机制,其特征在于,所述Telnet会话主 进程完成状态的初始化并建立socket连接步骤具体方法为: (1) 调用 proxy_mod_init,proxy_session_init,proxy_data_init 三个函数来初始化 程序的模式、会话、数据信息,并完成互斥操作初始化及处理信号操作; (2) 调用socket函数创建socket,并调用bind, listen来绑定地址及监听端口; (3) 监听是否有新的socket连接请求,如果有新的连接请求,则调用accept函数接受 请求,并创建一个新线程来处理这个连接请求; (4) 当主线程要结束时,调用proxy_mod_destroy, proxy_ session-destroy, proxy- data_destroy三个函数来释放掉相关资源。
3. 根据权利要求1所述的一种Telnet代理转发机制,其特征在于,所述socket连接线 程建立连接步骤具体为: (1 )socket 连接线程调用函数 pthread_mutex_lock 和 pthread_mutex_unlock 来进行 互斥操作,然后给客户端发user和password提示符,提示用户输入用户名和密码,再调用 函数 get_remote_line ; (2) 当用户输入时,解析这个输入,将信息转换成telnet的格式,再调用parse_iac2函 数,判断通信双方协商的状态; (3) 得到有效的用户名和密码后,调用proxy_auth_check来验证是否正确,如果不正 确,直接断开telnet连接,如果正确,则调用socket和connect函数连接到真正的服务器。
4. 根据权利要求1所述的一种Telnet代理转发机制,其特征在于,所述socket连接线 程转发信息步骤具体为: (1) socket线程调用函数device_login_loop跟服务器进行通信,然后调用thread_ loop函数处理所有的读写事件,如果有事件发生,则根据序号对每个事件分别进行处理; (2) 处理过程调用handle_message函数,首先调用recv函数来接收buffer,之后判断 发信息者的socket类型,如果是客户端所发,则判断buffer命令的类型,并赋予相应的标 识位,之后把buffer转发给服务器。
5. 根据权利要求1所述的一种Telnet代理转发机制,其特征在于,上述Telnet转发机 制的会话过程中,对命令的解析采用如下方法: (1) 初始化一个有效的待解匹配的终端控制码表; (2) 对缓冲区的字符逐个进行解析,当解析的字符匹配了某个终端控制码后,就按照相 应的终端控制码的功能对输出缓冲区进行处理; (3) 如果当前处理的字符不是控制码,则将其记录到输出缓冲区中; (4) 当输入缓冲区处理完成之后,根据当前输出缓冲区以及光标的位置输出有效的命 令内容。
【文档编号】H04L12/24GK104065732SQ201410308090
【公开日】2014年9月24日 申请日期:2014年6月30日 优先权日:2014年6月30日
【发明者】吴克河, 崔文超, 卻鑫运 申请人:江苏华大天益电力科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1