操作系统中的内核模块加载控制方法

文档序号:6620403阅读:358来源:国知局
操作系统中的内核模块加载控制方法
【专利摘要】本发明公开一种操作系统中的内核模块加载控制方法,步骤为:1)执行操作系统引导过程中,通过内核态下的内核密封模块关闭所有用户的内核模块处理能力,并启用内核密封模块用户验证功能,使得操作系统内核进入密封状态;2)在操作系统运行过程中,通过内核密封模块截获内核模块操作请求,并对发起内核模块操作请求的用户或应用进行用户验证,若验证通过,则开启用户或者应用的内核模块处理能力,并通过操作系统内核加载或卸载用户或者应用所请求的目标内核模块。本发明具有能够实现内核模块加载的安全控制以及内核模块密封保护、安全性能高、内核模块加载的灵活性强、实现方法简单、通用性强的优点。
【专利说明】操作系统中的内核模块加载控制方法

【技术领域】
[0001] 本发明涉及linux操作系统中内核安全【技术领域】,尤其涉及一种操作系统中的内 核模块加载控制方法。

【背景技术】
[0002] 软件模块加载是Linux操作系统的一项基本功能,允许Linux操作系统内核通过 模块加载和卸载实现对驱动支持和软件功能的控制。Linux操作系统支持动态加载和卸载 内核模块,这为扩充系统功能和驱动开发带来了极大的便利,但也为恶意用户破坏系统提 供了可乘之机。如果内核模块被恶意地卸载,系统会丧失相应功能,难以正常运转;如果内 核模块能被随意加载,则非法者可能植入恶意模块,扰乱和破坏系统的正常运转,因此对操 作系统内核模块加载的控制是确保系统平台安全的重要途径。Linux操作系统内核模块的 加载主要包括以下几个阶段: (1)操作系统的启动阶段。
[0003] 操作系统的启动阶段从主引导区调入操作系统装载程序一直到操作系统内核运 行完毕,并运行Init进程,该阶段主要加载了操作系统基本环境。
[0004] (2)内核模块动态加载阶段。
[0005] 操作系统运行过程中,根据需要在内核态加载软件模块。
[0006] (3)内核模块动态卸载阶段。
[0007] 操作系统运行过程中,根据用户或软件控制在内核态卸载已经加载的软件模块。
[0008] 目前通用Linux内核模块的加载过程中,缺乏有效的安全控制,内核态用户均具 有内核模块处理能力(CAP_M0DULE),内核模块处理能力(CAP_M0DULE)是Linux操作系统 安全机制中定义的一种能力,用以控制软件模块加载操作,通过内核模块处理能力(CAP_ MODULE)能够动态加载和卸载内核模块。正如前文所述,由于目前Linux操作系统下内核态 用户可以随意动态加载和卸载内核模块,因此使得操作系统内核面临恶意模块加载和安全 模块被卸载的风险,从而威胁整个计算机的安全。


【发明内容】

