在沒有運維堡壘機之前,很多管理者公用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