原文地址:http://blog.sina.com.cn/s/blog_704836f40101kyys.html
在没有运维堡垒机之前,很多管理员公用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
参考文档:
http://mewbies.com/how_to_use_snoopy_logger_tutorial.htm
http://knowledge-republic.com/CRM/2011/12/ubuntu-installation-of-snoopy-logger/