一种主机安全基线自动加固方法及系统与流程

文档序号:11177879阅读:686来源:国知局
一种主机安全基线自动加固方法及系统与流程

本发明涉及计算机安全技术,尤其涉及一种主机安全基线自动加固方法及系统。



背景技术:

目前,主机安全已获得越来越多企业的重视与关注,许多企业特别是电信运营企业都会定期制定并颁布新的主机安全加固规范,对业务支撑系统使用的主机进行定期安全扫描和加固,确保业务系统运行在安全稳定的环境中。其中,安全基线检查和加固是主机安全检查和加固的主要内容。安全基线是设备和配置方面的基本安全要求,是信息系统的最小安全保证和最基本的、必须满足的安全要求。因此,为了保证整体安全水平,防止系统设备因为安全配置不到位而带来安全风险,有必要对系统设备的安全性进行检查和加固。若系统按照安全基线进行了检查和加固,则可以确保系统和设备安全符合性达到要求,杜绝大部分的安全隐患。

在现有的技术中,可以使用专业的安全基线检查工具对基线各个要求项进行自动化的基线检查,但是无法实现自动对主机安全基线进行加固。由于安全、资金、技术等方面的限制,实际工作环境中主机安全基线检查和加固基本都是通过人工操作完成的。然而,当所需加固的主机数量以及每台主机涉及的基线检查条目都较多、且需要周期性对主机基线进行检查时,依靠人工操作不仅需要耗费较多人力资源,而且效率较低;人工操作还容易造成人为误操作行为,从而对系统的正常运行造成影响;此外,对主机进行安全基线检查和加固需要维护人员具有较强的专业技术能力以及解决问题能力,然而,不同的维护人员通常对检查和加固方法理解不同,即:缺乏统一的基线检查和加固流程。



技术实现要素:

有鉴于此,本发明实施例期望提供一种主机安全基线自动加固方法及系统,能够实现对主机安全基线的自动检查与加固。

为达到上述目的,本发明的技术方案是这样实现的:

本发明提供了一种主机安全基线自动加固方法,所述方法包括:

设置主机安全基线;

选择加固项,并设置所选择加固项分别对应的安全加固函数;

调用所述加固项对应的安全加固函数对加固项进行加固,并获取加固项的当前值;

根据所述加固项的当前值与所述安全加固函数中包含的基线标准值的关系生成加固结果。

上述方案中,所述方法还包括:

在设置主机安全基线之前,备份主机操作系统安全基线配置文件和/或主机操作系统。

上述方案中,

所述安全加固函数还包含:加固项的关键字;

所述调用所述加固项对应的安全加固函数对加固项进行加固,包括:根据所述加固项中包含的关键字,搜索具有相同关键字的安全加固函数,并调用所述安全加固函数对加固项进行加固。

上述方案中,所述根据所述加固项的当前值与所述安全加固函数中包含的基线标准值的关系生成加固结果,包括:

当加固项的当前值与安全加固函数中包含的基线标准值相同时,保留加固项的当前值;

当加固项的当前值与安全加固函数中包含的基线标准值不相同时,将加固项的当前值修复为基线标准值。

上述方案中,所述方法还包括:

当对一个加固项进行加固的时间大于预置的阈值时,中止对该加固项进行加固,并发出告警;

验证加固结果是否已生效,如果加固结果已生效,则加固完成;如果加固结果未生效,则发送告警提示。

本发明还提供了一种主机安全基线自动加固系统,所述系统包括:基线管理模块、基线检查模块、基线加固模块;其中,

所述基线管理模块,用于设置主机安全基线;选择加固项,并设置所选择加固项分别对应的安全加固函数;

所述基线检查模块,用于调用所述加固项对应的安全加固函数对加固项进行加固,并获取加固项的当前值;

所述基线加固模块,用于根据所述加固项的当前值与所述安全加固函数中包含的基线标准值的关系生成加固结果。

上述方案中,所述系统还包括:备份模块,用于在设置主机安全基线之前,备份主机操作系统安全基线配置文件和/或主机操作系统。

上述方案中,所述基线管理模块设置的安全加固函数中还包含:加固项的关键字;

所述基线检查模块调用所述加固项对应的安全加固函数对加固项进行加固,包括:根据所述加固项中包含的关键字,搜索具有相同关键字的安全加固函数,并调用所述安全加固函数对加固项进行加固。

