天天看點

使用snoopy logger記錄使用者指令

在沒有運維堡壘機之前,很多管理者公用root帳号來管理伺服器。

常見的一個情況很多天前有人改了什麼配置,造成故障,追查的時候不能區分是誰做了什麼操作。

shell雖然有曆史功能,但是這個功能并非針對審計的目的而設計,是以很容易被使用者篡改或是丢失。

為了解決這個問題,找到了snoopy logger這個軟體。

其工作原理是将自己的.so插入到/etc/ld.so.preload中,以監視exec系統調用。

我下邊示例是将使用者操作記錄到本地日志,如果為了安全審計,可以将日志通過rsyslog發送到遠端中心日志伺服器上。

簡單流水賬一下步驟。

1.安裝

下載下傳最新版源碼。https://github.com/a2o/snoopy

# yum groupinstall "Development tools"

# unzip snoopy-master.zip

# cd snoopy-master

# autoheader# autoconf

# ./configure

# make# make install

# make enable

# yum groupremove "Development tools"

需要注意的是snoopy logger和Redhat系統可能存在沖突,需要予以确認,方法如下:

關閉BIOS中的Hyper-Threading設定

按照上述步驟安裝好snoopy logger

重起系統,第一次

檢視/var/log/secure檔案确認snoopy logger處于工作狀态

再次重起系統,如果兩次重起都能正常啟動,說明沒有問題。

2.配置rsyslog

# vi /etc/rsyslog.d/snoopy.conf

if $programname == 'snoopy' and $syslogseverity <= '6' then/var/log/snoopy.log

& ~

# /etc/init.d/rsyslog restart

3.配置logrotate

# vi /etc/logrotate.d/syslog

加入/var/log/snoopy.log

# /etc/init.d/rsyslog restart

以後當使用者輸入指令以後,系統會紀錄類似下邊資訊,可以供審計:

Feb 28 14:43:38 1df92-28fasnoopy[1065]: [uid:0 sid:1051 tty:/dev/pts/0 cwd:/etcfilename:/bin/cat]: cat rsyslog.conf

Feb 28 14:47:46 1df92-28fa snoopy[1066]: [uid:0 sid:1051tty:/dev/pts/0 cwd:/etc filename:/usr/bin/tail]: tail/var/log/secure