一种Linux系统下用户终端操作命令及回显信息监控方法与流程

文档序号:16886934发布日期:2019-02-15 22:43阅读:1412来源:国知局
一种Linux系统下用户终端操作命令及回显信息监控方法与流程

本发明涉及一种linux系统下用户终端操作命令及回显信息监控方法,属于计算机软件技术领域。



背景技术:

网络安全在智能化变电站自动化系统中起着重要作用。为了避免网络攻击对变电站自动化系统造成不良影响,需要对变电站自动化系统进行安全信息监控,并为网络安全检测装置上传告警事件。

现有的智能化变电站自动化系统中并没有对本地或远程登录系统的用户进行安全监控,无法有效的实时的监控用户的在系统中的操作命令和终端实时回显信息。本发明基于linux自身监控机制和script工具进行扩展,为智能化变电站自动化系统提供了一种针对用户操作命令和终端回显实时监控的解决方案。

该方案将采集被监控主机上各个终端的用户命令和终端回显信息,并为网络安全检测装置上传告警事件。

1.用户命令的采集

现有的智能化变电站自动化系统针对用户在终端操作命令的监控一般采用history命令,在linux下面可以使用history命令查看用户的所有历史操作,同时shell命令操作记录默认保存在用户目录的.bash_history文件中。通过这个文件可以查询shell命令的执行历史,有助于运维人员进行系统审计和问题排查,同时在服务器遭受黑客攻击后,也可以查询黑客登录服务器的历史命令操作。

history记录了每个终端下用户输入的历史命令,但是也具备以下几点不足:

1.history记录用户命令不具备实时性,不能实时的将用户操作命令上报至网络安全管理平台。

2.history记录的信息不具备安全性,用户操作命令的记录可以被任意篡改,可以通过history-c删除bash历史。

3.history不能记录终端回显信息。

4.history只能区记录不同终端的命令输入信息,不能识别各个命令的执行用户。

linux下利用prompt_command环境变量记录用户操作历史,在bash里设置环境变量prompt_command,这个命令会在用户提示符之前被执行,可以用来记录用户操作历史。

例如:

exportprompt_command='{date"+%f%h:%m:%s.%n#$(echo$src_ip)#$(echo$loginpid)#$(tty)#$(echo$port)#$(whoami)#$(echo$pwd)#$(echo$ssh_connection)#$(history1|{readxcmd;echo"$cmd";})";}>>/var/.mlog/`date'+%y%m%d%h%m%s'`_bash.txt'。

登录系统的用户在每次执行一个命令后,环境变量prompt_command就会被执行次,prompt_command会将该条命令被执行的时间、用户的登录id、用户登录的源ip、用户名、执行终端、执行路径等信息写入一个特定的文件当中。

2.终端信息采集

2.1script工具简介:

scirpt是一个命令,它可以制作一份记录输出到终端的记录。当用户在终端或控制台上工时,script命令可以记录下用户做了些什么。这种记录可以看成是保存了终端痕迹的文档,该记录可以保存并在以后再打印出来。

script命令在需要记录或者存档终端活动时可能很有用,记录文件会存储为文本文件,所以可以很方便地用文本编辑器打开。在使用script命令将终端的会话过程录制下来之后,可以使用scriptreplay将其录制的结果播放。script的好处就在于用户在终端中的所有操作、敲过的命令和打印出的结果它都可以原原本本地进行录制,可以应用于教学、演示、审计。

在终端中使用script命令启动记录器,此时用户在该终端上敲击的任何命令和任何终端信息都将被script记录下来。但在script停止记录之前所有的记录信息都还没有被写入到typescript文件中,只有在终端中按下ctrl+d,或者输入exit才能退出当前终端的记录活动。这时script才会把之前的记录信息写入到typescript文件中。在script停止之前typescript文件中是没有任何记录信息的。

2.2script工具存在的问题:

(1)script的记录不具有实时性:当前终端退出时script才会将历史操作信息记录到文档中。

(2)用户可查觉性:script的启动需要用户在终端中键入script命令。



技术实现要素:

针对现有技术中存在的技术问题,本发明的目的在于提供一种linux系统下用户终端操作命令及回显信息监控方法。

本发明的技术方案为:

一种linux系统下用户终端操作命令及回显信息监控方法,其步骤包括:

1)监控系统检测终端是否启动,当一终端启动时,操作系统为该终端创建一伪终端对:master0和slave0,并触发该终端的终端记录器script自动开启;每一终端的终端记录器script中设置三个子进程input、output、bash1;

2)操作系统将用户输入的操作命令写入伪终端master0;该终端的子进程input将从相应的伪终端slave0读取到所述操作命令并建立一伪终端对:master1和slave1;该终端的子进程input将所述操作命令写入伪终端master1中,该终端的子进程bash1将从相应的伪终端slave1中读取到所述操作命令并执行;该终端的子进程output获取所述操作命令执行后的终端回显信息;

