如果用户执行的指令是在系统软件中本地执行的,那么对它们进行审计是非常简单的。您可以更改HISTTIMEFORMAT的参数,例如:
export HISTTIMEFORMAT="[%F %T $(who am i)] "然而,仅仅依靠。bash_history或者script不靠谱。虽然它们记录了用户的个人行为,但很可能被用户篡改和消除。
Rsyslog是标准Linux系统软件的一部分,可以即时写日志,也可以有选择地将日志发送到远程控制日志服务器。
Rsyslog可用于将日志立即加载到远程控制日志服务器,从而避免用户篡改,提高审计原始资料的真实性。
以ubuntu为例,下面的方法使rsyslog能够记录用户执行的指令及其时间格式,以供审计应用。
1、rsyslog加log
echo -e "local6.* /var/log/commands.log" >/etc/rsyslog.d/bash.conf2.Addin/etc/profile
function bash2syslog { declare command command=$(fc -ln -0 2>/dev/null||true) if [ "$command" != "" ];then logger -p local6.notice -t bash -- "$(who am i)" $PWD $USER: "$command" fi } trap bash2syslog DEBUG在这里加载本地日志。然后rsyslog立即将日志加载到虚拟服务器中。
建议root用户的umask值设置为027或007,避免/var/log/commands.log文件被普通用户查询。
3.原木旋转
写/etc/logrotate.d/rsyslog在中间提升。
/var/log/commands.log { rotate 30 weekly missingok notifempty compress delaycompress sharedscripts postrotate reload rsyslog >/dev/null 2>&1 || true endscript }4.重启rsyslog,用户退出后再次登录。
service rsyslog restart5.rsyslog将日志推送到虚拟服务器(可选)
echo "local6.* @@192.168.0.2" >>/etc/rsyslog.conf6.通过看门狗监控rsyslog,如果服务项目终止,重启设备(可选)
apt-get install watchdog update-rc.d watchdog defaults Cat >> /etc/watchdog.conf <<EOF watchdog-device = /dev/watchdog admin = root interval = 1 logtick = 1 log-dir = /var/log/watchdog pidfile = /var/run/rsyslogd.pid EOF7.整个目标日志服务器配备了/etc/rsyslog.d/commands-audit.conf。
$template LOG_BY_HOSTIP, "/var/log/command-audit/%fromhost-ip%-commands.log" local6.notice ?LOG_BY_HOSTIP8.其他促销
设置/etc/profile
shopt-shistappend,
让不同的对话共享资源历史数据,而不是临时存储在运行内存中。只有在对话被撤回后,资源才能被共享。
适度更改环境变量PROMPT_COMMAND
请参考文本文档
http://www.pointsoftware.ch/howto-bash-audit-command-logger/
http://www.tldp.org/HOWTO/Bash-Prompt-HOWTO/
http://blog.rootshell.be/2009/02/28/bash-history-to-syslog/
http://askubuntu.com/questions/93566/how-to-log-all-bash-commands-by-all-users-on-a-server
http://askubuntu.com/questions/393574/logging-of-commands-executed-in-bash
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)