Snort 工作流程分为以下四个主要部分:
1、包捕获/解码引擎:首先,利用libpcap从网卡捕获网络上的数据包,然后数据包经过解码引擎填入到链路层协议的包结构体中,以便对高层次的协议进行解码,如TCP和UDP端口。
2、预处理器插件:接着,数据包被送到各种各样的预处理器中,在检测引擎处理之前进行检查和操作。每个预处理器检查数据包是否应该注意、报警或者修改某些东西。
3、规则解析和检测引擎:然后,包被送到检测引擎。检测引擎通过各种规则文件中的不同选项来对每个包的特征和包信息进行单一、简单的检测。检测引擎插件对包提供额外的检测功能。规则中的每个关键字选项对应于检测引擎插件,能够提供不同的检测功能。
4、输出插件:Snort通过检测引擎、预处理器和解码引擎输出报警。
详细工作流程:
一、包捕获/解码引擎:
1、数据包捕获:
Snort通过两种机制来满足网络流量的需要:将网卡设置为混杂模式;利用libpcap从网卡捕获网络数据包。
网卡的默认工作方式是忽略所有不是自己的MAC地址为目的地址的流量。通过将网卡设置成混杂模式,可以监听网络中的所有流量。
数据包捕获函数库是一个独立的软件工具,数据包捕获库函数能直接从网卡获取数据包。Snort就是通过调用该库函数从网络设备上捕获数据包。它工作在OSI模型的数据链路层。在不同的平台上使用Snort系统,需要安装不同版本的Libpcap,