本发明涉及计算机技术领域,具体地说是一种实用性强、Linux系统下防止系统调用劫持的方法。
背景技术:
现在网络上运行的服务器Linux系统占有很大比例,所以Linux服务器的安全性也变得越来越重要,虽然Linux上的病毒、木马并不像Windows上那么多,但也存在一些病毒木马。系统调用做为应用层和内核的接口,如果系统表被恶意替换,那整个系统的运行将会被控制,所以保证系统调用表的完整性变得非常重要。
基于此,现提供一种Linux系统下防护系统调用劫持的设计方法,本方法可以对Linux系统的系统调用表做到监控,当系统表被恶意修改后可以及时将系统调用表进行修复,并通过日志的形式报告管理员。
技术实现要素:
本发明的技术任务是针对以上不足之处,提供一种实用性强、Linux系统下防止系统调用劫持的方法。
一种Linux系统下防止系统调用劫持的方法,其实现过程为:搜集防护系统所有系统调用函数的入口地址,然后周期性的遍历系统调用表以检查系统调用表是否被修改,如果被修改则修改回原系统调用地址,并记录日志报告管理员。
其具体实现过程为:系统调用函数地址获取,形成数据库存储在文件中;进行周期性检查,查看函数地址是否被恶意替换;根据检查结果进行决策判断;根据决策判断结果,进行相应处理,该处理是指是否进行恢复并记录日志。
所述系统调用函数地址获取过程为:通过读取Linux内核文件/proc/kallsyms文件获取所有系统调用的地址,然后将所有系统调用函数的地址与系统调用号形成数据库保存到文件中。
所述周期性检查的周期为5秒,即每5秒检查系统调用表中的函数地址。
决策判断是指在系统调用表中根据系统调用号取得系统调用的函数地址,然后与数据库中保存的系统调用函数地址对比,判断两者是否相同。
根据决策判断结果进行处理是指当判断系统调用表中的函数地址与数据库保存的函数地址不同时,则恢复系统调用表中的原函数,并记录日志通知管理员。
本发明的一种Linux系统下防止系统调用劫持的方法,具有以下优点:
本发明的一种Linux系统下防止系统调用劫持的方法,可以对Linux系统的系统调用表做到监控,可以检测出系统的系统调用表是否被进行了篡改,使得能够防御内核层的监控、攻击,当系统表被恶意修改后可以及时将系统调用表进行修复,并通过日志的形式报告管理员,实用性强,适用范围广泛,易于推广。
附图说明
附图1为本发明的实现示意图。
具体实施方式
下面结合附图及具体实施例对本发明作进一步说明。
如附图1所示,本发明提出一种Linux系统下防止系统调用劫持的方法,本发明的显著特征是可以检测出系统的系统调用表是否被进行了篡改,使得能够防御内核层的监控、攻击。
其实现过程为:搜集防护系统所有系统调用函数的入口地址,然后周期性的遍历系统调用表以检查系统调用表是否被修改,如果被修改则修改回原系统调用地址,并记录日志报告管理员。
其具体实现过程为:
系统调用函数地址获取,形成数据库存储在文件中;
进行周期性检查,查看函数地址是否被恶意替换;
根据检查结果进行决策判断;
根据决策判断结果,进行相应处理,该处理是指是否进行恢复并记录日志。
所述系统调用函数地址获取过程为:通过读取Linux内核文件/proc/kallsyms文件获取所有系统调用的地址,然后将所有系统调用函数的地址与系统调用号形成数据库保存到文件中。
/proc/kallsyms文件是一个特殊的文件,它并不是存储在磁盘上的文件。这个文件只有被读取的时候,才会由Linux内核产生内容,比如write系统调用对应内核的sys_write,将所有系统调用函数的地址与系统调用号形成数据库保存到文件中。
所述周期性检查的周期为5秒,即每5秒检查系统调用表中的函数地址。
决策判断是指在系统调用表中根据系统调用号取得系统调用的函数地址,然后与数据库中保存的系统调用函数地址对比,判断两者是否相同。
根据决策判断结果进行处理是指当判断系统调用表中的函数地址与数据库保存的函数地址不同时,则恢复系统调用表中的原函数,并记录日志通知管理员。
上述具体实施方式仅是本发明的具体个案,本发明的专利保护范围包括但不限于上述具体实施方式,任何符合本发明的一种Linux系统下防止系统调用劫持的方法的权利要求书的且任何所述技术领域的普通技术人员对其所做的适当变化或替换,皆应落入本发明的专利保护范围。