掌桥专利:专业的专利平台
掌桥专利
首页

一种Linux系统终端操作记录实时监视方法及装置

文献发布时间:2023-06-19 18:37:28


一种Linux系统终端操作记录实时监视方法及装置

技术领域

本发明涉及一种Linux系统终端操作记录实时监视方法及装置,属于电力监控系统信息技术领域。

背景技术

在《电力监控系统网络安全监测装置技术规范》中要求监视用户在服务器终端上的操作命令和操作回显信息。现有的方案大多是分别监视操作命令和操作回显信息,操作命令的监视利用bash的PROMPT_COMMAND将操作命令保存到日志中,操作回显则利用系统自带的script应用将用户操作命令及输出信息保存到指定命令输出信息日志文件中。再结合操作命令日志和命令输出信息日志文件分析出操作和匹配的操作输出信息。然而,这类监视方法存在一些缺陷:1)将监视信息保存在文件中,可能让不同权限的用户查看到操作记录,存在信息安全隐患;2)用户在终端输入exit或Ctrl+C命令可随时中断script进程,并回到终端模拟器初始创建的shell中继续操作从而逃避script的监视,使得操作记录监视过程无法持续;3)操作命令和操作记录本身不同步,PROMPT_COMMAND是在命令执行完成后才被回调执行,且保存在不同的日志文件中,这使得对操作记录日志文件的分析变得复杂,且难以分析出匹配的操作命令和操作记录。

发明内容

本发明的目的在于克服现有技术中的不足,提供一种Linux系统终端操作记录实时监视方法及装置,通过该方法可以实时获取用户在shell上的操作命令以及相应操作的输出信息,并将信息通过UDP发送给AgentProbe监视进程,从而实现对Linux系统终端操作记录的实时监视。

为达到上述目的,本发明是采用下述技术方案实现的:

第一方面,本发明提供了一种Linux系统终端操作记录实时监视方法,包括:

检测到终端模拟器启动、创建第一伪终端对及启动shell进程后,获取操作命令,写入第一伪终端对;

在shell进程启动时加载的shell配置文件中启动预先创建的AgentShell操作记录监视进程,创建第二伪终端对,其中,所述AgentShell操作记录监视进程包括主进程、shell监视子进程以及输出读取子进程,其中:

所述主进程包括:

读取第一伪终端对中的操作命令,将所述操作命令通过UDP协议发送到预先创建的AgentProbe监视进程,同时写入第二伪终端对;

所述shell监视子进程包括:

创建新的shell进程,通过预先设置的环境变量AGENT_SHELL确保AgentShell操作记录监视进程只被启动一次;

通过所述新的shell进程读取第二伪终端对中的操作命令,执行所述操作命令,获取输出信息;

将所述操作命令及输出信息重新写入第二伪终端对;

所述输出读取子进程包括:

从所述第二伪终端对中读取操作命令及输出信息,并将所述操作命令及输出信息通过UDP协议发送到AgentProbe监视进程。

进一步的,所述加载预先设置的shell配置文件,捕捉操作命令,包括:

在shell配置文件中设置“命令提示”环境变量,所述“命令提示”环境变量设定为执行设定的终端操作命令采集脚本,通过所述终端操作命令采集脚本捕捉当前终端模拟器上的第一条历史操作命令,并将所述第一条历史操作命令发送到AgentProbe监视进程。

进一步的,所述终端操作命令采集脚本读取当前终端模拟器上的第一条历史操作命令后,通过预设的CmdCap操作命令发送程序将所述第一条历史操作命令的内容发送给AgentProbe监视进程。

进一步的,所述终端操作命令采集脚本读取第一条历史操作命令后,收集整合该操作命令的上下文环境信息形成一个结构化的操作命令信息。

进一步的,所述结构化的操作命令信息,包括登录方式、父终端号,当前伪终端号、用户名、操作文件目录、SSH连接信息、操作命令时间,每一个信息均使用Key-Val格式描述,不同信息间使用’#’分隔。

进一步的,所述新的shell进程接收到操作命令后,判断是否为退出新shell命令;如果判断结果为是,则将所述AgentShell操作记录监视进程退出,并强制退出shell进程,shell进程退出后,终端模拟器退出;如果判断结果为否,执行操作命令,获取输出信息。

进一步的,所述退出shell进程的方法包括:获取所述shell进程的进程号,使用kill命令强制退出该shell进程。

第二方面,本发明提供一种Linux系统终端操作记录实时监视装置,包括:

操作命令捕捉模块,用于检测到终端模拟器启动、创建第一伪终端对及启动shell进程后,获取操作命令,写入第一伪终端对;

监视模块,在shell进程启动时加载的shell配置文件中启动预先创建的AgentShell操作记录监视进程,创建第二伪终端对,其中,所述AgentShell操作记录监视进程包括主进程、shell监视子进程以及输出读取子进程,其中:

所述主模块包括:

处理单元,用于读取第一伪终端对中的操作命令,将所述操作命令通过UDP协议发送到预先创建的AgentProbe监视模块,同时写入第二伪终端对;

所述shell监视子模块包括:

创建单元,用于创建新的shell单元,通过预先设置的环境变量AGENT_SHELL确保AgentShell操作记录监视模块只被启动一次;

执行单元,用于通过所述新的shell单元读取第二伪终端对中的操作命令,执行所述操作命令,获取输出信息;

写入单元,用于将所述操作命令及输出信息重新写入第二伪终端对;

所述输出读取子模块包括:

发送单元,用于从所述第二伪终端对中读取操作命令及输出信息,并将所述操作命令及输出信息通过UDP协议发送到AgentProbe监视模块。

第三方面,本发明提供一种电子设备,包括处理器及存储介质;

所述存储介质用于存储指令;

所述处理器用于根据所述指令进行操作以执行根据前述任一项所述方法的步骤。

第四方面,本发明提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现前述任一项所述方法的步骤。

与现有技术相比,本发明所达到的有益效果:

本发明提供一种Linux系统终端操作记录实时监视方法及装置,通过该方法可以实时监视用户操作和操作输出信息。该方法通过在shell命令提示环境变量中执行指定的终端操作命令采集脚本监视当前终端模拟器上的输入命令,并将监视到的操作命令通过UDP协议发送给监视进程;在用户打开终端模拟器时自动启动AgentShell操作记录采集进程,使用伪终端和创建新shell的方式监视用户操作记录,将监视到的操作命令和输出信息通过UDP协议发送给监视进程,使得对操作和操作输出的分析变得简单可靠,同时避免了信息泄露;在用户退出新shell后,强制退出终端模拟器所启动的shell进程,避免用户逃避监视。

附图说明

图1为本发明实施例提供的Linux终端操作记录实时监视方法总流程;

图2为AgentShell操作记录采集进程工作流程;

图3为bash命令提示环境变量设置;

图4为整合和发送操作命令的脚本;

图5为bash配置文件.bashrc启动AgentShell程序;

图6为csh命令提示环境变量设置;

图7为csh配置文件.cshrc启动AgentShell程序。

具体实施方式

下面结合附图对本发明作进一步描述。以下实施例仅用于更加清楚地说明本发明的技术方案,而不能以此来限制本发明的保护范围。

实施例1

本实施例介绍一种Linux系统终端操作记录实时监视方法,包括:

检测到终端模拟器启动、创建第一伪终端对及启动shell进程后,获取操作命令,写入第一伪终端对;

在shell进程启动时加载的shell配置文件中启动预先创建的AgentShell操作记录监视进程,创建第二伪终端对,其中,所述AgentShell操作记录监视进程包括主进程、shell监视子进程以及输出读取子进程,其中:

所述主进程包括:

读取第一伪终端对中的操作命令,将所述操作命令通过UDP协议发送到预先创建的AgentProbe监视进程,同时写入第二伪终端对;

所述shell监视子进程包括:

创建新的shell进程,通过预先设置的环境变量AGENT_SHELL确保AgentShell操作记录监视进程只被启动一次;

通过所述新的shell进程读取第二伪终端对中的操作命令,执行所述操作命令,获取输出信息;

将所述操作命令及输出信息重新写入第二伪终端对;

所述输出读取子进程包括:

从所述第二伪终端对中读取操作命令及输出信息,并将所述操作命令及输出信息通过UDP协议发送到AgentProbe监视进程。

本实施例提供的Linux系统终端操作记录实时监视方法,包括:

本发明共涉及2个脚本和3个应用程序。

2个脚本分别为:1)shell配置文件脚本;2)操作命令采集发送脚本;

3个应用程序分别为:1)CmdCap操作命令发送程序;2)AgentShell操作记录采集程序;3)AgentProbe监视程序。

shell配置文件脚本的功能主要有两方面:1)配置获取用户操作命令的脚本;2)启动AgentShell。

如图1,在用户打开终端模拟器后,终端模拟器将创建伪终端对,并启动shell,shell加载配置文件。在shell配置文件中通过设置“命令提示”环境变量以捕捉操作命令,并启动AgentShell操作记录监视进程,该进程创建新shell用于监视操作命令和操作命令输出信息。该进程等待到操作命令输入后,判断是否为退出新shell命令,如果为是,则退出AgentShell操作记录监视进程,并强制退出终端模拟器启动的shell,shell退出后,终端模拟器退出;如果为否,则执行操作命令,由AgentShell获取操作命令及输出信息,并将该信息通过UDP发送到AgentProbe进程。

如图2,AgentShell进程启动后,执行如下步骤,包括:

