作為服務器中占絕大多數市場份額的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
命令行參數
表1 重要的PROC文件系統文件和目錄