基于多策略融合的强制访问控制方法
【专利摘要】本发明公开了一种基于多策略融合的强制访问控制方法,其实施步骤如下:构造多策略融合内存文件系统,在操作系统加载内核时初始化加载多策略融合内存文件系统,并根据存储的安全策略信息在操作系统内核中建立核内安全策略池;截获进程发出的系统调用请求,判断执行客体是否存在,如果存在则并行判断系统调用请求中主体对客体的操作是否符合各个安全策略的要求并分别生成判断结果;根据各个判断结果来综合生成对系统调用请求的权限检查结果,且仅在检查通过的条件下执行系统调用请求中主体对客体的操作。本发明能够集成多种安全策略进行综合高效的强制访问控制,具有设置灵活、集成简单,具有可扩展性、高安全性、易用性和高效性好的优点。
【专利说明】基于多策略融合的强制访问控制方法
【技术领域】
[0001] 本发明涉及信息安全【技术领域】,具体涉及一种基于多策略融合的强制访问控制方 法。
【背景技术】
[0002] 目前,由于网络化不断扩展和大规模应用,随之而来的病毒、木马和蠕虫等入侵日 益猖獗,使得信息安全面临着严峻的挑战;此外,由于网络化应用的多样性和复杂性,使得 信息系统对应用的保护仅靠单一的安全策略已无法满足安全需求。随着信息安全技术的不 断发展,目前强制访问控制技术在该领域得到不断的青睐,该技术能够在不同层次上有效 防护信息系统不易被病毒、木马等入侵,从而保护其应用。基于强制访问控制技术的信息安 全产生了很多安全模型与安全策略,例如:安全模型有基于BLP (Bell&Lapadula)的机密性 保护模型、基于Biba的完整性保护模型、基于DTE (Domain and Type Enforcement)的多域 控制模型、基于RBAC (Role-Based Access Control基于角色的访问控制)的权能管理模型 等;而安全策略则有已经集成到linux内核的SELinux等代表性安全策略。尽管,信息系统 已经有如此多的安全模型,并且selinux策略也集成了多个安全模型实现系统的高安全性 的强制访问控制,但是,就目前多应用模式下复杂安全需求而言,已有的的强制访问控制仍 然存在如下不足: 1、基于BLP的机密性保护模型、基于Biba的完整性保护模型、基于DTE的多域控制模 型、基于RBAC的权能管理模型等安全模型的保护目的不同,需要协同工作才能提供更好的 安全防护;已经集成到linux内核的SELinux等代表性安全策略采用紧密捆绑式方式实现 基于BLP的机密性保护模型、基于Biba的完整性保护模型、基于DTE的多域控制模型、基于 RBAC的权能管理模型等安全模型的共同实施,较好地实现了多安全机制的同时保护,但是 难以实施策略扩展和协同,不能对单个安全机制进行策略配置,导致安全配置实施困难,灵 活性不足,扩展性差。
[0003] 2、机密性保护和完整性保护是信息安全的重要组成部分,但是由于机密性保护禁 止上读下写,完整性保护则禁止上写,导致现有实施方案中很难实现机密性保护策略和完 整性保护策略的共存。比如现有linux集成的强制访问控制只有多级安全策略,没有完整 性保护策略,导致不能满足现有机密性和完整性同时保护的需求。
[0004] 3、目前信息系统进行强制访问控制检查时采用的是串行判定,当存在多套强制访 问控制策略检查时,往往会给访问控制带来较大的效率损耗。
【发明内容】
[0005] 本发明要解决的技术问题是:针对现有技术的上述技术问题,提供一种能够集成 多种安全策略进行综合高效的强制访问控制,设置灵活、集成简单,具有可扩展性、高安全 性、易用性和高效性好的基于多策略融合的强制访问控制方法。
[0006] 为了解决上述技术问题,本发明提供的技术方案为: 一种基于多策略融合的强制访问控制方法,其实施步骤如下: 1) 构造用于为用户空间、内核空间提供交互入口的多策略融合内存文件系统,所述多 策略融合内存文件系统中存储有多种安全策略的安全策略信息; 2) 在操作系统加载内核时初始化加载所述多策略融合内存文件系统,并根据存储的安 全策略信息在操作系统内核中建立核内安全策略池; 3) 截获操作系统中进程发出的系统调用请求,判断所述系统调用请求的执行客体是否 存在,如果不存在则退出;否则如果存在,则采用并行的方式分别判断所述系统调用请求中 主体对客体的操作是否符合核内安全策略池中各个安全策略的要求并分别生成判断结果, 如果任意判断结果为不符合安全策略则直接退出;根据所述各个安全策略的判断结果来综 合生成对系统调用请求的权限检查结果,且仅在检查通过的条件下执行所述系统调用请求 中主体对客体的操作。
[0007] 优选地,所述步骤1)的详细步骤如下: 1. 1)在操作系统中创建用于挂载多策略融合内存文件系统的/msifs目录,所述/ msifs目录仅仅针对系统安全员具有读写访问权限; 1. 2)在所述/msifs目录下创建多策略融合状态文件msistatus和多策略融合总体约 束检查结果文件access,所述多策略融合状态文件msistatus用于记录当前操作系统中多 策略融合内存文件系统启停状态,所述多策略融合总体约束检查结果文件access用于记 录根据核内安全策略池中各个安全策略之间约束关系对所有判断结果进行安全约束检查 的结果; 1. 3)在操作系统的/etc/目录下创建安全配置文件msiconf、安全约束文件 msiconstraint以及核外策略规则池目录msipolicys,所述安全配置文件msiconf用于配 置操作系统下次启动时多策略融合内存文件系统启停状态和多种安全策略的启停及存放 信息,所述安全约束文件msiconstraint用于配置在收到所有判断结果均为符合安全策 略后对判断结果进行横向约束,核外策略规则池目录msipolicys下存在有核外策略规则 池所支持的多个安全策略子目录,任意一个安全策略子目录以对应的安全策略名称命名, 且存放有该安全策略的策略安装时状态信息文件version和该安全策略的规则信息目录 policy,所述规则信息目录policy下存放有该安全策略的权限检查规则。
[0008] 优选地,所述步骤2)的详细步骤如下: 2. 1)在操作系统加载内核kernel后,读取操作系统启动程序中的命令参数信息,如果 命令参数信息中带有启用多策略融合内存文件系统的参数,则跳转执行步骤2. 2);否则跳 转执行步骤2. 10); 2. 2)在操作系统挂载根目录/后,将/msifs目录挂载作为多策略融合内存文件系统; 2. 3)读取所述安全配置文件msiconf,根据所述安全配置文件msiconf读取操作系统 下次启动时多策略融合内存文件系统启停状态和多种安全策略的启停及存放信息; 2. 4)判断所述安全配置文件msiconf中是否启用多策略融合内存文件系统,如果启用 则跳转执行步骤2. 5),否则跳转执行步骤2. 10); 2. 5)对所述安全配置文件msiconf中存放的所有安全策略,获取其中一个尚未处理的 安全策略作为当前安全策略; 2. 6)首先读取所述操作系统启动程序中的命令参数信息当前安全策略的启停信息, 如果所述命令参数信息当前安全策略的启停信息为启用,则进一步读取所述安全配置文件 msiconf中当前安全策略的启停信息,如果所述命令参数信息当前安全策略的启停信息、所 述安全配置文件msiconf中当前安全策略的启停信息两者均为启用则跳转执行步骤2. 7), 否则跳转执行步骤2. 8); 2. 7)在所述/msifs目录下以当前安全策略名称创建对应的一个核内安全策略子目 录,将所述核外策略规则池目录msipolicys下当前安全策略的策略安装时状态信息文件 version加载至核内安全策略子目录下,在所述核内安全策略子目录下建立安全策略状态 文件status并设置为启用状态,在所述核内安全策略子目录下建立用于存在当前安全策 略的权限检查结果的策略权限检查结果信息文件access,将当前安全策略在核外策略规则 池目录msipolicys下规则信息目录policy中权限检查规则加载至所述核内安全策略子目 录,从而完成当前安全策略在核内安全策略池中的初始化; 2. 8)在所述/msifs目录下以当前安全策略名称创建对应的一个核内安全策略子目 录,在所述核内安全策略子目录下建立安全策略状态文件status并设置为停用状态; 2. 9)判断当前安全策略是否为安全配置文件msiconf中存放的最后一个安全策略,如 果不是则获取其中一个尚未处理的安全策略作为当前安全策略,跳转执行步骤2.6);否则 判定完成核内安全策略池的初始化,将核内安全策略池中的安全策略名称以链表的形式存 储为内核安全链表;然后实时监测对比各个安全策略在核外策略规则池中策略安装时状态 信息文件version、核内安全策略子目录下策略安装时状态信息文件version,如果任意一 个安全策略的前述两个策略安装时状态信息文件version不同,则判定所述安全策略在核 外策略规则池中已经更新,将所述安全策略在核外策略规则池目录msipolicys下规则信 息目录policy中权限检查规则加载至所述安全策略对应的核内安全策略子目录,从而完 成所述安全策略在核内安全策略池的同步更新,跳转执行步骤2. 10); 2. 10)根据操作系统中/etc/fstab文件的内容加载操作系统的其他分区,判断操作系 统启动程序中的命令参数信息是否有需要为文件附加安全标识的选项,如果有需要为文件 附加安全标识的选项,则在核内安全策略池选择一个安全策略作为当前安全策略并跳转执 行步骤2. 11),否则退出; 2. 11)根据当前安全策略定义的系统所有文件在当前安全策略下的安全标识进行标 记,并将标记写入到所述文件的扩展属性部分; 2. 12)判断当前安全策略是否为核内安全策略池中的最后一个安全策略,如果不是 则在核内安全策略池选择一个尚未遍历的安全策略作为当前安全策略并跳转执行步骤 2. 11);否则表示操作系统中所有文件已具有多策略安全标记,多策略融合内存文件系统 MSI初始化完成。
[0009] 优选地,所述步骤3)的详细步骤如下: 3. 1)截获操作系统中进程发出的系统调用请求; 3. 2)判断所述系统调用请求的执行客体是否存在,如果执行客体不存在则报错并退 出;否则如果执行客体存在,则跳转执行步骤3. 3); 3. 3)读取所述多策略融合内存文件系统,首先查询多策略融合状态文件msistatus中 设置多策略融合内存文件系统的启停状态是否为启用,如果启停状态为启用则跳转执行步 骤3. 4);如果启停状态为停用,则跳转执行步骤3. 6); 3. 4)读取核内安全策略池中内核安全链表的各个安全策略,以并行的方式分别将每一 个安全策略作为当前安全策略;读取当前安全策略在所述/msifs目录下对应的核内安全 策略子目录,判断所述核内安全策略子目录下安全策略状态文件status的启停状态,如果 所述启停状态为启用,则获取所述系统调用请求的主客体在核内安全策略池中当前安全策 略下被赋予的安全标识,并将所述系统调用请求的主客体被赋予的安全标识基于核内安全 策略池中当前安全策略下的权限检查规则进行权限判定,如果当前安全策略的权限检查规 则赋予所述系统调用请求的主客体的安全标识具有操作权限,则将符合安全策略的判断结 果写入核内安全策略池中当前安全策略对应核内安全策略子目录下的策略权限检查结果 信息文件access ;如果当前安全策略的权限检查规则赋予所述系统调用请求的主客体的 安全标识没有操作权限,则将不符合安全策略的判断结果写入核内安全策略池中当前安全 策略对应核内安全策略子目录下的策略权限检查结果信息文件access,判定针对所述系统 调用请求的约束检查不通过,退出执行所述系统调用请求并提示权限不够;如果所述启停 状态为停用,则直接结束对当前安全策略的处理;最终在完成所有安全策略的处理后,跳转 执行下一步; 3. 5)读取核内安全策略池中内核安全链表的各个安全策略,获取所述安全策略对 应核内安全策略子目录下安全策略状态文件status的启停状态,根据安全约束文件 msiconstraint记载的横向约束条件对对所有启停状态为启用的安全策略对应核内安全策 略子目录下的策略权限检查结果信息文件access的返回值进行横向约束判断,如果不符 合横向约束条件,则判定针对所述系统调用请求的约束检查不通过,退出执行所述系统调 用请求并提示权限不够;否则,判定约束检查通过,跳转执行步骤3. 6); 3. 6)执行所述系统调用请求中主体对客体的操作。
[0010] 本发明基于多策略融合的强制访问控制方法具有下述优点: 1、本发明构造用于为用户空间、内核空间提供交互入口的多策略融合内存文件系统, 多策略融合内存文件系统中存储有多种安全策略的安全策略信息,多策略融合内存文件系 统能够高效融合基于BLP的机密性保护模型、基于Biba的完整性保护模型、基于DTE的 多域控制模型、基于RBAC的权能管理模型等安全模型,能够解决多策略单独管理与启停控 制,支持多种安全策略集成,能够有效克服单一的安全策略难以实现周全保护的缺陷,能够 实现全方位的安全控制。
[0011] 2、本发明采用并行的方式分别判断系统调用请求中主体对客体的操作是否符合 核内安全策略池中各个安全策略的要求并分别输出判断结果;采用串行的方式依次接收判 断结果,如果收到任意判断结果为不符合安全策略,则退出执行系统调用请求并提示权限 不足;如果收到所有判断结果均为符合安全策略,则根据核内安全策略池中各个安全策略 之间约束关系对所有判断结果进行安全约束检查,如果安全约束检查通过则执行系统调用 请求中主体对客体的操作;如果安全约束检查不通过,则退出执行系统调用请求并提示安 全约束检查不通过,多策略权限判定具有高效性,相比较多策略串行判定而言,在并行策略 检查时如果任意判断结果为不符合安全策略则直接退出,一旦存在某策略无权限就可尽早 的退出执行,能够兼顾机密性与完成性的多级安全策略,能够提高多策略权限检查效率,能 够集成多种安全策略进行综合高效的强制访问控制,具有设置灵活、集成简单,具有可扩展 性、高安全性、易用性和高效性好的优点。
【专利附图】
【附图说明】
[0012] 图1为本发明实施例的方法流程示意图。
[0013] 图2为本发明实施例中步骤2)的实施流程示意图。
[0014] 图3为本发明实施例中核内安全策略池中内核安全链表的结构示意图。
[0015] 图4为本发明实施例中核内安全策略池中的每一个权限检查进程的结构示意图。
[0016] 图5为本发明实施例中MSI内存文件系统的系统结构示意图。
[0017] 图6为本发明实施例中步骤3)的实施流程示意图。
[0018] 图7为本发明实施例中MSI内存文件系统的工作原理示意图。
[0019] 图8为本发明实施例中MSI内存文件系统的框架结构示意图。
【具体实施方式】
[0020] 如图1所示,本实施例基于多策略融合的强制访问控制方法的实施步骤如下: 1) 构造用于为用户空间、内核空间提供交互入口的多策略融合(multi-strategy integration,下文中简称MSI)内存文件系统,MSI内存文件系统中存储有多种安全策略的 安全策略信息; 2) 在操作系统加载内核时初始化加载MSI内存文件系统,并根据存储的安全策略信息 在操作系统内核中建立核内安全策略池; 3) 截获操作系统中进程发出的系统调用请求,判断系统调用请求的执行客体是否存 在,如果不存在则退出;否则如果存在,则采用并行的方式分别判断系统调用请求中主体对 客体的操作是否符合核内安全策略池中各个安全策略的要求并分别生成判断结果,如果任 意判断结果为不符合安全策略则直接退出;根据各个安全策略的判断结果来综合生成对系 统调用请求的权限检查结果,且仅在检查通过的条件下执行系统调用请求中主体对客体的 操作。
[0021] 本实施例中,步骤1)的详细步骤如下: 1. 1)在操作系统中创建用于挂载MSI内存文件系统的/msifs目录,/msifs目录仅仅 针对系统安全员具有读写访问权限; 1. 2)在/msifs目录下创建多策略融合状态文件msistatus和多策略融合总体约束检 查结果文件access,多策略融合状态文件msistatus用于记录当前操作系统中MSI内存文 件系统启停状态,多策略融合总体约束检查结果文件access用于记录根据核内安全策略 池中各个安全策略之间约束关系对所有判断结果进行安全约束检查的结果; 1. 3)在操作系统的/etc/目录下创建安全配置文件msiconf、安全约束文件 msiconstraint以及核外策略规则池目录msipolicys,安全配置文件msiconf用于配置 操作系统下次启动时MSI内存文件系统启停状态和多种安全策略的启停及存放信息,安 全约束文件msiconstraint用于配置在收到所有判断结果均为符合安全策略后对判断结 果进行横向约束,核外策略规则池目录msipolicys下存在有核外策略规则池所支持的多 个安全策略子目录,任意一个安全策略子目录以对应的安全策略名称命名,且存放有该安 全策略的策略安装时状态信息文件version和该安全策略的规则信息目录policy,规则 信息目录policy下存放有该安全策略的权限检查规则。本实施例中,核外策略规则池目 录msipolicys下存在有核外策略规则池所支持的多个安全策略子目录,任意一个安全策 略子目录以对应的安全策略名称命名,且存放有该安全策略的策略安装时状态信息文件 version和该安全策略的规则信息目录policy,规则信息目录policy下存放有该安全策略 的权限检查规则,因此能够确保核外策略规则池具有多安全策略兼容性,使得各安全策略 形成正交控制,互不干扰;而且,核外策略规则池具有动态可配置性,系统安全员可以实现 对多安全策略的启停设置与策略规则的随时修订,且不需要重启系统进行策略加载就能即 时生效;此外,核外策略规则池具有灵活可定制性,可根据不同的应用安全需求,定制单安 全策略、多安全策略或需要的安全策略的启用。
[0022] 如图2所示,步骤2)的详细步骤如下: 2. 1)在操作系统加载内核kernel后,读取操作系统启动程序中的命令参数信息(本实 施例中具体为grub的cmdline信息),如果命令参数信息中带有启用MSI内存文件系统的 参数,则跳转执行步骤2. 2);否则跳转执行步骤2. 10); 2. 2)在操作系统挂载根目录/后,将/msifs目录挂载作为MSI内存文件系统; 2. 3)读取安全配置文件msiconf,根据安全配置文件msiconf读取操作系统下次启动 时MSI内存文件系统启停状态和多种安全策略的启停及存放信息; 2. 4)判断安全配置文件msiconf中是否启用MSI内存文件系统,如果启用则跳转执行 步骤2. 5),否则跳转执行步骤2. 10); 2. 5)对安全配置文件msiconf中存放的所有安全策略,获取其中一个尚未处理的安全 策略作为当前安全策略; 2. 6)首先读取操作系统启动程序中的命令参数信息当前安全策略的 启停信息,如果命令参数信息当前安全策略·5ira的启停信息为启用,则进一步 读取安全配置文件msiconf中当前安全策略的启停信息,如果命令参数 信息当前安全策略的启停信息、安全配置文件msiconf中当前安全策略 的启停信息两者均为启用则跳转执行步骤2. 7),否则跳转执行步骤2. 8); 2. 7)在/msifs目录下以当前安全策略strateg_namei名称创建对应的一个核内安全 策略子目录,将核外策略规则池目录msipolicys下当前安全策略的策略安 装时状态信息文件version加载至核内安全策略子目录下,在核内安全策略子目录下建立 安全策略状态文件status并设置为启用状态,在核内安全策略子目录下建立用于存在当 前安全策略的权限检查结果的策略权限检查结果信息文件access,将当前 安全策略在核外策略规则池目录msipolicys下规则信息目录policy中权 限检查规则加载至核内安全策略子目录,从而完成当前安全策略在核内安 全策略池中的初始化; 2. 8)在/msifs目录下以当前安全策略的名称创建对应的一个核内安 全策略子目录,在核内安全策略子目录下建立安全策略状态文件status并设置为停用状 态; 2. 9)判断当前安全策略是否为安全配置文件msiconf中存放的最后 一个安全策略,如果不是则获取其中一个尚未处理的安全策略作为当前安全策略sirategi 跳转执行步骤2. 6);否则判定完成核内安全策略池的初始化,将核内安全策略池 中的安全策略名称以链表的形式存储为内核安全链表;然后实时监测对比各个安全策略 在核外策略规则池中策略安装时状态信息文件version、核内安全策略子目录下策略安装 时状态信息文件version,如果任意一个安全策略的前述两个策略安装时状态信息文件 version不同,则判定安全策略在核外策略规则池中已经更新,将安全策略在核外策略规则 池目录msipolicys下规则信息目录policy中权限检查规则加载至安全策略对应的核内安 全策略子目录,从而完成安全策略在核内安全策略池的同步更新,跳转执行步骤2. 10); 2. 10)根据操作系统中/etc/fstab文件的内容加载操作系统的其他分区,判断操作系 统启动程序中的命令参数信息是否有需要为文件附加安全标识的选项,如果有需要为文件 附加安全标识的选项,则在核内安全策略池选择一个安全策略作为当前安全策略sirategi 并跳转执行步骤2. 11),否则退出; 2. 11)根据当前安全策略sira 定义的系统所有文件在当前安全策略 下的安全标识进行标记,并将标记写入到文件的扩展属性部分; 2. 12)判断当前安全策略是否为核内安全策略池中的最后一个安 全策略,如果不是则在核内安全策略池选择一个尚未遍历的安全策略作为当前安全策略 并跳转执行步骤2. 11);否则表示操作系统中所有文件已具有多策略安全标 记,MSI内存文件系统MSI初始化完成。
[0023] 本实施例中,在/msifs目录下以当前安全策略名称创建对应的一个核内安全策 略子目录,将核外策略规则池目录msipolicys下当前安全策略的策略安装时状态信息文 件version加载至核内安全策略子目录下,在核内安全策略子目录下建立安全策略状态文 件status并设置为启用状态,在核内安全策略子目录下建立用于存在当前安全策略的权 限检查结果的策略权限检查结果信息文件access,将当前安全策略在核外策略规则池目录 msipolicys下规则信息目录policy中权限检查规则加载至核内安全策略子目录,从而完 成当前安全策略在核内安全策略池中的初始化,因此能够确保核内安全策略池中具有多安 全策略兼容性,使得各安全策略形成正交控制,互不干扰;而且,核内安全策略池中具有动 态可配置性,系统安全员可以实现对多安全策略的启停设置与策略规则的随时修订,且不 需要重启系统进行策略加载就能即时生效;此外,核内安全策略池中具有灵活可定制性,可 根据不同的应用安全需求,定制单安全策略、多安全策略或需要的安全策略的启用。
[0024] 本实施例中,在MSI内存文件系统初始化时将启用策略的安全属性按照标识池中 各策略要求写入到文件扩展属性的安全域中,实现对客体的标识;而通过获取MSI内存文 件系统中各策略子目录下init_contexts的安全标识值实现对初始化所有进程的各安全 策略的主体标识。
[0025] 如图3和图4所示,核内安全策略池中内核安全链表包括安全域和数据域,各 个安全策略在安全域中首尾相连形成文件时索引节点,每一个节点包含对应安全策略的 M ft /{{strategy_namel: valuel_al, strategy_name2: valuel_a2, ......,strategy- 核内安全策略池中的每一个权限检查进程包括安全域和数据域,各 个安全策略在安全域中首尾相连形成进程标识特征信息,每一个标识特征信息对应一个 安全策略的属性标识(5·ira ·· ,5·ira ......, )。安全域中的各策略标识存储是以字典形式,策略名与安全标 识值一一对应,不易混淆,且正交存储具有较好的兼容性。而且,安全域中的策略安全标识 根据当前策略是否启用而写入,减少未启用策略的安全标识;对于MSI初始化后通过安全 员定制而启用的策略的安全标识,可以通过安全策略工具对该策略进行重新打标记写入到 文件的扩展属性;此外,对于未经过标记没有将策略安全标识写入到客体扩展属性的情况, 可以通过多策略融合的监控模块获得新启用的策略,并告知多策略访问控制模块在安全标 识池中获取当前策略的主客体标识,实现当主客体权限检测和属性查看时的自动扩充和完 善多策略的对应标识。
[0026] 如图5所示,本实施例主要涉及操作系统的根目录/下的两个目录:/etc/目录 和/msifs目录。/etc/目录下有安全配置文件msiconf、安全约束文件msiconstraint以 及核外策略规则池目录msipolicys,核外策略规则池目录msipolicys下存在有核外策略 规则池所支持的多个安全策略子目录(其中表示第i个安全策略,图2中 分别举例列举了 te、mlS、miC、rabC四个子目录所表示的四种安全策略),其中te安全策略 为基于安全域控制模型实现的一种安全策略,mis安全策略为基于机密性保护模型实现的 一种安全策略,mic安全策略为基于完成性保护模型实现的一种安全策略,rbac策略安全 基于角色权限控制模型实现的一种安全策略,子目录分别按照安全策略的策略名建立,各 策略目录下存放策略安装时状态信息文件version和该策略规则信息目录policy,其中各 策略policy子目录下存放各策略的规则,用于多策略访问控制模块的权限规则检查。此 夕卜,/msifs目录为本实施例创建的目录,用于在系统初始化时用于挂载MSI内存文件系统, 提供给系统安全员通过安全命令工具实现用户空间与内核空间的策略交互。/msifs目录 下有多策略融合状态文件msistatus、多策略融合总体约束检查结果文件access,此外在 加载MSI内存文件系统完成后,/msifs目录还包括安全策略对应的子目 录,图2中分别列举了 te、mis、mic、rabc四种安全策略,对应te、mis、mic、rabc四个核内 安全策略子目录。本实施例中,每一个核内安全策略子目录至少包含策略安装时状态信息 文件version、安全策略状态文件status和策略权限检查结果信息文件access,策略安装 时状态信息文件version,用于存放各策略当前加载时状态值;安全策略状态文件status, 用于存放该策略的启停状态,该文件方便系统安全员按照需求可通过安全工具进行该策略 的启停设置,不需要重启系统或MSI内存文件系统的重新初始化;策略权限检查结果信息 文件access,用于临时存放多策略访问控制模块中该策略权限检查结果信息;此外每一个 核内安全策略子目录还包括安全策略在核外策略规则池目录msipolicys下规则信息目录 policy中权限检查规则,即/etc/msipolicys目录中各策略子目录下的具体策略信息映射 的文件,例如,以MSI已融合的mis策略为例,贝U会在/msifs/mls/目录下创建/initial_ contexts子目录,该目录下的文件为初始化时加载的mis策略安全标识。
[0027] 如图6所示,步骤3)的详细步骤如下: 3. 1)截获操作系统中进程发出的系统调用请求; 3. 2)判断系统调用请求的执行客体是否存在,如果执行客体不存在则报错并退出;否 则如果执行客体存在,则跳转执行步骤3. 3); 3. 3)读取MSI内存文件系统,首先查询多策略融合状态文件msistatus中设置MSI内 存文件系统的启停状态是否为启用,如果启停状态为启用则跳转执行步骤3. 4);如果启停 状态为停用,则跳转执行步骤3. 6); 3. 4)读取核内安全策略池中内核安全链表的各个安全策略,以并行的方式分别将每一 个安全策略作为当前安全策略;读取当前安全策略在/msifs目录下对应的核内安全策略 子目录,判断核内安全策略子目录下安全策略状态文件status的启停状态,如果启停状态 为启用,则获取系统调用请求的主客体在核内安全策略池中当前安全策略下被赋予的安全 标识,并将系统调用请求的主客体被赋予的安全标识基于核内安全策略池中当前安全策略 下的权限检查规则进行权限判定,如果当前安全策略的权限检查规则赋予系统调用请求的 主客体的安全标识具有操作权限,则将符合安全策略的判断结果写入核内安全策略池中当 前安全策略对应核内安全策略子目录下的策略权限检查结果信息文件access ;如果当前 安全策略的权限检查规则赋予系统调用请求的主客体的安全标识没有操作权限,则将不符 合安全策略的判断结果写入核内安全策略池中当前安全策略对应核内安全策略子目录下 的策略权限检查结果信息文件access,判定针对所述系统调用请求的约束检查不通过,退 出执行所述系统调用请求并提示权限不够;如果启停状态为停用,则直接结束对当前安全 策略的处理;最终在完成所有安全策略的处理后,跳转执行下一步; 3. 5)读取核内安全策略池中内核安全链表的各个安全策略,获取所述安全策略对 应核内安全策略子目录下安全策略状态文件status的启停状态,根据安全约束文件 msiconstraint记载的横向约束条件对对所有启停状态为启用的安全策略对应核内安全策 略子目录下的策略权限检查结果信息文件access的返回值进行横向约束判断,如果不符 合横向约束条件,则判定针对所述系统调用请求的约束检查不通过,退出执行所述系统调 用请求并提示权限不够;否则,判定约束检查通过,跳转执行步骤3. 6); 3. 6)执行系统调用请求中主体对客体的操作。
[0028] 参见图4可知,本实施例从高效性角度出发,以并行的方式分别将每一个安全策 略作为当前安全策略,从而采用并行的队列式判定模式,即在针对各安全策略判定时采用 并行的权限检测,而在在完成所有安全策略的处理后,对执行权限结果判定中采用了串行 的队列式方法,使得一旦先返回的策略规则检测失败,则整个执行过程退出并提示没有权 限。
[0029] 本实施例中,多策略强制访问控制模块根据安全约束文件msiconstraint记载的 横向约束条件对对所有启停状态为启用的安全策略对应核内安全策略子目录下的策略权 限检查结果信息文件access的返回值进行横向约束判断,安全约束文件msiconstraint用 于各单策略纵向检查通过后对融合时的整体条件进行横向约束,防止类似高安全级低安全 用户或不安全类型等多策略融合时纵向不合理性主客被权限允许。本实施例基于MSI内存 文件系统提供核内外交互入口,首先各安全策略之间均单独存储MSI内存文件系统的各子 目录中,在进行策略规则检查时相互不依赖,不干扰,即使某策略出现检查故障,不影响其 他策略的访问控制检查,从而方便安全员进行策略问题定位,具有松耦合性的优点;其次, 各安全策略内部是一个整体,从用户空间的策略存储和更新加载,到MSI的/msifs目录下 该策略库加载是一脉相承,通过多策略融合的监控模块实现及时更新,因此具有高内聚性 的优点。
[0030] 如图7和图8所示,本实施例基于MSI内存文件系统提供了多策略强制访问控制 模块、多策略融合监控模块和多策略规则存储模块。(1)多策略融合监控模块则为多策略 强制访问控制模块提供支持,用于提供核内安全策略池的内核安全链表检查服务,获取MSI 内存文件系统中各安全启停状态和版本值并更新到内核安全链表中,为多策略访问控制模 块提供策略检查范围,同时策略融合监控模块还为核内外策略变更检查提供服务。如图7 所示,每一个安全策略(安全策略1?安全策略η)都有一组对应的标识,所有安全策略的标 识构成主客体标识池,系统调用请求的主客体被多策略强制访问控制模块进行策略检查, 从而与主客体标识池中的标识进行匹配,匹配后再与核内安全策略池中各个安全策略(安 全策略1?安全策略η)的权限检查规则进行比对得到是否符合安全策略的判断结果,多策 略强制访问控制模块将判断结果写入核内安全策略池中当前安全策略对应核内安全策略 子目录下的策略权限检查结果信息文件access,并最终对系统调用请求的约束检查,约束 检查通过才可执行系统调用请求中主体对客体的操作。多策略融合监控模块主要负责如下 功能:获取主客对象,进行主客体权限检查;根据多策略融合监控模块中提供的系统各策 略启停情况,对主客体获取已启用策略的对应安全标识;根据主客体安全标识与进程操作, 查询策略规则池中各策略操作的权限规则;通过多策略判定的强制访问控制过程,进行多 策略并行判定;根据用户编写的安全约束文件msiconstraint进行整体权限判定。(2)多 策略融合监控模块监视MSI内存文件系统下用户空间各安全策略的更新动向,及时同步到 内存文件系统MSI的/msifs/目录下的各安全策略子目录中,实现及时的策略安全同步更 新,多策略融合监控模块监视MSI内存文件系统下msistatus文件和安全策略对应的核内 安全策略子目录下安全策略状态文件status中启停状态信息,为多策略访问控制模块提 供策略检查范围;多策略融合监控模块监视/msifs目录下的多策略融合总体约束检查结 果文件access和核内安全策略子目录下的策略权限检查结果信息文件access返回的权限 检查状态,当核内安全策略子目录下的策略权限检查结果信息文件access出现没有权限 时则反馈给多策略强制访问控制模块,退出检查;当所有核内安全策略子目录下的策略权 限检查结果信息文件access返回有权限时,则监控/msifs/access文件返回的多策略融合 的约束检查结果。(3)多策略规则存储模块则构建用户空间各策略存储的目录与相关文件, 实现MSI内存文件系统初始化加载,并可通过核外的用户空间实现对核内安全策略池的即 时更新,包括来用户空间自定义的修订或者新增安全策略及权限检查规则等。
[0031] 以上所述仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施 例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本【技术领域】 的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,这些改进和润饰也 应视为本发明的保护范围。
【权利要求】
1. 一种基于多策略融合的强制访问控制方法,其特征在于实施步骤如下: 1) 构造用于为用户空间、内核空间提供交互入口的多策略融合内存文件系统,所述多 策略融合内存文件系统中存储有多种安全策略的安全策略信息; 2) 在操作系统加载内核时初始化加载所述多策略融合内存文件系统,并根据存储的安 全策略信息在操作系统内核中建立核内安全策略池; 3) 截获操作系统中进程发出的系统调用请求,判断所述系统调用请求的执行客体是否 存在,如果不存在则退出;否则如果存在,则采用并行的方式分别判断所述系统调用请求中 主体对客体的操作是否符合核内安全策略池中各个安全策略的要求并分别生成判断结果, 如果任意判断结果为不符合安全策略则直接退出;根据所述各个安全策略的判断结果来综 合生成对系统调用请求的权限检查结果,且仅在检查通过的条件下执行所述系统调用请求 中主体对客体的操作。
2. 根据权利要求1所述的基于多策略融合的强制访问控制方法,其特征在于,所述步 骤1)的详细步骤如下: 1. 1)在操作系统中创建用于挂载多策略融合内存文件系统的/msifs目录,所述/ msifs目录仅仅针对系统安全员具有读写访问权限; 1. 2)在所述/msifs目录下创建多策略融合状态文件msistatus和多策略融合总体约 束检查结果文件access,所述多策略融合状态文件msistatus用于记录当前操作系统中多 策略融合内存文件系统启停状态,所述多策略融合总体约束检查结果文件access用于记 录根据核内安全策略池中各个安全策略之间约束关系对所有判断结果进行安全约束检查 的结果; 1. 3)在操作系统的/etc/目录下创建安全配置文件msiconf、安全约束文件 msiconstraint以及核外策略规则池目录msipolicys,所述安全配置文件msiconf用于配 置操作系统下次启动时多策略融合内存文件系统启停状态和多种安全策略的启停及存放 信息,所述安全约束文件msiconstraint用于配置在收到所有判断结果均为符合安全策 略后对判断结果进行横向约束,核外策略规则池目录msipolicys下存在有核外策略规则 池所支持的多个安全策略子目录,任意一个安全策略子目录以对应的安全策略名称命名, 且存放有该安全策略的策略安装时状态信息文件version和该安全策略的规则信息目录 policy,所述规则信息目录policy下存放有该安全策略的权限检查规则。
3. 根据权利要求2所述的基于多策略融合的强制访问控制方法,其特征在于,所述步 骤2)的详细步骤如下: 2. 1)在操作系统加载内核kernel后,读取操作系统启动程序中的命令参数信息,如果 命令参数信息中带有启用多策略融合内存文件系统的参数,则跳转执行步骤2. 2);否则跳 转执行步骤2. 10); 2. 2)在操作系统挂载根目录/后,将/msifs目录挂载作为多策略融合内存文件系统; 2. 3)读取所述安全配置文件msiconf,根据所述安全配置文件msiconf读取操作系统 下次启动时多策略融合内存文件系统启停状态和多种安全策略的启停及存放信息; 2. 4)判断所述安全配置文件msiconf中是否启用多策略融合内存文件系统,如果启用 则跳转执行步骤2. 5),否则跳转执行步骤2. 10); 2. 5)对所述安全配置文件msiconf中存放的所有安全策略,获取其中一个尚未处理的 安全策略作为当前安全策略; 2. 6)首先读取所述操作系统启动程序中的命令参数信息当前安全策略的启停信息, 如果所述命令参数信息当前安全策略的启停信息为启用,则进一步读取所述安全配置文件 msiconf中当前安全策略的启停信息,如果所述命令参数信息当前安全策略的启停信息、所 述安全配置文件msiconf中当前安全策略的启停信息两者均为启用则跳转执行步骤2. 7), 否则跳转执行步骤2. 8); 2. 7)在所述/msifs目录下以当前安全策略名称创建对应的一个核内安全策略子目 录,将所述核外策略规则池目录msipolicys下当前安全策略的策略安装时状态信息文件 version加载至核内安全策略子目录下,在所述核内安全策略子目录下建立安全策略状态 文件status并设置为启用状态,在所述核内安全策略子目录下建立用于存在当前安全策 略的权限检查结果的策略权限检查结果信息文件access,将当前安全策略在核外策略规则 池目录msipolicys下规则信息目录policy中权限检查规则加载至所述核内安全策略子目 录,从而完成当前安全策略在核内安全策略池中的初始化; 2. 8)在所述/msifs目录下以当前安全策略名称创建对应的一个核内安全策略子目 录,在所述核内安全策略子目录下建立安全策略状态文件status并设置为停用状态; 2. 9)判断当前安全策略是否为安全配置文件msiconf中存放的最后一个安全策略,如 果不是则获取其中一个尚未处理的安全策略作为当前安全策略,跳转执行步骤2.6);否则 判定完成核内安全策略池的初始化,将核内安全策略池中的安全策略名称以链表的形式存 储为内核安全链表;然后实时监测对比各个安全策略在核外策略规则池中策略安装时状态 信息文件version、核内安全策略子目录下策略安装时状态信息文件version,如果任意一 个安全策略的前述两个策略安装时状态信息文件version不同,则判定所述安全策略在核 外策略规则池中已经更新,将所述安全策略在核外策略规则池目录msipolicys下规则信 息目录policy中权限检查规则加载至所述安全策略对应的核内安全策略子目录,从而完 成所述安全策略在核内安全策略池的同步更新,跳转执行步骤2. 10); 2. 10)根据操作系统中/etc/fstab文件的内容加载操作系统的其他分区,判断操作系 统启动程序中的命令参数信息是否有需要为文件附加安全标识的选项,如果有需要为文件 附加安全标识的选项,则在核内安全策略池选择一个安全策略作为当前安全策略并跳转执 行步骤2. 11),否则退出; 2. 11)根据当前安全策略定义的系统所有文件在当前安全策略下的安全标识进行标 记,并将标记写入到所述文件的扩展属性部分; 2. 12)判断当前安全策略是否为核内安全策略池中的最后一个安全策略,如果不是 则在核内安全策略池选择一个尚未遍历的安全策略作为当前安全策略并跳转执行步骤 2. 11);否则表示操作系统中所有文件已具有多策略安全标记,多策略融合内存文件系统 MSI初始化完成。
4.根据权利要求3所述的基于多策略融合的强制访问控制方法,其特征在于,所述步 骤3)的详细步骤如下: 3. 1)截获操作系统中进程发出的系统调用请求; 3. 2)判断所述系统调用请求的执行客体是否存在,如果执行客体不存在则报错并退 出;否则如果执行客体存在,则跳转执行步骤3. 3); 3. 3)读取所述多策略融合内存文件系统,首先查询多策略融合状态文件msistatus中 设置多策略融合内存文件系统的启停状态是否为启用,如果启停状态为启用则跳转执行步 骤3. 4);如果启停状态为停用,则跳转执行步骤3. 6); 3. 4)读取核内安全策略池中内核安全链表的各个安全策略,以并行的方式分别将每一 个安全策略作为当前安全策略;读取当前安全策略在所述/msifs目录下对应的核内安全 策略子目录,判断所述核内安全策略子目录下安全策略状态文件status的启停状态,如果 所述启停状态为启用,则获取所述系统调用请求的主客体在核内安全策略池中当前安全策 略下被赋予的安全标识,并将所述系统调用请求的主客体被赋予的安全标识基于核内安全 策略池中当前安全策略下的权限检查规则进行权限判定,如果当前安全策略的权限检查规 则赋予所述系统调用请求的主客体的安全标识具有操作权限,则将符合安全策略的判断结 果写入核内安全策略池中当前安全策略对应核内安全策略子目录下的策略权限检查结果 信息文件access ;如果当前安全策略的权限检查规则赋予所述系统调用请求的主客体的 安全标识没有操作权限,则将不符合安全策略的判断结果写入核内安全策略池中当前安全 策略对应核内安全策略子目录下的策略权限检查结果信息文件access,判定针对所述系统 调用请求的约束检查不通过,退出执行所述系统调用请求并提示权限不够;如果所述启停 状态为停用,则直接结束对当前安全策略的处理;最终在完成所有安全策略的处理后,跳转 执行下一步; 3. 5)读取核内安全策略池中内核安全链表的各个安全策略,获取所述安全策略对 应核内安全策略子目录下安全策略状态文件status的启停状态,根据安全约束文件 msiconstraint记载的横向约束条件对对所有启停状态为启用的安全策略对应核内安全策 略子目录下的策略权限检查结果信息文件access的返回值进行横向约束判断,如果不符 合横向约束条件,则判定针对所述系统调用请求的约束检查不通过,退出执行所述系统调 用请求并提示权限不够;否则,判定约束检查通过,跳转执行步骤3. 6); 3. 6)执行所述系统调用请求中主体对客体的操作。
【文档编号】G06F21/31GK104112089SQ201410340911
【公开日】2014年10月22日 申请日期:2014年7月17日 优先权日:2014年7月17日
【发明者】廖湘科, 魏立峰, 陈松政, 罗军, 黄辰林, 丁滟, 董攀, 付松龄, 杨诏钧, 孙利杰, 罗求 申请人:中国人民解放军国防科学技术大学