Snort是最初于1998年开发的开源入侵检测系统(IDS)/入侵防护系统(IPS)

Snort标志性格式的规则是整个威胁情报业的事实标准,它借用当时几款流行的开源工具(这些工具用于给网络流量指定唯一的特征,当特征满足时,则产生告警。在IPS模式下,如果希望,也可以丢弃或者阻止通信),提供了一种简单的规则定义语言。作为最早的全功能开源IDS平台,它在安全社区非常普及。普及性促使Snort成熟,但是对它的底层架构是极大的考验。这个架构在被设计的时候并不是针对这么大的需求量来设计的。

开发人员已经开始其他项目,以解决Snort架构的缺陷。Suricata很大程度延续了Snort的基本思想,但同时利用了现代硬件的优势,并支持LUA脚本语言,以支持检测更加复杂的威胁。相比之下,Bro采取完全不同于Snort和Suricata的方式来解决核心问题。

本文中,我们将以一个高的角度讨论这三者的差异,优势和劣势,以及何时以及如何从最佳实践的角度使用它们。

Snort与Suricata规则

Snort规则的简单性和灵活性对威胁研究者有很大的吸引力,这些研究者可以给已知漏洞创建Snort规则,并快速的检测其效力。正因此,在一二十年的时间里,创建了大量的Snort规则库。

虽然Snort规则编写相对简单,但这也使得为复杂条件编写规则变得越来越复杂。比如,编写识别流向特定IP地址的流量的规则相对简单,编写查找http/web流中请求特定URL的规则则变得复杂。编写查找http请求肯定回应的规则依然复杂。

随着规则变得更复杂和网络速度的增加,Snort的架构开始使有意义的部署变得更具挑战性。Suricata于2009年推出,旨在尝试克服其中的一些挑战。它从一开始就提出一种架构,以支持与高级威胁保持同步发展。

Suricata提供了与Snort规则的兼容性,但引入了多线程以更好的利用现代硬件。这从理论上在同一硬件上可以应对更快网络和处理更多的规则。Suricata还支持LUA脚本语言,以提供更大的灵活性来创建规则,从而实现使用传统Snort规则难以或无法实现的条件。

#
alert http $HOME_NET any -> $EXTERNAL_NET any Options:msg:”ET TROJAN
Possible Zeus GameOver Connectivity Check”; flow:established,to_server;
urilen:1; content:”|3b| MSIE “; fast_pattern:only; http_user_agent;
content:!”Accept-Encoding|3a 20|”; http_header; content:”Host|3a
20|www.google.com|0d 0a|”; http_header;
pcre:”/^Accept\x3a\x20\*\/\*\r\nAccept-Language\x3a\x20[^\r\n]+\r\nUser-Agent\x3a\x20[^\r\n]+\sMSIE\s\d+\.\d+[^\r\n]+\r\nHost\x3a\x20www\.google\.com\r\nConnection\x3a\x20Close\r\n(?:\r\n)?$/H”;
classtype:trojan-activity; sid:2018242; rev:4;

示例1:识

别GameOver Zeus僵尸网络连接的Snort/Suricata规则

最后,如果你在自己的硬件上安装这些解决方案,Snort和Suricata有一些小差异。Snort很容易安装,可用作许多架构的预编译软件包,并且有许多应用程序来简化这个过程。Suricata则相对复杂,它必须从源码编译。虽然这对经验丰富的Linux用户来说不是一个大障碍,但仍然值得一提。

Bro IDS

从技术上讲,自1995年以来,Bro一直处于发展中,但该项目在2010年美国国家科学基金会的资助下得到了更多的支持和关注。Bro因其独特的灵活性和能力而受到关注,现在正从“最佳保密”的状态发展成为任何安全团队武器库的标准组成部分

#
Bro Script to perform the same detectionevent
HTTP::log_http(rec: HTTP::Info) {if
( /www\.google\.com/ in rec$host && |rec$uri| == 1 ) {if
( rec?$user_agent && /MSIE [0-9]+\.[0-9]+/ in rec$user_agent) {#
Found the things, print message to stdoutprint
fmt(“Host %s performed GameOver Zeus Connectivity Check. UID:%s”,
rec$id$orig_h, rec$uid);}}}

示例2:使用Bro脚本识别Game

Over Zeus僵尸网络连接

Bro采用了不同于Snort和Suricata的方法。Bro使用Bro脚本而不是规则来定义网络流量。Bro脚本结构上类似C++语言,使熟悉C++的开发者可以更轻松地为复杂的网络事件编写条件。

Bro对信息的输出也采取了不同的方法。Snort规则是围绕检测的是异常这样的思想设计的,而Bro在其日志中提供了很多的灵活性,并不会断言输出始终是告警。

因此,Bro脚本不仅可以用于查找特定威胁和触发告警,也可以查找和记录任何你想要跟踪的事件。你是否想创建一个表来跟踪发送给每个用户的http响应代码?是否想记录每个上传的.xls文件?Bro被设计成监控网络元数据的瑞士军刀。因此,对于那些希望持续监控网络行为的人来说,Bro不乏热烈的追随者。

虽然Bro可以用作传统的IDS,但用户使用Bro来记录详细的网络行为更频繁,并且可以保留长期记录,包括:

1> 所有HTTP请求和结果

2> 自动记录所有DNS请求(除开DNS服务器),以确定用户是否正在访问备用DNS系统,该系统的响应可能与内部服务器不同

3> 与MAC和IP地址相关的表

4> 自动监控用户名及其相关的IP地址

这些数据在以前只能通过长时间的抓包得到。使用Bro收集元数据不仅比抓包更有效地存储信息,还能以数据包捕获无法实现的方式进行搜索、索引、查询和报告。数据可以导到到你选择的解决方案中,例如SEIM、Splunk产品,甚至是一个像ELK堆栈(Elastisearch, Logstash, Kibana)这样的开放数据仓库,或者宏大的数据池解决方案中。

最重要的是,随着威胁环境的变化,你可能需要跟踪你网络上更多类型的信息。Bro集成了多个协议解析器,允许用户多个事件。使用Bro脚本,更改现有脚本收集协议事件的关键数据,或者创建新脚本补充现有数据收集都很容易。

不过,这种灵活性是有代价的。像Snort或Suricata这样的基于规则的解决方案,在监控一般的告警方面更加有效。Bro的深度包检测使得它对执行这些类型的任务要求更多的资源,并且可能要求像基于规则的系统一样要求自身的系统以线速执行。

此外,尽管Bro已经获得了更多的支持和关注,但Bro脚本携带的可用威胁检测规则仍然比Snort/Suricata要少,并且新的威胁检测规则通常会以Snort格式出现,尽快这种情况可能会随时间而改变。因此,如果你在寻找只是提供基本IDS功能的系统,那么与Snort规则相兼容的系统可能是可取的。

最后,安装Bro可能会极具挑战性,并且往往需要丰富的专业知识才能有效部署,Bro社区正在努力使这个过程简单化。不过,与Snort和Suricata相比,Bro的设置和维护对于有经验的用户来说最多也是具有挑战性。

保持平衡

一般地讲,每个解决方案都有其优势。基于规则的解决方案对已知威胁非常有用,因为它们往往与Snort规则相兼容,而Snort规则是威胁情报最大公共和私有存储库类别之一。Suricata可实现高性能流量检测,这意味着你可以处理更多的规则来应对大流量。最后,你无法检测到不可见内容,这样有利于性能提高。

另外,Bro提供的质量数据为网络基线、主机和服务分析、被动仓库收集、策略实施、异常检测和威胁搜索提供了原始材料,并为识别隐藏在你网络中的威胁提供了基础。它还提供详细的取证信息,以便在事件发生后回答关键问题:什么行为造成了破坏,我在将来要如何阻止它?以及还有哪些设备与受损设备进行了互动,以便我可以确定风险等级并给这些设备建立防护措施。

如果考虑Pereto原则(80/20规则),80%(或更多)事件将由在Suricata系统中很容易识别甚至被Snort规则阻塞的已知威胁引起。这些已知威胁往往不会成为最昂贵问题的根源。20%(或更少)的问题来自以前未知的威胁,这些威胁没有现成可用的特征。如果你的组织受到针对性攻击,则有可能来自这些类型的威胁,并且通常这些威胁更具破坏性且成本更高。

理想情况下,网络监控的最佳实践将包括一个Suricata应用,以快速识别已知特征的攻击。同时结合Bro以维护重要数据,这些数据不仅提供对Suricata产生的告警进行适当分类的上下文,还提供不仅包括事件本身,也包括整个威胁的全面时间表:什么导致了该事件,威胁产生之后会发生什么。

最后,将Suricata和Bro的输出关联起来作为猎杀威胁的起点至关重要。猎杀威胁假定你从一个理论或者假设开始,开始搜索你环境中的可用信息,以确定是否存在逃避检测的威胁。

这个过程可以从查看重要资产开始,以观察谁正在以及如何访问它,最终确定是否存在需要调查的异常。最基本的出发点之一是,你关注的系统可能会受到损害。如果使用Suricata的告警作为起点,可以以Bro中记录的与该告警相关的会话为支点,然后扩展到该事件之前和之后的连接,以查看是否有任何其他网络通信加强或解释该事件。

最后,将两种工具结合起来可以提供最好的解决方案。它提供准确的告警,划分告警所需的相关数据,并专注于最高优先级事件。最后,它提供积极威胁检测的基础,以确保高价值资产的有效性。

图1:Snort/Suricata与Bro优势互补

原文地址:https://bricata.com/resources/white-paper/bro-vs-snot-or-suricata/

