如何在 Ubuntu 16.04 上安装 Bro

介绍

Bro是一个开源的网络分析框架和安全监控应用程序,它将 OSSECosquery的一些最佳功能合并到一个不错的包中。

Bro 可以执行基于签名和行为的分析和检测,但它所做的大部分是基于行为的分析和检测。

  • 检测针对网络服务(如 SSH 和 FTP )的暴力攻击 * 执行 HTTP 流量监测和分析
  • 检测安装软件的变化
  • 执行 SSL/TLS 证书验证
  • 检测 SQL 注入攻击
  • 执行所有文件的文件完整性监测
  • 通过电子邮件发送活动、总结和崩溃报告和警报
  • 执行 IP 地址的地理定位到城市级
  • 运行独立或分布式模式

Bro 可以从源头安装或通过包管理器安装。从源头安装更涉及,但它是支持 IP 地理位置的唯一方法,如果地理位置库在编译之前安装。

bro可用于分析跟踪文件,也可以用于实时流量分析; broctl是用于管理独立或分布式 Bro 安装的交互式壳和命令行实用程序。

在本文中,您将从源头安装Bro在Ubuntu 16.04上以独立模式。

前提条件

要完成这篇文章,你需要有以下内容:

步骤1 - 安装依赖性

在您可以从源头安装 Bro 之前,您需要安装其依赖性。

首先,更新包数据库.在安装包之前不这样做可能会导致包管理器错误。

1sudo apt-get update

Bro 的依赖包括一系列库和工具,如 Libpcap, OpenSSLBIND8. BroControl 还需要 Python 2.6 或更高版本,因为我们正在从源头构建 Bro,我们需要一些额外的依赖,如 CMake, SWIG, Bison和一个 C/C++ 编译器。

您可以同时安装所有必要的依赖:

1sudo apt-get install bison cmake flex g++ gdb make libmagic-dev libpcap-dev libgeoip-dev libssl-dev python-dev swig2.0 zlib1g-dev

安装完成后,下一步是下载 Bro 将用于 IP 地理位置的数据库。

步骤 2 – 下载 GeoIP 数据库

我们将下载两个包含IPv4和IPv6数据库的压缩文件,解压缩它们,然后将它们移动到/usr/share/GeoIP目录。

美元(注)

** 注意** :我们正在从 MaxMind下载一个 免费的遗传地质IP数据库

美元

下载 IPv4 和 IPv6 数据库。

1wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz
2wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCityv6-beta/GeoLiteCityv6.dat.gz

解压两种文件,将两个名为GeoLiteCity.datGeoLiteCityv6.dat的文件放入您的工作目录。

1gzip -d GeoLiteCity.dat.gz
2gzip -d GeoLiteCityv6.dat.gz

然后移动到相应的目录,在过程中重命名它们。

1sudo mv GeoLiteCity.dat /usr/share/GeoIP/GeoIPCity.dat
2sudo mv GeoLiteCityv6.dat /usr/share/GeoIP/GeoIPCityv6.dat

有了 GeoIP 数据库,我们可以在下一步安装 Bro。

步骤 3 – 从源头安装 Bro

要从源头安装 Bro,我们首先需要从 GitHub 克隆存储库。

Git已经在Ubuntu上默认安装,所以你可以用以下命令克隆存储库. 文件将被放入名为bro的目录。

1git clone --recursive git://git.bro.org/bro

更改项目目录。

1cd bro

运行 Bro 的配置,这应该需要不到一分钟。

1./configure

然后使用来构建程序,这可能需要20分钟,取决于您的服务器。

1make

您将看到大多数输出线的开始时完成的百分比。

一旦完成,安装 Bro,这应该需要不到一分钟。

1sudo make install

Bro 将安装在 /usr/local/bro 目录中。

现在你需要将 /usr/local/bro/bin 目录添加到你的 $PATH. 为了确保它在全球范围内可用,实现这一点的最佳方法是在 /etc/profile.d 目录下指定文件中的路径。

使用您最喜欢的文本编辑器创建和打开3rd-party.sh

1sudo nano /etc/profile.d/3rd-party.sh

第一行是一个解释性评论,第二行将确保/usr/local/bro/bin被添加到系统上的任何用户的路径中。

1[label /etc/profile.d/3rd-party.sh]
2# Expand PATH to include the path to Bro's binaries
3
4export PATH=$PATH:/usr/local/bro/bin

保存和关闭文件,然后用激活更改。

1source /etc/profile.d/3rd-party.sh

然而,来自旧设置的文物往往会持续存在,因此您还可以退出并重新登录,以确保您的路径正确加载。

现在 Bro 已安装,我们需要进行一些配置更改,以便正常运行。

步骤 4 - 配置桥梁

在此步骤中,我们将定制一些文件,以确保 Bro 正常工作. 所有文件都位于 /usr/local/bro/etc 目录中,它们是:

  • node.cfg,用于配置要监控的节点。
  • networks.cfg,其中包含在 CIDR 标注中列出本地为节点的网络列表。
  • broctl.cfg,这是邮件、日志和其他设置的全球 BroControl 配置文件。

让我们看看每个文件中需要修改的内容。

设置哪个节点监控

要配置 Bro 将监控的节点,我们需要修改 node.cfg 文件。

由于这是一个独立的安装,您不应该修改此文件,但检查值是否正确是很好的。

打开文件进行编辑。

1sudo nano /usr/local/bro/etc/node.cfg

bro部分中,寻找界面参数. 默认情况下,它是etho0,这应该匹配您的Ubuntu 16.04服务器的公共界面。

1[label /usr/local/bro/etc/node.cfg]
2[bro]
3type=standalone
4host=localhost
5interface=eth0

当您完成时,将保存并关闭文件. 我们将配置节点属于下一个私人网络(s)。

配置 Node 的私人网络

networks.cfg文件是您配置哪个IP网络属于节点(即您希望监控的任何服务器接口的IP网络)。

要开始,打开文件。

1sudo nano /usr/local/bro/etc/networks.cfg

默认情况下,该文件附带了已经配置的三个私人IP块,作为您需要如何指定的示例。

1[label /usr/local/bro/etc/networks.cfg]
2# List of local networks in CIDR notation, optionally followed by a
3# descriptive tag.
4# For example, "10.0.0.0/8" or "fe80::/64" are valid prefixes.
5
610.0.0.0/8 Private IP space
7172.16.0.0/12 Private IP space
8192.168.0.0/16 Private IP space

删除现有的三个条目,然后添加自己的条目. 您可以使用「ip addr 显示」来检查服务器接口的网络地址. 您的「networks.cfg」的最终版本应该与以下类似,您的网络地址被替换为:

1[label Example /usr/local/bro/etc/networks.cfg]
2203.0.113.0/24		  Public IP space
3198.51.100.0/24 Private IP space

保存并关闭文件,当你完成编辑后,我们将配置邮件和日志设置。

配置邮件和日志设置

broctl.cfg文件是您配置 BroControl 如何处理电子邮件和日志责任的地方。大多数默认文件不需要更改。

打开文件进行编辑。

1sudo nano /usr/local/bro/etc/broctl.cfg

在文件顶部的邮件选项部分中,搜索邮件参数,并将其更改为您控制的有效电子邮件地址。

1[label /usr/local/bro/etc/broctl.cfg]
2. . .
3# Mail Options
4
5# Recipient address for all emails sent out by Bro and BroControl.
6MailTo = [email protected]
7. . .

保存并关闭文件,当你完成编辑。

这是所有配置 Bro 需要的,所以现在您可以使用 BroControl 启动和管理 Bro。

步骤 5 – 使用 BroControl 管理 Bro

BroControl 用于管理 Bro 安装 - 启动和停止服务,部署 Bro,以及执行其他管理任务。

如果broctl被调用为sudo /usr/local/bro/bin/broctl,它将启动互动壳:

1[secondary_label Output]
2Welcome to BroControl 1.5-21
3
4Type "help" for help.
5
6[BroControl] >

您可以使用exit命令离开交互式壳。

从壳中,你可以运行任何有效的 Bro 命令. 同样的命令也可以直接从命令行运行,而无需召唤壳. 在命令行运行命令往往是一个更有用的方法,因为它允许你将broctl命令的输出管道到一个标准的 Linux 命令。

首先,使用broctl 部署启动 Bro,并确保根据步骤 4 中的配置更新 BroControl 和 Bro 所需的文件。

1sudo /usr/local/bro/bin/broctl deploy

您还应在对配置文件或脚本进行更改时执行此命令。

美元(注)

** 注意** : 如果 Bro 无法启动,则命令的输出会暗示原因,例如,即使安装了 MTA,您可能会看到以下错误消息:

1[secondary_label Output]
2bro not running (was crashed)
3Error: error occurred while trying to send mail: send-mail: SENDMAIL-NOTFOUND not found
4starting ...
5starting bro ...

解决方案是编辑 BroControl 配置文件, /usr/local/bro/etc/broctl.cfg,并在 邮件选项 部分末尾添加 Sendmail 的条目:

1[label /usr/local/bro/etc/broctl.cfg]
2. . .
3# Added for Sendmail
4SendMail = /usr/sbin/sendmail
5
6###############################################
7# Logging Options
8. . .

然后重新部署 Bro 用 sudo /usr/local/bro/bin/broctl 部署

美元

您可以使用状态命令检查 Bro 的状态。

1sudo /usr/local/bro/bin/broctl status

输出将看起来如下:除了运行,状态还可以是崩溃停止

