一种安全审计方法、装置、设备及可读存储介质与流程

文档序号:25949735发布日期:2021-07-20 17:05阅读:120来源:国知局
一种安全审计方法、装置、设备及可读存储介质与流程

本发明涉及信息安全技术领域,特别是涉及一种安全审计方法、装置、设备及可读存储介质。



背景技术:

在linux系统下可通过history命令查看用户所有的历史操作记录,在安全审计中起着非常重要的作用。

但是,基于history命令来进行安全审计,存在很多问题,如history命令将操作记录保存于内存中,当退出或登录shell时,会被自动保存或读取。history命令支持将历史操作记录写入磁盘,但写入操作不是实时的,导致“reboot”操作不会记录至磁盘。由此导致系统重启的记录也不能被审计。黑客可通过history命令历史获取用户敏感信息,如通过命令“mysql-h192.168.1.100-uroot-pabcd123456”登录远程数据库,很容易暴露数据库用户名及密码。另外,黑客在系统上执行完命令后会删除常用目录/root/.history,管理员经常无法察觉系统被攻击。

综上所述,如何有效地解决安全审计等问题,是目前本领域技术人员急需解决的技术问题。



技术实现要素:

本发明的目的是提供一种安全审计方法、装置、设备及可读存储介质,以在执行shell命令之前,会存储该shell命令的操作记录,且在存储操作记录的过程中,会判断历史记录文件是否被篡改,在确定出现篡改时,输出报警信息。如此,基于历史记录文件便可有效确定系统是否遭受恶意攻击,另外由于对操作记录进行了存储,后续还可基于操作记录进一步确定恶意攻击的具体情况。

为解决上述技术问题,本发明提供如下技术方案:

一种安全审计方法,包括:

获取shell命令,并确定出所述shell命令的操作记录;

判断历史记录文件是否被篡改;

如果否,则将所述操作记录存入所述历史记录文件;

如果是,则输出告警信息,并在新建历史记录文件后,将所述操作记录存入新建的历史记录文件;

存储所述操作记录后,执行所述shell命令。

优选地,将所述操作记录存入所述历史记录文件,包括:

加密所述操作记录,并将加密后的操作记录存入所述历史记录文件。

优选地,将所述操作记录存入所述历史记录文件,包括:

对所述历史记录进行完整性校验,得到校验结果;

将所述校验结果存储在所述历史记录文件中。

优选地,所述判断历史记录文件是否被篡改,包括:

利用所述历史记录文件中各个操作记录的完整性校验结果,得到所述历史记录文件的当前校验值;

判断所述当前校验值与上一次记录了操作记录后得到的标准校验值是否一致;

如果是,则确定所述历史记录文件未被篡改;

如果否,则确定所述历史记录文件已被篡改。

优选地,所述确定出所述shell命令的操作记录,包括:

获取所述shell命令的操作信息;所述操作信息包括操作主体和操作时间;

利用所述操作信息和所述shell命令,得到所述操作记录。

优选地,在确定出所述shell命令的操作记录之后,在执行所述shell命令之前,还包括:

将所述操作记录存入异地服务器中的历史记录备份文件。

优选地,在确定所述历史记录文件被篡改后,还包括:

利用所述历史记录备份文件,确定出被篡改的目标操作记录;

利用所述目标操作记录,确定恶意攻击行为。

一种安全审计装置,包括:

操作记录获取模块,用于获取shell命令,并确定出所述shell命令的操作记录;

判断模块,用于判断历史记录文件是否被篡改;

操作记录存储模块,用于如果所述历史记录文件未被篡改,则将所述操作记录存入所述历史记录文件;

篡改告警模块,用于如果所述历史记录文件被篡改,则输出告警信息,并在新建历史记录文件后,将所述操作记录存入新建的历史记录文件;

命令执行模块,用于存储所述操作记录后,执行所述shell命令。

一种安全审计设备,包括:

存储器,用于存储计算机程序;

处理器,用于执行所述计算机程序时实现上述安全审计方法的步骤。

