承接自上文 OSSEC an open source HIDS --- Log Analysised ( 1 )
下面转向我们的主题:Log analysised---The main process.
Log analysised 包含了日志的解码与分析,是非常艰难的工作。
以下是Log analysised的执行步骤:
1.日志预解码 Log pre-decoding
2.日志解码 Log decoding
3.日志分析 Log analysis
接下来详细说明以上三个步骤:
1.日志预解码 Log pre-decoding
目的:从日志中提取一般的信息。
例如:从系统日志头中获取主机名,程序名和时间等等。
条件:日志必须格式良好。
例1:
假设系统日志中新产生了一条系统信息:
Apr 13 13:00:01 enigma syslogd: restart
在OSSEC中,经预解码后,看起来将会像以下这个样子:
time/date -> Apr 13 13:00:01
hostname -> enigma
program_name -> syslogd
log -> restart
例2:
假设SSHD日志中新产生了一条SSHD信息:
Apr 14 17:32:06 enigma sshd[1025]: Accepted password for root from 192.168.2.190 port 1618 ssh2
在OSSEC中,经预解码后,看起来将会像以下这个样子:
time/date -> Apr 14 17:32:06
hostname -> enigma
program_name -> sshd
log -> Accepted password for root from 192.168.2.190 port 1618 ssh2
例3:
假设SSHD日志中新产生了一条ASL信息:
[Time 2006.12.28 15:53:55 UTC] [Facility auth] [Sender sshd] [PID 483]
[Message error: PAM: Authentication failure for username from 192.168.0.2]
[Level 3] [UID -2] [GID -2] [Host mymac]
在OSSEC中,经预解码后,看起来将会像以下这个样子:
time/date -> Dec 28, 2006 15:53:55
hostname -> mymac
program_name -> sshd
log -> error: PAM: Authentication failure for username from 192.168.0.2
2.日志解码 Log decoding
日志解码是为了获得比预解码更深入的信息,这次不是从日志头中提取,而是从日志内容中用正则表达式(Regular Expresion)标识出某些关键字,一般我们需要提取源IP地址,用户名,ID号等等的信息。
我们有上百条默认的解码规则,它们被保存在decoder.xml文件中。
程序启动时,经过OSSEC处理,这些解码规则将被读入一个树状的结构中。
例1:
假设SSHD日志中新产生了一条SSHD信息:
Apr 14 17:32:06 enigma sshd[1025]: Accepted password for root from 192.168.2.190 port 1618 ssh2
在OSSEC中,经解码后,看起来将会像以下这个样子:
time/date -> Apr 14 17:32:06
hostname -> enigma
program_name -> sshd
log -> Accepted password for root from 192.168.2.190 port 1618 ssh2
srcip -> 192.168.2.190
user -> root
3.日志分析 Log analysis
日志被解码之后的下一步,是检查是否有与之相匹配的规则。
OSSEC有400多条默认的规则,用XML形式保存。
程序启动时,经过OSSEC处理,所有规则都被读入一个树状的结构中。
规则只能用来匹配被解码之后的日志信息。
由于解码器的存在,规则和日志的初始化之间没有直接的联系。
匹配过程图解如下:
这种方法类似绝大多数的日志分析工具,不是以水平的方式进行的。
这种方法十分有效,平均每条日志只用匹配7-8条规则,而不是全部的400条。
自此,OSSEC整个日志分析过程的讲解到此完毕。
原文出处:《Log Analysis using OSSEC》 作者:Daniel B. Cid