预编译规则
根据上面的介绍,我们知道ossec有两种规则,其中解码器负责日志解码、分类,规则实现入侵检测和日志分析。想了解预编译规则能干什么,我们现看看ossec处理日志(以syslog为例)的基本处理流程:
- ossec-logcollector(源代码在src/logcollector)监控各种日志的变更,ossec支持syslog、mysql、postgresql、snort、nmap,以及djbmultilog等日志;
- 一旦发现日志变动,就读取信产生的日志,根据日志类型的不同,分别调用read_syslog、read_djbmultilog、 read_nmapg、read_mysql_log、read_snortfull、read_postgresql_log等函数进行处理。在这里我 们只关注syslog的处理。
- read_syslog读取日志条目,调用SendMSG向analysisd(源代码在src/analysisd)投递。在ossec启动时,analysisd会打开一个UNIX套接字,接收事件日志,进行分析处理。
- ossec-analysisd调用OS_ReadMSG_analysisd函数接收事件信息,然后调用OS_CleanMSG将收到的数据转换为Eventinfo结构。
Eventinfo
我们先看一下Eventinfo:
typedef struct _Eventinfo
{
/* 从事件信息中提取的数据 */
char *