一种可读存储介质,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述安全审计方法的步骤。

应用本发明实施例所提供的方法,获取shell命令,并确定出shell命令的操作记录;判断历史记录文件是否被篡改;如果否,则将操作记录存入历史记录文件;如果是,则输出告警信息,并在新建历史记录文件后,将操作记录存入新建的历史记录文件;存储操作记录后,执行shell命令。

在本方法中,在执行shell命令之前,在历史记录文件中记录操作记录的同时,可基于历史记录文件进行安全审计。具体的,在存储操作记录的过程中,判断历史记录文件是否被篡改,如果没有被篡改,则正常存储操作记录在历史记录文件中;如果发现历史记录文件被篡改,即表明当前系统可能遭受恶意攻击,则输出告警信息,且重新建历史记录文件,将本次获取的shell命令的操作记录存入新建的历史记录文件中。可见,在本方法中,不仅可将shell命令的操作记录进行有效存储,还可在存储过程中基于历史记录文件进行安全审计,能够及时且有效地发现恶意攻击,能够有效保障系统信息安全。

相应地,本发明实施例还提供了与上述安全审计方法相对应的安全审计装置、设备和可读存储介质,具有上述技术效果,在此不再赘述。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例中一种安全审计方法的实施流程图;

图2为本发明实施例中一种历史记录文件存储格式示意图;

图3为本发明实施例中一种安全审计方法的具体实施流程图

图4为本发明实施例中一种安全审计装置的结构示意图;

图5为本发明实施例中一种安全审计设备的结构示意图;

图6为本发明实施例中一种安全审计设备的具体结构示意图。

具体实施方式

为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

实施例一:

请参考图1,图1为本发明实施例中一种安全审计方法的流程图,该方法可应用于集成了若干命令的命令工具(如busybox)中。其中,busybox是一个集成了许多常用linux命令的工具软件,可实现查找命令(如find、grep等)、编辑命令(如vi、diff、echo等)、文件管理命令(如rm、mv、touch、rmdir等)、网络类命令(如ifconfig、telnet、ftpget等)及系统管理类命令(如reboot、init、kill等)。该方法包括以下步骤:

s101、获取shell命令,并确定出shell命令的操作记录。

在获取到shell命令之后,为实现有效地安全审计,首先确定出shell命令的操作记录。

优选地,为了能够基于操作记录进行有效的安全审计,在本实施例中,操作记录还可区别于history命令所获取的操作记录,即在本实施例中操作记录可包括操作信息以及命令本身。具体的,确定操作记录的过程,包括:

步骤一、获取shell命令的操作信息;操作信息包括操作主体和操作时间;

步骤二、利用操作信息和shell命令,得到操作记录。

为便于描述,下面将上述两个步骤结合起来进行说明。

获得shell命令之后,可对shell命令进行解析,得到该shell命令的操作信息,该操作信息可具体包括操作主体和操作时间。然后,将操作信息和shell命令本事作为一条操作记录。

具体的,操作记录格式可具体为:<date><user><cmdline>,其中date即操作时间,user即操作主体,cmdline即操作命令。例如:“2019-11-1116:31:23rootreboot”。当然,在本发明的其他实施例中,操作记录个数还可为其他格式,如<user><date><cmdline>。

基于该操作记录包括了操作主体,操作时间以及操作命令本身,因此在基于操作记录进行安全审计时,能够基于操作记录区分操作主体、操作时间,便于审计。

s102、判断历史记录文件是否被篡改。

在将操作记录存入历史记录文件之前,首先可判断历史记录文件是否被篡改。由于黑客在系统上执行完命令后会删除常用目录/root/.history,因而基于是否被篡改能够及时有效地发现恶意攻击。

具体的,在本实施例中,可在每一次向历史记录文件存入操作记录之后,对历史记录文件进行哈希计算,得到一个用于判断历史记录文件是否被篡改的哈希值。即,可利用历史记录文件的哈希值判断历史记录文件是否被篡改。