步骤1:创建udp socket、创建伪终端对(伪终端对分为master侧和slave侧,写入slave侧的内容可以从master侧读出;写入master侧的内容,可以从slave侧读出,这是由伪终端驱动实现的)。

步骤2:创建输出读取子进程以及创建shell监视子进程;

输出读取子进程,包括:

从master端读取信息,并将读取到的信息通过udp发送出去,这些信息包括主进程写入到master端的信息,也包括shell监视子进程中启动的shell上的输出信息,

shell监视子进程,包括:

shell监视子进程将主进程创建的伪终端slave侧描述符使用dup2分别复制到标准输入STDIN/标准输出STDOUT/标准错误STDERR,并启动新的shell。这样在该shell上,所有写到标准输出STDOUT/标准错误STDERR的信息即写到伪终端对slave侧,再由伪终端驱动,写到master侧。同样,在主进程中从标准输入读取并写入伪终端master侧的数据将由伪终端驱动写入到slave侧,写到slave的信息即为写到shell标准输入的信息,shell和shell上运行的应用读取的输入信息即为该信息。

步骤3:主进程从标准输入读取输入信息,并将输入信息写入到master端;

进程创建伪终端,并启动一个新的shell用于监视用户在新的shell上的操作命令及命令的输出信息,并将该信息发送给监视进程。

下面结合具体的实施例,进一步阐明本发明提供的方法。

实施例1:bash操作记录实时监视

如图3,在用户目录下的.bashrc文件中设置PROMPT_COMMAND环境变量。该环境变量在用户执行完操作命令后被调用,该环境变量获取历史第一条操作命令,并调用agent_cmd.sh脚本;如图4,agent_cmd.sh脚本整合操作命令和上下文信息,并调用CmdCap将整合后的信息通过UDP发送给AgentProbe监视程序,发送完成后即可退出。

如图5,在用户目录下的.bashrc文件中配置脚本启动AgentShell进程,并通过环境变量AGENT_SHELL确保AgentShell程序只被启动一次。

实施例2:csh操作记录实时监视

如图6,在用户目录下的.cshrc文件中设置precmd环境变量。该环境变量在用户执行完操作命令后被调用,该环境变量获取历史第一条操作命令,并调用agent_cmd.sh脚本;如图4,agent_cmd.sh脚本整合操作命令和上下文信息,并调用CmdCap将整合后的信息通过UDP发送给AgentProbe监视程序,发送完成后即可退出。

如图7,在用户目录下的.bashrc文件中配置脚本启动AgentShell进程,并通过环境变量AGENT_SHELL确保AgentShell程序只被启动一次。

由上述实施例可以看到,本发明提供的Linux系统终端操作记录实时监视方法,通过该方法可以实时获取用户在shell上的操作命令以及相应操作的输出信息,并将信息通过UDP发送给AgentProbe监视进程,从而实现对Linux系统终端操作记录的实时监视。与现有技术相比,该方法通过将操作命令和输出信息直接通过UDP直接发送给AgentProbe监视进程,使得对操作和操作输出的分析变得简单可靠,同时避免了信息泄露;在用户操作完成退出后,自动关闭终端模拟器,避免用户中断AgentShell监视进程逃避监视。

实施例2

本实施例提供一种Linux系统终端操作记录实时监视装置,包括:

操作命令捕捉模块,用于检测到终端模拟器启动、创建第一伪终端对及启动shell进程后,获取操作命令,写入第一伪终端对;

监视模块,在shell进程启动时加载的shell配置文件中启动预先创建的AgentShell操作记录监视进程,创建第二伪终端对,其中,所述AgentShell操作记录监视进程包括主进程、shell监视子进程以及输出读取子进程,其中:

所述主模块包括:

处理单元,用于读取第一伪终端对中的操作命令,将所述操作命令通过UDP协议发送到预先创建的AgentProbe监视模块,同时写入第二伪终端对;

所述shell监视子模块包括:

创建单元,用于创建新的shell单元,通过预先设置的环境变量AGENT_SHELL确保AgentShell操作记录监视模块只被启动一次;

执行单元,用于通过所述新的shell单元读取第二伪终端对中的操作命令,执行所述操作命令,获取输出信息;

写入单元,用于将所述操作命令及输出信息重新写入第二伪终端对;

所述输出读取子模块包括:

发送单元,用于从所述第二伪终端对中读取操作命令及输出信息,并将所述操作命令及输出信息通过UDP协议发送到AgentProbe监视模块。

实施例3

本实施例提供一种电子设备,包括处理器及存储介质;

所述存储介质用于存储指令;

所述处理器用于根据所述指令进行操作以执行根据实施例1中任一项所述方法的步骤。

实施例4

本实施例提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现实施例1中任一项所述方法的步骤。

以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。

技术分类

06120115631619