3)监控系统根据获取到的用户操作命令生成操作输入信息报文、根据获取到的终端回显信息生成操作回显信息报文;然后将所述操作输入信息报文、操作回显信息报文发送给网络安全监测装置。

进一步的,所述监控系统通过配置用户家目录下的.bashrc文件,获取用户所登录终端的终端号并触发该终端的终端记录器script自动开启;终端记录器script获取该终端号并记录用户在该终端中的每条操作命令;监控系统根据每条操作命令找到对应的终端回显信息。

进一步的,所述子进程output获取所述操作命令执行后的终端回显信息并将其写入指定目录下并以终端号对记录文件命名。

进一步的,所述伪终端对为一对字符设备。

进一步的,所述子进程bash1将所述终端回显信息写入到伪终端slave1中,所述子进程output进程将从伪终端master1中获取所述终端回显信息。

进一步的,所述操作命令的格式为:用户登录类型#终端号#用户名#操作目录#操作时间&命令#用户操作命令。

进一步的,所述操作输入信息报文、操作回显信息报文的报文格式均包括报文头、报文体和报文尾三部分;其中,报文头包括报文标识、报文类型、参数/返回值和报文内容长度信息,报文体包括报文内容信息,报文尾包括报文尾标识和报文内容校验和信息。

进一步的,所述报文内容中包含主机ip、登录ip、登录时间、操作时间、用户名。

一种linux系统下用户终端操作命令及回显信息监控系统,其特征在于,包括监控系统、网络安全监测装置和若干终端;每一终端的终端记录器script中设置三个子进程input、output、bash1;其中,

所述监控系统,用于检测终端是否启动,当一终端启动时,操作系统为该终端创建一伪终端对:master0和slave0,并触发该终端的终端记录器script自动开启,将用户输入的操作命令写入伪终端master0;以及根据获取到的用户操作命令生成操作输入信息报文、根据获取到的终端回显信息生成操作回显信息报文;然后将所述操作输入信息报文、操作回显信息报文发送给网络安全监测装置;

子进程input,用于从相应的伪终端slave0读取到所述操作命令并建立一伪终端对:master1和slave1;以及将所述操作命令写入伪终端master1中;

子进程bash1,用于从相应的伪终端slave1中读取到所述操作命令并执行;

子进程output,用于获取所述操作命令执行后的终端回显信息。

与当前已有相关技术相比,本发明的积极效果为:

1)实时性:相较于history和script命令,该监测方案可将用户的操作命令和终端上对应的回显信息实时的通过tcp协议上报到网络安全监测装置。

2)安全性:history和scprit命令记录的用户操作信息和回显信息被记录在相应的公共文件中可以被用户任意修改删减,在本解决方案中,用户的操作信息和终端回显信息在用户命令被执行后就立刻被agent采集并发送至网络安全监测装置,原始的记录文件也会被立刻清除。

3)用户透明性:用户开启终端监控静默启动,做到了对用户完全透明。

附图说明

图1为angent监控系统整体流程图;

图2为script模块的工作架构图;

图3为伪终端结构图。

具体实施方式

为了使本技术领域的人员更好地理解本发明实施例中的技术方案,并使本发明的目的、特征和优点能够更加明显易懂,下面结合附图对本发明中技术核心作进一步详细的说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。

1.linux系统下用户终端操作命令及回显信息监控方法整体介绍

本发明是基于linux操作系统平台,利用bash环境变量采集用户操作命令,通过改写script工具采集终端回显信息。监控系统将获取到的操作命令和回显信息分别生成操作输入信息报文和操作回显信息报文,并利用tcp协议与远端网络安全监测装置通讯,提供一种具有实时性的用户操作监控方案。

用户登录系统后打开终端,终端中的命令信息和回显信息会被记录在相应的文件当中。监控系统会从相应文件中读取到用户的操作信息,经过分析处理后通过tcp协议将用户的操作信息及回显信息实时发送至网络安全监测装置。

工作流程如图1所示:

(1)当用户登录系统后该用户的各种信息将会被记录到环境变量中;

通过配置/etc/profile文件来判断用户是本地登录,ssh登录还是x11登录。

通过配置用户家目录下的.bashrc文件获取用户操作终端号

linx_pts=`/usr/sbin/lsof-p$$|grep/dev/pts/|head-1|awk'{print$9}'`

如果该bash不是由终端启动,则linx_pts为空。

(2)当用户开起任意终端后,script(终端记录器)将会自动开启,终端回显信息将会被记录在指定目录下;

通过配置用户家目录下的.bashrc文件,当用户开启任意终端时触发script:

linx_smp_echo=`cat/usr/share/smp/linx_config2>/dev/null|grep^echo=yes`//判断配置文件中是否开启终端回显监控功能

(3)用户在终端中的每条操作命令将会被记录到文件中并保存在/var/.mlog(该目录为存放所有操作命令文件,操作命令记录文件命名为操作时间+shell类型)下;

(4)agent读取到用户的操作命令后,会根据该条信息的终端号在/var/linx_agnet(该目录存放操作命令执行结果回显的文件)下找到对应的终端回显信息;

