流量监控器Bro特性、历史及架构

概述

Bro是一个被动的开源网络流量分析器。它主要是一个安全监视器,深入检查链路上的流量以发现可疑活动的迹象。然而,更普遍的讲,Bro支持一个范围广泛的流量分析任务,不仅在安全领域,还包括性能度量和协助排查故障。

站点部署Bro最直接的好处是可以得到一组用高级术语记录网络活动的日志。这些日志不仅包括链路上检测到的每个链接的全面记录,还包括应用层副本,比如,所有HTTP会话及其请求的URI、秘钥头部、MIME类型和服务器应答;DNS请求和应答;SSL证书;SMTP会话的密钥内容;还有更多。默认情况下,Bro将所有这些信息写入结构良好的、tab键分隔的日志文件中以便外部软件进行后处理。用户也可以从一组可选的输出格式和后端与外部软件(比如,外部数据库)进行对接。

除日志之外,Bro还提供了一系列分析和检测任务的内置功能,包括从HTTP会话中提取文件,通过借助外部注册表接口检测恶意软件,报告网络上检测到的易受攻击的软件版本,识别流行的web应用程序,检测SSH暴力攻击,验证SSL证书链等等。

然而,理解Bro的关键在于意识到,尽管该系统具有开箱即用的强大功能,但从根本上说它代表了一个完全可定制和可扩展的流量分析平台:Bro为用户提供领域特定的、具备图灵完整性的,用于表达任意分析任务的脚本语言。从概念上讲,您可以将Bro视为“领域特定的Python”(或Perl):就像Python,该系统附带了大量预构建功能(标准库)。但您不要仅限于此,您可以编写自己的代码以新的的方式使用Bro。实际上,Bro所有的默认分析,包括所有的日志,是这些脚本的结果。系统核心没有特定的分析功能的硬编码。

Bro在商用硬件上运行,因此为昂贵的专有解决方案提供了低成本的替代方案。尽管有价值标签(译者注:指Bro被认为的价值),但Bro实际上远远超出了其他网络监控工具的功能,这些工具通常仅限于一小组硬编码分析任务。我们特别强调Bro不是传统的基于签名的入侵检测系统(IDS:Instrusion Detection System)。虽然它也支持这样的标准功能,但Bro脚本语言确实促进了更广泛的非常不同的方法来发现恶意活动,包括语义误用检测,异常检测和行为分析。

各种各样的站点部署了Bro来保护他们的网络基础设施,包括许多大学,研究实验室,超级计算中心,开放科学社区和大型企业。Bro特别针对高速、大容量的网络监控,越来越多的站点正使用该系统监控其10GE网络,其中一些已经转向100GE链路。Bro通过支持可扩展的负载均衡来适应这种高性能设置:大型站点通常运行“Bro集群”,集群中高速前端负载均衡器将流量分配到适当数量的后端PC上,所有后端PC都在它们各自的分流上运行专用Bro实例。中央管理器系统协调进程,跨后端同步状态,并为操作员提供集中管理接口,以便配置和访问汇总的日志。Bro的集成管理框架——BroControl支持这种开箱即用的集群设置。

特性

Bro通过其脚本语言支持广泛的分析。然而,即使不做进一步扩展,它也具有一系列强大的功能。

部署

1>
标准的类UNIX系统(包括Linux,FreeBSD和MacOS)运行环境。

2>
离线的完全被动流量分析。

3>
使用标准libcap接口抓取数据包。

4>
实时和离线分析。

5>
支持大规模集群部署。

6>
独立和集群模式统一的管理框架。

7>
基于BSD许可的开源软件。

分析

1>
综合记录离线分析和取证活动。

2>
端口无关的应用层协议分析。

3>
支持多种应用层协议(包括DNS、FTP、HTTP、IRC、SMTP、SSH、SSL)。

4>
基于应用层协议的文件内容交换分析,包括用于指纹识别的MD5/SHA1计算。

5>
全面的IPV6支持。