[0009] 本发明要解决的技术问题就在于:针对现有技术存在的技术问题,本发明提供一 种能够实现内核模块加载的安全控制以及内核模块密封保护、安全性能高、内核模块加载 的灵活性强、实现方法简单、通用性强的操作系统中的内核模块加载控制方法。
[0010] 为解决上述技术问题,本发明提出的技术方案为: 一种操作系统中的内核模块加载控制方法,其体实施步骤如下: 1) 在执行操作系统引导过程中,通过在内核态下加载的内核密封模块关闭所有用户的 内核模块处理能力,并启用所述内核密封模块的用户验证功能,使得操作系统的内核模块 进入密封状态; 2) 在操作系统运行过程中,通过所述内核密封模块截获操作系统内核接收到的用于加 载或卸载内核模块的内核模块操作请求,并对发起内核模块操作请求的用户或者应用进行 用户验证,若验证通过,则开启所述发起内核模块操作请求的用户或者应用的内核模块处 理能力,使得操作系统的内核模块相对所述发起加载内核模块请求的用户或者应用进入临 时开放状态,通过操作系统内核加载或卸载所述内核模块操作请求的目标内核模块,且在 执行内核模块操作请求完毕后关闭所有用户的内核模块处理能力使操作系统的内核模块 恢复密封状态;若验证不通过,则拒绝所述内核模块操作请求。
[0011] 优选地,所述步骤1)中在内核态下加载的内核密封模块被配置为具备安全管理员 角色。
[0012] 优选地,所述步骤1)中所述内核密封模块的用户验证功能具体是指用户密码验证 功能。
[0013] 优选地,所述步骤2)的具体实施步骤为: 2. 1)在操作系统运行过程中,通过所述内核密封模块截获操作系统内核接收到的内核 模块操作请求,并判断所截获内核模块操作请求的操作类型,如果操作类型为加载内核模 块,则跳转执行步骤2. 2);如果操作类型为卸载内核模块,则跳转执行步骤2. 6); 2. 2)所述内核密封模块对发起内核模块操作请求的用户或者应用进行用户验证,对发 起加载内核模块请求的用户或应用进行用户密码验证; 2. 3)所述内核密封模块获取用户输入的验证密码,并通过所述用户验证功能对用户输 入的验证密码进行验证,若验证通过,则转入执行步骤2. 4);若验证不通过,则判定用户密 码验证失败,终止操作并退出; 2. 4)所述内核密封模块使用安全管理员角色开启所述发起加载内核模块请求的用户 或者应用的内核模块处理能力,使得操作系统的内核模块相对所述发起加载内核模块请求 的用户或者应用进入临时开放状态,并通过操作系统内核加载所述内核模块操作请求的目 标内核模块; 2. 5)在所述目标内核模块加载完成后,所述内核密封模块使用安全管理员角色关闭所 有用户的内核模块处理能力,使得操作系统的内核模块恢复密封状态,内核模块操作请求 执行完毕并退出; 2. 6)所述内核密封模块首先判定截获的内核模块操作请求的目标内核模块,如果目标 内核模块为所述内核密封模块则终止操作并退出;否则,所述内核密封模块对发起内核模 块操作请求的用户或者应用进行用户验证,对发起内核模块操作请求的用户或应用进行用 户密码验证; 2. 7)所述内核密封模块获取用户输入的验证密码,并通过所述用户验证功能对用户输 入的验证密码进行验证,若验证通过,则转入执行步骤2. 8);若验证不通过,则判定用户密 码验证失败,终止操作并退出; 2. 8)所述内核密封模块使用安全管理员角色开启所述发起卸载内核模块请求的用户 或者应用的内核模块处理能力,使得操作系统的内核模块相对所述发起内核模块操作请求 的用户或者应用进入临时开放状态,并通过操作系统内核卸载所述内核模块操作请求的目 标内核模块; 2. 9)在所述目标内核模块卸载完成后,所述内核密封模块使用安全管理员角色关闭所 有用户的内核模块处理能力,使得操作系统的内核模块恢复密封状态,内核模块操作请求 执行完毕 与现有技术相比,本发明操作系统中的内核模块加载控制方法的优点在于: 1)本发明采用能力机制,通过控制内核模块处理能力实现内核模块的密封状态控制, 只有验证通过操作系统的内核模块才会相对发起加载内核模块请求的用户或者应用进入 临时开放状态,若验证不通过则拒绝所述内核模块操作请求,只有具有内核模块处理能力 的用户或者应用才能在系统正常运转时加载或卸载内核模块,且在执行内核模块操作请求 完毕后关闭所有用户的内核模块处理能力使操作系统的内核模块恢复密封状态,从而能够 有效保护内核模块的完整性,实现对操作系统内核的密封保护,既能保持动态内核模块的 灵活性,又能解除对内核模块随意加载或恶意卸载的安全隐患。
[0014] 2)本发明采用能力机制来实现内核模块的密封状态控制,通过修改内核对内核模 块加载和卸载的流程,增加基于用户验证的安全控制环节,控制用户或应用的内核模块加 载和卸载能力,同时通过使内核模块处于密封状态,实现安全可控制的内核模块密封,确保 内核模块不被随意加载或恶意卸载,大大提升了操作系统内核的安全性,与现有技术的通 用Linux的操作系统内核模块加载过程相比具有更好的安全性。
[0015] 3)本发明不需要改变操作系统内核且不需要改变操作系统引导过程、操作系统运 行过程的执行顺序,不会对操作系统及应用程序的运行造成影响,具有通用性好的优点。

