CN112162873B - 一种远程调用方法、电子装置和存储介质 - Google Patents

一种远程调用方法、电子装置和存储介质 Download PDF

Info

Publication number
CN112162873B
CN112162873B CN202011038833.9A CN202011038833A CN112162873B CN 112162873 B CN112162873 B CN 112162873B CN 202011038833 A CN202011038833 A CN 202011038833A CN 112162873 B CN112162873 B CN 112162873B
Authority
CN
China
Prior art keywords
remote
operation information
remote call
service
target operation
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
CN202011038833.9A
Other languages
English (en)
Other versions
CN112162873A (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.)
DBAPPSecurity Co Ltd
Original Assignee
DBAPPSecurity 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 DBAPPSecurity Co Ltd filed Critical DBAPPSecurity Co Ltd
Priority to CN202011038833.9A priority Critical patent/CN112162873B/zh
Publication of CN112162873A publication Critical patent/CN112162873A/zh
Application granted granted Critical
Publication of CN112162873B publication Critical patent/CN112162873B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/577Assessing vulnerabilities and evaluating computer system security
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4488Object-oriented
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/544Remote

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Computing Systems (AREA)
  • Computer And Data Communications (AREA)
  • Stored Programmes (AREA)

Abstract

本申请涉及一种远程调用方法、电子装置和存储介质,其中,该远程调用方法包括:接收客户端发送的远程调用请求信息,其中,远程调用请求信息至少包括客户端请求远程调用的操作信息;按预设规则解析操作信息,并确定目标操作信息,其中,操作信息至少包括目标操作信息;基于目标操作信息执行远程调用操作,并确定远程调用结果。通过本申请,解决了远程调用有安全漏洞的问题,提高了远程调用的安全系数,方便追踪远程调用在服务器上执行的操作。

Description

