【概述】:多人共同使用的服務器權限確實不好管理,誤操作等造成故障,無法追究,最好的辦法就是將用戶操作實時記錄到日誌,並推送到遠程日誌服務器上。包括(用戶登陸時間,目錄,操作命令及時間戳等)。以便事後追查。
測試了網上的多種方法,但均含有不同程度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詳細配置門請自行查詢資料)。
可以看到,日誌全部被記錄下來。但如果是重複使用的命令,可能不會記錄。