一种基于Linux操作系统的进程防护方法技术方案

技术编号:12890933 阅读:64 留言:0更新日期:2016-02-18 00:50
本发明专利技术涉及Linux系统中运行的进程安全防护领域,尤其是涉及一种基于Linux操作系统的进程防护方法及装置。本发明专利技术针对现有技术存在的问题,提出一种方法,该方法采用对Linux操作系统的信号传递机制进行管控,进而保护操作系统的进程。本发明专利技术过程包括Linux操作系统某线程发送信号时,该线程调用sys_kill类系统调用函数,然后通过无条件转移指令到内核管控模块处;内核管控模块并判断该信号的源进程、目的进程以及类型;如果该信号的目的进程是受保护进程的,则丢弃此信号,并直接返回错误码;内核管控模块屏蔽此信号的后续处理;否则,行操作系统原来的信号处理流程、完成整个执行过程。

【技术实现步骤摘要】

本专利技术涉及Linux系统中运行的进程安全防护领域,尤其是涉及。
技术介绍
在信息安全领域,为了保护系统的安全,需要对系统进行不间断的守护,也即是守护进程不能被意外,甚至被恶意软件故意的强制退出。一旦被强制退出,整个系统的安全将不被保护。为了保证守护进程的安全,因此需要一种技术避免守护进程被其他人退出,甚至恶意kill掉。
技术实现思路
本专利技术的目的在于:针对现有技术存在的问题,本专利技术提出一种方法,该方法采用对Linux操作系统的信号(signal)传递机制进行管控,在操作系统内核中的信号传递的入口点进行判断,对信号的产生原源、目的、原因进行判断,如果是恶意的发给受保护进程的信号将被截获并丢弃,并记录相关信息。本专利技术目的通过下述技术方案来实现: 包括: 步骤1:内核模块在proc文件系统中创建一个文件,用户态将所述文件中需要保护的进程参数传递到内核模块,并对需要保护的信号在运行过程中进行保护; 步骤2:加载内核模块,生成对Linux操作系统的sys_kill系统调用函数进行管控的内核管控模块; 步骤3:Linux操作系统某线程发送信号时,首先该线程调用sys_kill系统调用函数,然后通过无条件转移指令到步骤2生成的对操作系统sys_kill类系统调用函数管控的内核管控模块处;内核管控模块保存该线程的相关寄存器、获取该线程函数的参数,并判断该信号的源进程、目的进程以及类型; 步骤4:如果该信号的目的进程是受保护进程的保护信号,则内核管控模块丢弃此信号,并直接返回调用线程相应的无权限操作的错误码;内核管控模块屏蔽此信号的后续处理;如果信号目的进程不需要保护,则执行操作系统原来的信号处理流程、完成整个执行过程。进一步的,所述用户态将所述文件中需要保护的进程的相关参数传递到内核模块的方法是使用Lunix操作系统的普通文件接口操作内核模块在proc文件系统中创建的文件,并由该文件传递到内核模块。进一步的,所述加载内核模块,生成对操作系统的sys_kill系统调用函数进行管控指令,是在操作系统运行期间动态生成的。进一步的,所述操作系统在线程发送信号时,调用sys_kill系统调用函数后,通过无条件转移指令的方式快速的跳转到对操作系统的sys_kill系统调用函数进行管控指令。进一步的,所述步骤4中如果信号目的进程不需要保护,执行操作系统原来的信号处理流程、完成整个执行过程具体过程是:将执行通过无条件转移指令转移时,被覆盖的sys_kill系统调用函数指令,然后跳转到原sys_kill系统调用函数被覆盖指令之后,执行Iinux原来的流程处理信号。本专利技术的有益效果: 1、在操作系统运行过程中,实时生成监控Linux信号处理接口的指令。对内核中信号模块的入口点(sys_kill系统调用函数等)进行管控,当操作系统中有线程发送信号时,本专利技术对信号进行分析、判断,如果信号目的进程是受保护进程相关的保护信号,则丢弃此信号,并直接返回调用线程相应的无权限操作的错误码,操作系统对此信号的后续处理被屏蔽,从而阻断信号传递到被保护的进程,达到保护进程的目的。2、本专利技术不仅可以对普通的信号进行保护屏蔽,对SIGKILL/SIGTERM也能够进行保护。3、本专利技术对操作系统进程进行保护时,使用信号来源、信号的类型、信号目的进行处理。信号类型、信号目的可以判断目标是否被保护,而不被保护的进程的信号则仍旧使用操作系统的信号处理机制。从而达到既保护系统进程、又不影响操作系统进程所有其他信号的正确传递。4、采用本专利技术的技术方法,在不影响操作系统正常信号机制的情况下,对特定的进程进行保护。对操作系统信号处理模块的信号入口进行管控,对信号的类型、源、目的、信号类型进行组合分析,从而确定此信号是否能够送达目的,如果目的不需要保护,则利用系统原机制将信号送达目的,如果目的受保护,或者源无发送信号权限,此时本系统将当期的信号丢弃,直接给源返回相应的错误码。【附图说明】图1本专利技术原理图。【具体实施方式】下列非限制性实施例用于说明本专利技术。本专利技术技术包括两部分,一部分是用户态,另一部分是内核模块,两部分通过proc文件系统交互。用户态部分:提供进程申请保护,用户态通过proc文件将信息传递给内核管控模块。内核态部分:对Linux操作系统内核的信号处理接口进行管控,在管控过程中先获取接口函数的参数,根据参数的值判断此信号的目的地(接收信号的进程),如果目的进程此信号收到保护,则将此信号丢弃,否则信号按照系统的默认方式处理。实施方式一包括: 步骤1:用户态通过内核模块创建proc文件系统的文件,将所述文件中需要保护的进程的参数传递到内核模块,并对需要保护的信号在运行过程中进行保护; 步骤2:加载内核模块,生成对Linux操作系统的sys_kill系统调用函数进行管控的内核管控模块; 步骤3:Linux操作系统在某线程发送信号时,首先调用sys_kill系统调用函数,然后通过无条件转移指令到步骤2生成的对操作系统的内核管控模块;内核管控模块保存该线程的相关寄存器、获取该线程函数的参数,并对该信号的源进程、目的进程以及类型进行判断。步骤4:如果该信号的目的进程是受保护进程的保护信号,则丢弃此信号,并直接返回调用线程相应的无权限操作的错误码,操作系统屏蔽此信号的后续处理,从而阻断信号传递到被保护的进程,达到保护进程的目的。步骤5:如果信号目的进程不需要保护,则完整执行操作系统原来的信号处理流程、完成整个执行过程。实施方式二: 1、用户态库通过内核模块创建的proc文件系统的文件,并使用操作系统的普通文件接口操作proc中的文件,将参数传递内核模块,并对写入的进程的相关的信号在其运行过程中进行保护。2、通过动态生成机器指令控制码对内核态的sys_kill系统调用函数进行接管并监控,对于受保护的进程,进行信号过滤: a)如果是其他进程发送的信号,包括SIGKILL/SIGTER等信号进行过滤,并根据用户的设置判断是否让此信号发送到目的进程,并直接返回权限不够的错误码。b)如果是由于进程自身的原因产生的信号,则让其通过系统原有的信号机制传递信号。如图1所述,步骤1:通过无条件转移指令将sys_kill系统调用函数的控制权转移到控制模块; 步骤2:保持当前线程的执行环境(通用寄存器和返回地址信息),获取被监控函数的参数; 步骤3:根据步骤2获得的参数判断是否目的进程受保护的信号; 步骤4:如果被保护,此线程将从此步骤返回,sys_kill系统调用函数将不会被执行。也即是信号不能发送到目的进程,从而达到保护的目的; 步骤5:如果不受保护,则在此处调用的sys_kill系统调用函数被覆盖指令的等价指令,执行完被覆盖指令后; 步骤6:执行被监控sys_kill系统调用函数没有被覆盖的指令; 步骤7:被监控的sys_kill系统调用函数返回之后,获取步骤2保持的真实返回地址并返回。对于非监控进程的信号,控制码在判断完非监控进程后,转而执行系统原信号处理流程。以上所述仅为本专利技术的较佳实施例而已,并不用以限制本专利技术,凡在本专利技术的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本专利技术的保护范围之内。【主权项】1.,其特征在于包本文档来自技高网...

【技术保护点】
一种基于Linux操作系统的进程防护方法,其特征在于包括:步骤1:内核模块在proc文件系统中创建一个文件,用户态将所述文件中需要保护的进程参数传递到内核模块,并对需要保护的信号在运行过程中进行保护;步骤2:加载内核模块,生成对Linux操作系统的sys_kill系统调用函数进行管控的内核管控模块;步骤3:Linux操作系统某线程发送信号时,首先该线程调用sys_kill系统调用函数,然后通过无条件转移指令到步骤2生成的对操作系统sys_kill系统调用函数管控的内核管控模块处;内核管控模块保存该线程的相关寄存器、获取该线程函数的参数,并判断该信号的源进程、目的进程以及类型;步骤4:如果该信号的目的进程是受保护进程的保护信号,则内核管控模块丢弃此信号,并直接返回无权限操作的错误码给调用sys_kill系统调用函数的线程;内核管控模块屏蔽此信号的后续处理;如果信号目的进程不需要保护,则执行操作系统原来的信号处理流程、完成整个执行过程。

【技术特征摘要】

【专利技术属性】
技术研发人员:戴华飞
申请(专利权)人:成都卫士通信息产业股份有限公司
类型:发明
国别省市:四川;51

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1