优选地,由于历史记录文件中存储了操作记录,也可对操作记录的完整性进行校验,然后将各个操作记录的完整性校验结果进行累加,得到校验值。基于该校验值判断历史记录文件是否被篡改。具体判断过程,包括:

步骤一、利用历史记录文件中各个操作记录的完整性校验结果,得到历史记录文件的当前校验值;

步骤二、判断当前校验值与上一次记录了操作记录后得到的标准校验值是否一致;

步骤三、如果是,则确定历史记录文件未被篡改;

步骤四、如果否,则确定历史记录文件已被篡改。

具体来说,若一个操作记录发生变化如删除、恶意增加、修改、替换,都将导致历史记录文件的当前校验值与上一次记录的标准校验值变会不一致。因此,可通过比对标准校验值与当前校验值来确定历史记录文件是否被篡改。

得到历史记录文件是否被篡改的记录结果之后,便可基于判断结果进行区别处理。具体来说,若确定历史记录文件未被篡改,则执行步骤s103;若确定历史记录文件已被篡改,则执行步骤s104。

s103、将操作记录存入历史记录文件。

优选地,考虑到部分命令对应的操作记录中可能含有重要信息,例如,通过命令“mysql-h192.168.1.100-uroot-pabcd123456”登录远程数据库,很容易暴露数据库用户名及密码;因此,在存储操作记录时,为了保障操作记录的安全性,避免关键信息被窃取,可对操作记录进行加密。即,加密操作记录,并将加密后的操作记录存入历史记录文件。本发明实施例对加密过程中具体采用何种加密算法并不做限定。例如,操作记录密文采用sm4算法ecb模式加密,当然也可以采用其他加密算法进行加密。

优选地,为了能够便于在进行安全审计时,快速准确地确定哪条操作记录出现问题,还可对每一条待存储的操作记录进行完整性校验,即仅存储完整的操作记录。具体实现过程,包括:

步骤一、对历史记录进行完整性校验,得到校验结果;

步骤二、将校验结果存储在历史记录文件中。

可采用sm3算法对操作记录进行校验,得到校验结果。然后将历史记录文件中的各个校验结果的和存储于历史记录文件首部。

在实际应用中,可对操作记录进行加密和校验,以保障操作记录的完整性和安全性。举例说明:操作记录密文采用sm4算法ecb模式加密,加密时在操作记录后填充‘\0’至16字节整数倍长度;历史记录文件采用二进制文件形式存储。使用sm3算法对操作记录部分进行校验,校验和存储于历史记录文件首部。历史记录文件的格式可参考图2。

s104、输出告警信息,并在新建历史记录文件后,将操作记录存入新建的历史记录文件。

在确定历史记录文件被篡改后,可输出告警信息,具体的,可在shell控制台告警提示,告知操作员/管理员系统发生过被攻击的行为;还可将告警信息上报至syslog服务器。举例说明:可通过sm3杂凑算法对历史记录文件进行完整性保护,在添加操作记录时首先检查历史记录文件是否被篡改,可及时识别出系统发生过过非法访问情况。当出现历史记录文件被篡改时,可及时向shell终端和服务器发送告警信息。

为了保证本次执行的shell命令的操作被有效记录,此时还可新建一个历史记录文件,然后将操作记录存储新建的历史记录文件中。存储过程可参加上述步骤s103的描述,在此不再一一赘述。

s105、存储操作记录后,执行shell命令。

在存储了操作记录之后,便可执行shell命令。如此,即便shell命令是黑客的恶意攻击行为,也能够被有效记录。

优选地,为了便于安全审计,在本实施例中,在确定出shell命令的操作记录之后,在执行shell命令之前,还可将操作记录存入异地服务器中的历史记录备份文件。也就是说,可在异地服务器中存储历史记录备份文件,即便在本地存储的历史记录文件出现被篡改,或丢失,也能够通过历史记录备份文件获取到操作记录。通过在操作命令执行前,将操作记录通过syslog(其中功能:记录至系统记录)发送至异地日志服务器,保证操作记录可审计性。

