电脑技术学习

用Syslog 记录UNIX和Windows日志的方法

dn001

  在参数中加入*,表示允许接收来自任何端口的log信息。这点,在记录Unix类主机信息的时候感觉不到加不加有什么区别,因为UNIX类主机都是用514端口发送和接收syslog信息的。但是在接收Windows信息的时候就非常重要了。因为windows的syslog软件不用514端口发送信息,这会让默认配置的syslogd拒绝接收信息。笔者同样在Linux系统下用linux的syslogd来配置log服务器,发现linux下的syslogd就没有那么多限制,只要给syslogd加上-r参数,就可以接收来自任何主机任何端口的syslog信息,在这方面来说FreeBSD的默认配置安全性要比linux稍微高一点。

  修改好syslogd参数后,我们需要修改一下/etc/syslog.conf文件,指定log信息的存放路径,

  比如你要记录其他系统的远程登陆登出信息并指定日志存放路径,则需要修改以下行:

  authpriv.* /var/log/testlog

  这表示把系统的登入登出日志(包括本机系统登陆登出日志)存放到/var/log/testlog文件中。

  当然,这是最简陋的做法,因为这样会把所有服务器的登陆登出信息存放在一个文件中,察看的时候很不方便,通常的做法是用一个脚本,对接收到的信息进行简单的分拣,再发送到不同的文件。

  如下设置:

  authpriv.* |/var/log/filter_log.sh

  在记录目标前面加上“|表示把接收到的信息交给后面的程序处理,这个程序可以是一个专门的日志处理软件,也可以是一个自己编写的小的脚本,举例:

  #!/bin/sh

  read stuff

  SERVER=`echo $stuff |awk ‘{print $4}’`

  echo $stuff >> /var/log/login_log/$SERVER.log

  这个简单的脚本以IP作为分类依据,先用read读取log信息,用awk取出第四字段(即IP地址或者主机名所在的字段),以该字段为文件名存放该主机的日志。

标签: