【概述】:多人共同使用的服务器权限确实不好管理,误操作等造成故障,无法追究,最好的办法就是将用户操作实时记录到日志,并推送到远程日志服务器上。包括(用户登陆时间,目录,操作命令及时间戳等)。以便事后追查。
测试了网上的多种方法,但均含有不同程度bug,或者不能满足需求。对于安装修改bash4.1的方法,暂未测试。力求在尽可能少的改动服务器的原则上,寻求解决方案。测试过至少4这种方法。当然本文此法也不是最好的,简单单是不隐蔽。在此感谢,itnihao,hxl2009等童鞋的共同测试与讨论。其中测试过的2种方法有:
http://blog.rootshell.be/2009/02/28/bash-history-to-syslog/
http://jablonskis.org/2011/howto-log-bash-history-to-syslog/
【先睹为快】
【环境】Centos 5.8 ,2台。
日志服务器IP:192.168.217.129
客户机IP:192.168.217.130
【服务器端logserver配置】
- # echo "*.info /var/log/client" >> /etc/syslog.conf #配置日志保存文件,把该文件第一行的*.info 提出来。单独放一行。
- # service syslog restart #重启服务
- #vim /etc/sysconfig/syslog #接收远端日志写入
- SYSLOGD_OPTIONS="-m 1 -r" # -m是时间,分钟,-r表示接收远端日志写入
【客户端client配置】
1、客户机[client],/etc/bashrc吗,末行中添加命令行。将用户操作记录到日志文件。也可以添加到/etc/profile,但是有时候不生效,重新登录必须手动source。
- #vim /etc/bashrc
- export PROMPT_COMMAND='{ msg=$(history 1 | { read x y; echo $y; });logger "[euid=$(whoami)]":$(who am i):[`pwd`]"$msg"; }'
- # source /etc/bashrc
2、客户机修改日志服务器。
- # echo "192.168.217.129 logserver" >> /etc/hosts #日志服务器地址
- # echo "*.info @logserver" >> /etc/syslog.conf #将info日志推送到日志服务器,把该文件第一行的*.info 提出来。单独放一行。
- # service syslog restart #重启syslog
【测试】在客户机输入命令,在日志服务器上查看(注意防火墙,syslog详细配置门请自行查询资料)。
可以看到,日志全部被记录下来。但如果是重复使用的命令,可能不会记录。