一种远程调用方法、电子装置和存储介质
技术领域
本申请涉及计算机技术领域,特别是涉及远程调用方法、电子装置和存储介质。
背景技术
如今的计算机应用中,单机性能上很难承受住产品的压力,需要不断扩充多台机器来提升整体的性能。同时为了充分利用这些集群里的计算机,需要对其从架构上进行划分,以提供不同的服务,服务间相互调用完成整个产品的功能。远程调用就能帮助我们解决这些服务间的信息传递和调用。远程调用是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。
目前的远程调用方法主要是基于ssh协议,ssh协议是linux上基础且常用的一个通信协议,他提供了便捷的交互式/非交互式/登录/非登录等几种方式来操作对端主机,在科技企业中几乎所有的公司都会使用linux作为服务器,而linux服务器上的ssh服务,几乎是所有公司远程连接登录的方式。对于linux服务器而言,ssh远程调用属于非交互式非登录的远程调用,基于ssh协议的远程调用有很多安全漏洞问题,另外由于不加载任何配置文件,导致远程调用难以审计,无法追踪ssh远程调用在本机上执行的操作,存在安全隐患,给开发人员和运维人员带来负担。
目前针对相关技术中远程调用有安全漏洞的问题,尚未提出有效的解决方案。
发明内容
本申请实施例提供了一种远程调用方法、电子装置和存储介质,以至少解决相关技术中远程调用有安全漏洞的问题。
第一方面,本申请实施例提供了一种远程调用方法,包括:
接收客户端发送的远程调用请求信息,其中,远程调用请求信息至少包括客户端请求远程调用的操作信息;
按预设规则解析操作信息,并确定目标操作信息,其中,操作信息至少包括目标操作信息;
基于目标操作信息执行远程调用操作,并确定远程调用结果。
在其中一些实施例中,按预设规则解析操作信息,并确定目标操作信息包括:
提取操作信息的多个第一操作信息;
根据预设过滤规则在多个第一操作信息检测候选操作信息,其中,预设过滤规则包括删除禁止执行的第二操作信息;
在检测到候选操作信息的情况下,确定候选操作信息为目标操作信息。
在其中一些实施例中,基于目标操作信息执行远程调用操作之前,方法还包括:
确定目标操作信息的状态信息,其中,状态信息至少包括以下一种:拦截、通过;
在状态信息为拦截的情况下,确定客户端请求远程调用失败;
在状态信息为通过的情况下,执行基于目标操作信息执行远程调用操作,并确定远程调用结果。
在其中一些实施例中,基于目标操作信息执行远程调用操作包括:
获取远程调用服务,并判断远程调用服务是否为第一远程调用服务,其中,第一远程调用服务包括SSHD服务;
在判断到远程调用服务为第一远程调用服务的情况下,关闭远程调用服务,并启用第二远程调用服务执行基于目标操作信息执行远程调用操作,其中,第二远程调用服务包括REST API微服务。
在其中一些实施例中,在判断到远程调用服务为非SSHD服务的情况下,启用第二远程调用服务执行基于目标操作信息执行远程调用操作,其中,第二远程调用服务包括REST API微服务。
在其中一些实施例中,目标操作信息至少包括远程调用地址,基于目标操作信息执行远程调用操作包括:将远程调用地址拷贝至预设浏览器,并执行远程调用操作。
在其中一些实施例中,目标操作信息至少包括目标操作指令,基于目标操作信息执行远程调用操作,并确定远程调用结果包括:
判断目标操作指令是否符合预设规则;在判断到目标操作指令符合预设规则的情形下,基于目标操作指令执行远程调用,得到候选远程调用结果;在候选远程调用结果中检测预设远程调用结果,并在检测到预设远程调用结果的情况下,确定预设远程调用结果为远程调用结果。
在其中一些实施例中,基于目标操作信息执行远程调用操作,并确定远程调用结果之后,方法还包括:
将远程调用结果和目标操作信息存储到预设数据库中,并返回与远程调用请求消息对应的远程调用结果至客户端。
第二方面,本申请实施例提供了一种电子装置,包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现如上述第一方面的远程调用方法。
第三方面,本申请实施例提供了一种存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上述第一方面的远程调用方法。
相比于相关技术,本申请实施例提供的远程调用方法、电子装置和存储介质,采用接收客户端发送的远程调用请求信息,其中,远程调用请求信息至少包括客户端请求远程调用的操作信息;按预设规则解析操作信息,并确定目标操作信息,其中,操作信息至少包括目标操作信息;基于目标操作信息执行远程调用操作,并确定远程调用结果,解决了远程调用有安全漏洞的问题,提高了远程调用的安全系数,方便追踪远程调用在服务器上执行的操作执行的操作。
本申请的一个或多个实施例的细节在以下附图和描述中提出,以使本申请的其他特征、目的和优点更加简明易懂。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是根据本申请实施例的远程调用方法的终端的硬件结构框图;
图2是根据本申请实施例的远程调用方法的流程图;
图3是根据本申请优选实施例的远程调用方法的流程图一;
图4是根据本申请优选实施例的远程调用方法的流程图二;
图5是根据本申请实施例的远程调用装置的结构框图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行描述和说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。基于本申请提供的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。此外,还可以理解的是,虽然这种开发过程中所作出的努力可能是复杂并且冗长的,然而对于与本申请公开的内容相关的本领域的普通技术人员而言,在本申请揭露的技术内容的基础上进行的一些设计,制造或者生产等变更只是常规的技术手段,不应当理解为本申请公开的内容不充分。
在本申请中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域普通技术人员显式地和隐式地理解的是,本申请所描述的实施例在不冲突的情况下,可以与其它实施例相结合。
除非另作定义,本申请所涉及的技术术语或者科学术语应当为本申请所属技术领域内具有一般技能的人士所理解的通常意义。本申请所涉及的“一”、“一个”、“一种”、“该”等类似词语并不表示数量限制,可表示单数或复数。本申请所涉及的术语“包括”、“包含”、“具有”以及它们任何变形,意图在于覆盖不排他的包含;例如包含了一系列步骤或模块(单元)的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可以还包括没有列出的步骤或单元,或可以还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。本申请所涉及的“连接”、“相连”、“耦接”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电气的连接,不管是直接的还是间接的。本申请所涉及的“多个”是指大于或者等于两个。“和/或”描述关联对象的关联关系,表示可以存在三种关系,例如,“A和/或B”可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。本申请所涉及的术语“第一”、“第二”、“第三”等仅仅是区别类似的对象,不代表针对对象的特定排序。
术语解释:
表述性状态传递(Representational State Transfer,REST),是Roy Fielding博士在2000年他的博士论文中提出来的一种软件架构风格。它是一种针对网络应用的设计和开发方式,可以降低开发的复杂性,提高系统的可伸缩性。
应用程序接口API:(Application Programming Interface,API)又称为应用编程接口,是软件系统不同组成部分衔接的约定。良好的接口设计可以降低系统各部分的相互依赖,提高组成单元的内聚性,降低组成单元间的耦合程度,从而提高系统的可维护性和可扩展性。
Curl:Curl是一个命令行访问URL的工具,作用是发出网络请求,然后得到和提取数据,显示在"标准输出"(stdout)上面。可以用它构造http request报文,且可以解析服务器返回的http response,额外还支持cookie特性,可以用Curl完成web浏览器的基本功能,Curl还支持HTTPS/FTP/FTPS/TELNET/LDAP等协议。
SSHD服务:(全称是secure shell)是基于ssh协议开发的一款远程管理服务程序,不仅使用起来方便快捷,而且能够提供两种安全验证的方法——基于口令的安全验证,指的就是用帐号和密码验证登陆,基于密钥的安全验证,则是需要在本地生成密钥对,然后把公钥传送至服务端主机进行的公共密钥比较的验证方式,相比较来说更加的安全。
JDK:JDK是Java语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。
本实施例提供的方法实施例可以在终端、计算机或者类似的运算装置中执行。以运行在终端上为例,图1是本申请实施例的远程调用方法的终端的硬件结构框图。如图1所示,包括处理器11以及存储有计算机程序指令的存储器12。
具体地,上述处理器11可以包括中央处理器(CPU),或者特定集成电路(Application Specific Integrated Circuit,简称为ASIC),或者可以被配置成实施本申请实施例的一个或多个集成电路。
其中,存储器12可以包括用于数据或指令的大容量存储器。举例来说而非限制,存储器12可包括硬盘驱动器(Hard Disk Drive,简称为HDD)、软盘驱动器、固态驱动器(SolidState Drive,简称为SSD)、闪存、光盘、磁光盘、磁带或通用串行总线(Universal SerialBus,简称为USB)驱动器或者两个或更多个以上这些的组合。在合适的情况下,存储器12可包括可移除或不可移除(或固定)的介质。在合适的情况下,存储器12可在数据处理装置的内部或外部。在特定实施例中,存储器12是非易失性(Non-Volatile)存储器。在特定实施例中,存储器12包括只读存储器(Read-Only Memory,简称为ROM)和随机存取存储器(RandomAccess Memory,简称为RAM)。在合适的情况下,该ROM可以是掩模编程的ROM、可编程ROM(Programmable Read-Only Memory,简称为PROM)、可擦除PROM(Erasable ProgrammableRead-Only Memory,简称为EPROM)、电可擦除PROM(Electrically Erasable ProgrammableRead-Only Memory,简称为EEPROM)、电可改写ROM(Electrically Alterable Read-OnlyMemory,简称为EAROM)或闪存(FLASH)或者两个或更多个以上这些的组合。在合适的情况下,该RAM可以是静态随机存取存储器(Static Random-Access Memory,简称为SRAM)或动态随机存取存储器(Dynamic Random Access Memory,简称为DRAM),其中,DRAM可以是快速页模式动态随机存取存储器(Fast Page Mode Dynamic Random Access Memory,简称为FPMDRAM)、扩展数据输出动态随机存取存储器(Extended Date Out Dynamic RandomAccess Memory,简称为EDODRAM)、同步动态随机存取内存(Synchronous Dynamic Random-Access Memory,简称SDRAM)等。
存储器12可以用来存储或者缓存需要处理和/或通信使用的各种数据文件,以及处理器11所执行的可能的计算机程序指令。
处理器11通过读取并执行存储器12中存储的计算机程序指令,以实现上述实施例中的任意远程调用方法。
在其中一些实施例中,终端还可包括通信接口13和总线10。其中,如图1所示,处理器11、存储器12、通信接口13通过总线10连接并完成相互间的通信。
通信接口13用于实现本申请实施例中各模块、装置、单元和/或设备之间的通信。通信接口13还可以实现与其他部件例如:外接设备、图像/数据采集设备、数据库、外部存储以及图像/数据处理工作站等之间进行数据通信。
总线10包括硬件、软件或两者,将终端的部件彼此耦接在一起。总线10包括但不限于以下至少之一:数据总线(Data Bus)、地址总线(Address Bus)、控制总线(ControlBus)、扩展总线(Expansion Bus)、局部总线(Local Bus)。举例来说而非限制,总线10可包括图形加速接口(Accelerated Graphics Port,简称为AGP)或其他图形总线、增强工业标准架构(Extended Industry Standard Architecture,简称为EISA)总线、前端总线(FrontSide Bus,简称为FSB)、超传输(Hyper Transport,简称为HT)互连、工业标准架构(Industry Standard Architecture,简称为ISA)总线、无线带宽(InfiniBand)互连、低引脚数(Low Pin Count,简称为LPC)总线、存储器总线、微信道架构(Micro ChannelArchitecture,简称为MCA)总线、外围组件互连(Peripheral Component Interconnect,简称为PCI)总线、PCI-Express(PCI-X)总线、串行高级技术附件(Serial AdvancedTechnology Attachment,简称为SATA)总线、视频电子标准协会局部(Video ElectronicsStandards Association Local Bus,简称为VLB)总线或其他合适的总线或者两个或更多个以上这些的组合。在合适的情况下,总线10可包括一个或多个总线。尽管本申请实施例描述和示出了特定的总线,但本申请考虑任何合适的总线或互连。
本实施例提供了一种远程调用方法,图2是根据本申请实施例的远程调用方法的流程图,如图2所示,该流程包括如下步骤:
步骤S201,接收客户端发送的远程调用请求信息,其中,远程调用请求信息至少包括客户端请求远程调用的操作信息。
当客户端需要进行远程调用时,发送远程调用请求信息,其中,远程调用请求信息中至少包括客户端请求远程调用的操作信息,服务器接收客户端发送的远程调用请求信息,并根据远程调用请求信息执行远程调用操作。
在本实施例中,接收客户端发送的远程调用请求信息之前,客户端发起远程调用请求可通过以下方式之一进行:通过在客户端将远程调用的地址拷贝到浏览器发起远程调用请求、通过封装于客户端的Curl操作发起远程调用请求和/或通过在客户端自动模块调用REST API接口发起远程调用请求。其中,通过将远程调用的地址拷贝到浏览器发起远程调用请求需要手动拷贝地址,但是操作简单;通过封装客户端的Curl操作发起远程调用请求主要针对已经部署ssh远程调用功能的服务器,部署ssh远程调用功能的服务器包含大量的ssh之类的操作,REST API接口可识别的参数通过Curl指令调用,Curl指令封装成ssh之后兼容之前脚本中的ssh操作;通过在客户端自动模块调用REST API接口发起远程调用请求,客户端写一个java程序自动调用REST API接口,java中的类是HttpClient,这个类里面的方法支持发起REST API接口。通过上述方式,给用户提供多种发起远程调用的方式,用户根据需要选择其中一种或者几种。
步骤S202,按预设规则解析操作信息,并确定目标操作信息,其中,操作信息至少包括目标操作信息。
操作信息包括目标操作信息和需要禁止执行的第二操作信息,服务器根据预设规则去除需要禁止执行的第二操作信息,得到目标操作信息。
步骤S203,基于目标操作信息执行远程调用操作,并确定远程调用结果。
目标操作信息至少包括目标操作指令,当判断目标操作指令符合预设规则时,服务器基于目标操作指令执行远程调用服务得到候选远程调用结果,候选远程调用结果与预设远程调用结果比较确定远程调用结果。
通过上述步骤S201至步骤S203,采用接收客户端发送的远程调用请求信息,其中,远程调用请求信息至少包括客户端请求远程调用的操作信息;按预设规则解析操作信息,并确定目标操作信息,其中,操作信息至少包括目标操作信息;基于目标操作信息执行远程调用操作,并确定远程调用结果,解决了远程调用有安全漏洞的问题,提高了远程调用的安全系数,方便追踪远程调用在服务器上执行的操作执行的操作。
在本实施例中,按预设规则解析操作信息,并确定目标操作信息包括如下步骤:
步骤1,提取操作信息的多个第一操作信息。
步骤2,根据预设过滤规则在多个第一操作信息检测候选操作信息,其中,预设过滤规则包括删除禁止执行的第二操作信息。
在本实施例中,第二操作信息包括禁止操作的删除整个系统的指令、不允许客户端调用执行的mkdir指令、以及提前设置的其他指令,比如,rm-rf/这个指令的意思是删除整个操作系统,预设过滤规则禁止使用rm-rf/指令,来拦截掉这种危险的指令操作,假设服务端不允许客户端调用执行mkdir指令,可以根据关键字mkdir查询,然后写一个自定义规则过滤mkdir指令。
步骤3,在检测到候选操作信息的情况下,确定候选操作信息为目标操作信息。
通过上述提取操作信息的多个第一操作信息;根据预设过滤规则在多个第一操作信息检测候选操作信息;在检测到候选操作信息的情况下,确定候选操作信息为目标操作信息,实现通过预设过滤规则过滤危险的指令操作,降低服务器误操作导致崩溃的情况。
在其中一个实施例中,基于目标操作信息执行远程调用操作之前,远程调用方法还包括如下步骤:
步骤1,确定目标操作信息的状态信息,其中,状态信息至少包括以下一种:拦截、通过。
步骤2,在状态信息为拦截的情况下,确定客户端请求远程调用失败。
在本实施例中,确定客户端请求远程调用失败后,会返回客户端要执行的指令被拦截的原因和报错信息。
步骤3,在状态信息为通过的情况下,执行基于目标操作信息执行远程调用操作,并确定远程调用结果。
通过上述步骤,实现基于目标操作信息的状态信息判断远程调用是否成功。
在其中一个实施例中,基于目标操作信息执行远程调用操作包括如下步骤:
步骤1,获取远程调用服务,并判断远程调用服务是否为第一远程调用服务,其中,第一远程调用服务包括SSHD服务。
步骤2,在判断到远程调用服务为第一远程调用服务的情况下,关闭远程调用服务,并启用第二远程调用服务执行基于目标操作信息执行远程调用操作,其中,第二远程调用服务包括REST API微服务。
步骤3,在判断到远程调用服务为非SSHD服务的情况下,启用第二远程调用服务执行基于目标操作信息执行远程调用操作,其中,第二远程调用服务包括REST API微服务。
通过上述获取远程调用服务,并判断远程调用服务是否为第一远程调用服务;在判断到远程调用服务为第一远程调用服务的情况下,关闭远程调用服务,并启用第二远程调用服务执行基于目标操作信息执行远程调用操作;在判断到远程调用服务为非SSHD服务的情况下,启用第二远程调用服务执行基于目标操作信息执行远程调用操作,在未部署远程调用的服务器中部署基于REST API接口的远程服务,同时,基于REST API接口的远程服务可替代SSHD服务,解决SSHD服务存在安全漏洞和不能审计问题。
在其中一个实施例中,远程调用方法基于REST API微服务进行远程调用。
在本实施例中,在服务端部署基于REST API接口的微服务,设置开机自启,即当客户端发起调用服务端请求时,服务端进行响应并解析客户端请求信息,同时服务器执行客户端发过来的指令;通过在客户端发起远程调用请求得到发送至服务器的客户端请求信息。通过上述方式,可以占用较少资源便捷的响应客户端的请求信息。
在其中一个实施例中,基于目标操作信息执行远程调用操作,并确定远程调用结果包括如下步骤:
步骤1,判断目标操作指令是否符合预设规则。
步骤2,在判断到目标操作指令符合预设规则的情形下,基于目标操作指令执行远程调用,得到候选远程调用结果。
步骤3,在候选远程调用结果中检测预设远程调用结果,并在检测到预设远程调用结果的情况下,确定预设远程调用结果为远程调用结果。
通过上述判断目标操作指令是否符合预设规则;在判断到目标操作指令符合预设规则的情形下,基于目标操作指令执行远程调用,得到候选远程调用结果;在候选远程调用结果中检测预设远程调用结果,并在检测到预设远程调用结果的情况下,确定预设远程调用结果为远程调用结果,实现通过预测规则和预测远程调用结果确定最终的远程调用结果,防止与预期远程调用不符的出现。
在其中一个实施例中,基于目标操作信息执行远程调用操作,并确定远程调用结果之后,远程调用方法包括如下步骤:将远程调用结果和目标操作信息存储到预设数据库中或文本中。
在本实施例中,判断客户端的请求是否结束,若客户端的请求没有结束,解析操作信息,并确定目标操作信息,将目标操作信息暂时放入内存,直到客户端的请求结束,将执行远程调用操作结果加上所有的目标操作信息组成一条完整的数据信息。
通过上述方式,可以通过完整的数据信息查看客户端所有请求信息和返回的远程调用操作结果,方便后续用户审计操作。
下面通过优选实施例对本申请实施例进行描述和说明。
图3是根据本申请优选实施例的远程调用方法的流程图一,如图3所示,站在服务器端的远程调用方法包括如下步骤:
步骤S301,服务器运行提供REST API接口的微服务,并设置开机自启。
在服务器部署提供REST API接口的微服务,这里的微服务指的是可以快速部署的微型服务,因为功能只是作为远程调用来处理,不合适做的过于庞大,当客户端发起调用服务端请求时,服务端通过微服务进行响应并解析客户端请求信息,同时服务器执行客户端发过来的指令。另外,当服务器开始运行就会自动运行部署的微服务。比如,使用跨平台语言开发,以java开发为例,在服务器中部署微服务并启用的过程包括,安装JDK,然后通过java-jar xxx.jar启动微服务。通过上述方式,可以占用较少资源便捷的响应客户端的请求信息,由于不存在系统底层的解压缩等操作系统类库层面的操作,即使是在国产化软硬件上也能兼容运行。
步骤S302,服务器关闭SSHD服务。
本优选实施例主要针对服务器中已经部署了SSHD服务,使用REST API替代ssh实现远程调用。通过上述方式,使用REST API来替代ssh远程调用,故不会导致需要ssh远程操作的服务受到影响,由于SSHD服务被替代了,ssh容易爆发新的漏洞问题不会出现,解决ssh远程调用时通过server/agent的方式来处理在不同的linux系统存在安装不了和不兼容的问题。
步骤S303,服务端接收客户端请求信息,针对客户端请求信息进行解析。
服务器中的微服务提供一个接收http请求的接口,即REST API接口,在接收请求接口的方法里面,服务端先解析客户端发起请求的信息,提取出客户端ip,时间和要执行的指令等信息,服务器判断本次请求是否结束,若本次请求未结束,服务器继续解析客户端发来的请求信息。
比如,在百度上搜索框输入:“你猜”然后回车发现url地址为:https://www.baidu.com/s?wd=%E4%BD%A0%E7%8C%9C&rsv_spt=1&rsv_iqid=0xde0affe000003691&issp=1&f=8&rsv_bp=1&rsv_idx=2&ie=utf-8&tn=baiduhome_pg&rsv_enter=1&rsv_dl=ib&rsv_sug3=7&rsv_sug1=4&rsv_sug7=100&rsv_sug2=0&rsv_btype=i&inputT=1472&rsv_sug4=1981,百度的服务端根据url地址里面的参数都是xx=yyy&zz=dsa这种形式对请求进行解析,本例url中参数keyword的属性值转换过来之后就是要搜索的关键词:“你猜”,对应于本申请就是远程调用要执行的指令。
步骤S304,设置过滤规则,审计系统记录客户端请求信息和服务器执行客户端指令的结果。
设置自定义的过滤规则,自定义的过滤规则包括,禁止删除核心目录规则、禁止修改机器网络环境规则和/或禁止关闭核心监控服务规则,自定义规则可以根据用户的实际需要进行设定,比如,rm-rf/这个指令的意思是删除整个操作系统,预设过滤规则禁止使用rm-rf/指令,来拦截掉这种危险的指令操作,不让其调用执行;比如,服务端不允许客户端调用执行mkdir指令,可以根据关键字mkdir查询,然后写一个自定义规则过滤mkdir指令。通过上述方式,可以通过自定义的过滤规则过滤危险的指令操作,降低服务器误操作导致崩溃的情况,防止恶意,不安全的操作。
将本次操作的客户端请求信息和操作信息收集起来发送到审计系统中,以便后续审计需要,判断本次请求是否结束,若本次请求未结束,服务器继续解析客户端发来的请求信息,并将该请求信息记录到内存中,之后加载自定义的过滤规则,如果被拦截,则返回相应的被拦截的原因和报错信息,如果未被拦截,则在本机执行客户端发起的指令,当判断本次请求结束,将之前记录到内存中的客户端请求信息、本次执行客户端指令的结果以及相应的操作信息组成一条完整的数据信息,记录到文本中或者数据库中。通过上述方式,解决ssh远程调用难以审计的安全风险,方便后续用户审计操作。
步骤S305,服务器将执行客户端指令的结果返回至客户端。
判断服务器处理是否完毕,若服务端处理完毕,将服务器执行客户端指令的结果返回给客户端。
图4是根据本申请优选实施例的远程调用方法的流程图二,如图4所示,站在客户端的远程调用方法包括如下步骤:
步骤S401,客户端发起远程调用请求。
客户端发送远程调用请求的方式不固定,能发起REST API请求的都可以,不同的开发语言都可以发起远程调用请求,发起远程调用请求的方式至少包括以下三种。
方式一,针对服务器已经部署ssh远程服务的情况,解析ssh后面的远程执行指令,封装成Curl调用的REST API接口可识别的参数,ssh远程服务主要是用shell来发起,Curl一般用于linux shell脚本,因为已经部署ssh远程服务的服务器的脚本里面包含大量的ssh之类的操作,Curl封装成ssh之后就可以兼容之前的语法。标准的ssh的语法是sshwww.baidu.com nicai,上述指令封装成标准的Curl指令语法是Curl http://www.baidu.com/wd=nicai,主要目的是为了兼容之前脚本中的ssh操作,因为ssh指令的标准操作是ssh www.baidu.com nicai,比如,ssh node ifconfig解析封装成Curl是Curlnode:[PORT]/command=ifconfig。通过上述方式,可以避免每次都加一些参数做封装。
方式二,在客户端写一个自动模块调用REST API接口发起远程调用请求,比如,在客户端写一个java程序调用REST API接口,java中的类是HttpClient,HttpClient类里面的方法支持发起REST API接口。
方式三:将远程调用的地址拷贝到浏览器发起远程调用请求。
通过上述方式,可以有选择性的发起远程调用请求。
步骤S402,客户端接收服务器执行客户端指令的结果。
步骤S403,客户端接收返回结果之后完后业务方面的操作。
本实施例还提供了一种远程调用装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”、“单元”、“子单元”等可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
图5是根据本申请实施例的远程调用装置的结构框图,如图5所示,该装置包括:
接收模块51,接收客户端发送的远程调用请求信息,其中,远程调用请求信息至少包括客户端请求远程调用的操作信息;
解析模块52,连接至接收模块51,用于按预设规则解析操作信息,并确定目标操作信息,其中,操作信息至少包括目标操作信息;
执行模块53,连接至解析模块52,用于基于目标操作信息执行远程调用操作,并确定远程调用结果。
在其中一个实施例中,解析模块52包括:
提取单元,用于提取操作信息的多个第一操作信息;
过滤单元,连接至提取单元,用于根据预设过滤规则在多个第一操作信息检测候选操作信息,其中,预设过滤规则包括删除禁止执行的第二操作信息;
检测单元,连接至过滤单元,用于在检测到候选操作信息的情况下,确定候选操作信息为目标操作信息。
在其中一个实施例中,执行模块53之前包括:
状态信息确定单元,用于确定目标操作信息的状态信息,其中,状态信息至少包括以下一种:拦截、通过;
拦截单元,连接至状态信息确定单元,用于在状态信息为拦截的情况下,确定客户端请求远程调用失败;
通过单元,连接至状态信息确定单元,用于在状态信息为通过的情况下,执行基于目标操作信息执行远程调用操作,并确定远程调用结果。
在其中一个实施例中,基于目标操作信息执行远程调用操作,执行模块53用于获取远程调用服务,并判断远程调用服务是否为第一远程调用服务,其中,第一远程调用服务包括SSHD服务;
在判断到远程调用服务为第一远程调用服务的情况下,关闭远程调用服务,并启用第二远程调用服务执行基于目标操作信息执行远程调用操作,其中,第二远程调用服务包括REST API微服务。
在判断到远程调用服务为非SSHD服务的情况下,启用第二远程调用服务执行基于目标操作信息执行远程调用操作,其中,第二远程调用服务包括REST API微服务。
在其中一个实施例中,目标操作信息至少包括远程调用地址,基于目标操作信息执行远程调用操作,执行模块53用于将远程调用地址拷贝至预设浏览器,并执行远程调用操作。
在其中一个实施例中,执行模块53包括:
第一判断单元,用于判断目标操作指令是否符合预设规则;
执行单元,连接至第一判断单元,用于在判断到目标操作指令符合预设规则的情形下,基于目标操作指令执行远程调用,得到候选远程调用结果;
第二判断单元,连接至执行单元,用于在候选远程调用结果中检测预设远程调用结果,并在检测到预设远程调用结果的情况下,确定预设远程调用结果为远程调用结果。
在其中一个实施例中,执行模块53之后包括:
将远程调用结果和目标操作信息存储到预设数据库中,并返回与远程调用请求消息对应的远程调用结果至客户端。
需要说明的是,上述各个模块可以是功能模块也可以是程序模块,既可以通过软件来实现,也可以通过硬件来实现。对于通过硬件来实现的模块而言,上述各个模块可以位于同一处理器中;或者上述各个模块还可以按照任意组合的形式分别位于不同的处理器中。
本实施例还提供了一种电子装置,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。
可选地,上述电子装置还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。
可选地,在本实施例中,上述处理器可以被设置为通过计算机程序执行以下步骤:
S1,接收客户端发送的远程调用请求信息,其中,远程调用请求信息至少包括客户端请求远程调用的操作信息;
S2,按预设规则解析操作信息,并确定目标操作信息,其中,操作信息至少包括目标操作信息;
S3,基于目标操作信息执行远程调用操作,并确定远程调用结果。
需要说明的是,本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,本实施例在此不再赘述。
另外,结合上述实施例中的远程调用方法,本申请实施例可提供一种存储介质来实现。该存储介质上存储有计算机程序;该计算机程序被处理器执行时实现上述实施例中的任意一种远程调用方法。
本领域的技术人员应该明白,以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

