共计 1610 个字符,预计需要花费 5 分钟才能阅读完成。
rsyslog 是标准 Linux 系统的一部分,能够实时的写日志,并且还可以将日志选择性的发送到远程日志服务器。
要审计用户执行的命令,依赖.bash_history 或 script 是不可靠的,两者虽然记录了用户行为,但是可能被用户篡改。利用 rsyslog 可以将日志实时写入远程日志服务器,从而杜绝用户篡改,提高审计材料的真实度。
以 Ubuntu 为例,下面的办法可以让 rsyslog 记录用户所执行的命令以及时间戳,供审计使用。
1、rsyslog 添加日志
echo “local6.* /var/log/commands.log” >/etc/rsyslog.d/bash.conf
2、在 /etc/profile 中加入
function bash2syslog
{
declare command
command=$(fc -ln -0)
logger -p local6.notice -t bash “$(who am i)” : “$command”
}
trap bash2syslog DEBUG
这里写入本地日志。logger 命令也可以直接将日志写入远程服务器,见 man logger。
建议 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 restart
5、rsyslog 发送日志到远程服务器(可选)
echo “local6.* @@192.168.0.2” >>/etc/rsyslog.conf
6、利用 watchdog 监视 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
EOF
RHEL5.4 部署中央日志服务器之 rsyslog+Log Analyzer http://www.linuxidc.com/Linux/2012-01/51853.htm
CentOS 6.3 下利用 Rsyslog+LogAnalyzer+MySQL 部署日志服务器 http://www.linuxidc.com/Linux/2013-07/86956.htm
RHEL5.4 部署中央日志服务器之 rsyslog+loganalyzer http://www.linuxidc.com/Linux/2010-12/30801.htm
使用 rsyslog mysql 和 logAnalyzer 的日志服务器 http://www.linuxidc.com/Linux/2012-09/70717.htm
CentOS 6.3 下利用 Rsyslog+LogAnalyzer+MySQL 部署日志服务器 http://www.linuxidc.com/Linux/2013-07/86956.htm
Rsyslog 的详细介绍 :请点这里
Rsyslog 的下载地址 :请点这里