Snort作为一个轻量级的网络入侵检测系统,在实际中应用可能会有些力不从心,但如果想了解研究IDS的工作原理,仔细研究一下它的源码到是非常不错.首先对snort做一个概括的评论。
从工作原理而言,snort是一个NIDS。
[注:基于网络的入侵检测系统(NIDS)在网络的一点被动地检查原始的网络传输数据。
通过分析检查的数据包,NIDS匹配入侵行为的特征或者从网络活动的角度检测异常行为。
]网络传输数据的采集利用了工具包libpcap。
snort对libpcap采集来的数据进行分析,从而判断是否存在可疑的网络活动。
从检测模式而言,snort基本上是误用检测(misusedetection)。
[注:该方法对已知攻击的特征模式进行匹配,包括利用工作在网卡混杂模式下的嗅探器被动地进行协议分析,以及对一系列数据包解释分析特征。
顺便说一句,另一种检测是异常检测(anomalydetection)。
]具体实现上,仅仅是对数据进行最直接最简单的搜索匹配,并没有涉及更复杂的入侵检测办法。
尽管snort在实现上没有什么高深的检测策略,但是它给我们提供了一个非常优秀的公开源代码的入侵检测系统范例。
我们可以通过对其代码的分析,搞清IDS究竟是如何工作的,并在此基础上添加自己的想法。
snort的编程风格非常优秀,代码阅读起来并不困难,整个程序结构清晰,函数调用关系也不算复杂。
但是,snort的源文件不少,函数总数也很多,所以不太容易讲清楚。
因此,最好把代码完整看一两遍,能更清楚点。
2023/9/19 7:14:15
1.45MB
snort
1