Claims (8)

1.一种远程调用方法,其特征在于,包括:
接收客户端发送的远程调用请求信息,其中,所述远程调用请求信息至少包括所述客户端请求远程调用的操作信息;
按预设规则解析所述操作信息,并确定目标操作信息,其中,所述操作信息至少包括所述目标操作信息;
基于所述目标操作信息执行远程调用操作,并确定远程调用结果;
所述按预设规则解析所述操作信息,并确定目标操作信息包括:
提取所述操作信息的多个第一操作信息;
根据预设过滤规则在所述多个第一操作信息检测候选操作信息,其中,所述预设过滤规则包括删除禁止执行的第二操作信息;
在检测到所述候选操作信息的情况下,确定所述候选操作信息为所述目标操作信息;
所述基于所述目标操作信息执行远程调用操作包括:
获取远程调用服务,并判断所述远程调用服务是否为第一远程调用服务,其中,所述第一远程调用服务包括SSHD服务;
在判断到所述远程调用服务为所述第一远程调用服务的情况下,关闭所述远程调用服务,并启用第二远程调用服务执行基于所述目标操作信息执行远程调用操作,其中,所述第二远程调用服务包括REST API微服务。
2.根据权利要求1所述的远程调用方法,其特征在于,基于所述目标操作信息执行远程调用操作之前,所述方法还包括:
确定所述目标操作信息的状态信息,其中,所述状态信息至少包括以下一种:拦截、通过;
在所述状态信息为拦截的情况下,确定所述客户端请求远程调用失败;
在所述状态信息为通过的情况下,执行基于所述目标操作信息执行远程调用操作,并确定远程调用结果。
3.根据权利要求1所述的远程调用方法,其特征在于,在判断到所述远程调用服务为非SSHD服务的情况下,启用所述第二远程调用服务执行基于所述目标操作信息执行远程调用操作,其中,所述第二远程调用服务包括REST API微服务。
4.根据权利要求1所述的远程调用方法,其特征在于,所述目标操作信息至少包括远程调用地址,基于所述目标操作信息执行远程调用操作包括:将所述远程调用地址拷贝至预设浏览器,并执行所述远程调用操作。
5.根据权利要求1所述的远程调用方法,其特征在于,所述目标操作信息至少包括目标操作指令,基于所述目标操作信息执行远程调用操作,并确定远程调用结果包括:
判断所述目标操作指令是否符合预设规则;
在判断到所述目标操作指令符合预设规则的情形下,基于所述目标操作指令执行远程调用,得到候选远程调用结果;
在所述候选远程调用结果中检测预设远程调用结果,并在检测到所述预设远程调用结果的情况下,确定所述预设远程调用结果为所述远程调用结果。
6.根据权利要求1所述的远程调用方法,其特征在于,基于所述目标操作信息执行远程调用操作,并确定远程调用结果之后,所述方法还包括:
将所述远程调用结果和所述目标操作信息存储到预设数据库中,并返回与所述远程调用请求消息对应的所述远程调用结果至所述客户端。
7.一种电子装置,包括存储器和处理器,其特征在于,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行权利要求1至6中任一项所述的远程调用方法。
8.一种存储介质,其特征在于,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行权利要求1至6中任一项所述的远程调用方法。
CN202011038833.9A 2020-09-28 2020-09-28 一种远程调用方法、电子装置和存储介质 Active CN112162873B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011038833.9A CN112162873B (zh) 2020-09-28 2020-09-28 一种远程调用方法、电子装置和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011038833.9A CN112162873B (zh) 2020-09-28 2020-09-28 一种远程调用方法、电子装置和存储介质