1[secondary_label Output]
2Name Type Host Status Pid Started
3bro standalone localhost running 6807 12 Apr 05:42:50

如果您需要重新啟動 Bro,您可以使用「sudo /usr/local/bro/bin/broctl 重新啟動」。

<$>[注] :‘broctl 重启’和‘broctl 部署’不是相同的。在您更改配置设置和/或修改脚本后,请召唤后者;当您想要停止并重新启动整个服务时,请召唤前者。

美元

接下来,让我们使 Bro 服务更强大地设置 a cron job

步骤 6 — 配置 cron for Bro

Bro 没有 Systemd 服务描述文件,但它配有 cron 脚本,如果启用,如果它崩溃,它将重新启动 Bro,并执行其他任务,如检查足够的磁盘空间和删除过时的日志文件。

Bro的cron命令已启用,但你需要安装一个 cron 任务,它实际上会触发脚本。你需要先添加一个 cron 包文件,用于 Bro in/etc/cron.d。

1sudo nano /etc/cron.d/bro

接下来将显示要复制并粘贴到文件的条目,它将每五分钟运行Bro的cron

1[label /etc/cron.d/bro]
2*/5 * * * * root /usr/local/bro/bin/broctl cron

您可以更改上面的命令中的5,如果您希望它运行更频繁。

保存并关闭文件,当你完成它。

当 cron 工作被激活时,你应该收到一封电子邮件,表示在 `/usr/local/bro/logs/stats 创建了统计文件的目录。

要测试它是否有效,您要么需要重新启动服务器,要么必须杀死其中一个 Bro 流程. 如果您进入重新启动路线,Bro 将在服务器完成重新启动流程后五分钟重新启动。

1ps aux | grep bro

然后杀死其中一个过程。

1sudo kill -9 process_id

如果您检查使用的状态:

1sudo /usr/local/bro/bin/broctl status

结果将表明它已经崩溃。

1[secondary_label Output]
2Name Type Host Status Pid Started
3bro standalone localhost crashed

几分钟后调用相同的命令,输出将显示它再次运行。

随着Bro完全工作,您应该在接口上每小时接收的互动活动的简要电子邮件。如果它崩溃并重新启动,您将收到一封电子邮件声称它在崩溃后开始。

步骤7 – 使用brobro-cutbro政策脚本

brobro-cut 是 Bro 附带的其他两个主要命令. 使用 bro 您可以捕捉实时流量并使用其他工具分析捕获的跟踪文件。

bro捕捉实时流量的命令是sudo /usr/local/bro/bin/bro -i eth0 file...的格式,至少你必须指定它应该从哪个接口捕捉流量。

美元(注)

** 注意** : Bro 使用的脚本位于 /usr/local/bro/share/bro’ 目录中。 网站特定的脚本位于 /usr/local/bro/share/bro/site/目录中。 请确保在此目录中不定制除/usr/local/bro/share/bro/site/local.bro` 以外的文件,因为在升级或重新安装 Bro 时,您的更改将被重写。

美元

由于bro会从单个捕捉会话创建许多文件到工作目录,所以最好在仅为该捕捉会话创建的目录中调用一个bro捕捉命令。

 1[secondary_label Output]
 2total 152
 3-rw-r--r-- 1 root root 277 Apr 14 09:20 capture_loss.log
 4-rw-r--r-- 1 root root 4711 Apr 14 09:20 conn.log
 5-rw-r--r-- 1 root root 2614 Apr 14 04:49 dns.log
 6-rw-r--r-- 1 root root 25168 Apr 14 09:20 loaded_scripts.log
 7-rw-r--r-- 1 root root 253 Apr 14 09:20 packet_filter.log
 8-rw-r--r-- 1 root root 686 Apr 14 09:20 reporter.log
 9-rw-r--r-- 1 root root 708 Apr 14 04:49 ssh.log
10-rw-r--r-- 1 root root 793 Apr 14 09:20 stats.log
11-rw-r--r-- 1 root root 373 Apr 14 09:20 weird.log

您现在可以尝试运行其中一个捕捉命令. 让它运行一段时间后,使用CTRL+C结束bro捕捉会话. 您可以使用一个命令,如cat ssh.log Mediateca /usr/local/bro/bin/bro-cut -C -d来读取每一个命令。

结论

本文向您介绍了 Bro 以及如何从源头独立安装它,您还了解了如何从 MaxMind 安装 IPv4 和 IPv6 GeoIP 数据库,而 Bro 则用于将 IP 地址地理定位到城市级别。 对于这个独立的安装模式,您还了解了如何修改其配置文件的相关方面,使用 broctrl 管理它,使用 bro 捕捉实时流量,并使用 bro-cut 输出并阅读结果的日志文件。

您可以从 项目文档网站获取有关如何使用 Bro 的更多信息。

Published At
Categories with 技术
comments powered by Disqus