(5)agent将采集到的信息整理成统一的报文格式后通过tcp协议发送至网络安全监测装置。

模块设计

(1)script终端录制模块简介

以下是ssh登录为例,介绍script记录用户操作命令回显的过程

·当用户通过ssh登录到系统时,sshd服务会fork出一个子进程来启动bash。

bash在启动时会执行该用户家目录下的.bashrc脚本,该脚本判断此次bash启动是否是一个新的用户终端开启,如果为真,脚本则将会启动script监控这个终端。

script将会开启三个子进程分别是input、output、bash1。

当.bashrc脚本启动了script后,用户从键盘输入的命令最终将会被bash1获取到并执行,命令的返回结果将会被output进程获取到并将终端返回信息写入指定目录下的文件中。

(2)对script模块的改写:在dooutput()函数中添加如下代码

output进程的dooutput()函数在获取到用户操作命令执行结果后,通过以上代码实时地将用户操作回显信息记录到指定目录下并以终端号对记录文件命名。

(2)终端回显的获取过程

图2中的master和slave为终端设备文件,用户打开的“终端”桌面程序,其实是一种终端模拟器。当终端模拟器运行时,它通过/dev/ptmx打开master端,创建了一个伪终端对,并让shell运行在slave端。当用户在终端模拟器中按下键盘按键时,它产生字节流并写入master中,shell便可从slave中读取输入;shell和它的子程序,将输出内容写入slave中,由终端模拟器负责将字符打印到窗口中。

伪终端:伪终端是伪终端master和伪终端slave(终端设备文件)这一对字符设备。/dev/ptmx是用于创建一对master、slave的文件。当一个进程打开它时,获得了一个master的文件描述符,同时在/dev/pts下创建了一个slave设备文件。

master端是更接近用户显示器、键盘的一端,slave端是在虚拟终端上运行的cli(命令行接口)程序。linux的伪终端驱动程序,会把“master端(如键盘)写入的数据”转发给slave端供程序输入,把“程序写入slave端的数据”转发给master端供(显示器驱动等)读取。

·script在启动时创建了一个新的伪终端对(master1、slave1),要创建master、slave对,只需要用open系统调用打开/dev/ptmx文件,即可得到master的文件描述符。同时,在/dev/pts中已经创建了一个设备文件,表示slave端。

用户开启终端后系统自动创建伪终端对(master0和slave0),用户从键盘中输入的命令将通过sshd服务写入master0伪终端,input进程将从相应的slave0伪终端读取到用户命令。

input将读取到的用户命令重新写入新建的伪终端master1中,bash1将从slave1中读取到用户的操作命令并执行。

bash1将操作命令的执行结果写入到slave1中,output进程将从master1中获取到bash1的操作命令执行结果。

output进程在拿到用户操作命令执行结果后,将该结果写入相应的/var/linx_agent/下对应文件中并标明终端号,再将该命令执行结果写入原始伪终端slave0中。

sshd将从master0中读取到用户操作命令的执行结果并打印到用户的操作终端上。

通过上述流程,用户操作命令的执行结果被script成功截取到指定文件中,用户的操作终端中同样会打印命令的执行结果,截取过程对用户的操作不会产生任何影响。

(3)agent监控模块

·从相应文件中获取命令信息和终端回显信息:

agent监控进程通过循环读取/var/.mlog/下的文件来获取用户的操作命令。

用户操作命令的格式为:用户登录类型#终端号#用户名#操作目录#操作时间&命令#用户操作命令

例:ssh_login#pts/6#root#/root/222/test#20180910-133853%n:ls#ls

当agent监控进程获取到用户的操作命令后,会根据上述字符串中的#终端号#在/var/linux_agent/下找到相对应的命令回显结果文件,该文件中的内容既是用户命令被执行后终端上的回显信息。

·根据采集到的信息生成相对应类型的告警报文:

agent采用自定义tcp协议与网络安全监测装置建立一个连接通道。tcp连接为长连接,支持基于tcpkeepalive的连接心跳探测,agent进程通过该tcp连接向网络安全监测装置上报采集信息。当出现tcp连接中断时,agent主动重新建立tcp连接。当上报采集信息的tcp连接通道发生切换时,保证上报的采集信息不丢失。

报文格式包括报文头、报文体和报文尾三部分,具体报文格式见表1。

表1报文格式定义

报文内容:

报文内容中包含主机ip、登录ip、登录时间、操作时间、用户名等操作用户的基本信息。用户在登时,agent会记录下该用户的登录ip、登录时间、登录终端号等信息。当agent采集到用户的操作命令和终端回显时,将会根据数据中的用户名在agent维护的链表中查询,该用户的登录信息。

·用户操作输入信息报文内容如表2。

·表2.操作输入信息

·用户操作回显信息报文内容如表3。

表3.用户操作回显信息

以上所述实施例仅表达了本发明的实施方式,其描述较为具体,但并不能因此理解为对本发明专利范围的限制。应当指出,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应当以所附权利要求为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1