CN104065732A - 一种Telnet代理转发机制 - Google Patents
一种Telnet代理转发机制 Download PDFInfo
- Publication number
- CN104065732A CN104065732A CN201410308090.0A CN201410308090A CN104065732A CN 104065732 A CN104065732 A CN 104065732A CN 201410308090 A CN201410308090 A CN 201410308090A CN 104065732 A CN104065732 A CN 104065732A
- Authority
- CN
- China
- Prior art keywords
- telnet
- socket
- thread
- call
- function
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Landscapes
- Computer And Data Communications (AREA)
Abstract
本发明公开一种Telnet代理转发机制,包括主进程完成状态的初始化并建立连接线程步骤和连接线程建立连接并转发消息步骤,还包括socket连接线程对转发数据的监控步骤,具体为:(1)当接到回车指令时,调用函数解析出正确的命令;(2)调用命令过滤模块,判断是否允许执行该命令,如果允许将解析出的正确命令发送给监控程序,如果不允许,给客户端转发不允许执行命令的信息;(3)Thread_loop循环处理所有的读写事件,直到socket连接关闭。本发明对TELNET会话命令分析、会话监测、切断、回放功能,在运维过程中实现了事前预防、事中干预和事后分析处理,在一定程度上帮助企业提升内部风险控制水平。
Description
技术领域
本发明涉及一种Telnet代理转发机制,具体涉及一种对会话进行监测的Telnet代理转发机制。
背景技术
Telnet协议是TCP/IP协议族中的一员,是Internet远程登陆服务的标准协议和主要方式。它为用户提供了在本地计算机上完成远程主机工作的能力。在终端使用者的电脑上使用telnet程序,用它连接到服务器。终端使用者可以在telnet程序中输入命令,这些命令会在服务器上运行,就像直接在服务器的控制台上输入一样。可以在本地就能控制服务器。要开始一个telnet会话,必须输入用户名和密码来登录服务器。Telnet是常用的远程控制Web服务器的方法。Telnet协议是TCP/IP协议族中的一员,是Internet远程登陆服务的标准协议和主要方式。它为用户提供了在本地计算机上完成远程主机工作的能力。在终端使用者的电脑上使用telnet程序,用它连接到服务器。终端使用者可以在telnet程序中输入命令,这些命令会在服务器上运行,就像直接在服务器的控制台上输入一样。可以在本地就能控制服务器。要开始一个telnet会话,必须输入用户名和密码来登录服务器。Telnet是常用的远程控制Web服务器的方法。
然而通过Telnet协议链接设备是明文传送的,具有很大的安全隐患。因此要求我们在代理转发的同时,也要有相应的TELNET会话命令分析、会话监测、切断、回放的过程。
发明内容
发明目的:本发明目的在于针对现有技术的不足,提供一种有相应的TELNET会话命令分析、会话监测、切断、回放的过程的Telnet代理转发机制。
技术方案:本发明所述一种Telnet代理转发机制,在服务器和客户端之间建立Telnet转发机制,包括Telnet会话主进程完成状态的初始化并建立socket连接线程步骤和socket连接线程建立连接并转发消息步骤,还包括socket连接线程对转发数据的监控步骤,具体为:
(1)当接到回车指令时,调用vt100line来判断buffer的含义,解析出正确的命令;
(2)调用命令过滤模块,判断是否允许执行该命令,如果允许调用proxy_data_write,将解析出的正确命令发送给监控程序,如果不允许,给客户端转发不允许执行命令的信息,给服务器转发ctrl+c,不让服务器执行这条命令;
(3)Thread_loop循环处理所有的读写事件,直到socket连接关闭。
本发明技术方案的进一步限定为,所述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三个函数来释放掉相关资源。
进一步地,所述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函数连接到真正的服务器。
进一步地,所述socket连接线程转发信息步骤具体为:
(1)socket线程调用函数device_login_loop跟服务器进行通信,然后调用thread_loop函数处理所有的读写事件,如果有事件发生,则根据序号对每个事件分别进行处理;
(2)处理过程调用handle_message函数,首先调用recv函数来接收buffer,之后判断发信息者的socket类型,如果是客户端所发,则判断buffer命令的类型,并赋予相应的标识位,之后把buffer转发给服务器。
进一步地,上述Telnet转发机制的会话过程中,对命令的解析采用如下方法:
(1)初始化一个有效的待解匹配的终端控制码表;
(2)对缓冲区的字符逐个进行解析,当解析的字符匹配了某个终端控制码后,就按照相应的终端控制码的功能对输出缓冲区进行处理;
(3)如果当前处理的字符不是控制码,则将其记录到输出缓冲区中;
(4)当输入缓冲区处理完成之后,根据当前输出缓冲区以及光标的位置输出有效的命令内容。
有益效果:本发明提供的一种Telnet代理转发机制,现了在运维人员对目标服务器进行运维操作中,对TELNET会话命令分析、会话监测、切断、回放功能,这样在运维过程中实现了事前预防、事中干预和事后分析处理。本发明会嵌入到运维审计的堡垒机中,在一定程度上帮助企业提升内部风险控制水平。
附图说明
图1为本发明提供的telnet会话代理模块的结构示意图;
图2为本发明提供的Telnet代理转发机制的工作流程图;
图3为本发明提供的Tlenet代理转发机制中会话解析算法的流程图。
具体实施方式
下面通过附图对本发明技术方案进行详细说明,但是本发明的保护范围不局限于所述实施例。
实施例1:Telnet是一种较简单的远程登录协议,它的整个过程不需要加密,但是应用相当广泛,可以工作在任何主机或任何终端之间,这其中是靠NVT(网络虚拟终端)来实现。NVT是虚拟设备,连接的双方,即客户机和服务器,都必须把他们的物理终端和NVT进行相互转换。
术语NVT ACSII代表7比特的ACSII字符集。每个7比特的字符都以8比特格式发送,最高位比特为0。Telnet通信时,要发送字节0xff,这个字节叫做IAC(作为命令来解释)。
在Telnet连接时,双方首先进行交互的信息是选项协商数据。选项协商是对称的,也就是说任何一方都可以主动发送选项协商请求给对方。对于任何给定的选项,连接的任何一方都可以发送下面4种请求的任意一个请求:(1)will:发送方本身将激活(enable)选项(2)do:发送方想叫接收端激活选项(3)wont:发送方本身想禁止选项(4)don’t:发送方想让接收端去禁止选项。选项协商需要3个字节:一个IAC字节,接着一个字节是will,do,wont,don’t这四者之一,最后一个ID字节指明激活或禁止选项。
而有些选项不是仅仅用激活或禁止就能够表达的,指定终端类型就是一个例子,客户进程必须发送用一个ASCII字符串来表示终端类型,为了处理这种选项,我们必须定义子选项协商机制。首先连接的某一方(通常是客户进程)发送3个字节的字符序列来请求激活改选项:
<IAC,WILL,24>
这里的24(十进制)是终端类型选项的ID号。如果收端(通常是服务器进程)同意,那么响应数据是:
<IAC,DO,24>
然后服务器进程再发送如下的字符串:
<IAC,SB,24,1,IAC,SE>
该字符串询问客户进程的终端类型,其中SB是子选项协商的起始命令。下一个字节的“24”代表这是终端类型选项的子选项。下一个“1”表示“发送你的终端类型”。子选项协商的结束命令标识也是IAC,就像SB是起始命令标志一样。如果终端类型是ibmpc,客户进程的响应命令将是:
<IAC,SB,24,0,’I’,’B’,’M’,’P’,’C’,IAC,SE>
第4个字节“0”代表“我的终端类型是”。在Telnet子选项协商过程中,终端类型用大写表示,当服务器收到该字符串后会自动转换为小写字符。更详细的Telnet协议相关的信息请参考RFC相关文档。
Telnet会话代理模块通过使用代理转发技术,实现telnet会话数据的记录、转发、回放、监控等功能,代理转发的结构示意图如图1所示。
TELNET运维会话审计功能包含的数据主题域及数据实体,如表1所示:
表1:
字段名称 | 字段意义 |
id | 字符终端日志ID |
login_name | 运维人员账号 |
login_IP | 运维人员IP |
target_IP | 运维设备IP |
target_port | 运维设备端口 |
target_pro | 运维设备协议 |
target_user | 运维设备账号 |
begin_time | 运维操作开始时间 |
end_time | 运维操作结束时间 |
cmd_file_name | 运维操作命令文件 |
full_file_name | 运维操作过程文件 |
line | 命令行数 |
基于上述telnet的知识,本发明提供了一种Telnet代理转发机制,在服务器和客户端之间建立Telnet转发机制,其流程图如图2所示,包括如下步骤:
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三个函数来释放掉相关资源。
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函数连接到真正的服务器。
socket连接线程转发消息步骤,具体为:
(1)socket线程调用函数device_login_loop跟服务器进行通信,然后调用thread_loop函数处理所有的读写事件,如果有事件发生,则根据序号对每个事件分别进行处理;
(2)处理过程调用handle_message函数,首先调用recv函数来接收buffer,之后判断发信息者的socket类型,如果是客户端所发,则判断buffer命令的类型,并赋予相应的标识位,之后把buffer转发给服务器。
socket连接线程对转发数据的监控步骤,具体为:
(1)当接到回车指令时,调用vt100line来判断buffer的含义,解析出正确的命令;
(2)调用命令过滤模块,判断是否允许执行该命令,如果允许调用proxy_data_write,将解析出的正确命令发送给监控程序,如果不允许,给客户端转发不允许执行命令的信息,给服务器转发ctrl+c,不让服务器执行这条命令;
(3)Thread_loop循环处理所有的读写事件,直到socket连接关闭。
本发明技术方案的进一步限定为,所述Telnet会话主进程完成状态的初始化并建立socket连接步骤具体方法为:
另外,上述Telnet转发机制的会话过程中,对命令的解析的算法流程图如图3所示,采用如下方法:
(1)初始化一个有效的待解匹配的终端控制码表;
(2)对缓冲区的字符逐个进行解析,当解析的字符匹配了某个终端控制码后,就按照相应的终端控制码的功能对输出缓冲区进行处理;
(3)如果当前处理的字符不是控制码,则将其记录到输出缓冲区中;
(4)当输入缓冲区处理完成之后,根据当前输出缓冲区以及光标的位置输出有效的命令内容。
如上所述,尽管参照特定的优选实施例已经表示和表述了本发明,但其不得解释为对本发明自身的限制。在不脱离所附权利要求定义的本发明的精神和范围前提下,可对其在形式上和细节上作出各种变化。
Claims (5)
1.一种Telnet代理转发机制,在服务器和客户端之间建立Telnet转发机制,包括Telnet会话主进程完成状态的初始化并建立socket连接线程步骤和socket连接线程建立连接并转发消息步骤,其特征在于,还包括socket连接线程对转发数据的监控步骤,具体为:
(1)当接到回车指令时,调用vt100line来判断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)当输入缓冲区处理完成之后,根据当前输出缓冲区以及光标的位置输出有效的命令内容。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410308090.0A CN104065732A (zh) | 2014-06-30 | 2014-06-30 | 一种Telnet代理转发机制 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410308090.0A CN104065732A (zh) | 2014-06-30 | 2014-06-30 | 一种Telnet代理转发机制 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN104065732A true CN104065732A (zh) | 2014-09-24 |
Family
ID=51553259
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410308090.0A Pending CN104065732A (zh) | 2014-06-30 | 2014-06-30 | 一种Telnet代理转发机制 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104065732A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104363307A (zh) * | 2014-12-08 | 2015-02-18 | 上海斐讯数据通信技术有限公司 | 用户端远程登陆服务端的方法及系统 |
CN106506585A (zh) * | 2016-09-14 | 2017-03-15 | 深圳市宏电技术股份有限公司 | 通过浏览器远程控制路由器的方法和系统 |
CN106656919A (zh) * | 2015-10-30 | 2017-05-10 | 中国科学院声学研究所 | 一种基于Telnet协议的会话解析方法及系统 |
CN107819869A (zh) * | 2017-11-21 | 2018-03-20 | 深圳竹云科技有限公司 | 一种linux‑unix文件传输互信的方法 |
CN111339732A (zh) * | 2020-02-27 | 2020-06-26 | 广东安创信息科技开发有限公司 | 一种字符命令审计的目标字符串处理方法及系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101383690A (zh) * | 2008-10-27 | 2009-03-11 | 西安交通大学 | 一种基于socket的容错计算机系统的网络同步方法 |
CN101808112A (zh) * | 2010-02-06 | 2010-08-18 | 大连大学 | 一种基于telnet和代理的设备远程维护方法 |
CN102185985A (zh) * | 2011-01-30 | 2011-09-14 | 广东佳和通信技术有限公司 | 一种ip终端或网关的收号方法 |
-
2014
- 2014-06-30 CN CN201410308090.0A patent/CN104065732A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101383690A (zh) * | 2008-10-27 | 2009-03-11 | 西安交通大学 | 一种基于socket的容错计算机系统的网络同步方法 |
CN101808112A (zh) * | 2010-02-06 | 2010-08-18 | 大连大学 | 一种基于telnet和代理的设备远程维护方法 |
CN102185985A (zh) * | 2011-01-30 | 2011-09-14 | 广东佳和通信技术有限公司 | 一种ip终端或网关的收号方法 |
Non-Patent Citations (4)
Title |
---|
WENCHAO CUI: "Application of Proxy Technology in Power System Operation and Maintenance Auditing System", 《COMPUTER SCIENCE AND NETWORK TECHNOLOGY》 * |
古权: "基于sockets技术的Internet访问管理及代理服务器的设计与实现", 《中国优秀硕士论文信息科技辑》 * |
崔文超: "SSH协议审计系统的设计与实现", 《电子技术与软件工程》 * |
钱伟中: "桑达(SED-FW2003)防火墙技术的研究——NAT及透明代理的设计与实现", 《中国优秀硕士论文信息科技辑》 * |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104363307A (zh) * | 2014-12-08 | 2015-02-18 | 上海斐讯数据通信技术有限公司 | 用户端远程登陆服务端的方法及系统 |
CN104363307B (zh) * | 2014-12-08 | 2018-04-27 | 上海斐讯数据通信技术有限公司 | 用户端远程登陆服务端的方法及系统 |
CN106656919A (zh) * | 2015-10-30 | 2017-05-10 | 中国科学院声学研究所 | 一种基于Telnet协议的会话解析方法及系统 |
CN106506585A (zh) * | 2016-09-14 | 2017-03-15 | 深圳市宏电技术股份有限公司 | 通过浏览器远程控制路由器的方法和系统 |
CN106506585B (zh) * | 2016-09-14 | 2019-10-25 | 深圳市宏电技术股份有限公司 | 通过浏览器远程控制路由器的方法和系统 |
CN107819869A (zh) * | 2017-11-21 | 2018-03-20 | 深圳竹云科技有限公司 | 一种linux‑unix文件传输互信的方法 |
CN111339732A (zh) * | 2020-02-27 | 2020-06-26 | 广东安创信息科技开发有限公司 | 一种字符命令审计的目标字符串处理方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI780047B (zh) | 身份認證方法、裝置和系統 | |
US20230155994A1 (en) | System and method for secure application communication between networked processors | |
EP2883340B1 (en) | Authorization method, apparatus, and system | |
CN104636924B (zh) | 一种安全支付方法、服务器以及系统 | |
CN103065178B (zh) | 一种二维码分享装置、访问装置和分享方法 | |
CN104065732A (zh) | 一种Telnet代理转发机制 | |
CN104967590B (zh) | 一种传输通信消息的方法、装置和系统 | |
CN111125763A (zh) | 隐私数据的处理方法、装置、设备和介质 | |
CN104270334A (zh) | 一种ssh网络安全访问协议监测方法 | |
CN104579796A (zh) | 一种网络设备的远程维护方法、终端及系统 | |
US20140254788A1 (en) | Communication between a mobile device and a call center | |
CN113905030A (zh) | 内外网通讯方法、装置、内网终端和代理服务器 | |
CN109639703A (zh) | 一种基于b/s架构的电台遥控方法及系统 | |
CN106790171B (zh) | 会话控制的方法、装置、计算机可读存储介质和设备 | |
CN112511892B (zh) | 屏幕共享方法、装置、服务器及存储介质 | |
JP2015130028A (ja) | 代行ログイン装置、端末、制御方法およびプログラム | |
CN107770219A (zh) | 一种视窗窗口的共享方法、网关服务器和系统 | |
JP6527576B2 (ja) | ローカル情報を取得するための方法、機器、及びシステム | |
CN109040331B (zh) | 电子名片的处理方法、装置、计算设备和存储介质 | |
CN111193776B (zh) | 云桌面环境下客户端自动登录方法、装置、设备和介质 | |
US20160285819A1 (en) | Sharing and controlling electronic devices located at remote locations using xmpp server | |
CN105208010A (zh) | 基于反向ssh的跨局域网远程数据连接方法 | |
JP2015191508A (ja) | シングルサインオンシステム、シングルサインオン方法 | |
JP4581850B2 (ja) | 計算機の認証方法 | |
CN109286626B (zh) | 一种信息处理方法、本地设备、远程设备和信息处理系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C41 | Transfer of patent application or patent right or utility model | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20170214 Address after: 102206 Beijing Changping District city Huilongguan Town Road No. 1 Building No. 5 hospital 8 floor 1 unit 906 Applicant after: Beijing Huadian Tianyi Information Technology Co., Ltd. Address before: Shishi Fuda Road Park 212000 city of Jiangsu Province, Zhenjiang Jurong Economic Development Zone, building 02, room 315 Applicant before: Jiangsu Huada Tianyi Electric Power Science & Technology Co., Ltd. |
|
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20140924 |