LINUX 操作记录到syslog,并发送到syslog服务器上
首先配置命令记录到syslog中:
在客户端的/etc/bashrc 下添加:
logger -p local3.info \"`who am i` ======================================= is login \"
export PROMPT_COMMAND='{ msg=$(history 1 | { read x y; echo $y; }); logger -p local3.info \[ $(who am i)\]\# \""${msg}"\"; }'
logger命令:
为syslog的shell接口命令,有一些参数,这里用了-p,主要是让它记录日志类型和级别。具体用法,请man一下
不知道你想过没有,把命令直接追加到日志文件中,这样是也是可以,但是有两个问题,文件只存储本机上了,可人为删除,
这样syslog不可以把记录传走,还是不安全,这样做是为了配合日志服务器的记录,达到安全性。还可以做监控报警
架构是:syslog-ng swatch
再配置日志的输出:
上面已经把日志输入到系统的SYSLOG中了,现在目的把日志存储到哪的问题,上面的配置默认是到/var/log/message中的,
下面我更改一下:
1:本地存储:
修改/etc/syslog.conf # 如果是CentsOS6以上版本,修改/etc/rsyslog.conf
加入
local7.info /var/log/user_command.log
上述是指定将local7这个类型的info级别的日志输入到/var/log/user_command.log中,当然还需要去配置回滚问题(这里不讲),这也可以使用*来匹配。这个不用我说了
也可以将日志传到别的地方,本次就是这样配置的,加入:
local7.info @log.server.com
下面是输出结果示例:
Nov 7 15:31:11 x.x.x.x root: [ root pts/0 2013-03-18 10:44 (10.57.41.86)]# source /etc/bashrc
Nov 7 15:31:20 x.x.x.x root: [ root pts/0 2013-03-18 10:44 (10.57.41.86)]# source /etc/bashrc
Nov 7 15:31:20 x.x.x.x root: [ root pts/0 2013-03-18 10:44 (10.57.41.86)]# echo poll
解释 :因客户端的与服务端的时间不一样,所以这里看到两个不一样的时间,这个也一个很好的参考,还是保留着吧,
这里能看到的内容有:目标IP,目标用户,目标时间,目标登录IP,所执行过的命令