在企业级的Linux应用中,进程是整个计算机系统的一个主体,它需要通过一定的安全等级来对客体(包括系统中的文件、数据、设备等)发生作用。进程在一定条件下可以对诸如文件、数据库等客体进行操作。如果进程用作其他不法用途,将给系统带来重大危害。在当前形形色色的面向Linux系统的攻击中,许多网络黑客都是通过种植“木马”的办法来达到破坏计算机系统和入侵的目的,而这些“木马”程序无一例外的是需要通过进程这一方式在系统中运行才能发挥作用的。
作为服务器中占绝大多数市场份额的Linux系统,要切实保证计算机系统的安全,我们必须对其进程进行安全管理。
Linux进程管理的方法主要包括:(1)确定并综合分析系统中当前运行进程的状态及信息,包括内存、CPU、执行用户身份、进程ID等,以确定其是否合法以及状态是否正常;(2)事先限制进程所占用的系统资源,如文件系统资源和派生进程数目等,以合理控制进程的运行状况。下面将对这些手段进行详细介绍。
一、管理手段一:使用基本命令进行进程查看
传统的方法可以通过Linux系统的一些基本命令进行Linux系统的进程查看和分析。Linux系统提供了who、w、ps和top等察看进程信息的系统调用,安全工作者可以通过结合使用这些系统调用,清晰地了解进程的运行状态以及存活情况,从而采取相应的措施,来确保Linux系统的安全。
其中,who命令主要用于查看当前在线上的用户情况。系统管理员可以使用who命令监视每个登录的用户此时此刻的所作所为;w命令也用于显示登录到系统的用户情况,但是与who不同的是,w命令功能更加强大,它不但可以显示有谁登录到系统,还可以显示出这些用户当前正在进行的工作,w命令是who命令的一个增强版;ps和top命令则是最基本同时也是非常强大的进程查看命令。使用这些命令可以动态和静态地确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵死、哪些进程占用了过多的资源等等。
举个例子,黑客在入侵系统后通过植入一些系统本没有的非法进程来留作“后门”,以达到下次使用该系统资源或者利用该系统作为“肉鸡”发动拒绝服务等来攻击其他目标主机的目的,而我们就可以结合上述命令来找出异常进程。
二、管理手段二:使用进程文件系统进行管理
管理手段一中所使用的命令行方式对Linux系统中的进程管理比较粗略和不全面,如果要进行全面地管理,可以借助进程文件系统(即PROC文件系统)来获取系统中运行进程所占用的内存、CPU、中断、命令行等情况,以辅助安全管理员进行恶意进程的发现和排查。
PROC文件系统是一个虚拟的文件系统,通过文件系统的接口实现,用于输出系统的运行状态。它以文件系统的形式,为操作系统本身和应用进程之间的通信提供了一个界面,使应用程序能够安全、方便地获得系统当前的运行状况和内核的内部数据信息,并可以修改某些系统的配置信息。另外,由于PROC以文件系统的接口实现,因此用户可以像访问普通文件一样对其进行访问,但它只存在于内存之中,并不存在于真正的物理磁盘当中。所以,当系统重启和电源关闭的时候,该系统中的数据和信息将全部消失。
表1说明了该文件系统中一些重要的文件和目录。
文件或目录 说 明 /proc/1 关于进程1的信息目录。每个进程在/proc下有一个名为其进程号的目录 /proc/cpuinfo 处理器信息,如类型、制造商、型号和性能 /proc/devices 当前运行的核心配置的设备驱动的列表 /proc/dma 显示当前使用的DMA通道 /proc/filesystems 核心配置的文件系统 /proc/interrupts 显示使用的中断 /proc/ioports 当前使用的I/O端口 /proc/kcore 系统物理内存映像 /proc/kmsg 核心输出的消息,也被送到syslog /proc/ksyms 核心符号表 /proc/loadavg 系统的平均负载 /proc/meminfo 存储器使用信息,包括物理内存和swap /proc/modules 当前加载了哪些核心模块 /proc/net 网络协议状态信息 /proc/stat 系统的不同状态 /proc/version 核心版本 /proc/uptime 系统启动的时间长度 /proc/cmdline 命令行参数