具体的,在确定历史记录文件被篡改后,利用历史记录备份文件,确定出被篡改的目标操作记录;利用目标操作记录,确定恶意攻击行为。即通过比对篡改后的历史记录文件以及异地服务器存储的历史记录备份文件,即可确定出被篡改的目标操作记录。也就是说,操作记录密文保存于本地历史记录文件,若历史记录文件被删除,可从异地服务器中得到历史记录备份文件,分析出黑客对系统进行了何种破坏,破坏的严重程度如何。

应用本发明实施例所提供的方法,获取shell命令,并确定出shell命令的操作记录;判断历史记录文件是否被篡改;如果否,则将操作记录存入历史记录文件;如果是,则输出告警信息,并在新建历史记录文件后,将操作记录存入新建的历史记录文件;存储操作记录后,执行shell命令。

在本方法中,在执行shell命令之前,在历史记录文件中记录操作记录的同时,可基于历史记录文件进行安全审计。具体的,在存储操作记录的过程中,判断历史记录文件是否被篡改,如果没有被篡改,则正常存储操作记录在历史记录文件中;如果发现历史记录文件被篡改,即表明当前系统可能遭受恶意攻击,则输出告警信息,且重新建历史记录文件,将本次获取的shell命令的操作记录存入新建的历史记录文件中。可见,在本方法中,不仅可将shell命令的操作记录进行有效存储,还可在存储过程中基于历史记录文件进行安全审计,能够及时且有效地发现恶意攻击,能够有效保障系统信息安全。

由于busybox工具使用简单,占用资源很少,通过编译选项配置选择所需的命令集,是构建内存有限的嵌入式系统的常用的工具。为便于理解和应用,下面将上述安全审计方法应用于busybox工具进行详细说明。

系统命令执行前,busybox工具收集操作命令记录,记录操作命令的主体、时间、命令组成操作记录,一方面将操作记录安全存储于磁盘上,存储时进行加密及完整性校验判断;另一方面可同步将操作记录上传至指定的syslog服务器,远程备份。

请参考图3,具体实现过程,包括:

步骤一、读取shell命令完;

步骤二、将shell命令的操作时间、操作主体及命令体组成一条操作记录;

步骤三、使用sm4算法将操作记录加密。

步骤四、在打开历史记录文件时,判断历史记录文件是否被篡改。

步骤五、若发现记录文件被非法篡改,在shell控制台告警提示,告知操作员/管理员系统发生过被攻击的行为。同时将告警信息上报至syslog服务器。记录文件被篡改后,程序将自动创建一个新的历史记录文件,操作记录写入新的历史记录文件保存。

步骤六、若记录文件未被篡改,操作记录写入历史记录文件保存。

步骤七、重新计算记录文件的校验和并保存。

步骤八、将操作记录密文发送至syslog服务器异地存储。

步骤九、执行shell命令。

相较于利用history进行安全审计,本发明实施例所提供的安全审计方法,具有如下技术效果:

1.可审计性:提供了一种记录每条操作的时间、主体、操作命令的方法,便于后期运维审计。

2.及时性:在操作命令执行前,将操作记录及时的写入磁盘,避免执行了诸如reboot命令而无法保存命令记录的情况发生。

3.机密性:操作记录经过sm4加密处理,即使黑客得到历史操作记录也无法通过操作记录分析出系统的敏感信息。

4.完整性:对本地历史操作记录进行完整性校验,可识别出系统遭受了非法入侵。

5.冗余性:对操作记录及时同步至异地服务器备份存储,即使本地历史操作记录被删除也能通过异地记录追溯。

相应于上面的方法实施例,本发明实施例还提供了一种安全审计装置,下文描述的安全审计装置与上文描述的安全审计方法可相互对应参照。

参见图4所示,该装置包括以下模块:

操作记录获取模块101,用于获取shell命令,并确定出shell命令的操作记录;

判断模块102,用于判断历史记录文件是否被篡改;

操作记录存储模块103,用于如果历史记录文件未被篡改,则将操作记录存入历史记录文件;

