最後防線 Linux程序實時監控

2021-10-18 23:23:29 字數 2850 閱讀 9591

做linux主機入侵檢測系統,對程序監控是乙個難點,要做不遺漏,也要做不影響系統效能,是非常困難。

在現代作業系統中,任何攻擊行為都是借助程序這個執行單元來進行,檢測攻擊行為往往是對程序監控,檢測是否存在異常行為。

基本上,使用linux的人都會用ps來獲取程序資訊。如果是獲取所有程序,往往是

ps -ef

ps axu
如果是放在主機入侵檢測系統實現,往往會使用fork/execvpopensystem之類的api呼叫ps命令,來獲取命令的結果。這種方式非常簡單容易上手,卻存在問題:

按照unix哲學一切皆檔案ps命令肯定是讀取某些檔案來獲取這些資訊。在《unix環境高階程式設計》這本書都提到過ps的實現,是讀取proc檔案系統的。使用strace ps可以看到,ps就是讀取proc檔案系統的。

取一條ps的結果來對照一下proc檔案系統能夠獲取的內容

uid         pid   ppid  c stime tty          time cmd

root       1326   1151  0 feb02 ?        00:00:00 /sbin/dhclient -d -q -sf /usr/libexec/nm-dhcp-helper -pf /var/run/dhclient-ens33.pid -lf /var/lib/networkmanager/dhclient-b8281210-bced-41a8-ba17-025e1d24054a-ens33.lease -cf /var/lib/networkmanager/dhclient-ens

從上面資訊可以看到啟動程序的使用者是root, 程序id是1326,程序父id是1151, cpu(c)使用率為0,啟動時間(stime)是2月2日,時間為0, 命令列是/sbin/dhclient -d -q -sf /usr/libexec/nm-dhcp-helper -pf /var/run/dhclient-ens33.pid -lf /var/lib/networkmanager/dhclient-b8281210-bced-41a8-ba17-025e1d24054a-ens33.lease -cf /var/lib/networkmanager/dhclient-ens

看一下1326這個程序在proc檔案系統的內容:

[root@bogon-agent ~]# stat /proc/1326

file: 『/proc/1326』

size: 0               blocks: 0          io block: 1024   directory

device: 3h/3d   inode: 22643       links: 9

access: (0555/dr-xr-xr-x)  uid: (    0/    root)   gid: (    0/    root)

context: system_u:system_r:dhcpc_t:s0

access: 2021-02-02 18:44:15.878000578 +0800

modify: 2021-02-02 18:44:15.878000578 +0800

change: 2021-02-02 18:44:15.878000578 +0800

birth: -

是2023年2月2日18:44:15分鐘啟動的,使用者是root,組也是root。

[root@bogon-agent ~]# cat /proc/1326/cmdline

/sbin/dhclient-d-q-sf/usr/libexec/nm-dhcp-helper-pf/var/run/dhclient-ens33.pid-lf/var/lib/networkmanager/dhclient-b8281210-bced-41a8-ba17-025e1d24054a-ens33.lease-cf/var/lib/networkmanager/dhclient-ens33.confens33

命令列也是和ps結果一樣。

[root@bogon-agent ~]# cat /proc/1326/status

name:   dhclient

umask:  0022

state:  s (sleeping)

tgid:   1326

ngid:   0

pid:    1326

ppid:   1151

可以看到程序父id是1151,程序在睡眠狀態,所以使用率和使用時間是0.

cpu使用量

記憶體使用量

控制代碼數量和資訊

執行緒數量和資訊

埠和網路資料資訊

命名空間資訊

庫載入資訊

環境變數資訊

檔案系統載入資訊

上面的操作,如果是在主機入侵檢測系統裡實現,就可以通過opendir/readdir/closedir,open/read/close,readlink/realpath之類的api實現。這樣的好處:

但還是沒有解決採集頻率的問題,會存在消耗系統效能或遺漏採集的情況。這就需要程序的實時監控了。

最後防線 Linux主機入侵外連行為檢測

主機入侵檢測系統系列 這一篇講述檢測外連行為的原理和技術,可統一檢測宿主機和docker子機 一台主機入侵後,入侵者往往會把資料傳送出去或啟動reverse shell。一般在idc的出口防火牆都會有檢測異常外連行為,可能由於中間有nat,並不一定知道是哪台機器過來,但即使是知道哪台機器過來的,也不...

守好最後防線 企業電子文件加密系統綜述

隨著資訊科技的發展,企業為了提高資訊處理的速度和效率,越來越多的把自己的文件轉化為電子文件的形式,許多企業甚至把90 以上的企業機密資訊以電子文件的形式儲存在企業內網中。同時,企業也大量使用erp crm等電子資訊管理方案。這些新型管理手段的使用,在給企業帶來更高的生產效率的同時也給企業的資訊保安管...

Linux 執行程序實時監控pidstat命令詳解

pidstat主要用於監控全部或指定程序占用系統資源的情況,如cpu,記憶體 裝置io 任務切換 執行緒等。pidstat首次執行時顯示自系統啟動開始的各項統計資訊,之後執行pidstat將顯示自上次執行該命令以後的統計資訊。使用者可以通過指定統計的次數和時間來獲得所需的統計資訊。安裝 yum in...