Bro与Snort或Suricata对比相关推荐

  1. 【开源】Bro、Snort/suricata对比

    场景 前两者的缺点就是它的优点 缺点:学习有一定的门槛. 支持Snort/ suricata的设备不能与网络上其他支持Snort的设备通信,也不能集中管理它们. 对于小型企业来说,它们可能工作得很好, ...

  2. NSM和入侵检测掌握IDS规则和警报的指南

    第1章:网络安全监视简介 再次问好!我是托尼·罗宾逊(Tony Robinson),那个您可能会或可能不会怀疑他是否只是在那里写书和提供漫画救济的家伙.最近,我被要求撰写有关如何解释IDS / IPS ...

  3. Emerging Threats rules suricata规则功能介绍

    本章节介绍一下Emerging Threats rules中针对suricata的那些规则的功能. ET的规则是业内比较知名的规则集,下载地址见这里,这其中提供了防火墙以及入侵检测系统的规则.IDS/ ...

  4. suricata mysql_配置suricata

    yum -y install libpcap libpcap-devel libnet libnet-devel pcre \ pcre-devel gcc gcc-c++ automake auto ...

  5. 安全测试常用几个工具(开源商业)调研

    下面介绍了这些工具的主要功能以及教程.书籍.视频等. 端口扫描器:Nmap Nmap是"Network Mapper"的缩写,众所周知,它是一款非常受欢迎的免费开源黑客工具.Nma ...

  6. 监控 DNS 流量,预防安全隐患五大招!

    2019独角兽企业重金招聘Python工程师标准>>> 尽管 IT 管理员尽心尽责地监控设备.主机和网络是否存在恶意活动的迹象,却往往出力不讨好.主机入侵检测和端点保护对很多公司来说 ...

  7. 10款中小企业必备的开源免费安全工具

    10款中小企业必备的开源免费安全工具 secist2017-05-18+8共527453人围观 ,发现 7 个不明物体企业安全工具 很多企业特别是一些中小型企业在日常生产中,时常会因为时间.预算.人员 ...

  8. Log4j2漏洞发展历程及解决方案

    背景 最近互联网技术圈最火的一件事莫过于Log4j2的漏洞了.同时也涌现出了各类分析文章,关于漏洞的版本.漏洞的原因.漏洞的修复.程序员因此加班等等. 经常看我文章的朋友都知道,面对这样热门有意思的技 ...

  9. 5个流行的开源HIDS系统介绍

    威胁形势变得越来越多样化,用于攻击的系统比以往任何时候都更加复杂.毫无疑问,入侵检测系统对于确保现代组织资产和所有网络流量的安全至关重要.这些保护措施用于捍卫对组织网络的受限访问.当涉及入侵检测系统时 ...

最新文章

  1. curl获取网页内容出现乱码或为空的解决方案,另附curl_getinfo函数解析
  2. VS2017 运行VS2013项目
  3. ubuntu 简单配置samba
  4. olap mysql_MySQL与OLAP:分析型SQL查询最佳实践探索
  5. 【编程范式】连续数据的前面部分后移的实现
  6. 关于有类路由协议和无类路由协议
  7. 【Logstash】windows下logstash报错config files contains non-ascii characters but are not UTF-8 encoded
  8. C# Winform控件对透明图片重叠时导致图片不透明的解决方法
  9. 《深入浅出数据分析》读书笔记
  10. SpringBoot项目深度优化和Jvm调优
  11. D2 日报 2019年 03月 13日
  12. 应用 Python PyAutoGUI 打造专属按键精灵脚本工具!
  13. Steaming技术初体验
  14. 电脑编程入门自学java_电脑编程入门自学Java指南
  15. android5.1修改默认锁屏方式(去除锁屏)
  16. 计算机硬盘能达到5g的速度,5G网络速度达到1G,但硬盘读写速度才几十兆,怎么办...
  17. 一场 Chat 拥有自己的博客
  18. 迁移学习(Transfer Learning)-- 概念理解
  19. Spring Webflux 响应式编程 (二) - WebFlux编程实战
  20. 无人值守安装linux7,CentOS7网络无人值守安装

热门文章

  1. 字节跳动面试难吗,应该如何应对?
  2. pdf怎么转换成jpg或png格式的图片?
  3. 从共享单车看城市云反射弧的工作运行机制
  4. 飞桨paddle遇到bug调试修正【迁移工具、版本兼容性】
  5. 服务器局域网系统,局域网服务器常用的操作系统
  6. MAXQ1850评估套件(EV kit)和面向MAXQ30的CrossWorks编译器的设计方案
  7. Rust:Cargo check 时 Updating crates.io index 发生错误
  8. Rust crates.io换源
  9. 【php】phpstorm配置-window上
  10. 持安零信任入选数说安全《零信任安全产品研究报告》