上述方案中,所述基线加固模块,具体用于:

当加固项的当前值与安全加固函数中包含的基线标准值相同时,保留加固项的当前值;

当加固项的当前值与安全加固函数中包含的基线标准值不相同时,将加固项的当前值修复为基线标准值。

上述方案中,所述系统还包括:告警模块和验证模块;其中,

所述告警模块,用于当对一个加固项进行加固的时间大于预置的阈值时,中止对该加固项进行加固,并发出告警;接收验证模块发送的告警提示,并发 出告警;

所述验证模块,用于验证加固结果是否已生效,如果加固结果已生效,则加固完成;如果加固结果未生效,则向告警模块发送告警提示。

本发明实施例提供的主机安全基线自动加固方法及系统,设置主机安全基线;选择加固项,并设置所选择加固项分别对应的安全加固函数;调用所述加固项对应的安全加固函数对加固项进行加固,并获取加固项的当前值;根据所述加固项的当前值与所述安全加固函数中包含的基线标准值的关系生成加固结果,并对加固结果进行验证。可见,本发明实施例通过预先设置主机安全基线、选择加固项以及设置安全加固函数,能够实现调用所选择的加固项的安全加固函数对加固项进行自动加固;如此,当所需加固的主机数量以及每台主机涉及的基线检查条目都较多、且需要周期性对主机基线进行安全检查时,不仅不需要耗费较多人力资源,而且还能够极大地提高工作效率;同时,还能够有效避免因人工操作造成的人为误操作行为,从而减少对业务系统的正常运行的影响;此外,根据检查要求制定统一的安全检查与加固流程,也能够有效的避免因维护人员缺乏统一的基线检查和加固流程而造成的资源浪费现象,且易于更新扩展。

附图说明

图1为本发明实施例主机安全基线自动加固方法的实现流程示意图;

图2为本发明实施例主机安全基线自动加固系统的组成结构示意图。

具体实施方式

下面结合附图及具体实施例对本发明再作进一步详细的说明。

实施例一

本发明实施例主机安全基线自动加固方法,如图1所示,该方法包括:

步骤101:设置主机安全基线;

这里,所述主机安全基线可以根据用户预先设置的主机安全检查标准进行 设置,也可以根据在不同环境下主机的实际运行情况进行设置。

进一步的,在步骤101之前,所述方法还包括:备份主机操作系统安全基线配置文件和/或主机操作系统;

这里,备份主机操作系统安全基线配置文件和/或主机操作系统的目的是防止在主机加固过程中由于突发意外事件,例如配置信息误操作,可能出现系统无法正常运行等情况时,可以利用已备份的配置文件和/或系统将主机恢复到加固之前的状态。

本发明实施例中,所述备份主机操作系统安全基线配置文件可以通过以下方式实现:通过if(-f/etc/inetd.conf)语句判断配置文件是否存在,当搜索到配置文件后,利用cp命令拷贝当前配置文件到/bak目录中进行备份,备份成功后打印输出“file|backupsuccess”。

步骤102:选择加固项,并设置所选择加固项分别对应的安全加固函数;

这里,用户可以预先根据主机安全检查标准建立一个基础加固项库,并根据在不同环境下主机的实际运行情况建立一个用户加固项库;进一步的,可根据实际需要对所述基础加固项库和用户加固项库进行更新操作,例如,删除不必要的加固项、修改已有的加固项、或增加新的加固项。

这里,所述选择加固项可以是单独从基础加固项库中选择一个或一个以上的加固项,也可以是单独从用户加固项库中选择一个或一个以上的加固项,还可以是分别从上述两个加固项库中选择一个或一个以上的加固项。当然,所述选择加固项也可以是用户直接根据主机安全检查标准和/或主机的实际运行情况来设置的加固项。

这里,所述安全加固函数中包含有加固项的基线标准值和加固项的关键字;所述基线标准值用于判断加固项是否正常,即比对加固项的当前值与基线标准值是否一致,若一致,则表明该加固项正常,否则,表明该加固项异常;所述关键字主要用于作为搜索标识,即当需要寻找加固项对应的安全加固函数时,可通过加固项中的关键字搜索得到与之匹配的安全加固函数。

