【概述】:多人共同使用的服务器权限确实不好管理,误操作等造成故障,无法追究,最好的办法就是将用户操作实时记录到日志,并推送到远程日志服务器上。包括(用户登陆时间,目录,操作命令及时间戳等)。以便事后追查。

    测试了网上的多种方法,但均含有不同程度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配置】

  1. # echo "*.info    /var/log/client" >> /etc/syslog.conf #配置日志保存文件,把该文件第一行的*.info 提出来。单独放一行。
  2. # service syslog restart  #重启服务

  1. #vim /etc/sysconfig/syslog                   #接收远端日志写入 
  2. SYSLOGD_OPTIONS="-m 1 -r"                    # -m是时间,分钟,-r表示接收远端日志写入 

【客户端client配置】

1、客户机[client],/etc/bashrc吗,末行中添加命令行。将用户操作记录到日志文件。也可以添加到/etc/profile,但是有时候不生效,重新登录必须手动source。

  1. #vim /etc/bashrc
  2. export PROMPT_COMMAND='{ msg=$(history 1 | { read x y; echo $y; });logger "[euid=$(whoami)]":$(who am i):[`pwd`]"$msg"; }'
  3. # source /etc/bashrc

2、客户机修改日志服务器。

  1. # echo "192.168.217.129 logserver" >> /etc/hosts       #日志服务器地址 
  2. # echo "*.info   @logserver" >> /etc/syslog.conf       #将info日志推送到日志服务器,把该文件第一行的*.info 提出来。单独放一行。 
  3. # service syslog restart                               #重启syslog 

【测试】在客户机输入命令,在日志服务器上查看(注意防火墙,syslog详细配置门请自行查询资料)。

可以看到,日志全部被记录下来。但如果是重复使用的命令,可能不会记录。