做linux主機入侵檢測系統,對程序監控是乙個難點,要做不遺漏,也要做不影響系統效能,是非常困難。在現代作業系統中,任何攻擊行為都是借助程序這個執行單元來進行,檢測攻擊行為往往是對程序監控,檢測是否存在異常行為。
基本上,使用linux的人都會用ps
來獲取程序資訊。如果是獲取所有程序,往往是
ps -ef
或
ps axu
如果是放在主機入侵檢測系統實現,往往會使用fork/execv
或popen
或system
之類的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...