进一步的,在步骤102之前,所述方法还包括:对主机操作系统类型、操 作系统版本号以及执行用户身份分别进行识别;

具体的,不同的操作系统之间由于存在差异,针对相同的加固项可能需要设置不同的安全加固函数;不同的操作系统版本之间由于存在差异,针对相同的加固项也可能需要设置不同的安全加固函数。此外,对主机进行检查和加固将涉及主机操作的最高权限,例如账号锁定检查、密码修改策略检查等,这些操作存在较高的操作安全风险。因此,为了确保主机安全,对主机进行检查和加固只能够由主机默认的root用户执行,所以需要识别执行用户是否为root用户,如果执行用户不是root用户,则无法执行检查和加固操作。

步骤103:调用所述加固项对应的安全加固函数对所述加固项进行加固,并获取加固项的当前值;

具体的,根据所述加固项中包含的关键字,搜索具有相同关键字的安全加固函数,并调用所述安全加固函数对加固项进行检查和加固,获取并记录对所述加固项的检查结果,所述加固项的检查结果中包含有加固项的当前值。

在实际应用中,获取的加固项的检查结果中可能还包含冗余信息,比如空格、注释等,因此,对于获取的加固项的检查结果可以先进行预处理,然后再从预处理后的加固项的检查结果中提取加固项的当前值。

步骤104:根据所述加固项的当前值与所述安全加固函数中包含的基线标准值的关系生成加固结果;

具体的,根据从加固项的检查结果中提取的加固项的当前值,以及从加固项对应的安全加固函数中提取的加固项的基线标准值,比对所述加固项的当前值与基线标准值;当加固项的当前值与安全加固函数中包含的基线标准值相同时,表明该加固项正常,保留该加固项的当前值,并生成加固结果;当加固项的当前值与安全加固函数中包含的基线标准值不相同时,表明该加固项异常,需要将加固项的当前值修复为基线标准值,并生成加固结果。

这里,所述加固结果包含对加固项进行加固的过程、加固项在加固之前的值以及加固项在加固之后的值。

进一步的,所述方法还包括:当对每个加固项进行加固时,记录对每个加 固项的加固时间;当对一个加固项进行加固的时间大于预置的阈值时,中止对该加固项进行加固,并发出告警。

进一步的,所述方法还包括:验证加固结果是否已生效,如果加固结果已生效,则加固完成;如果加固结果未生效,则发送告警提示。

具体的,根据加固结果验证对加固项的加固是否已正常完成,如果加固项在加固之后的值与该加固项对应的安全加固函数中包含的基线标准值完全一致,则表明加固已正常完成,否则,表明加固存在异常。

例如,一个加固项在加固之前的值为1,而该加固项对应的安全加固函数中包含的基线标准值为2,执行加固后,如果加固结果中包含的该加固项在加固之后的值仍然为1,则表明对该加固项的加固存在异常;如果加固结果中包含的该加固项在加固之后的值为2,则表明已正常完成对该加固项的加固。

本发明实施例中,所述加固结果可以通过日志进行记录,并可输出至主机屏幕进行显示。例如,可采用shell的fifo管道功能,对日志进行记录并打印输出。fifo类型文件因具有管道的特性,在进程中使用fifo文件传输数据,可使得进程间通信更加持久稳定。在数据读出时,fifo管道中的数据同时被清除。其中,利用fifo管道功能对日志进行记录并打印输出的部分关键技术和代码如下:

log_file=./$(date+%y%m%d)/$(date+%y%m%d%h%m%s).log--定义日志文件名称;

fifofile=./$(date+%y%m%d)/$(date+%y%m%d%h%m%s).fifo--定义管道文件名称;

touch$log_file--创建日志文件;

mkfifo$fifofile--创建fifo管道文件;

cat$fifofile|tee$log_file&exec1>$fifofile2>&1--使得执行日志通过fifo管道文件将日志输出并打印在屏幕上,同时将输出的日志内容写入到日志文件中。

下面结合具体实施例对本申请方法进行详细描述。

