本发明属于系统时间管理,尤其是一种保护信创服务器linux系统时间的方法。
背景技术:
1、目前大部分服务器可以使用ntp、自研校时程序进行网络校时,确保服务器时间的同步性和准确度。在实际使用过程中,难免会遇到时钟源不正确的情形,此时,对时间要求比较高的服务器应用就会做出错误的响应,例如删除了不该删除的文件,无法正常录像等错误行为。
技术实现思路
1、本发明的目的在于克服现有技术的不足,提出一种保护信创服务器linux系统时间的方法,能够用于对时间依赖度高的服务器,确保时间在可控的合理范围,防止系统时间骤减或暴增带来的各种异常。
2、本发明解决其技术问题是采取以下技术方案实现的:
3、一种保护信创服务器linux系统时间的方法,包括以下步骤:
4、步骤1、构建钩子函数;
5、步骤2、使用步骤1中构建的钩子函数替代服务器系统中的时间设置函数;
6、步骤3、当服务器系统进行时间修改时,服务器系统内核执行到被替代的时间设置函数位置,并进入步骤1中的钩子函数;
7、步骤4、钩子函数对传入的时间修改参数进行校验,判断是否在合理范围,若在合理范围则修改时间,否则返回参数错误,同时时间不变。
8、而且,所述步骤1的具体实现方法为:在开源工程khook的源码中,声明并实现钩子函数,其中声明的格式为时间修改函数do_settimeofday64。
9、而且,所述步骤2的具体方法为:编译生成内核ko模块文件,注册到服务器系统内核中,在khook源码中,添加操作系统内核时间设置函数的钩子函数,用于替代对应的时间设置函数,在替代前将原始函数的地址暂存以供后续调用。
10、而且,所述步骤4中钩子函数对传入的时间修改参数进行校验的具体实现方法为:钩子函数体内实现对应的参数判断逻辑,时间设置函数的参数类型是结构体timespec64,将该参数的成员变量tv_sec转换成年月日时分秒,便于做日期或者时间的合理性判断,若在合理范围内,就调用暂存的原始函数,否则返回参数失败。
11、本发明的优点和积极效果是:
12、本发明通过构建钩子函数;使用构建的钩子函数替代服务器系统中的时间设置函数;当服务器系统进行时间修改时,服务器系统内核执行到被替代的时间设置函数位置,并进入钩子函数;钩子函数对传入的时间修改参数进行校验,判断是否在合理范围,若在合理范围则修改时间,否则返回参数错误,同时时间不变。本发明利用操作系统内核的hook技术(基于开源工程khook),不需要修改和重新编译内核源码,也不需要修改上层应用程序源码,只需要在内核中注册一个ko文件,就能实现对时间修改函数的参数进行合理化判断。
1.一种保护信创服务器linux系统时间的方法,其特征在于:包括以下步骤:
2.根据权利要求1所述的一种保护信创服务器linux系统时间的方法,其特征在于:所述步骤1的具体实现方法为:在开源工程khook的源码中,声明并实现钩子函数。
3.根据权利要求1所述的一种保护信创服务器linux系统时间的方法,其特征在于:所述步骤2的具体方法为:编译生成内核ko模块文件,注册到服务器系统内核中,在khook源码中,添加操作系统内核时间设置函数的钩子函数,用于替代对应的时间设置函数,在替代前将原始函数的地址暂存以供后续调用。
4.根据权利要求1所述的一种保护信创服务器linux系统时间的方法,其特征在于:所述步骤4中钩子函数对传入的时间修改参数进行校验的具体实现方法为:钩子函数体内实现对应的参数判断逻辑,时间设置函数的参数类型是结构体timespec64,将该参数的成员变量tv_sec转换成年月日时分秒,便于做日期或者时间的合理性判断,若在合理范围内,就调用暂存的原始函数,否则返回参数失败。