老男人百科 > 百科 > 正文

对Linux系统进程进行监控和保护

2023-06-05 14:10:06 阅读( 7679)

通过综合采用用户级别的top、ps等系统工具以及Linux内核防护技术,我们可以从用户/内核两个层次全方位地保护Linux系统中重要系统进程以及用户进程的安全性。

通过综合采用用户级top、ps等系统工具和Linux内核保护技术,从用户/内核层面全面保护Linux系统中重要系统进程和用户进程的安全。

经典的信息安全模型Bell-LaPadula模型指出,进程是整个计算机系统的一个主体,它需要通过一定的安全级别作用于对象。在某些条件下,进程可以对文件和数据库等对象进行操作。

如果进程被用于其他非法用途,会给系统带来很大的危害。现实生活中,很多网络黑客通过种植“木马”来达到破坏计算机系统和入侵的目的。

无一例外,这些“木马”程序需要通过进程在机器上运行才能发挥作用。此外,许多破坏性程序和攻击方法需要破坏目标计算机系统的合法进程,尤其是重要的系统进程,

使系统无法完成正常工作甚至无法工作,从而达到破坏目标计算机系统的目的。由于Linux系统在服务器中占据了压倒性的市场份额,为了保证计算机系统的安全,必须对其进程进行监控和保护。

用户级流程监控工具

Linux系统提供了who、W、ps、top等系统调用来查看进程信息。通过结合这些系统调用,我们可以清楚地了解进程的运行状态和存活情况,从而采取相应的措施来保证Linux系统的安全性。

它们是目前Linux下查看进程状态最常用的工具。它们随Linux套件一起分发,用户可以在安装系统后使用它们。

1.who命令:该命令主要用于查看当前在线用户。系统管理员可以使用who命令来监视每个登录用户此时正在做什么。

2.W命令:该命令也用于显示已经登录系统的用户,但与who不同,W命令更强大。它不仅可以显示谁登录了系统,还可以显示这些用户当前正在做的工作。W命令是世卫组织命令的增强版本。

3.ps命令:这个命令是最基本也是非常强大的进程视图命令。可以用来判断哪些进程正在运行和运行状态,进程是否结束,进程是否死了,哪些进程占用了太多的资源。ps命令可以监视后台进程的工作。

因为后台进程不与屏幕键盘等标准输入/输出设备通信,所以如果需要检测,可以使用ps命令。

4.top命令:top命令和ps命令的基本功能是一样的,显示系统当前的进程和状态,但是top是一个动态显示的进程,可以通过用户按键不断刷新当前状态。如果命令在前台执行,它将独占前台。

直到用户终止程序。更准确地说,top命令提供了对系统处理器状态的实时监控。可以显示系统中CPU最“敏感”的任务列表。该命令可以根据CPU使用率、内存使用率和执行时间对任务进行排序。

此外,它的许多功能可以通过交互式命令或在个人定制文件中设置。

一些需要监控的过程。

从上面的介绍我们可以知道,Linux提供的这些命令可以提供进程的一些信息,通过这些信息我们可以查看系统当前的进程状态,也可以找出那些占用系统资源过多的进程,结束进程。它们的优点是速度快,透明性好,直观。

下表列出了Linux系统中常见的和重要的进程(没有完全列出,用户可以参考相应的资料)。用户可以使用上述工具实时监控这些重要过程的情况,并采取相应的保护措施。

系统调用有缺点。

上面我们介绍的进程监控方法和工具都是基于调用相应的API接口函数或者操作系统提供的系统调用。我们得到的只是接口函数处理的结果。

我们无法主动从操作系统内核的进程数据结构中获取我们需要的信息。因此,它们具有以下缺点:

1、传统的进程监控方法运行效率比较低,同时反应时间也比较长,实时性能差。

2、不能够实时、高效地向用户报告当前系统运行的安全状况,就算系统中有不法进程在运行,系统也不能识别出来。

3、不能给用户捕捉不法进程的行为提供证据和进程的活动轨迹。当一个不法进程运行并对系统产生破坏时,用户即使通过察看进程列表找到了不合法的进程,

也不清楚到底从进程开始运行直到捕捉到这样一个不法进程这样一段时间内,进程都对系统造成了哪些破坏,比如说,访问、修改了哪些重要的系统文件,占用了哪些系统资源等等。

这些都给以后的恢复和处理工作带来了很大的问题。

4、执行程序工作在用户态,本身就不安全,入侵系统的黑客可以轻松地找到这些进程监控程序的磁盘映像,进行删除甚至替换,从而会给系统带来不可估量的损失。这一点尤其需要强调,比如说,黑客入侵系统成功,

就可以植入他们所改写的ps程序以替换原来系统的ps程序,这样就使得用户不能通过该工具得知系统中当前运行的不法进程,这样无论黑客如何植入木马或者其他程序,用户都无法知道,从而无法采取措施终止这些行为。

不言而喻,这样的后果是很严重的。而在我们下面所要介绍的一种运行于内核的进程监控程序当中,黑客根本无法或者很难深入内核来破坏该进程监控程序,从而使其能够很好地保证自身的安全。

基于上述种种不足,我们提出了在Linux内核中实现进程实时监控的原理和技术。该技术主要分为以下几个步骤:

首先,在“干净”的系统环境下,全面地运行系统中的安全进程,分析和搜集Linux环境下这些进程的相关信息(包括进程ID号、进程名称、进程可执行映像、进程的开始时间、进程的父进程等主要信息),

形成一张“系统安全进程列表”,作为进程监控的依据。

接着,监控代码在进程调度过程中实时地搜集系统中运行进程的信息。如果发现进程不在“系统安全进程列表”当中,则马上通过终端输出该进程的PID号、名称、进程的可执行映像等信息,或者通过声音向用户报警,

等待用户处理,在这个等待的过程中,终止调度该进程,直到用户做出响应(放行该进程或者杀死该进程)。

在第二步当中,如果超级用户(系统管理员)放行了该进程,则可以将该进程加入“系统安全进程列表”,以完善该列表;如果是一般用户在使用过程当中放行了某个进程,那么,需要将该用户的用户名和身份记录下来,

并且将放行的进程记录下来存为日志,那么,当超级用户(系统管理员)无论是在审核用户行为还是在修改“系统安全进程列表”时,都是一个有力的依据。

另外,在系统运行过程当中,如果发现“系统安全进程列表”当中的某些重要的进程(包括kswapd、bdflush等)不在运行,则马上将该进程“遗失”的信息存入文件,以备在系统的恢复过程当中,

对它们进行针对性的恢复,根据不同的情况,有的需要马上停机,恢复进程,有的则可以现场恢复。

专题页