简介
前面两篇文章已经对部分代码做了分析,这里从整体上总结下snort处理配置文件的流程。
http://my.oschina.net/u/572632/blog/289256
http://my.oschina.net/u/572632/blog/289421
流程分析
snort读取配置文件是为了根据配置文件初始化某些数据或使能某些结构。但同时snort的配置文件又支持包含(include)其他文件的功能,并且支持换行('\')符.
根据以上限制对照分析,配置文件的处理流程如下图:
首先初始化必要的基础结构
然后解析顶层文件
每个被解析单元是以一条规则为单位
分析规则部分特征来触发不同的解析方式
如果被触发的include方式则递归解析被包含的子文件
根据以上发现snort解析配置文件最重要的思想就是根据解析出来的数据选择下一步细化处理的插件,这样的处理方式相当灵活.
结构分析
将待动态加载配置的模块看作数据初始化管理中的单元,存放待获取配置文件完成初始化接口的集合看作插件管理,将文件顶层词法分析看作文件解析管理。
待初始化的模块将自己的接口提供给插件管理注册
插件管理整理各个模块的初始化接口,并自己再注册部分必要的规则分析接口
文件解析管理负责不断读取配置文件,并以规则条目为顶层单元触发顶层插件
不断的分析该规则特征,并在提取到满足触发条件的特征后触发相应的插件.
在解析规则的过程中也触发了部分待初始化的数据注册的接口,这些接口也就根据配置文件对相应的模块进行了使能和初始化.