Publications (2)

Publication Number Publication Date
CN112162873A CN112162873A (zh) 2021-01-01
CN112162873B true CN112162873B (zh) 2024-03-26

Family

ID=73861782

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011038833.9A Active CN112162873B (zh) 2020-09-28 2020-09-28 一种远程调用方法、电子装置和存储介质

Country Status (1)

Country Link
CN (1) CN112162873B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114465752B (zh) * 2021-12-10 2024-06-28 奇安信科技集团股份有限公司 一种远程调用检测方法、装置、电子设备及存储介质
CN114816403A (zh) * 2022-04-19 2022-07-29 北京字节跳动网络技术有限公司 一种请求处理方法、装置、设备及存储介质
CN115426421B (zh) * 2022-08-18 2024-07-19 杭州分叉智能科技有限公司 一种基于rpa机器人的报文解析方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103023906A (zh) * 2012-12-20 2013-04-03 北京奇虎科技有限公司 针对远程过程调用协议进行状态跟踪的方法及系统
CN105391683A (zh) * 2015-09-30 2016-03-09 小米科技有限责任公司 远程方法调用的方法、装置及系统
CN106537344A (zh) * 2016-03-30 2017-03-22 北京小米移动软件有限公司 一种应用程序调用管理的方法和装置
CN110825537A (zh) * 2019-11-04 2020-02-21 联思智云(北京)科技有限公司 基于c/s架构的远程应用的调用方法、装置和设备
CN111580987A (zh) * 2020-04-21 2020-08-25 深圳市优必选科技股份有限公司 远程过程调用方法、装置、存储介质及终端设备

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103023906A (zh) * 2012-12-20 2013-04-03 北京奇虎科技有限公司 针对远程过程调用协议进行状态跟踪的方法及系统
CN105391683A (zh) * 2015-09-30 2016-03-09 小米科技有限责任公司 远程方法调用的方法、装置及系统
CN106537344A (zh) * 2016-03-30 2017-03-22 北京小米移动软件有限公司 一种应用程序调用管理的方法和装置
CN110825537A (zh) * 2019-11-04 2020-02-21 联思智云(北京)科技有限公司 基于c/s架构的远程应用的调用方法、装置和设备
CN111580987A (zh) * 2020-04-21 2020-08-25 深圳市优必选科技股份有限公司 远程过程调用方法、装置、存储介质及终端设备