篡改告警模块104,用于如果历史记录文件被篡改,则输出告警信息,并在新建历史记录文件后,将操作记录存入新建的历史记录文件;

命令执行模块105,用于存储操作记录后,执行shell命令。

应用本发明实施例所提供的装置,获取shell命令,并确定出shell命令的操作记录;判断历史记录文件是否被篡改;如果否,则将操作记录存入历史记录文件;如果是,则输出告警信息,并在新建历史记录文件后,将操作记录存入新建的历史记录文件;存储操作记录后,执行shell命令。

在本装置中,在执行shell命令之前,在历史记录文件中记录操作记录的同时,可基于历史记录文件进行安全审计。具体的,在存储操作记录的过程中,判断历史记录文件是否被篡改,如果没有被篡改,则正常存储操作记录在历史记录文件中;如果发现历史记录文件被篡改,即表明当前系统可能遭受恶意攻击,则输出告警信息,且重新建历史记录文件,将本次获取的shell命令的操作记录存入新建的历史记录文件中。可见,在本装置中,不仅可将shell命令的操作记录进行有效存储,还可在存储过程中基于历史记录文件进行安全审计,能够及时且有效地发现恶意攻击,能够有效保障系统信息安全。

在本发明的一种具体实施方式中,操作记录存储模块103,具体用于加密操作记录,并将加密后的操作记录存入历史记录文件。

在本发明的一种具体实施方式中,操作记录存储模块103,具体用于对历史记录进行完整性校验,得到校验结果;将校验结果存储在历史记录文件中。

在本发明的一种具体实施方式中,判断模块102,具体用于利用历史记录文件中各个操作记录的完整性校验结果,得到历史记录文件的当前校验值;判断当前校验值与上一次记录了操作记录后得到的标准校验值是否一致;如果是,则确定历史记录文件未被篡改;如果否,则确定历史记录文件已被篡改。

在本发明的一种具体实施方式中,操作记录获取模块101,具体用于获取shell命令的操作信息;操作信息包括操作主体和操作时间;利用操作信息和shell命令,得到操作记录。

在本发明的一种具体实施方式中,还包括:

备份模块,用于在确定出shell命令的操作记录之后,在执行shell命令之前,将操作记录存入异地服务器中的历史记录备份文件。

在本发明的一种具体实施方式中,还包括:

估计行为确定模块,用于在确定历史记录文件被篡改后,利用历史记录备份文件,确定出被篡改的目标操作记录;利用目标操作记录,确定恶意攻击行为。

相应于上面的方法实施例,本发明实施例还提供了一种安全审计设备,下文描述的一种安全审计设备与上文描述的一种安全审计方法可相互对应参照。

参见图5所示,该安全审计设备包括:

存储器332,用于存储计算机程序;

处理器322,用于执行计算机程序时实现上述方法实施例的安全审计方法的步骤。

具体的,请参考图6,为本实施例提供的一种安全审计设备的具体结构示意图,该安全审计设备可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(centralprocessingunits,cpu)322(例如,一个或一个以上处理器)和存储器332,存储器332存储一个或一个以上的计算机应用程序342或数据344。其中,存储器332可以是短暂存储或持久存储。存储在存储器332的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对数据处理设备中的一系列指令操作。更进一步地,中央处理器322可以设置为与存储器332通信,在安全审计设备301上执行存储器332中的一系列指令操作。

安全审计设备301还可以包括一个或一个以上电源326,一个或一个以上有线或无线网络接口350,一个或一个以上输入输出接口358,和/或,一个或一个以上操作系统341。

上文所描述的安全审计方法中的步骤可以由安全审计设备的结构实现。

相应于上面的方法实施例,本发明实施例还提供了一种可读存储介质,下文描述的一种可读存储介质与上文描述的一种安全审计方法可相互对应参照。

一种可读存储介质,可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现上述方法实施例的安全审计方法的步骤。

该可读存储介质具体可以为u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可存储程序代码的可读存储介质。

本领域技术人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。本领域技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

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