之后就会比较麻烦;而通过udp传输则可能会由于udp 的不可靠性导致丢数据,即不能记录
所有的命令;另外传输过程易被截获,也可以被恶意填充垃圾信息。所以syslog-ng出来了,
用来代替系统自带的syslog。
去 syslog-ng 官方网站下载最新的安装包, 3.2的版本需要下载eventlog和syslog-ng
就可以了,较老的版本则还需要下载libol。假设下载的文件保存在/usr/local/src下,我
们进行编译,命令如下:
cd /usr/local/src
tar xzvf eventlog_0.2.12.tar.gz
cd eventlog-0.2.12/
./configure --prefix=/usr/local/eventlog
make
make install
cd ../
tar xzvf syslog-ng_3.2.2.tar.gz
cd syslog-ng-3.2.2/
export PKG_CONFIG_PATH=/usr/local/eventlog/lib/pkgconfig/
./configure --prefix=/usr/local/syslog-ng --enable-tcp-wrapper
make
make install
注意在编译 syslog-ng 的时候需要设定环境变量指定 eventlog 的路径,而我们还使用
了 syslog-ng的 tcp-wrapper功能,以便日后做访问控制。接下来做一些配置文件相关的准
备工作,比如做lib库的链接,创建相关的目录:
ln -s /usr/local/eventlog/lib/* /lib/
cd /usr/local/syslog-ng/etc/
mkdir -p /usr/local/syslog-ng/var
mkdir -p /var/log/syslog-ng/
然后对配置文件进行编辑vi syslog-ng.conf,加入如下配置:
destination d_rhosts {
file("/var/log/syslog-ng/$HOST/$FACILITY"
owner(root) group(root) perm(0600) dir_perm(0700)
create_dirs(yes));
};
log {
source(s_network);
destination(d_rhosts);
};
然后再运行syslog-ng 程序:
/usr/local/syslog-ng/sbin/syslog-ng
如果出错则视具体错误信息进行分析解决,如果正常的话,我们看下端口514 是否正常
工作了:
[root@linuxtest etc]# netstat -nlpu
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address
State PID/Program name
udp 0 0 0.0.0.0:514 0.0.0.0:*
2468/syslog-ng
[root@linuxtest etc]#
Udp 的 514 端口开放,对应的程序为 syslog-ng,就表明正常了。我们看看收集上来的
日志:
[root@linuxtest etc]# tail -f /var/log/syslog-ng/192.168.14.107/user
Apr 19 11:02:01 192.168.14.107 -bash: HISTORY: PID=15298 PPID=15297
SID=15298 User=zsf CMD=w
Apr 19 11:03:00 192.168.14.107 root: test by zsf
Apr 19 11:03:11 192.168.14.107 -bash: HISTORY: PID=15298 PPID=15297
SID=15298 User=zsf CMD=cat /etc/passwd
Apr 19 11:03:15 192.168.14.107 -bash: HISTORY: PID=15298 PPID=15297
SID=15298 User=zsf CMD=cd /tmp
Apr 19 11:03:44 192.168.14.107 -bash: HISTORY: PID=15298 PPID=15297
SID=15298 User=zsf CMD=ll
Apr 19 11:03:54 192.168.14.107 -bash: HISTORY: PID=15298 PPID=15297
SID=15298 User=zsf CMD=cd /var/
Apr 19 11:03:54 192.168.14.107 -bash: HISTORY: PID=15298 PPID=15297
SID=15298 User=zsf CMD=ls
优化操作记录日志
通过简单的修改syslog-ng 配置,我们就将各机器上的日志收集上来了,自然用户的操
作记录也都收集上来了。syslog-ng 的强大远不止于此,其配置指令主要包括 source、
filter、destination 和 log 等。Source 指令表示本地日志消息和远程日志消息的来源。
Filter 指令允许基于设备、级别/优先级、程序名称、主机名称或正则表达式匹配来分离日
志消息。destination 可以是文件、管道、流和数据报、UDP 或 TCP 连接、ttys 或程序。
log 指令是 source、filter 和 destination 指令的集合,这些指令定义如何处理匹配的
日志消息。还可以进行正则匹配,比如我们想将所有的 history都收集起来记录到某个文件
里,加上如下配置:
destination r_bash_history {file("/var/log/syslog-ng/$HOST/history"
owner("root") group("root") perm(0600) dir_perm(0700) create_dirs(yes));}; |