如何监控和保护Linux下进程安全 (2)
4.top命令:top命令和ps命令的基本作用是相同的,显示系统当前的进程及其状态,但是top是一个动态显示过程,可以通过用户按键来不断刷新当前状态。如果在前台执行该命令,它将独占前台,直到用户终止该程序为止。
比较准确地说,top命令提供了实时的对系统处理器的状态监视。它可以显示系统中CPU “敏感”的任务列表。该命令可以按CPU使用、内存使用和执行时间对任务进行排序,而且它的很多特性都可以通过交互式命令或者在个人定制文件中进行设定。下面是一个top命令的例子:
1:55pm up 7 min, 4 user,
load average:0.07,0.09,0.06
29 processes:28 sleeping,
1 running, 0 zombie, 0 stopped
CPU states: 4.5% user,
3.6% system, 0.0% nice, 91.9% idle
Mem: 38916K av, 18564K used,
20352K free, 11660K shrd, 1220K buff
Swap: 33228K av, 0K used,
33228K free, 11820K cached
PID USER PRI NI SIZE RSS SHARE
STAT LIB %CPU %MEM TIME COMMAND
363 root 14 0 708 708 552 R 0 8.1 1.8 0:00 top
1 root 0 0 404 404 344 S 0 0.0 1.0 0:03 init
2 root 0 0 0 0 0 SW 0 0.0 0.0 0:00 kflushd
3 root -12 -12 0 0 0 SW< 0 0.0 0.0 0:00 kswapd
需重点监控的一些进程
由上面的介绍可知,Linux提供的这些命令都能提供关于进程的一些信息,可以通过它们查看系统当前的进程状况,也可以找出那些占用了过多系统资源的进程并结束该进程。
它们的优点在于速度快,透明性好,直观明了。下表给出了Linux系统中较为常见的重要的进程(没有完全列出,用户可以参考相应的资料),用户可以采用上述工具来实时的监测这些重要进程的情况,并采取相应的防护措施。
系统调用存在缺点
我们上述所介绍的进程监控方法和工具都是基于调用操作系统给我们提供的相应的API接口函数或者系统调用来实现的。我们所得到的只是接口函数处理后的结果,不能够主动地从操作系统内核的进程数据结构当中获取我们需要的信息。因而,它们具有如下缺点:
1.传统的进程监控方法运行效率比较低,同时反应时间也比较长,实时性能差。
2.不能够实时、高效地向用户报告当前系统运行的安全状况,就算系统中有不法进程在运行,系统也不能识别出来。
3.不能给用户捕捉不法进程的行为提供证据和进程的活动轨迹。当一个不法进程运行并对系统产生破坏时,用户即使通过察看进程列表找到了不合法的进程,也不清楚到底从进程开始运行直到捕捉到这样一个不法进程这样一段时间内,进程都对系统造成了哪些破坏,比如说,访问、修改了哪些重要的系统文件,占用了哪些系统资源等等。这些都给以后的恢复和处理工作带来了很大的问题。
4.执行程序工作在用户态,本身就不安全,入侵系统的黑客可以轻松地找到这些进程监控程序的磁盘映像,进行删除甚至替换,从而会给系统带来不可估量的损失。这一点尤其需要强调,比如说,黑客入侵系统成功,就可以植入他们所改写的ps程序以替换原来系统的ps程序,这样就使得用户不能通过该工具得知系统中当前运行的不法进程,这样无论黑客如何植入木马或者其他程序,用户都无法知道,从而无法采取措施终止这些行为。