一种运行程序的自保安全防终止方法与流程

文档序号:33192392发布日期:2023-02-04 09:08阅读:80来源:国知局
一种运行程序的自保安全防终止方法与流程

1.本发明涉及网络技术领域,具体涉及一种运行程序的自保安全防终止方法。


背景技术:

2.当前服务器最常用的操作系统就是linux系统,linux系统具有开放性,支持多用户、多进程、多线程,可以保障多个用户使用互不影响,效率大大提高,实时性较好,功能强大而稳定,因此用户体验好,使用范围非常广。
3.在linux系统里,当程序运行后,想要终止就可以直接结束这个程序,程序指令是kill。一般在企业服务器上,会存在多个可以登录系统的用户,这样的用户在启动需要被保护的程序后,其安全性可能不会受到保护。虽然linux系统有角色权限保护,但是管理员的权限最高,管理员可能会不小心终止其他用户启动的需要被保护的程序,而linux系统并不提供直接的程序运行防终止功能。
4.目前最为常用的有两种方案,一是利用linux本身就存在的用户角色权限管控,需要被保护的程序就使用管理员身份启动,那么至少非管理员用户是终止不掉进程的,但是管理员用户还是可以随意终止程序。这个方案很明显保护力度很弱,局限性很大,在没有获取到最大权限的情况下,就没有保护力。还有另外一种方案,使用市场上常用成熟的守护进程工具,在程序被不小心终止掉之后再次自动启动,以这用一种迂回的方式保护进程,但是这样也和不终止掉程序的方式不同,毕竟程序还是被终止了。


技术实现要素:

