CN114244556B - 一种协议代理方法及装置 - Google Patents

一种协议代理方法及装置 Download PDF

Info

Publication number
CN114244556B
CN114244556B CN202111304796.6A CN202111304796A CN114244556B CN 114244556 B CN114244556 B CN 114244556B CN 202111304796 A CN202111304796 A CN 202111304796A CN 114244556 B CN114244556 B CN 114244556B
Authority
CN
China
Prior art keywords
data
client
protocol
analysis
target
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.)
Active
Application number
CN202111304796.6A
Other languages
English (en)
Other versions
CN114244556A (zh
Inventor
冯洋
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Topsec Technology Co Ltd
Beijing Topsec Network Security Technology Co Ltd
Beijing Topsec Software Co Ltd
Original Assignee
Beijing Topsec Technology Co Ltd
Beijing Topsec Network Security Technology Co Ltd
Beijing Topsec Software Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Topsec Technology Co Ltd, Beijing Topsec Network Security Technology Co Ltd, Beijing Topsec Software Co Ltd filed Critical Beijing Topsec Technology Co Ltd
Priority to CN202111304796.6A priority Critical patent/CN114244556B/zh
Publication of CN114244556A publication Critical patent/CN114244556A/zh
Application granted granted Critical
Publication of CN114244556B publication Critical patent/CN114244556B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/02Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
    • H04L63/0281Proxies
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/18Multiprotocol handlers, e.g. single devices capable of handling multiple protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/22Parsing or analysis of headers

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer And Data Communications (AREA)

Abstract

本发明提供一种协议代理方法及装置,所述方法包括:监听代理端口有客户端接入时,认证所述客户端身份,并建立连接;基于所述连接获得客户端欲访问的目的服务端信息;与解析模块建立连接;注册用于和解析模块进行数据交互的数据头,所述数据头用于使解析模块确认客户端与目的服务端的交互数据所属的协议类型及基本信息;创建代理客户端,并使代理客户端代替客户端与目的服务端建立连接;基于代理客户端获得其与目的服务端之间的交互数据,并处理交互数据,使其具有数据头;转发处理后的交互数据至解析模块,由解析模块审计、解析所述处理后的交互数据。本发明的协议代理方法能够对多种不同协议类型的数据进行代理、解析。

Description

一种协议代理方法及装置
技术领域
本发明实施例涉及网络安全技术领域,特别涉及一种协议代理方法及装置。
背景技术
随着信息技术的不断发展,大家对信息安全的要求逐渐提高,为了提高网络安全性,对于许多重要的设备开始使用代理的方式进行访问,便于记录用户的操作。
SSH协议作为一种加密协议被普遍应用,但许多产品审计到的内容并不全面,且没有对SCP和SFTP协议的解析和文件还原及检测的比较好的技术。例如,目前有的协议代理方法仅适用于SSH协议的解析,但在实际使用中还是会用到SCP和SFTP协议来进行文件传输,该方法并不能解析SCP和SFTP协议。还有的方法是采集推导SSH传输密钥的方式获取明文数据,再从明文中提取出SFTP数据,进一步采集会话信息及操作码,通过操作码还原操作指令,进而进行解析。但该方法是仅针对SFTP协议的解析审计,其他协议并不支持,而且该方法是采用推导密钥的方式来解密数据,若密钥推导有误差则无法获取到正确的SFTP数据。
发明内容
本发明提供了一种能够对多种不同协议类型的数据进行代理、解析的协议代理方法及装置。
为了解决上述技术问题,本发明实施例提供了一种协议代理方法,所述方法包括:
监听代理端口有客户端接入时,认证所述客户端身份,并建立连接;
基于所述连接获得所述客户端欲访问的目的服务端信息;
与所述解析模块建立连接;
注册用于和所述解析模块进行数据交互的数据头,所述数据头用于使所述解析模块确认所述客户端与目的服务端的交互数据所属的协议类型及基本信息;
创建代理客户端,并使所述代理客户端代替所述客户端与所述目的服务端建立连接;
基于所述代理客户端获得其与所述目的服务端之间的交互数据,并处理所述交互数据,使其具有所述数据头;
转发处理后的所述交互数据至解析模块,由所述解析模块审计、解析所述处理后的交互数据。
作为一可选实施例,所述基于所述连接获得所述客户端欲访问的目的服务端信息,包括:
基于所述连接发送服务端列表至所述客户端,由所述客户端从所述服务端列表中确定欲访问的目的服务端;
基于所述连接接收所述客户端发送的欲访问的目的服务端信息。
作为一可选实施例,所述数据头包括协议类型,数据内容类型,IP协议类型,源IP,目的IP,源端口号,目的端口号,数据方向,数据长度中的一种或多种。
作为一可选实施例,所述处理所述交互数据,使其具有所述数据头,包括:
获得所述客户端及目的服务端对于目标协议的版本号,所述目标协议包括SSH协议;
获得所述客户端的用户名;
在所述交互数据中拼接所述数据头,同时插入所述目标协议的版本号及所述用户名。
作为一可选实施例,所述解析模块审计、解析所述处理后的交互数据,包括:
解析所述交互数据的数据头;
基于解析结果确定所述交互数据所属的协议类型;
基于所述协议类型从多个协议解析分支中确定出匹配的目标协议解析分支;
传输所述交互数据至所述目标协议解析分支,由所述目标协议解析分支解析所述交互数据。
作为一可选实施例,若所述协议类型为SSH协议,则所述目标协议解析分支解析所述交互数据,包括:
根据所述数据头中的目标字段确定所述交互数据的数据类型,所述数据类型至少包括协议版本号、用户名、数据中的任意一种;
若所述数据类型为所述协议版本号或用户名,则直接存储;
若所述数据类型为数据,则将所述交互数据缓存至SSH解析状态机中进行解析。
作为一可选实施例,所述将所述交互数据缓存至SSH解析状态机中进行解析,包括:
所述SSH解析状态机解析所述交互数据,确定所述交互数据中出现的目标内容;
所述SSH解析状态机基于所述目标内容进入对应的运行状态,所述运行状态与所述交互数据的类型相关,所述类型包括请求型、响应型;
在所述SSH解析状态机进入第一运行状态时,确定是否收到所述客户端向所述目的服务端发送的数据,若是,则表征所述客户端与目的服务端间的当前次请求响应事件结束;
所述SSH解析状态机向所述代理服务端发送完整的请求响应的审计事件。
作为一可选实施例,若所述协议类型为SFTP协议,则所述目标协议解析分支解析所述交互数据,包括:
基于所述交互数据确定数据类型;
基于所述数据类型以对应的解析方法解析所述交互数据,实现所述交互数据的解析、审计及文件还原。
作为一可选实施例,若所述协议类型为SCP协议,则所述目标协议解析分支解析所述交互数据,包括:
基于所述交互数据中多个数据段的排列顺序及所述SCP协议的数据发送规则解析、审计所述交互数据,并对所述交互数据进行文件还原。
本发明另一实施例同时提供一种协议代理装置,所述装置包括:
认证模块,用于监听代理端口有客户端接入时,认证所述客户端身份,并建立连接;
获得模块,用于根据所述连接获得所述客户端欲访问的目的服务端信息;
建立模块,用于和所述解析模块建立连接;
注册模块,用于注册用于和所述解析模块进行数据交互的数据头,所述数据头用于使所述解析模块确认所述客户端与目的服务端的交互数据所属的协议类型及基本信息;
创建模块,用于创建代理客户端,并使所述代理客户端代替所述客户端与所述目的服务端建立连接;
处理模块,用于根据所述代理客户端获得其与所述目的服务端之间的交互数据,并处理所述交互数据,使其具有所述数据头;
转发模块,用于转发处理后的所述交互数据至解析模块,由所述解析模块审计、解析所述处理后的交互数据。
基于上述实施例的公开可以获知,本发明实施例具备的有益效果包括能够对多种不同协议类型的数据进行代理、解析,确保客户端与目的服务端之间的数据交互安全。
附图说明
图1为本发明实施例中的协议代理方法的流程图。
图2为本发明实施例中执行协议代理方法的硬件关系图。
图3为本发明一实施例中的协议代理方法的实际应用流程图。
图4为本发明实施例中的数据头结构示意图。
图5为本发明另一实施例中的协议代理方法的实际应用流程图。
图6为本发明一实施例中的协议解析状态机的状态转换图。
图7为本发明实施例中的协议代理装置的结构框图。
具体实施方式
下面,结合附图对本发明的具体实施例进行详细的描述,但不作为本发明的限定。
应理解的是,可以对此处公开的实施例做出各种修改。因此,下述说明书不应该视为限制,而仅是作为实施例的范例。本领域的技术人员将想到在本公开的范围和精神内的其他修改。
包含在说明书中并构成说明书的一部分的附图示出了本公开的实施例,并且与上面给出的对本公开的大致描述以及下面给出的对实施例的详细描述一起用于解释本公开的原理。
通过下面参照附图对给定为非限制性实例的实施例的优选形式的描述,本发明的这些和其它特性将会变得显而易见。
还应当理解,尽管已经参照一些具体实例对本发明进行了描述,但本领域技术人员能够确定地实现本发明的很多其它等效形式,它们具有如权利要求所述的特征并因此都位于借此所限定的保护范围内。
当结合附图时,鉴于以下详细说明,本公开的上述和其他方面、特征和优势将变得更为显而易见。
此后参照附图描述本公开的具体实施例;然而,应当理解,所公开的实施例仅仅是本公开的实例,其可采用多种方式实施。熟知和/或重复的功能和结构并未详细描述以避免不必要或多余的细节使得本公开模糊不清。因此,本文所公开的具体的结构性和功能性细节并非意在限定,而是仅仅作为权利要求的基础和代表性基础用于教导本领域技术人员以实质上任意合适的详细结构多样地使用本公开。
本说明书可使用词组“在一种实施例中”、“在另一个实施例中”、“在又一实施例中”或“在其他实施例中”,其均可指代根据本公开的相同或不同实施例中的一个或多个。
下面,结合附图详细的说明本发明实施例。
如图1所示,本发明实施例提供一种协议代理方法,所述方法包括:
监听代理端口有客户端接入时,认证客户端身份,并建立连接;
基于连接获得客户端欲访问的目的服务端信息;
与解析模块建立连接;
注册用于和解析模块进行数据交互的数据头,数据头用于使解析模块确认客户端与目的服务端的交互数据所属的协议类型及基本信息;
创建代理客户端,并使代理客户端代替客户端与目的服务端建立连接;
基于代理客户端获得其与目的服务端之间的交互数据,并处理交互数据,使其具有数据头;
转发处理后的交互数据至解析模块,由解析模块审计、解析处理后的交互数据。
本实施例中的上述方法可以应用在如图2所示的设备中,该设备包括代理模块和解析模块,本实施例中的上述方法主要由该设备中的代理模块和解析模块执行。该代理模块的作用包括模拟出代理服务端和代理客户端,以分别代替服务端和客户端与对端进行通信,同时为了确保数据通信安全,代理模块还会将获得的交互数据发送至解析模块中进行解析审计,确保安全后发送至目的端口。
例如,代理服务端会监听设备的代理端口是否有客户端接入,也即监听是否有客户端发送数据至代理端口,该代理端口可以由客户端通过SSH(或者SCP、SFTP)连接设备的SSH代理端口接入。若确定有客户端接入,则认证客户端身份,如进行用户身份认证和密钥认证,认证成功后代理服务端和客户端完全建立连接,开始交互信息。代理服务端基于建立的连接获得客户端发送的想要访问的目的服务端的信息,此时,代理服务端会与解析模块建立连接,然后与解析模块一同协商,注册用于和解析模块进行数据交互的数据头,该数据头用于使解析模块确认客户端与目的服务端之间的交互数据所述的协议类型,以及关于该交互数据的一些基本信息。接着,代理服务端会创建代理客户端(进程),并与其建立连接,同时告知代理客户端目的服务端的信息,由代理客户端代替客户端与目的服务端建立连接,实现数据交互。代理客户端接收的数据均会发送至代理服务端,客户端要发送给目的服务端的数据也均由代理服务端发送给代理客户端,由代理客户端执行。而所有经过代理服务端的交互数据,代理服务端均会将其进行处理,以加上上述地数据头,并转发至解析模块中进行解析,审计,经解析审计后的数据再由代理服务端发送至客户端或代理客户端。其中,本实施例中的代理服务端与代理客户端之间是通过通信通道进行明文数据交互的。
基于上述实施例的公开可以获知,本实施例的方法并未限制可适用的数据具体协议类型,也即,本实施例中的方法是能够对多种不同协议类型的数据进行代理、解析,确保客户端与目的服务端之间的数据交互安全。本实施例的代理模块将数据按照协商的数据结构进行组装后发送到解析模块进行解析、审计等,最终可以实现对包括但不限于SSH、SCP、SFTP三种协议的代理和解析,而且,不仅如此,本实施例中的代理模块和解析模块通过IO多路复用的机制还可同时处理多个连接的代理和数据解析,显著提升了协议代理、解析的处理效率。另外,当协议类型为SSH协议时,本实施例的方法实际上是基于openssh(是SSH(Secure SHell)协议的免费开源实现)来实现SSH协议的反向代理,通过对开源代码的修改和重构,使代理模块中可获取到明文数据,并能够通过进程间通信的方式完成数据向代理客户端及解析模块的转发,该种方法能够保证客户端访问服务端数据的完整性,同时可获取到完整的明文数据,提高后续解析的准确性。
进一步地,本实施例中的代理模块和解析模块,并不限制客户端的操作系统和具体使用的连接工具,只要能通过代理端口连接到代理设备即可进行交互数据的解析审计,故使得本实施例中的方法具有更广泛的可应用性。
进一步地,如图3所示,本实施例在基于连接获得客户端欲访问的目的服务端信息,包括:
基于建立的连接发送服务端列表至客户端,由客户端从服务端列表中确定欲访问的目的服务端;
基于建立的连接接收客户端发送的欲访问的目的服务端信息。
例如,客户端成功登录代理服务端后,也就是代理服务端对客户端认证成功并建立连接后,代理服务端会发送可连接的服务端列表给客户,发送出去的列表信息包括但不限于服务端的ID号、IP、端口号、用户名,代理服务端实际从本地数据库中读取到的信息(界面配置的连接信息)包括IP、端口号、用户名、密码、读写超时、会话超时、SFTP连接开关、SCP连接开关等信息,代理服务端基于从数据库中获取的信息建立服务端列表。客户端接收代理服务端发送的可连接信息列表,即服务端列表,并从中选择自己要连接的目的服务端的ID号,之后发送给代理服务端,代理服务端获得了目的服务端的ID后,执行后续与解析模块建立连接,确定解析模块能够对后续数据进行解析等操作,直至代理客户端根据代理服务端发送的关于目的服务端的相关信息,以指定方式与目的服务端建立连接,完成数据通道的建立。
进一步地,本实施例中的代理服务端基于代理客户端获得的明文数据均会拼接上数据头,如图4所示,该数据头包括协议类型,数据内容类型,IP协议类型,源IP,目的IP,源端口号,目的端口号,数据方向,数据长度中的一种或多种。其中,协议类型例如为SSH、SCP、SFTP等,数据内容类型例如为用户名、数据、协议版本号等。
进一步地,本实施例中的代理服务端在执行处理交互数据,使其具有数据头时,包括:
获得客户端及目的服务端对于目标协议的版本号,目标协议包括SSH协议;
获得客户端的用户名;
在交互数据中拼接数据头,同时插入目标协议的版本号及用户名。
具体地,客户端与代理服务端进行协商时,代理服务端会获取到客户端的SSH版本号,代理客户端与目的服务端建立连接时会获取到目的服务端的SSH版本号,并会发送给代理服务端;最终代理服务端会将两端的版本号一同发送到解析模块中,辅助解析模块进行交互数据的解析。另外,本实施例中的代理服务端在接收到的目的服务端的信息中会携带用户名,代理服务端会将用户名发送到解析模块中,使最后的审计信息中包括但不限于源IP,目的IP,源端口号,目的端口号,源SSH版本,目的SSH版本,协议类型,用户名,命令,返回信息。
进一步地,本实施例中用户设置的服务器信息保存在代理模块所在设备的数据库中,代理模块读取数据库中的信息来获取密码,实现了密码代填的功能,可在不告诉客户端要访问的目的服务端的密码的情况下,仍保证客户端可通过代理模块正常连接到目的服务端,有效保证了目的服务端的安全性。也就是,本实施例中的代理服务端会通过数据库读取到目的服务端的密码,但是为了保证安全性,该密码并不对客户端进行展示,后续代理服务端与代理客户端建立连接时会将密码传输给代理客户端,实现密码代填的功能,确保代理客户端能够成功与目的服务端建立连接。
进一步地,本实施例中的解析模块审计、解析处理后的交互数据,包括:
解析交互数据的数据头;
基于解析结果确定交互数据所属的协议类型;
基于协议类型从多个协议解析分支中确定出匹配的目标协议解析分支;
传输交互数据至目标协议解析分支,由目标协议解析分支解析交互数据。
也即,解析模块会对代理服务端发送的交互数据进行解析审计,其中比较关键的部分就是预先定义的数据头,从数据头中可解析出当前交互数据的协议类型,数据类型(例如为用户名/版本号/数据),ip,端口,数据传输方向以及数据长度等,解析模块至少可以根据不同的协议类型以及数据类型来确定不同的解析分支,也就是本实施例中的解析模块包含多个解析分支,用于解析不同协议类型,数据类型的数据,解析模块会利用该不同的解析分支来实现对不同类型的数据进行更有针对性的解析,提高解析效率及准确度。
进一步地,若协议类型为SSH协议,则目标协议解析分支解析交互数据,包括:
根据数据头中的目标字段确定交互数据的数据类型,数据类型至少包括协议版本号、用户名、数据中的任意一种;
若数据类型为协议版本号或用户名,则直接解析并存储解析结果;
若数据类型为数据,则将交互数据缓存至SSH解析状态机中进行解析。
进一步地,若协议类型为SFTP协议,则目标协议解析分支解析交互数据,包括:
基于交互数据确定数据类型;
基于数据类型以对应的解析方法解析交互数据,实现交互数据的解析、审计及文件还原。
进一步地,若协议类型为SCP协议,则目标协议解析分支解析交互数据,包括:
基于交互数据中多个数据段的排列顺序及SCP协议的数据发送规则解析、审计交互数据,并对交互数据进行文件还原。
例如,如图5所示,解析模块监听解析端口,等待代理服务端与其建立连接,当代理服务端建立代理客户端进程之前,会先与解析模块建立连接,之后会将所有的有效数据均发送到解析模块中进行解析审计。解析模块接收到数据后首先解析数据头部,根据协议类型确定不同的协议解析分支,并转发数据至该分支中,由该分支进行更有针对性的处理。
如果协议类型是SSH协议,则执行SSH协议解析的实现,走SSH协议解析分支。具体地,解析模块会根据数据头中的type字段来区分接收的数据类型是版本号、用户名还是数据,若为版本号或用户名则直接解析并存储解析结果,以供后续发送审计事件用。而若为数据,则需要缓存进入SSH解析状态机进行解析;SSH协议的数据本身是不携带信息头的,因此本实施例针对SSH协议的解析是基于状态机来实现的。
如果协议类型是SFTP协议,则执行SFTP协议解析的实现,走SFTP协议解析分支。SFTP协议的明文数据是有一定结构的,该结构中携带数据长度和数据类型,解析出数据类型后,解析模块再根据确定的数据类型对应解析后续的数据,最终实现对SFTP协议的解析、审计、文件还原;
如果协议类型是SCP协议,则执行SCP协议解析的实现,走SCP协议解析分支。SCP协议的明文数据不携带消息类型,但是基于该协议发送的数据有一定的顺序,发文件内容之前会先发送文件的类型、大小、文件名,解析模块可以根据此原理对SCP协议数据进行解析、审计、文件还原;
进一步地,本实施例中的解析模块针对SCP协议和SFTP协议的文件还原功能,不仅能够允许用户设置可还原文件的大小和开关,同时允许用户导出还原的文件,而且能够有效记录客户端和目的服务端之间的文件操作。另外,本实施例中的解析模块在完成一条完整的请求和响应操作之后会发送一条审计事件至代理服务端。该审计事件中除了包括网络等相关的信息外,每种协议会有自己特定的字段:SSH协议包含版本号、用户名、命令、返回信息;SCP和SFTP协议包含文件名、文件传输操作信息(例如上传/下载等)。
进一步地,上述实施例中所述地将交互数据缓存至SSH解析状态机中进行解析,包括:
SSH解析状态机解析交互数据,确定交互数据中出现的目标内容;
SSH解析状态机基于目标内容进入对应的运行状态,运行状态与交互数据的类型相关,类型包括请求型、响应型;
在SSH解析状态机进入第一运行状态时,确定是否收到客户端向目的服务端发送的数据,若是,则表征客户端与目的服务端间的当前次请求响应事件结束;
SSH解析状态机向代理服务端发送完整的请求响应的审计事件。
例如,由于SSH协议数据没有明确的请求和响应标志,因此对于type字段表征数据类型为数据时,SSH协议的解析是基于状态机进行实现的,状态机会根据不同的数据内容来判断当前的交互数据表征客户端与目的服务端之间所处状态是请求还是响应,目前主要分为以下3种状态:起始状态,请求状态,响应状态,其中请求状态又细分为普通输入状态、带单引号的状态、带双引号的状态;而状态机中各运行状态之间的转换可参考图6所示,对应客户端与目的服务端之间的交互数据的类型的转变,状态机会进入对应的不同的运行状态,或者可认为是进入了不同的解析状态。具体地,SSH解析状态初始化为START(起始)状态;START状态下收到目的服务端发送到客户端的数据时切换到SEND_CMD(发送命令)状态;而SEND_CMD状态下状态机会有5种状态转换的情况:
a)客户端输入回车(即目标内容),则转换到RECEIVE_CMD_RETURN(接收命令返回)状态;
b)客户端在未输入任何内容的情况下输入ctrl+d(即目标内容)会退出用户,并切换状态到RECEIVE_CMD_RETURN(接收命令返回)状态;
c)客户端输入了单引号(即目标内容),则进入到SEND_APOSTROPHE(发送单引号)状态;
d)客户端输入了双引号(即目标内容),则进入到SEND_QUOTATION(发送双引号)状态;
e)客户端输入其他内容(即目标内容),则仍保持SEND_CMD状态不变;
进一步地,当状态机进入到SEND_APOSTROPHE状态之后,直到遇到下一个单引号(即目标内容),状态才会切换到SEND_CMD状态;
而当状态机进入到SEND_QUOTATION状态之后,同样直到遇到下一个双引号(即目标内容),状态才会切换到SEND_CMD状态;
当状态机进入到RECEIVE_CMD_RETURN状态(即第一运行状态)之后,若收到客户端发往服务器的数据,则认为一个完整的请求响应事件已结束,此时状态机的状态会切换到SUBMIT_LOG_EVENT(发送日志)状态;
在状态机处于SUBMIT_LOG_EVENT状态下会去检测响应的数据内容,并在其中去掉下一次新的请求的命令提示符,发送一个完整的请求响应的审计事件至解析模块或代理服务端后切换状态到SEND_CMD状态。而解析模块或代理服务端会基于审计日志来确定实际审计结果,并基于审计结果相应执行后续操作。
如图7所示,本发明另一实施例同时提供一种协议代理装置,装置包括:
认证模块,用于监听代理端口有客户端接入时,认证客户端身份,并建立连接;
获得模块,用于根据连接获得客户端欲访问的目的服务端信息;
建立模块,用于和解析模块建立连接;
注册模块,用于注册用于和解析模块进行数据交互的数据头,数据头用于使解析模块确认客户端与目的服务端的交互数据所属的协议类型及基本信息;
创建模块,用于创建代理客户端,并使代理客户端代替客户端与目的服务端建立连接;
处理模块,用于根据代理客户端获得其与目的服务端之间的交互数据,并处理交互数据,使其具有数据头;
转发模块,用于转发处理后的交互数据至解析模块,由解析模块审计、解析处理后的交互数据。
作为一可选实施例,所述基于所述连接获得所述客户端欲访问的目的服务端信息,包括:
基于所述连接发送服务端列表至所述客户端,由所述客户端从所述服务端列表中确定欲访问的目的服务端;
基于所述连接接收所述客户端发送的欲访问的目的服务端信息。
作为一可选实施例,所述数据头包括协议类型,数据内容类型,IP协议类型,源IP,目的IP,源端口号,目的端口号,数据方向,数据长度中的一种或多种。
作为一可选实施例,所述处理所述交互数据,使其具有所述数据头,包括:
获得所述客户端及目的服务端对于目标协议的版本号,所述目标协议包括SSH协议;
获得所述客户端的用户名;
在所述交互数据中拼接所述数据头,同时插入所述目标协议的版本号及所述用户名。
作为一可选实施例,所述解析模块审计、解析所述处理后的交互数据,包括:
解析所述交互数据的数据头;
基于解析结果确定所述交互数据所属的协议类型;
基于所述协议类型从多个协议解析分支中确定出匹配的目标协议解析分支;
传输所述交互数据至所述目标协议解析分支,由所述目标协议解析分支解析所述交互数据。
作为一可选实施例,若所述协议类型为SSH协议,则所述目标协议解析分支解析所述交互数据,包括:
根据所述数据头中的目标字段确定所述交互数据的数据类型,所述数据类型至少包括协议版本号、用户名、数据中的任意一种;
若所述数据类型为所述协议版本号或用户名,则直接存储;
若所述数据类型为数据,则将所述交互数据缓存至SSH解析状态机中进行解析。
作为一可选实施例,所述将所述交互数据缓存至SSH解析状态机中进行解析,包括:
所述SSH解析状态机解析所述交互数据,确定所述交互数据中出现的目标内容;
所述SSH解析状态机基于所述目标内容进入对应的运行状态,所述运行状态与所述交互数据的类型相关,所述类型包括请求型、响应型;
在所述SSH解析状态机进入第一运行状态时,确定是否收到所述客户端向所述目的服务端发送的数据,若是,则表征所述客户端与目的服务端间的当前次请求响应事件结束;
所述SSH解析状态机向所述代理服务端发送完整的请求响应的审计事件。
作为一可选实施例,若所述协议类型为SFTP协议,则所述目标协议解析分支解析所述交互数据,包括:
基于所述交互数据确定数据类型;
基于所述数据类型以对应的解析方法解析所述交互数据,实现所述交互数据的解析、审计及文件还原。
作为一可选实施例,若所述协议类型为SCP协议,则所述目标协议解析分支解析所述交互数据,包括:
基于所述交互数据中多个数据段的排列顺序及所述SCP协议的数据发送规则解析、审计所述交互数据,并对所述交互数据进行文件还原。
本发明另一实施例还提供一种电子设备,包括:
一个或多个处理器;
存储器,配置为存储一个或多个程序;
当该一个或多个程序被该一个或多个处理器执行时,使得该一个或多个处理器实现上述方法。
本发明一实施例还提供一种存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上所述的方法。应理解,本实施例中的各个方案具有上述方法实施例中对应的技术效果,此处不再赘述。
本发明实施例还提供了一种计算机程序产品,所述计算机程序产品被有形地存储在计算机可读介质上并且包括计算机可读指令,所述计算机可执行指令在被执行时使至少一个处理器执行诸如上文所述实施例中的方法。应理解,本实施例中的各个方案具有上述方法实施例中对应的技术效果,此处不再赘述。
需要说明的是,本申请的计算机存储介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读介质例如可以但不限于是电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储介质(RAM)、只读存储介质(ROM)、可擦式可编程只读存储介质(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储介质(CD-ROM)、光存储介质件、磁存储介质件、或者上述的任意合适的组合。在本申请中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本申请中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输配置为由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、天线、光缆、RF等等,或者上述的任意合适的组合。
应当理解,虽然本申请是按照各个实施例描述的,但并非每个实施例仅包含一个独立的技术方案,说明书的这种叙述方式仅仅是为清楚起见,本领域技术人员应当将说明书作为一个整体,各实施例中的技术方案也可以经适当组合,形成本领域技术人员可以理解的其他实施方式。
以上实施例仅为本发明的示例性实施例,不用于限制本发明,本发明的保护范围由权利要求书限定。本领域技术人员可以在本发明的实质和保护范围内,对本发明做出各种修改或等同替换,这种修改或等同替换也应视为落在本发明的保护范围内。

Claims (9)

1.一种协议代理方法,其特征在于,所述方法包括:
监听代理端口有客户端接入时,认证所述客户端身份,并建立连接;
基于所述连接获得所述客户端欲访问的目的服务端信息,具体包括:基于所述连接发送服务端列表至所述客户端,由所述客户端从所述服务端列表中确定欲访问的目的服务端,其中,基于从数据库中获取的信息建立服务端列表;基于所述连接接收所述客户端发送的欲访问的目的服务端信息;
与解析模块建立连接;
注册用于和所述解析模块进行数据交互的数据头,所述数据头用于使所述解析模块确认所述客户端与目的服务端的交互数据所属的协议类型及基本信息;
创建代理客户端,并使所述代理客户端代替所述客户端与所述目的服务端建立连接;
基于所述代理客户端获得其与所述目的服务端之间的交互数据,并处理所述交互数据,使其具有所述数据头;
转发处理后的所述交互数据至所述解析模块,由所述解析模块审计、解析所述处理后的交互数据。
2.根据权利要求1所述的方法,其中,所述数据头包括协议类型,数据内容类型,IP协议类型,源IP,目的IP,源端口号,目的端口号,数据方向,数据长度中的一种或多种。
3.根据权利要求1所述的方法,其中,所述处理所述交互数据,使其具有所述数据头,包括:
获得所述客户端及所述目的服务端对于目标协议的版本号,所述目标协议包括SSH协议;
获得所述客户端的用户名;
在所述交互数据中拼接所述数据头,同时插入所述目标协议的版本号及所述用户名。
4.根据权利要求1所述的方法,其中,所述解析模块审计、解析所述处理后的交互数据,包括:
解析所述交互数据的数据头;
基于解析结果确定所述交互数据所属的协议类型;
基于所述协议类型从多个协议解析分支中确定出匹配的目标协议解析分支;
传输所述交互数据至所述目标协议解析分支,由所述目标协议解析分支解析所述交互数据。
5.根据权利要求4所述的方法,其中,若所述协议类型为SSH协议,则所述目标协议解析分支解析所述交互数据,包括:
根据所述数据头中的目标字段确定所述交互数据的数据类型,所述数据类型至少包括协议版本号、用户名、数据中的任意一种;
若所述数据类型为所述协议版本号或用户名,则直接解析并存储解析结果;
若所述数据类型为数据,则将所述交互数据缓存至SSH解析状态机中进行解析。
6.根据权利要求5所述的方法,其中,所述将所述交互数据缓存至SSH解析状态机中进行解析,包括:
所述SSH解析状态机解析所述交互数据,确定所述交互数据中出现的目标内容;
所述SSH解析状态机基于所述目标内容进入对应的运行状态,所述运行状态与所述交互数据的类型相关,所述类型包括请求型、响应型;
在所述SSH解析状态机进入第一运行状态时,确定是否收到所述客户端向所述目的服务端发送的数据,若是,则表征所述客户端与目的服务端间的当前次请求响应事件结束;
所述SSH解析状态机向所述代理服务端发送完整的请求响应的审计事件。
7.根据权利要求4所述的方法,其中,若所述协议类型为SFTP协议,则所述目标协议解析分支解析所述交互数据,包括:
基于所述交互数据确定数据类型;
基于所述数据类型以对应的解析方法解析所述交互数据,实现所述交互数据的解析、审计及文件还原。
8.根据权利要求4所述的方法,其中,若所述协议类型为SCP协议,则所述目标协议解析分支解析所述交互数据,包括:
基于所述交互数据中多个数据段的排列顺序及所述SCP协议的数据发送规则解析、审计所述交互数据,并对所述交互数据进行文件还原。
9.一种协议代理装置,其特征在于,所述装置包括:
认证模块,用于监听代理端口有客户端接入时,认证所述客户端身份,并建立连接;
获得模块,用于根据所述连接获得所述客户端欲访问的目的服务端信息,具体包括:基于所述连接发送服务端列表至所述客户端,由所述客户端从所述服务端列表中确定欲访问的目的服务端,其中,基于从数据库中获取的信息建立服务端列表;基于所述连接接收所述客户端发送的欲访问的目的服务端信息;
建立模块,用于和解析模块建立连接;
注册模块,用于注册用于和所述解析模块进行数据交互的数据头,所述数据头用于使所述解析模块确认所述客户端与目的服务端的交互数据所属的协议类型及基本信息;
创建模块,用于创建代理客户端,并使所述代理客户端代替所述客户端与所述目的服务端建立连接;
处理模块,用于根据所述代理客户端获得其与所述目的服务端之间的交互数据,并处理所述交互数据,使其具有所述数据头;
转发模块,用于转发处理后的所述交互数据至解析模块,由所述解析模块审计、解析所述处理后的交互数据。
CN202111304796.6A 2021-11-05 2021-11-05 一种协议代理方法及装置 Active CN114244556B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111304796.6A CN114244556B (zh) 2021-11-05 2021-11-05 一种协议代理方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111304796.6A CN114244556B (zh) 2021-11-05 2021-11-05 一种协议代理方法及装置

Publications (2)

Publication Number Publication Date
CN114244556A CN114244556A (zh) 2022-03-25
CN114244556B true CN114244556B (zh) 2023-11-10

Family

ID=80748492

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111304796.6A Active CN114244556B (zh) 2021-11-05 2021-11-05 一种协议代理方法及装置

Country Status (1)

Country Link
CN (1) CN114244556B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116028313B (zh) * 2023-03-30 2023-06-09 北京久安世纪科技有限公司 一种基于vt序列的终端审计方法、系统及存储介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102176763A (zh) * 2011-01-28 2011-09-07 深圳市同洲电子股份有限公司 广播电视系统及信息交互方法
WO2018032399A1 (en) * 2016-08-17 2018-02-22 Zte Corporation Server and method having high concurrency capability
CN109756501A (zh) * 2019-01-02 2019-05-14 中国科学院信息工程研究所 一种基于http协议的高隐匿网络代理方法及系统
CN109756479A (zh) * 2018-11-29 2019-05-14 武汉极意网络科技有限公司 浏览器中伪造请求检测方法及装置
CN111177112A (zh) * 2019-12-06 2020-05-19 陕西上讯信息技术有限公司 基于运维管理系统的数据库阻断方法、装置及电子设备
CN112104754A (zh) * 2020-11-18 2020-12-18 腾讯科技(深圳)有限公司 网络代理方法、系统、装置、设备及存储介质

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102176763A (zh) * 2011-01-28 2011-09-07 深圳市同洲电子股份有限公司 广播电视系统及信息交互方法
WO2018032399A1 (en) * 2016-08-17 2018-02-22 Zte Corporation Server and method having high concurrency capability
CN109756479A (zh) * 2018-11-29 2019-05-14 武汉极意网络科技有限公司 浏览器中伪造请求检测方法及装置
CN109756501A (zh) * 2019-01-02 2019-05-14 中国科学院信息工程研究所 一种基于http协议的高隐匿网络代理方法及系统
CN111177112A (zh) * 2019-12-06 2020-05-19 陕西上讯信息技术有限公司 基于运维管理系统的数据库阻断方法、装置及电子设备
CN112104754A (zh) * 2020-11-18 2020-12-18 腾讯科技(深圳)有限公司 网络代理方法、系统、装置、设备及存储介质

Also Published As

Publication number Publication date
CN114244556A (zh) 2022-03-25

Similar Documents

Publication Publication Date Title
CN111062024B (zh) 一种应用登录方法和装置
US11425047B2 (en) Traffic analysis method, common service traffic attribution method, and corresponding computer system
CN108040040A (zh) 一种应用协议报文的自动化解析方法和装置
US11601508B2 (en) Network access method and device for edge router
CN104067561A (zh) 通过使用web流量信息动态扫描web应用
CN105704091A (zh) 一种基于ssh协议的会话解析方法及系统
CN104412565B (zh) 用于涉及承载无关协议的套接字管理的方法
CN112953970A (zh) 一种身份认证方法及身份认证系统
CN114244556B (zh) 一种协议代理方法及装置
CN112988599B (zh) 一种页面调试方法、装置、电子设备和存储介质
CN110198265A (zh) 信息处理方法、系统、装置、设备和介质
CN108737328A (zh) 一种浏览器用户代理识别方法、系统及装置
CN106302856B (zh) 一种缩短Android智能POS交易时间的方法及系统
CN115473810B (zh) 双端同步脚本热更新方法及装置
CN110049106B (zh) 业务请求处理系统及方法
CN112073963A (zh) 通信交互数据传输方法及装置
CN106331051B (zh) 文件传输方法和系统以及接收文件装置、发送文件装置
WO2023082605A1 (zh) Http报文的提取方法、装置、介质及设备
CN115967575A (zh) Http请求夹带检测方法、装置、电子设备及存储介质
CN116015739A (zh) 前后端数据交互方法、装置、服务器及存储介质
CN115037537A (zh) 异常流量拦截、异常域名识别方法、装置、设备及介质
CN114172958A (zh) 隐私计算节点、系统、方法、装置以及存储介质
CN114827239A (zh) 基于8583协议的双向会话保持方法和装置
CN113271300A (zh) 一种认证的系统和方法
CN101257387A (zh) 一种x509数字证书快速解析和验证方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant