[开源项目之三]
开源的IDS(入侵检测系统)-- Snort
说起Snort可以说大多数据搞网络安全的人都对它非常了解,甚至于可能基于它做过开发。它是一个Open Source形式发行的网络入检测系统。由Martin Roesch编写,并有分布于世界各地相当多的程序员对它进行着维护和升级。
Snort支持多种系统软件和硬件平台:例如 Red Hat Linux、Debian Linux、HP-UX、Solaris(包括x86和Sparc)、NetBSD/OpenBSD、MacOS等等。它的代码遵循GNU/GPL协议。
Snort相对于昂贵的商业系统有很大的优势,例如:它系统尺寸、易于安装、便于配置。从功能上讲,它也毫不逊色,并且有相当在的灵活性。从另一方面讲,snort不仅是一个网络IDS,还可以做为网络数据包分析器(嗅探器Sniffer)和记录器(Logger)来使用。
Snort采用了基于规则的工作方式,对数据包内容进行规则匹配来检测多种不同的入侵行为和探测活动。例如缓冲区溢出,隐藏端口扫描、CGI攻击、SMB探测等等。
Snort是建立在libpcap基础之上的,LibPCAP为它们提供了一个可移植的数据包截获和过滤机制。整个程序的配置、规则的解析及数据结构的初始都在系统进行数据包分析 和检测之前完成,以保证以对每个数据包的处理时间压缩到最少,以获得最好的运行性能。
它的系统架构强调性能、简洁和灵活性,可分为三个子系统:数据包解析器、检测引擎和日志/报警子系统。所有的子系统也都是建立在LibPCAP的基础上的。这说说来,如果你对WinPCAP比较熟的话,移植或改装它应该费力不大。
近年,国内的入侵检测系统也大量上市了,性能功能姑且不论,但有很大一部分都是在借鉴别人的,snort就是他们的第一个研究对象。前些日子,我见一本专讲入侵检测的书,里面就以很大篇幅讲述了snort,并对snort的源代码做了一定的注释和讲解。
参考资料:
1.snort官方网站
2.<<网络入侵检测系统的设计与实现>> 唐正军 电子工业出版社 2002年4月北京