假设主机安全检查包括口令策略、安全策略、日志审计、系统服务、安全补丁、访问控制、账号安全等七大领域,分别对所述检查领域设置有主机安全基线检查标准,即设置有主机安全基线。选择的加固项为口令策略领域中的ftp匿名登录,所述加固项对应的安全加固函数中包含的基线标准值为ftp已禁止匿名登录,适用对象为操作系统是hp-ux且版本号是11.11的主机。根据主机操作系统类型以及版本号,用户采用shell和perl语言中的trap、debug、pipe、stream、post等命令对主机安全基线标准进行解释和定义,形成执行脚本。所述执行脚本中包含有选择的加固项、加固项对应的安全加固函数,且所述执行脚本的适用对象为操作系统类型为hp-ux11.11的主机、执行用户身份为root用户。

利用上述执行脚本对操作系统类型为hp-ux11.11的主机进行检查和加固。这里,当前主机执行脚本的用户身份为root用户,且该主机口令策略领域中的ftp没有禁止匿名登录。

进入对主机的检查与加固过程之前,执行脚本会自动判断该主机的操作系统类型、操作系统的版本以及执行用户身份是否与脚本中设置的适用对象完全一致,由于该主机操作系统类型、操作系统的版本以及执行用户身份与脚本中设置的适用对象完全一致,则执行脚本进入备份阶段;在备份阶段,执行脚本会自动备份主机操作系统安全基线配置文件和/或主机操作系统,防止在主机安全基线加固过程中因出现配置信息等错误影响系统正常运行,从而可以利用已备份的文件将主机恢复至加固前的状态。

进入对主机的检查与加固过程后,首先,执行脚本检查是否已提前备份主机操作系统安全基线配置文件和/或主机操作系统,若没有,则发出告警提示;检查是否已提前定义加固项的安全加固函数,若没有,则发出告警提示;当出现上述这些告警提示后,用户可以选择退出对主机执行检查与加固,但这些告警提示不影响执行脚本的正常操作。然后,执行脚本根据加固项即口令策略领域中的ftp匿名登录中包含的关键字,搜索具有相同关键字的安全加固函数,并调用所述安全加固函数对ftp匿名登录进行检查和加固。由于该主机口令策 略领域中的ftp没有禁止匿名登录,则检查结果显示加固项ftp匿名登录中没有禁止匿名登录,那么执行脚本会将加固项ftp匿名登录修复为ftp已禁止匿名登录。加固完成后,执行脚本会再次对该加固项的加固结果进行确认,判断加固结果是否已生效,若加固项在加固后显示已禁止匿名登录,则表明加固结果已生效。

此外,该执行脚本可以在单台主机或多台主机上进行部署和加固。当在单台主机上进行加固时,用户可以将执行脚本通过ftp方式部署在服务器任意一个文件目录下,还可通过执行./security.sh命令更改执行脚本或增加执行用户数量。

当需要在多台主机上同时进行加固时,用户可以将执行脚本通过ftp方式先部署在宿主主机上,并确保宿主主机与需要加固的目标主机可通过网络端口正常通信,再通过expect脚本实现自动登录、执行加固命令、记录日志等功能。所述expect脚本构成如下:

其中,config目录下存放批处理命令与hosts.txt服务器配置列表;log目录下存放运行的日志信息;ssh-key目录下存放ssh密钥文件;main-expect.sh是主执行程序,用于从hosts文件循环取值并调用expect脚本。

本发明实施例主机安全基线自动加固系统,如图2所示,该系统包括:基线管理模块22、基线检查模块23、基线加固模块24;其中,

所述基线管理模块22,用于设置主机安全基线;

这里,所述主机安全基线可以根据用户预先设置的主机安全检查标准进行设置,也可以根据在不同环境下主机的实际运行情况进行设置。

所述系统还包括:备份模块21,用于在基线管理模块22设置主机安全基线之前,备份主机操作系统安全基线配置文件和/或主机操作系统;

其中,备份主机操作系统安全基线配置文件和/或主机操作系统的目的是防止在主机加固过程中由于突发意外事件,例如配置信息误操作,可能出现系统无法正常运行等情况时,可以利用已备份的配置文件和/或系统将主机恢复到加固之前的状态。

所述基线管理模块22,还用于选择加固项,并设置所选择加固项分别对应的安全加固函数;

这里,用户可以预先根据主机安全检查标准建立一个基础加固项库,并根据在不同环境下主机的实际运行情况建立一个用户加固项库;进一步的,可根据实际需要对所述基础加固项库和用户加固项库进行更新操作,例如,删除不必要的加固项、修改已有的加固项、或增加新的加固项。