【专利附图】

【附图说明】
[0016] 图1为本发明实施例方法的实施步骤流程示意图。
[0017] 图2为本发明实施例中涉及的各实体之间的关系示意图。
[0018] 图3为应用本发明实施例方法的操作系统引导过程的执行流程示意图。
[0019] 图4为应用本发明实施例方法的操作系统运行过程的执行流程示意图。

【具体实施方式】
[0020] 以下结合说明书附图和具体优选的实施例对本发明作进一步描述,但并不因此而 限制本发明的保护范围。
[0021] 如图1所示,本实施例操作系统中的内核模块加载控制方法的实施步骤如下: 1) 在执行操作系统引导过程中,通过在内核态下加载的内核密封模块关闭所有用户的 内核模块处理能力CAP_M0DULE,并启用内核密封模块的用户验证功能,使得操作系统的内 核模块进入密封状态; 2) 在操作系统运行过程中,通过内核密封模块截获操作系统内核接收到的用于加载 或卸载内核模块的内核模块操作请求,并对发起内核模块操作请求的用户或者应用进行用 户验证,若验证通过,则开启发起内核模块操作请求的用户或者应用的内核模块处理能力 CAP_M0DULE,使得操作系统的内核模块相对发起加载内核模块请求的用户或者应用进入临 时开放状态,通过操作系统内核加载或卸载内核模块操作请求的目标内核模块,且在执行 内核模块操作请求完毕后关闭所有用户的内核模块处理能力CAP_M0DULE使操作系统的内 核模块恢复密封状态;若验证不通过,则拒绝所述内核模块操作请求。
[0022] 本实施例是基于操作系统内核安全机制,在软件模块加载和卸载的流程中增加基 于用户验证的安全控制环节,以加强对内核模块加载的安全控制;通过能力机制完成内核 密封,只有具有内核模块处理能力CAP_MODULE的用户才能在系统正常运转时加载或卸载 模块,实现对操作系统内核的密封保护。
[0023] 本实施例中,步骤1)中在内核态下加载的内核密封模块被配置为具备安全管理员 角色。内核密封模块的基本功能包括:标志内核模块的密封状态、控制用户或者应用的内 核模块处理能力CAP_M0DULE、以及用户验证。用户通过与角色关联获得相应的内核模块处 理能力CAP_M0DULE,若安全管理员使所有角色不具有这个能力,即关闭内核模块处理能力 CAP_M0DULE,则内核处于密封状态;操作系统启动时,系统初始化进程(Init进程)具备模 块管理能力,可以加载必要的内核模块,启动完成后则操作系统的内核模块进入密封状态, 对用户(包括系统管理员)不分配内核模块处理能力,使得任何用户都不能对内核模块进行 操作。系统正常运转时,内核处于密封状态,没有特权的用户或进程既不能嵌入新的内核模 块,也不能卸载内核模块;如果系统管理员要进行内核模块操作,则必须通过内核密封模块 的用户验证,此时即使恶意用户窃取了系统管理员帐号,也不能加载或卸载内核模块,既能 保持内核动态模块的灵活性,又能解除安全隐患,保护操作系统内核的安全性。
[0024] 本实施例中,步骤1)中内核密封模块的用户验证功能具体是指用户密码验证功 能。启动内核密封模块时,内核密封模块针对发起内核模块操作请求的用户或应用进行用 户密码验证,验证用户或应用的内核模块处理能力CAP_M0DULE。
[0025] 如图2所示,本实施例涉及的实体包括安全管理员、操作系统内核、内核密封模 块、软件模块(内核模块)、内核模块处理能力,其中安全管理员用于执行操作系统安全配置 和管理操作的用户角色,内核密封模块具备安全管理员角色,且具有控制用户的内核模块 处理能力CAP_M0DULE的功能。
[0026] 如图3所示,应用本实施例的操作系统的引导过程如下:S1)系统加电,进入操作 系统引导阶段;由Grub操作系统加载器加载操作系统内核映像,创建内核关键数据结构, 创建并运行内核Init进程;S2)内核Init进程根据系统配置确定需要加载的内核模块和需 要创建的守护进程,加载内核模块、创建守护进程并开始接收用户的输入。S3)由内核Init 进程加载内核密封模块,由内核密封模块使用安全管理员角色关闭所有用户的内核模块处 理能力CAP_M0DULE,启用内核密封模块的用户验证功能(具体是指启用内核模块处理能力 密码的验证功能),启动对内核加载的密码保护功能,使得操作系统的内核模块进入密封状 态。由上述操作系统引导过程可知,本实施例并不会改变操作系统引导过程中和运行中的 模块加载顺序,对操作系统和应用软件的运行均不会造成影响,具有通用性好的优点。
[0027] 本实施例中,步骤2)的具体实施步骤如下: 2. 1)在操作系统运行过程中,通过内核密封模块截获操作系统内核接收到的内核模块 操作请求,并判断所截获内核模块操作请求的操作类型,如果操作类型为加载内核模块,则 跳转执行步骤2. 2);如果操作类型为卸载内核模块,则跳转执行步骤2. 6)。
[0028] 2. 2)内核密封模块对发起内核模块操作请求的用户或者应用进行用户验证,对发 起加载内核模块请求的用户或应用进行用户密码验证。本实施例中,对发起加载内核模块 请求的用户或应用进行用户密码验证具体是指内核密封模块弹出密码验证窗口以便用户 输入密码。
[0029] 2. 3)内核密封模块获取用户输入的验证密码,并通过用户验证功能对用户输入的 验证密码进行验证,若验证通过,则转入执行步骤2. 4);若验证不通过,则判定用户密码验 证失败,终止操作并退出。本实施例中,内核密封模块启用用户验证功能时初始化设定有验 证密码,如果用户密码与验证密码一致,则判定验证通过,否则判定验证不通过;此外,也可 以利用操作系统自带的用户验证功能来实现用户密码验证。
[0030] 2. 4)内核密封模块使用安全管理员角色开启发起加载内核模块请求的用户或者 应用的内核模块处理能力CAP_M0DULE,使得操作系统的内核模块相对发起加载内核模块请 求的用户或者应用进入临时开放状态,并通过操作系统内核加载内核模块操作请求的目标 内核模块。
[0031] 2. 5)在目标内核模块加载完成后,内核密封模块使用安全管理员角色关闭所有用 户的内核模块处理能力CAP_M0DULE,使得操作系统的内核模块恢复密封状态,内核模块操 作请求执行完毕并退出。
[0032] 2. 6)内核密封模块首先判定截获的内核模块操作请求的目标内核模块,如果目标 内核模块为内核密封模块则终止操作并退出;否则,内核密封模块对发起内核模块操作请 求的用户或者应用进行用户验证,对发起内核模块操作请求的用户或应用进行用户密码验 证。本实施例中,对发起内核模块操作请求的用户或应用进行用户密码验证具体是指内核 密封模块弹出密码验证窗口以便用户输入密码。
[0033] 2. 7)内核密封模块获取用户输入的验证密码,并通过用户验证功能对用户输入的 验证密码进行验证,若验证通过,则转入执行步骤2. 8);若验证不通过,则判定用户密码验 证失败,终止操作并退出。本实施例中,内核密封模块启用用户验证功能时初始化设定有验 证密码,如果用户密码与验证密码一致,则判定验证通过,否则判定验证不通过;此外,也可 以利用操作系统自带的用户验证功能来实现用户密码验证。
[0034] 2. 8)内核密封模块使用安全管理员角色开启发起卸载内核模块请求的用户或者 应用的内核模块处理能力CAP_M0DULE,使得操作系统的内核模块相对发起内核模块操作请 求的用户或者应用进入临时开放状态,并通过操作系统内核卸载内核模块操作请求的目标 内核模块。
[0035] 2. 9)在目标内核模块卸载完成后,内核密封模块使用安全管理员角色关闭所有用 户的内核模块处理能力CAP_M0DULE,使得操作系统的内核模块恢复密封状态,内核模块操 作请求执行完毕。
[0036] 需要说明的是,本实施例中密码保护功能功能是借助于安全管理员的密码验证功 能实现,因此需要保证安全管理员角色的安全性。
[0037] 如图4所示,应用本发明实施例方法的操作系统运行过程中,操作系统处于执行 状态,内核模块初始处于密封状态。用户或者应用发起内核模块操作请求包括加载内核模 块和卸载内核模块,针对加载内核模块,则内核密封模块执行内核模块加载控制;针对卸载 内核模块操作,内核密封模块执行内核模块卸载控制。在内核模块加载控制时,操作系统的 内核会首先受到内核模块操作请求(具体为内核模块加载请求),然后内核密封模块会弹出 密码验证窗口,此时用户需要输入密码并进行验证。内核密封模块内置的验证内核模块用 于实现内核密封模块的用户验证功能,对用户输入的密码进行验证,如果验证通过,则开启 发起卸载内核模块请求的用户或者应用的内核模块处理能力CAP_M0DULE,使得操作系统的 内核模块相对发起加载内核模块请求的用户或者应用进入临时开放状态,并通过操作系统 内核加载内核模块操作请求的目标内核模块。在目标内核模块加载完成后,内核密封模块 使用安全管理员角色关闭所有用户的内核模块处理能力CAP_MODULE,使得操作系统的内核 模块恢复密封状态。在内核模块卸载控制时,操作系统的内核会首先受到内核模块操作请 求(具体为内核模块卸载请求),内核密封模块首先判定截获的内核模块操作请求的目标内 核模块,如果目标内核模块为内核密封模块则终止操作并退出;否则,内核密封模块会弹出 密码验证窗口,此时用户需要输入密码并进行验证。内核密封模块内置的验证内核模块用 于实现内核密封模块的用户验证功能,对用户输入的密码进行验证,如果验证通过,则开启 发起卸载内核模块请求的用户或者应用的内核模块处理能力CAP_MODULE,使得操作系统的 内核模块相对发起内核模块卸载请求的用户或者应用进入临时开放状态,并通过操作系统 内核卸载内核模块操作请求的目标内核模块。在目标内核模块卸载完成后,内核密封模块 使用安全管理员角色关闭所有用户的内核模块处理能力CAP_MODULE,使得操作系统的内核 模块恢复密封状态。
[0038] 上述只是本发明的较佳实施例,并非对本发明作任何形式上的限制。虽然本发明 已以较佳实施例揭露如上,然而并非用以限定本发明。任何熟悉本领域的技术人员,在不脱 离本发明技术方案范围的情况下,都可利用上述揭示的技术内容对本发明技术方案做出许 多可能的变动和修饰,或修改为等同变化的等效实施例。因此,凡是未脱离本发明技术方案 的内容,依据本发明技术实质对以上实施例所做的任何简单修改、等同变化及修饰,均应落 在本发明技术方案保护的范围内。
【权利要求】
1. 一种操作系统中的内核模块加载控制方法,其特征在于实施步骤如下: 1) 在执行操作系统引导过程中,通过在内核态下加载的内核密封模块关闭所有用户的 内核模块处理能力,并启用所述内核密封模块的用户验证功能,使得操作系统的内核模块 进入密封状态; 2) 在操作系统运行过程中,通过所述内核密封模块截获操作系统内核接收到的用于加 载或卸载内核模块的内核模块操作请求,并对发起内核模块操作请求的用户或者应用进行 用户验证,若验证通过,则开启所述发起内核模块操作请求的用户或者应用的内核模块处 理能力,使得操作系统的内核模块相对所述发起加载内核模块请求的用户或者应用进入临 时开放状态,通过操作系统内核加载或卸载所述内核模块操作请求的目标内核模块,且在 执行内核模块操作请求完毕后关闭所有用户的内核模块处理能力使操作系统的内核模块 恢复密封状态;若验证不通过,则拒绝所述内核模块操作请求。
2. 根据权利要求1所述的操作系统中的内核模块加载控制方法,其特征在于:所述步 骤1)中在内核态下加载的内核密封模块被配置为具备安全管理员角色。
3. 根据权利要求1或2所述的操作系统中的内核模块加载控制方法,其特征在于,所述 步骤1)中所述内核密封模块的用户验证功能具体是指用户密码验证功能。
4. 根据权利要求3所述的操作系统中的内核模块加载控制方法,其特征在于,所述步 骤2)的具体实施步骤如下: 2. 1)在操作系统运行过程中,通过所述内核密封模块截获操作系统内核接收到的内核 模块操作请求,并判断所截获内核模块操作请求的操作类型,如果操作类型为加载内核模 块,则跳转执行步骤2. 2);如果操作类型为卸载内核模块,则跳转执行步骤2. 6); 2. 2)所述内核密封模块对发起内核模块操作请求的用户或者应用进行用户验证,对发 起加载内核模块请求的用户或应用进行用户密码验证; 2. 3)所述内核密封模块获取用户输入的验证密码,并通过所述用户验证功能对用户输 入的验证密码进行验证,若验证通过,则转入执行步骤2. 4);若验证不通过,则判定用户密 码验证失败,终止操作并退出; 2. 4)所述内核密封模块使用安全管理员角色开启所述发起加载内核模块请求的用户 或者应用的内核模块处理能力,使得操作系统的内核模块相对所述发起加载内核模块请求 的用户或者应用进入临时开放状态,并通过操作系统内核加载所述内核模块操作请求的目 标内核模块; 2. 5)在所述目标内核模块加载完成后,所述内核密封模块使用安全管理员角色关闭所 有用户的内核模块处理能力,使得操作系统的内核模块恢复密封状态,内核模块操作请求 执行完毕并退出; 2. 6)所述内核密封模块首先判定截获的内核模块操作请求的目标内核模块,如果目标 内核模块为所述内核密封模块则终止操作并退出;否则,所述内核密封模块对发起内核模 块操作请求的用户或者应用进行用户验证,对发起内核模块操作请求的用户或应用进行用 户密码验证; 2. 7)所述内核密封模块获取用户输入的验证密码,并通过所述用户验证功能对用户输 入的验证密码进行验证,若验证通过,则转入执行步骤2. 8);若验证不通过,则判定用户密 码验证失败,终止操作并退出; 2. 8)所述内核密封模块使用安全管理员角色开启所述发起卸载内核模块请求的用户 或者应用的内核模块处理能力,使得操作系统的内核模块相对所述发起内核模块操作请求 的用户或者应用进入临时开放状态,并通过操作系统内核卸载所述内核模块操作请求的目 标内核模块; 2. 9)在所述目标内核模块卸载完成后,所述内核密封模块使用安全管理员角色关闭所 有用户的内核模块处理能力,使得操作系统的内核模块恢复密封状态,内核模块操作请求 执行完毕。
【文档编号】G06F21/52GK104112098SQ201410340870
【公开日】2014年10月22日 申请日期:2014年7月17日 优先权日:2014年7月17日
【发明者】廖湘科, 黄辰林, 董攀, 陈松政, 魏立峰, 丁滟, 罗军 申请人:中国人民解放军国防科学技术大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1