Also Published As

Publication number Publication date
CN112162873A (zh) 2021-01-01

Similar Documents

Publication Publication Date Title
CN112162873B (zh) 一种远程调用方法、电子装置和存储介质
CN108965203B (zh) 一种资源访问方法及服务器
CN110519380B (zh) 一种数据访问方法、装置、存储介质及电子设备
US10915637B2 (en) Method, client, and system for testing application
CN109831351B (zh) 链路跟踪方法、装置、终端及存储介质
CN108628743B (zh) 应用程序测试方法、装置、设备及存储介质
CN107528858B (zh) 基于网页的登录方法、装置、设备及存储介质
CN112699034B (zh) 虚拟登录用户构建方法、装置、设备及存储介质
CN112732563A (zh) 接口脚本测试日志提取方法、装置、终端及存储介质
CN116324773A (zh) 用于保护智能合约免受攻击的方法和装置
EP3797356B1 (en) Code base sharing between standalone and web-based versions of an application due to the implementing of an emulated network communication channel
US11768889B1 (en) Evaluating configuration files for uniform resource indicator discovery
CN113158195B (zh) 一种基于poc脚本的分布式漏洞扫描方法及系统
CN108541000B (zh) 一种检测网络连接的方法、介质以及设备
CN114035811A (zh) 一种快速部署ova镜像的方法、系统、终端及存储介质
CN104570967B (zh) 基于Android系统的远程控制方法及系统
CN111488286B (zh) 一种Android模块独立开发的方法及装置
CN115454856B (zh) 多应用的安全检测方法、装置、介质及电子设备
CN114915565B (zh) 网络调试的方法和系统
CN115022217A (zh) 一种网卡检测方法、装置及电子设备和存储介质
CN111049795B (zh) 分布式Web应用的敏感数据未加密漏洞的检测方法及装置
CN113064601B (zh) 动态加载文件的确定方法、装置、终端及存储介质
US11487570B1 (en) Efficient creation of endpoints for accessing services directly within a cloud-based system
CN114036042A (zh) 一种模型测试方法、装置、计算机和可读存储介质
KR102193157B1 (ko) 컨테이너 서비스 제공을 위한 장치 및 방법

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