常见的开源网络入侵检测系统有Snort、Suricata、Bro、Zeek、OpenDLP、Sagan等,本文将主要分析Snort入侵检测系统。Snort是一种开放源代码、免费、跨平台的网络入侵保护和检测系统,它使用了一种规则驱动的语言,支持各种形式的插件、扩充和定制,具有实时数据流量分析、对IP网络数据包进行日志记录以及对入侵进行探测的功能。具体来说,snort 具有以下功能特点。
1、实时通信分析和网络数据包记录;
2、检查包装的有效载荷;
3、对数据包的协议进行分析,并对内容进行查询匹配;
4、可以检测端口扫描、缓冲区溢出、CGI攻击、SMB探测等许多入侵尝试;
5、报警的方式可以是系统日志、指定文件、UNIX socket或通过Samba到其他操作系统平台。
虽然Snort的功能非常强大,但其代码非常简洁,可移植性非常好。迄今为止数百万的下载量使得Snort成为使用最为广泛的入侵保护和检测系统,并且成为了事实上的行业标准。
Snort有3种工作模式:嗅探器、数据包记录器和网络入侵检测系统。Snort 工作在嗅探器模式时相当于一个抓包软件,仅仅是从网络上读取数据包并连续不断地显示在终端上。当工作在数据包记录器模式时,Snort把数据包记录到磁盘中。网络入侵检测模式是最复杂的,用户可以通过配置让Snort分析网络数据包,并与用户定义的一些规则进行匹配, 然后根据检测结果采取一定的动作。Snort 命令的格式如下:
Snort [-options]