这里,所述选择加固项可以是单独从基础加固项库中选择一个或一个以上的加固项,也可以是单独从用户加固项库中选择一个或一个以上的加固项,还可以是分别从上述两个加固项库中选择一个或一个以上的加固项。当然,所述选择加固项也可以是用户直接根据主机安全检查标准和/或主机的实际运行情况来设置的加固项。

这里,所述安全加固函数中包含有加固项的基线标准值和加固项的关键字;所述基线标准值用于判断加固项是否正常,即比对加固项的当前值与基线标准值是否一致,若一致,则表明该加固项正常,否则,表明该加固项异常;所述关键字主要用于作为搜索标识,即当需要寻找加固项对应的安全加固函数时,可通过加固项中的关键字搜索得到与之匹配的安全加固函数。

所述基线管理模块22,还用于对主机操作系统类型、操作系统版本号以及执行用户身份分别进行识别;

具体的,不同的操作系统之间由于存在差异,针对相同的加固项可能需要 设置不同的安全加固函数;不同的操作系统版本之间由于存在差异,针对相同的加固项也可能需要设置不同的安全加固函数。此外,对主机进行检查和加固将涉及主机操作的最高权限,例如账号锁定检查、密码修改策略检查等,这些操作存在较高的操作安全风险。因此,为了确保主机安全,对主机进行检查和加固只能够由主机默认的root用户执行,所以需要识别执行用户是否为root用户,如果不是,则无法执行检查和加固操作。

所述基线检查模块23,用于调用所述加固项对应的安全加固函数对加固项进行加固,并获取加固项的当前值;

具体的,根据所述加固项中包含的关键字,搜索具有相同关键字的安全加固函数,并调用所述安全加固函数对加固项进行检查和加固,获取并记录对所述加固项的检查结果,所述加固项的检查结果中包含有加固项的当前值。

在实际应用中,获取的加固项的检查结果中可能还包含冗余信息,比如空格、注释等,因此,对于获取的加固项的检查结果可以先进行预处理,然后再从预处理后的加固项的检查结果中提取加固项的当前值。

所述基线加固模块24,用于根据所述加固项的当前值与所述安全加固函数中包含的基线标准值的关系生成加固结果;

具体的,根据从加固项的检查结果中提取的加固项的当前值,以及从加固项对应的安全加固函数中提取的加固项的基线标准值,比对所述加固项的当前值与基线标准值;当加固项的当前值与安全加固函数中包含的基线标准值相同时,表明该加固项正常,保留该加固项的当前值,并生成加固结果;当加固项的当前值与安全加固函数中包含的基线标准值不相同时,表明该加固项异常,需要将加固项的当前值修复为基线标准值,并生成加固结果。

这里,所述加固结果包含对加固项进行加固的过程、加固项在加固之前的值以及加固项在加固之后的值。

进一步的,所述系统还包括:告警模块25,用于当对每个加固项进行加固时,记录对每个加固项的加固时间;

所述告警模块25,还用于当对一个加固项进行加固的时间大于预置的阈值 时,中止对该加固项进行加固,并发出告警。

进一步的,所述系统还包括:验证模块26,用于验证加固结果是否已生效,如果加固结果已生效,则加固完成;如果加固结果未生效,则向告警模块25发送告警提示。

具体的,根据加固结果验证对加固项的加固是否已正常完成,如果加固项在加固之后的值与该加固项对应的安全加固函数中包含的基线标准值完全一致,则表明加固已正常完成,否则,表明加固存在异常。

例如,一个加固项在加固之前的值为1,而该加固项对应的安全加固函数中包含的基线标准值为2,执行加固后,如果加固结果中包含的该加固项在加固之后的值仍然为1,则表明对该加固项的加固存在异常;如果加固结果中包含的该加固项在加固之后的值为2,则表明已正常完成对该加固项的加固。

进一步的,所述告警模块25,还用于接收验证模块26发送的告警提示,并发出告警。

在实际应用中,所述备份模块21、基线管理模块22、基线检查模块23、基线加固模块24、告警模块25、验证模块26均可由位于终端的中央处理器(cpu)、微处理器(mpu)、数字信号处理器(dsp)、或现场可编程门阵列(fpga)等实现。

以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和范围之内所作的任何修改、等同替换和改进等,均包含在本发明的保护范围之内。

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