5.发明目的:本发明目的是提供一种运行程序的自保安全防终止方法,解决了在linux系统中需要被保护的程序会被其他用户私自终止,而现有技术即使是将需要被保护的程序使用管理员身份启动,也可能会面临管理员可以随意终止程序的问题。
6.技术方案:本发明提供一种运行程序的自保安全防终止方法,所述方法包括以下步骤:
7.(1)启动自保驱动,启动完成后运行目标程序,并将目标程序运行后的进程信息发送给自保驱动;运行中的自保驱动根据目标程序运行后的进程信息判断目标程序的进程是否需要被保护,若需要被保护,则将终止目标程序的指令全部屏蔽不予执行;若不需要被保护,则终止目标程序的指令予以执行;
8.(2)列出所有驱动的列表,将自保驱动从列表中隐藏;
9.(3)建立自保驱动的子驱动程序,启动子驱动程序,使子驱动程序引用自保驱动,使自保驱动的引用计数增加一,再将子驱动程序隐藏。
10.进一步的,步骤(1)中目标程序运行后的进程信息发送给自保驱动之后,将目标程序引用该自保驱动,使自保驱动的引用计数增加至与目标程序相同的数量。
11.进一步的,所述进程信息包括进程的标识pid和进程的父进程进程号ppid。
12.进一步的,步骤(1)中运行目标程序包括:
13.在用户态启动目标程序,使所述目标程序与所述自保驱动建立通信连接。
14.进一步的,步骤(2)中所有驱动的列表中包括自保驱动的名称和非自保驱动的名称。
15.进一步的,所述子驱动程序隐藏为再次列出所有驱动的列表,将子驱动程序从列表中隐藏。
16.本发明的有益效果:本发明提出一种运行程序的自保安全防终止方法,其采用程序进程结合驱动的方式,为保护程序的驱动增加多层保护,防止驱动被卸载,最终实现程序防终止。本发明不仅可以让程序自保不受用户角色权限管理,不必担心用户窃取管理员身份登录后终止掉程序进程,而且可以保护驱动不被卸载,并同时驱动能够支持动态调整需要被保护的程序数量的能力,将需要被保护的程序进程信息发送到驱动中即可,便于管理。
附图说明
17.图1为本发明方法流程图。
具体实施方式
18.下面结合附图和实施例对本发明做进一步描述:
19.通常在linux系统里实现程序自保是利用角色权限管理来限制,管理员启动的程序其他非管理用户由于没有操作权限而无法随意终止,但是这样的方案对于双方都是管理员来说,就无法实现自保,而且不是每个人都能获取到管理员身份,因此很明显有一定的局限性。
20.如图1所示,本发明提供一种运行程序的自保安全防终止方法,其利用驱动来保护程序,被驱动保护的程序不能被随意终止,方法包括以下步骤:
21.(1)事先准备好自保驱动,启动自保驱动,启动完成后运行目标程序,运行目标程序即为在用户态启动目标程序,使目标程序与自保驱动建立通信连接,目标程序也就是需要被保护的程序;运行目标程序后,将目标程序运行后的进程信息发送给自保驱动,进程信息包括进程的标识pid和进程的父进程进程号ppid;同时,在目标程序运行后的进程信息发送给自保驱动之后,将目标程序引用该自保驱动,使自保驱动的引用计数增加至与目标程序相同的数量,即有几个被保护的目标程序启动,这几个目标程序引用该自保驱动,使自保驱动的引用计数就会是几,只要自保驱动本身的引用计数不为0,那么这个驱动就不能被卸载,这就相当于文件被占用情况下不能被删除或移动,以此来防止自保驱动被卸载;
22.然后,运行中的自保驱动根据目标程序运行后的进程信息判断目标程序的进程是否需要被保护,若需要被保护,则将用户终止目标程序的指令全部屏蔽不予执行;若不需要被保护,则用户终止目标程序的指令予以执行;
23.实现目标程序自保的自保驱动通常需要实现对指定进程的终止类信号的屏蔽功能,这样才能让用户态程序进程不被强制终止。而该项功能的实现则需要使用内核进程数据结构中的关于信号处理的接口,将其正常可以被终止的状态处理改为不可以被终止的状态,这样用户传递终止目标程序的指令过来后,就会被认定无法操作,进而实现目标程序自保功能。
24.当然,如果只是使用目标程序进程结合自保驱动的方式,也可能会面临自保驱动
被卸载后,目标程序进程无法被保护的问题,因此,接下来就是防止自保驱动被卸载的情况,一旦保护程序运行的自保驱动被卸载,目标程序的自保能力将不复存在,一样是达不到目标程序的自保,因此将防止自保驱动被卸载分为两个步骤:
25.(2)列出所有驱动的列表,所有驱动的列表中包括自保驱动的名称和非自保驱动的名称,将用于保护目标程序被终止的自保驱动从列表中隐藏,这样即查不到该自保驱动,从而可以避免非故意清理自保驱动的操作发生;因为要想卸载自保驱动,正常都是先用指令列出所有的驱动,然后找到想要卸载的自保驱动名称,再用对应指令卸载,查不到自保驱动名称,则无法卸载;
26.(3)当然如果目标程序被正常终止了,那么引用计数也会减一,因此在所有被保护的目标程序都没有启动或者都被正常终止后,自保驱动的引用计数就是0,这种情况下,该自保驱动是可能被卸载掉的。为了防止这种情况下自保驱动被卸载,需要建立自保驱动的子驱动程序,即“影子”驱动程序,启动子驱动程序,使子驱动程序引用自保驱动,使自保驱动的引用计数增加一,再将子驱动程序隐藏,隐藏具体为再次列出所有驱动的列表,将子驱动程序从列表中隐藏。这样的话,只要子驱动程序启动,自保驱动其引用计数就会是1,自保驱动可以不受其他自保程序启动与否的影响,也不能被卸载掉。
27.本发明将自保驱动增加多层保护,防止自保驱动被卸载,由于目标程序引用该自保驱动,自保驱动本身的引用计数不为0,自保驱动就不能被卸载,进一步实现目标程序防终止。
28.本发明解决了目标程序运行被其他用户私自无端终止的问题。由于在linux系统中超级管理员的权限最高,可以不受文件权限限制,对所有的文件都享有读写和运行的权限,因此可能会存在非正常需求下的终止目标程序误操作行为;或者在有自保驱动保护情况下,将自保驱动卸载之后的目标程序进程无法被继续保护的情况。本发明采用多种方案保护了自保驱动,可以让目标程序不受角色权限限制,同时也不用担心自保驱动被卸载后目标程序进程不受保护的问题。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1