6>
隧道检测和分析(包括Ayiya,Teredo,GTPv1)。Bro拆解隧道,然后分析其内容,如同隧道不存在一样。

7>
在协议分析过程中进行合理性检查。

8>
支持IDS样式的模式匹配。

脚本语言

1>
表达任意分析任务的图灵完整性语言。

2>
事件驱动型编程模型。

3>
领域特定的数据类型,例如IP地址(透明处理IPv4和IPv6)、端口号和定时器。

4>
广泛支持跟踪和管理网络状态。

接口

1>
默认输出结构良好的ASCII日志。

2>
ElasticSearch和DataSeries的备用后端。进一步的数据库接口准备中。

3>
将外部输入实时集成到分析中。实时数据库输入准备中。

4>
运用C库与其他程序交换Bro事件。并可与Perl、Python和Ruby绑定。

5>
具备使用内置脚本语言触发任意外部进程的能力。

历史

在这里插入图片描述
Bro的历史比许多人所知的要远得多。近二十年前,Vern Paxson设计并实现了初始版本。 1995年,Vern作为Lawrence Berkeley国家实验室(LBNL)的研究员开始在该代码上开展工作。1996年,伯克利实验室开始运营部署Bro,接着USENIX安全研讨会于1998年出版了初始的Bro论文(后来在随后的期刊出版物中进行了改进)。2003年,美国国家科学基金会(NSF)在国际计算机科学研究所(ICSI)开始支持对Bro的研究和进一步开发,Vern现在在该所领导网络和安全小组。多年来,越来越多的ICSI研究人员和学生不断为Bro增加新功能,而LBNL继续使用能源部(DOE)的资助基金支持此项目。

Bro的许多能力源于学术研究项目,其结果通常发布在顶级会议上。然而,Bro成功的关键在于它能够从早期开始弥合学术界和运营界之间的传统差距,这为研究提供了必要的基础,以确保开发的方法能够应对现实世界的挑战。然而,随着Bro的运营用户社区不断增长,以研究为中心的开发模式最终成为系统发展的瓶颈:研究经费并不倾向于支持软件开发和维护的更现实部分,即使这些部分对于最终用户体验十分关键。虽然Bro的功能总是超越传统系统,但成功的部署过去需要大量的专业技能,通常需要大量的前期学习来掌握Bro。2010年,NSF致力于通过向ICSI提供资金来解决这一问题,该资金专门用于SDCI计划的Bro开发。有了及时支持,国家超级计算应用中心(NCSA)作为核心合作伙伴加入了团队,Bro项目开始彻底完善2.0版本系统中许多开放给用户的部分。自该版本发布以来,Bro在各种环境部署中经历了巨大的成长,而Bro团队现在正致力于通过进一步提高系统应对未来网络挑战的能力来巩固这一成功。

架构

在这里插入图片描述

从架构上看,Bro分为两大组件。其事件引擎(或核心)将传入的数据包流变为一系列更高级别的事件。这些事件以客观的术语反映网络活动,即它们描述所看到的内容,但不描述其原因,或它是否重要。例如,链路上的每个HTTP请求都会变成相应的http_request事件,该事件携带所涉及的IP地址、端口,请求的URI以及正在使用的HTTP版本。然而,该事件没有传达任何进一步的说明,比如,该URI是否对应于已知的恶意软件站点。

这种语义由Bro的第二个主要组件——脚本解释器派生而来,脚本解释器执行用Bro的自定义脚本语言编写的一组事件处理程序。这些脚本可以表示站点的安全策略,即当监视器检测到不同类型的活动时要采取什么操作。更一般地,他们可以从输入流量中导出任何所需的属性和统计数据。Bro的语言带有广泛的特定于域的类型和功能;并且,至关重要的是,允许脚本随时间保持状态,使它们能够跟踪和关联它们在连接和主机边界上观察到的内容的演变。Bro脚本可以产生实时告警,并且还可以按需执行任意外部程序,例如,触发对攻击的主动响应。

原文地址:https://www.bro.org/sphinx/intro/index.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值