本文主要是介绍【开源】Bro、Snort/suricata对比,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
场景 | 前两者的缺点就是它的优点 缺点:学习有一定的门槛。 | 支持Snort/ suricata的设备不能与网络上其他支持Snort的设备通信,也不能集中管理它们。 对于小型企业来说,它们可能工作得很好,但对于中型或大型网络,它们可以带来更多的工作,而带来更少的价值。 |
规则分析 | Bro提供了一些关键的高级特性:强大的用于对事件做深入分析的策略脚本、规则与策略脚本的交互, | Snort也对一些应用层协议如HTTP、PORTMAP、TELNET,FTP做了些简单的解码和处理(也即Snort预处理器功能),这些处理先对匹配做了一些优化(相比bro的事件生成引擎机制要简单得多),然后再根据不同的协议特征进行匹配. 相比来说Snort检测方式还是简单粗糙的,但是Snort新的版本2.0后也支持了很多高级特性:如支持正则表达式的数据匹配、规则关联等。 |
IPS | 同时2者都可以提供IPS的功能 Snort用一种Inline模式结合Iptable能提供对所有攻击数据包进行拦截的功能(drop掉数据包),但是这种情况下Snort通过Iptable截获数据包而不是通过libpcap库获取数据包的拷贝,自己特征匹配后再交给Iptable处理,作为防火墙来说,势必严重影响其处理速度,我们这里还是不宜使用。
| Bro通过rst应用程序直接给对方发送TCP RST包中断和对方的连接,但是细读帮组说明文档,没有看到其对udp包如何拦截(个人感觉仅仅关闭tcp还谈不上IPS功能)。而仅仅对于tcp的连接关闭,Snort也有更好的支持,用关键字resp可以关闭双方或者单方的连接。 |
影响力 | snort由于知名度比较高,使用广泛,国内几乎成为IDS的代名词,所以相关的辅助工具很多,比如报警日至分析工具(SnortSnarf),数据库浏览分析工具(ACID),还有Snort有一个很好的规则配置以及智能升级工具IDS Policy Manager(Windows2000/xp平台),用来升级配置规则都很简单. |
|
数据库检测 | snort支持很多检查数据库(Oracle,my_sql,ms_sql)攻击的规则,如删除Oracle数据库中表的企图等, | Bro对数据攻击支持几乎没有. |
规则库 | snort由一个专业的商业公司(Sourcefire)支持维护, 其VRT(Vulnerability Research Team) 项目组专们跟踪当前网络攻击,提供了攻击特征库的实时升级(并且负责测试规则),目前(2006-2-5)的特征规则数目达到5600多条, | 特征规则库只有随Bro版本升级时候一起升级发布!Bro推出了一个工具Snort2Bro,将Snort的规则转化为Bro的脚本语言,这个工具能转化大部分规则! |
日志 | Snort还可以直接写到Syslog或者数据库oracle,my sql,ms sql | Bro不行。Bro可以直接通过e-mail报警,Snort必须通过第三方工具Swatch。 |
检测能力扩展 | Snort基本上只能简单的匹配一个个规则,snort利用sfPortScan,stream4预处理插件也可以检测出ip,tcp,udp的portscan,以及ddos攻击等。 | Bro可以在事件处理(Event handle)中对一个个网络行为进行分析,可以分析出一些异常行为!但是对于一般常见的行为如tcp的连接,端口扫描 |
研发投入 | .Bro策略脚本的编写需要不少时间和精力的投入,Bro的作者提供了完整的使用手册,包括各种特定数据类型的说明、引擎本身支持的函数说明、如何使用的示例,用户必须经过一定时间的学习可以完全掌握。实际上bro策略脚本提供了一个基本框架,里面定义了一些事件处理器(event handle)和函数,感觉类似于windows下的消息驱动机制,事件生成引擎用一个类似message queue的event queue,然后会根据应用层协议自动调用这些event handle, 第三方可以补充修改它扩充功能。 | Snort 规则脚本简单的多,一条规则仅仅是简单的包括规则头和规则体,头部制定一个动作行为,如alert,log,pass等. 规则体就是一些关键字构成动作的条件.
这样当用户对规则进行配置的时候,一般也就是使用不使用这条规则,这样只要提供一个索引文件,把所有得规则对应的文件名,位置记录下来,用户配置好了后,就根据这个文件找到规则所在文件去注释或者启用一条规则,很方便简单。 Bro由于规则是写在脚本语言程序里,要修改脚本程序(一般也就是注释掉一段代码),相比snort注释一行代码要麻烦点。 |
规则可读性 | Snort每条规则都有一个说明文档,对该规则功能,特征作了详细的说明, | bro的规则必须自己读懂一个个脚本语言程序,自己分析程序代码提供的功能! 不过bro的规则一般也都是Snort的子集,有Snort作为参考,bro的规则好理解多了!Bro缺少的规则我们可以用其工具Snort2Bro,将Snort的规则转化为Bro的。 |
资料检索 | Snort使用普及的多,网上中文资料很多, | bro还在发展状态,网上的中文资料很少,必须自己去看提供的user-mannul,reference-mannul,总共400多页!完全是英文的,对于英文不是很好的读者,看懂理解要花费不少时间.本人就是在读这些英文手册以及研究自带脚本提供的功能上浪费了大量时间(主要是英文看得太累,一句话要看n遍才看的是懂非懂,看着看着人就发懒,看看其他东西调节去了^_^)!不过最痛苦的时候基本已经过去,现在对IDS有了一定理解回头再查看也简单容易理解多了! |
| Bro | Snort | Wireshark& Tshark |
优势 | 高级的 | 正则表达式,签名 | 流量分析 |
关注数据 | 连接对象, | 数据包, | 协议剖析 |
可编程性 | Bro DSL | 不 | 不 |
实时或重放 | 兼备 | 兼备 | Pcap重放 |
应用层 | 应用层 自动化, | 自动化, | 手动, |
bro除了上述实验的功能,还提供了不少关键的高级特性,例如在事件生成引擎中实现应用层协议功能。在计算机取证分析中,可以高效地分析网络流量,从而找出入侵的痕迹,帮助管理者追究责任、减少损失。
bro是一个值得网络入侵检测系统开发者参考和借鉴的好工具,也是具有一定网管经验的用户定制攻击检测功能的选择。
这篇关于【开源】Bro、Snort/suricata对比的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!