Solaris进程自动保护系统的制作方法

文档序号:6463900阅读:285来源:国知局
专利名称:Solaris进程自动保护系统的制作方法
技术领域
本发明涉及一种SOLARIS平台服务进程的自动保护系统,属于计算机技术领域。
在所有的计算机系统中,SOLAIRS平台因其卓越的安全性和网络特性成为计算机系统中服务器的首选方案,SOLARIS系统所提供的各种增值服务主要由各种基于SOLARIS体系架构的进程来实现,例如Apache提供了WWW、FTP、TELNET等服务,Oracle提供了数据库服务,还有SOLARIS下的邮件服务等。这些进程,特别是后台运行的各种服务进程的正常运行,是保证SOLARIS网络中可用服务的关键,一旦这些程序因为每种原因停止运行,势必造成系统服务的瘫痪,影响到整个信息业务流程,甚至能使整个系统崩溃。
造成这些服务进程无法正常运行的原因主要有以下几点1.服务进程本身的逻辑错误或者设置错误2.相关进程发生错误或者相互协调出现问题3.进程需要的资源得不到满足4.受到其他进程的攻击,被强制退出其中前面两个原因是进程的内部因素,只能通过升级程序、给程序打补丁、或者进行正确配置来解决。对于后面两个原因,则是进程的外部因素,可以通过一些监测和控制方法使进程的资源得到保证,防止进程的不正常退出等等,这些方法被称为计算机进程控制和保护方法。
eTrust Access Control提供了对进程的保护,他截取了发向进程的sigkill、sigstop和sigterm信号。被保护的进程可以正常或异常退出,但是不能被非授权的用户(包括root)杀死。这就保护了误操作造成的关键进程的异常中止,保障了系统的可靠性。
LIDS(Linux Intrusion Detection System)则通过另外一个途径保护了进程,它可以设定某些进程在系统上“隐身”,任何人均不能看见它,但它确实存在。
以上两种方法保护了进程不被意外终止,但是却无法监测进程自身的状态,因而如果进程出现了异常而危害到其它进程或系统时也无法通过结束进程解决问题。
为了了解计算机系统中的全部服务进程的运行状态、对系统资源的影响,从而有效地对服务进程进程控制管理,SOLARIS系统本身也提供了一组命令,通过这些命令能够查询系统的性能指标,并对进程进行控制。
例如PS命令能够查到系统中运行的所有进程的进程号和进程名称;KILL命令能够通过进程号杀掉指定的进程;SOLARIS还提供了一个性能监测工具,能够查看系统的CPU,磁盘操作,中断,出错情况,通过的包等等信息,通过图形的形式表现出来,辅助人们了解系统的各种性能。
通过以上的命令和工具系统管理员能够实现简单进程的控制和保护功能,但是还是存在以下的不足使用命令进行性能监测,需要比较高的专业水平,而且操作繁琐。
发现问题需要系统管理员手动操作,因而实时响应能力不强。
任务管理器只能对性能的两个主要部分(CPU和内存)进行监测,对其他的性能指标就无能为力了,例如如果单位时间内HTTP请求超过一定范围,IIS就可能遭到攻击,这时就要采取相应的措施,但是通过任务管理器,就无法查到这种情况。
为实现这样的目的,在本发明的技术方案中,保护系统主要由性能监测模块、规则设置模块、规则匹配模块和执行模块等组成,并为了保证自身的正常运行,还设置了一个称为“守护进程”的特殊服务进程,构成自保护机制。
性能监测模块是本发明的基础,主要作用是监测系统中与实际运行进程的运行情况相关的各种性能指标。例如CPU占有率,内存使用率,硬盘空间剩余情况,各种网络连接的性能指标等。对于特别重要的一些应用,如ORACLE数据库的性能,包括ORACLE数据库运行时占用的内存、占用的硬盘空间和连接用户情况,也要做详细的监测。
规则设置模块是本发明的必要组成部分,管理中心设置的代理规则通过安全连接传递到这里,由本模块进行更新代理的规则库,并在实现更新后通知规则匹配模块采用新的规则进行规则匹配。
规则匹配模块是本发明自动处理的核心,通过设定自动响应规则,规则匹配模块可以对性能监测模块搜集到的性能指标进行判断处理,对于触犯规则的情况,则将根据规则设定,指示执行模块进行相应的处理。
执行模块是本发明的功能实现,根据规则匹配模块发送过来的命令,对出现问题的进程实施启停的操作,以保证其能够在正常状态下运行。
自保护机制中守护进程的主要作用是监测性能监测模块、规则匹配模块、执行模块的运行情况,一旦其中一个模块因故退出,守护进程就将该模块重新启动。同时系统也可以将守护进程作为监测的对象,一旦发生意外退出情况,执行模块就能将守护进程重新启动。
通过这样的设计,除非守护进程和执行模块同时异常退出,否则本发明的保护系统可以保证一直都在系统中起作用。
本发明系统使用了以下的核心技术1.Solaris环境下获取进程的运行状态方法本发明的性能监测模块通过调用以下函数获取系统进程的运行状态信息。
每个进程都有一个各不相同的ID,系统调用getpid可以得到这个唯一的进程ID,而调用getppid可以得到父进程的ID,父进程是创建并调用本进程的进程。
在SOLARIS系统中,进程的运行和控制是同用户紧密联系在一起的,运行进程的用户或者用户组是进程的特征之一,系统通过调用getuid可以得到进程的所有者的ID,通过调用getgid得到进程所有者的组ID。
在知道了进程的所有者之后,系统可以调用getpwuid来得到用户的其他信息(登录名等)。
2.Solaris环境下程序运行一个进程的方法本发明的执行模块通过调用以下函数来运行一个进程。
System(string)本调用将参数string传递给一个命令解释器(一般为sh)执行,即string被解释为一条命令,由sh执行该命令。若参数string为一个空指针则为检查命令解释器是否存在。该命令可以同命令行命令相同形式,但由于命令作为一个参数放在系统调用中,应注意编译时对特殊意义字符的处理。命令的查找是按PATH环境变量的定义的。命令所生成的后果一般不会对父进程造成影响。
返回值当参数为空指针时,只有当命令解释器有效时返回值为非零。若参数不为空指针,返回值为该命令的返回状态(同waitpid())的返回值。命令无效或语法错误则返回非零值,所执行的命令被终止。
exec()这是一个系统调用族,包括execl(),execv(),execle(),execve(),execlp()和execvp()。可将一可执行模块拷贝到调用进程占有的存贮空间,正被调用进程执行的程序将不复存在,新程序取代其位置。这是UNIX系统中一个程序被执行的唯一方式用于将一个新的程序调入本进程所占的内存,并覆盖之,产生新的内存进程映象。新的程序可以是可执行文件或SHELL批命令。新进程启动时按文件的SUID和SGID设置定义文件的UID和GID为有效UID和GID。
Solaris环境下停止一个进程运行的方法通过以上两个方法就可以杀除一个运行中的进程。
首先通过第一种方法获得该进程的pid。
然后在一个进程中调用System()函数,执行Solaris系统提供的kill<pid>命令。
通过以上两步就能成功的杀除该进程。
Solaris系统的数据采集主要使用kstat(kernel statistics facility)库。系统的性能监测模块通过调用kstat库获得系统性能参数。这是一个提供Unix系统信息的库,它用一个链表把纪录系统信息的各种结构(structure)连接起来。我们首先通过kstat_open取得链头结构(如果失败,则系统大部分信息无法获得),然后用kstat_lookup函数搜索kstat链(链头结构中的kc_chain成员)找到需要获取信息的模块,接着用kstat_read函数读出存取系统数据的结构的链头ID。此时我们可以用kstat_data_lookup或者遍历这个结构的链表读取相应的信息。二者的区别是如果该链表中只有一个节点对应所需的数据(例如进程数、CPU个数等),则可以直接用kstat_data_lookup如果有多于一个节点(例如CPU的信息,一个CPU对应一个节点),kstat_data_lookup找到一个即返回,因此需遍历链表。若kstat链头在程序执行的过程中发生变化,在kstat_read之后调用kstat_chain_update函数进行更新。
本发明具有显著的效果,在进行进程保护的时候,不需要改变服务器原先的配置,也不需要对原先的服务进程进行重新设定和修改,只要设定需要保护的进程的名称和相应的配置。本发明能够对特定的服务进程进行监控和管理,对于发生异常或被攻击死亡的进程能够自动重新启动,并通过自保护机制保护了自身的安全,避免被逐个击破的危险,有效地解决了系统的安全问题。
如图所示,本发明系统主要由性能监测模块、规则设置模块、规则匹配模块和执行模块组成。规则设置模块和规则匹配模块之间通过共享存储区进行规则信息交换,并分别与上层管理中心相连,规则匹配模块分别与性能监测模块和执行模块相连,性能监测模块和执行模块分别与操作系统相连。
由规则设置模块负责接收上层管理中心下传的代理规则,更新代理本身的规则库,并通过共享存储区通知规则匹配模块新的规则;规则匹配模块负责将系统警报上报到上层管理中心。性能监测模块负责监测搜集操作系统运行中的各种性能指标,将其上报给规则匹配模块,由规则匹配模块通过由规则设置模块设定好的响应规则,对指标进行判断处理,并将进程操作命令传递到执行模块,由执行模块实施保证系统正常运行的启停操作。
图2为自保护机制的示意方框图,图中的虚线表示进程模块间的监测和保护关系。
如图所示,本发明的自保护机制中引入了一个特殊的服务进程——守护进程,守护进程分别与性能监测模块、规则设置模块、规则匹配模块及执行模块相连,进行进程监测保护。一旦其中一个模块因故退出,守护进程就将该模块重新启动。同时系统也将守护进程作为监测的对象,一旦发生意外退出情况,由执行模块将守护进程重新启动。图中的虚线表示了进程模块间的监测和保护关系。
图3为调用kstat库函数读取系统信息流程图。
图3给出了调用kstat库读取系统信息的程序流程。首先通过kstat_open取得链头结构(如果失败,则系统大部分信息无法获得),然后用kstat_lookup函数搜索kstat链(链头结构中的kc_chain成员)找到需要获取信息的模块,接着用kstat_read函数读出存取系统数据的结构的链头ID。此时可以用kstat_data_lookup或者遍历这个结构的链表读取相应的信息。二者的区别是如果该链表中只有一个节点对应所需的数据(例如进程数、CPU个数等),则可以直接用kstat_data_lookup如果有多于一个节点(例如CPU的信息,一个CPU对应一个节点),kstat_data_lookup找到一个即返回,因此需遍历链表。若kstat链头在程序执行的过程中发生变化,在kstat_read之后调用kstat_chain_update函数进行更新。
在本发明的一个实施例中,网络环境百兆以太网,硬件设备数据库服务器(SUN SPARC 450)、百兆以太网卡,运行平台Solaris 2.6,Oracle 7.3.4。
在内部网的数据库服务器中植入应急反应子系统的Solaris代理。该代理是一个运行在Solaris环境下的Daemon进程,保证在Solaris系统启动后就开始在后台运行。该代理的性能监测模块、规则匹配模块和执行模块等主要子模块相互协调工作,实现保护内部网数据库服务器安全和性能的作用。它们都作为Solaris代理服务进程的子进程随着服务进程的启动而启动,同时又受到服务进程的保护。其中Solaris代理的执行模块是整个系统的“进程保护程序”,通过设置能够保护系统中特定的进程。而代理本身的服务进程则是这个系统的“守护进程”,通过它来保护执行模块的正常运行。
本发明实施例的内网主要是多台数据库服务器,负责记录所有需要信息化的内容。为了保证数据库服务器的正常工作,特别是系统中的Oracle数据库的运行正常,Solaris代理通过监测该服务器性能以及Oracle数据库的性能,通过设定的规则响应来保证服务器和数据库的正常运行。
实现的主要功能如下由Solaris代理的性能监测模块对数据库服务器的性能(包括CPU占有率,内存使用率,各个卷空间使用率,网络连接繁忙情况,进程工作情况等性能指标)进行监控,实现按时上报的功能。
由Solaris代理的性能监测模块对Oracle数据库的性能(包括内存使用率,数据库卷空间使用率,数据库访问情况等性能指标)进行监控,实现按时上报的功能。
在中心设定代理的安全规则,指导代理在怎样的情况下触犯规则,同时指出触犯规则后除了向中心发送报警之外,还要进行如何的操作。Solaris代理的规则匹配模块根据中心设定并同步过来的规则工作,实现对于触犯规则的情况进行报警和指导执行模块工作的功能。
Solaris代理的执行模块根据应急反应中心发送过来的指令或本代理规则匹配模块发送过来的指令进行相应的操作,这些操作包括启停特定的进程(本系统启停了Oracle数据库),重新启动计算机系统等。
代理的服务进程监视每个功能子进程的运行情况,对于发生异常的功能子进程能够做出及时的处理,启停该模块,以保证整个Solaris代理的正常运行。
权利要求
1.一种SOLARIS进程自动保护系统,其特征在于主要由性能监测模块、规则设置模块、规则匹配模块和执行模块组成,并设置了守护进程构成自保护机制,规则设置模块和规则匹配模块之间通过共享存储区进行规则信息交换,并分别与上层管理中心相连,规则匹配模块分别与性能监测模块和执行模块相连,性能监测模块和执行模块分别与操作系统相连,由规则设置模块接收上层管理中心下传的代理规则,更新代理本身的规则库,并通过共享存储区通知规则匹配模块新的规则;由性能监测模块监测搜集系统中进程的运行指标,上报给规则匹配模块;由规则匹配模块通过由规则设置模块设定好的响应规则,对指标进行判断处理,并将进程操作命令传递到执行模块,由执行模块实施保证系统正常运行的启停操作;守护进程分别与性能监测模块、规则设置模块、规则匹配模块及执行模块相连,进行进程监测保护。
2.如权利要求1所说的SOLARIS进程自动保护系统,其特征在于性能监测模块通过调用kstat(kernel statistics facility)库获得系统性能参数。
3.如权利要求1所说的SOLARIS进程自动保护系统,其特征在于性能监测模块通过调用getpid、getuid等一系列函数获取进程的运行状态。
4.如权利要求1所说的SORARIS进程自动保护系统,其特征在于执行模块通过取得进程ID后调用OPEN()函数打开进程句柄,再调用Kill函数来停止一个进程运行,通过调用EXEC()和SYSTEM()函数来重新启动运行一个进程。
全文摘要
一种SOLARIS进程自动保护系统,主要由性能监测模块、规则设置模块、规则匹配模块和执行模块组成,并设置了守护进程构成自保护机制。由规则设置模块设定规则匹配需要的自动响应规则,由性能监测模块监测搜集系统中进程的运行指标并上报给规则匹配模块,由规则匹配模块通过设定的规则对指标进行判断处理,并将进程操作命令传递到执行模块,由执行模块实施保证系统正常运行的启停操作,守护进程则对这些模块进行进程监测保护。本发明具有双层自动保护作用,能够对特定的服务进程进行监控和管理,对于发生异常或被攻击死亡的进程能够自动重新启动,同时通过自保护机制保护了自身的安全,避免被逐个击破的危险,有效地解决了系统的安全问题。
文档编号G06F11/28GK1349167SQ0113903
公开日2002年5月15日 申请日期2001年12月4日 优先权日2001年12月4日
发明者朱斌, 王国平, 梁瑾 申请人:上海复旦光华信息科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1