如何在Ubuntu 16.04上安装Bro

介绍

Bro是开源网络分析框架和安全监控应用程序。 它将OSSECosquery的一些最好的功能汇集成一个不错的包。

Bro可以执行基于签名和行为的分析和检测,但其大部分内容是基于行为的分析和检测。 Bro的功能列表中列出了以下功能:

  • 检测对SSH和FTP等网络服​​务的强力攻击
  • 执行HTTP流量监控和分析
  • 检测已安装软件的更改
  • 执行SSL / TLS证书验证
  • 检测SQL注入攻击
  • 对所有文件执行文件完整性监控
  • 通过电子邮件发送活动,摘要和崩溃报告和警报
  • 执行IP地址到城市级的地理位置
  • 以独立或分布式模式运行

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

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

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

先决条件

要完成这篇文章,您需要具备以下内容:

  • 具有防火墙和非root用户帐户的Ubuntu 16.04服务器,具有使用此Ubuntu 16.04初始安装指南配置的sudo权限。 因为我们将执行一些需要额外RAM的任务,所以您需要启动一个至少有1 GB内存的服务器。
  • Postfix作为发送专用邮件传输代理(MTA)安装在服务器上,使用Ubuntu 16.04上的Postfix指南 必须安装像Postfix这样的MTA才能发送电子邮件提醒。 它将运行没有一个,但电子邮件将不会发送。

第1步 - 安装依赖关系

在从源安装Bro之前,需要安装其依赖关系。

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

sudo apt-get update

Bro的依赖包括许多图书馆和工具,如LibpcapOpenSSLBIND8 BroControl还需要Python 2.6或更高版本。 因为我们从源代码构建Bro,所以我们需要一些额外的依赖关系,如CMakeSWIGBison和C / C ++编译器。

您可以一次安装所有必需的依赖项:

sudo 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数据库

在这里,我们将下载一个GeoIP数据库,Bro将依赖于IP地址地理位置。 我们将下载包含IPv4和IPv6数据库的两个压缩文件,对其进行解压缩,然后将它们移动到/usr/share/GeoIP目录中。

注意 :我们正在从MaxMind下载免费的传统GeoIP数据库 一个较新的IP数据库格式已经发布,但是Bro还没有支持。

下载IPv4和IPv6数据库。

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

解压缩这两个文件,将两个名为GeoLiteCity.datGeoLiteCityv6.dat文件放在工作目录中。

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

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

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

随着GeoIP数据库的到位,我们可以在下一步安装Bro本身。

第3步 - 从源安装Bro

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

默认情况下,Ubuntu上已经安装了Git,因此您可以使用以下命令克隆资源库。 这些文件将被放入名为“ bro的目录中。

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

更改到项目的目录。

cd bro

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

./configure

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

make

在运行的大多数输出​​行的开始,您将看到百分比完成。

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

sudo make install

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

现在您需要将/usr/local/bro/bin目录添加到$PATH 为确保全局可用,最佳方法是在/etc/profile.d目录下的/etc/profile.d指定路径。 我们将把该文件3rd-party.sh

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

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

复制并粘贴以下行。 第一行是一个解释性注释,第二行将确保/usr/local/bro/bin被添加到系统上任何用户的路径。

/etc/profile.d/3rd-party.sh
# Expand PATH to include the path to Bro's binaries

export PATH=$PATH:/usr/local/bro/bin

保存并关闭文件,然后使用source激活更改。

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

旧设备的工件往往会持续存在,所以您可以另外注销并重新登录,以确保您的路径正确加载。

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

第4步 - 配置Bro

在此步骤中,我们将自定义几个文件,以确保Bro正常工作。 所有文件都位于/usr/local/bro/etc目录中,它们是:

  • node.cfg ,用于配置要监视的节点。
  • networks.cfg ,其中包含节点本地的CIDR表示法中的网络列表。
  • broctl.cfg ,它是用于邮件,日志记录和其他设置的全局BroControl配置文件。

我们来看看在每个文件中需要修改什么。

配置要监视哪些节点

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

开箱即用,Bro被配置为以独立模式运行。 因为这是一个独立的安装,您不需要修改此文件,但检查值是否正确是很好的。

打开文件进行编辑。

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

bro部分下,查找interface参数。 这是etho0默认情况下,这应该符合您的Ubuntu 16.04服务器的公共接口。 如果没有,请确保更新它。

/usr/local/bro/etc/node.cfg
[bro]
type=standalone
host=localhost
interface=eth0

完成后保存并关闭文件。 我们将配置节点所属的专用网络。

配置节点的专用网络

networks.cfg文件是您配置该节点所属IP网络的位置(即您要监视的任何服务器接口的IP网络)。

要开始,打开文件。

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

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

/usr/local/bro/etc/networks.cfg
# List of local networks in CIDR notation, optionally followed by a
# descriptive tag.
# For example, "10.0.0.0/8" or "fe80::/64" are valid prefixes.

10.0.0.0/8          Private IP space
172.16.0.0/12       Private IP space
192.168.0.0/16      Private IP space

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

示例/usr/local/bro/etc/networks.cfg
203.0.113.0/24          Public IP space
198.51.100.0/24         Private IP space

完成编辑后保存并关闭文件。 接下来我们将配置邮件和日志记录设置。

配置邮件和日志设置

broctl.cfg文件是您配置BroControl如何处理其电子邮件和记录职责的地方。 大多数默认值不需要更改。 您只需要指定目标电子邮件地址。

打开文件进行编辑。

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

在文件顶部的邮件选项部分下,查找MailTo参数并将其更改为您所控制的有效电子邮件地址。 所有Bro电子邮件警报将发送到该地址。

/usr/local/bro/etc/broctl.cfg
. . .
# Mail Options

# Recipient address for all emails sent out by Bro and BroControl.
MailTo = sammy@example.com
. . .

完成编辑后保存并关闭文件。

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

第5步 - 使用BroControl管理Bro

BroControl用于管理Bro安装 - 启动和停止服务,部署Bro并执行其他管理任务。 它既是命令行工具又是交互式shell。

如果使用sudo /usr/local/bro/bin/broctl调用了sudo /usr/local/bro/bin/broctl ,它将启动交互式shell:

OutputWelcome to BroControl 1.5-21

Type "help" for help.

[BroControl] >

您可以使用exit命令退出交互式shell。

从shell可以运行任何有效的Bro命令。 同样的命令也可以直接从命令行运行而不调用shell。 在命令行运行命令通常是一个更有用的方法,因为它允许您将broctl命令的输出管道导入标准的Linux命令。 对于本步骤的其余部分,我们将在命令行中调用broctl命令。

首先,使用broctl deploy来启动Bro,并确保BroControl和Bro所需的文件根据第4步中的配置进行更新。

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

每当对配置文件或脚本进行更改时,还应运行此命令。

注意 :如果Bro不启动,命令的输出将提示原因。 例如,即使您安装了MTA,也可能会看到以下错误消息:

Outputbro not running (was crashed)
Error: error occurred while trying to send mail: send-mail: SENDMAIL-NOTFOUND not found
starting ...
starting bro ...

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

/usr/local/bro/etc/broctl.cfg
. . .
# Added for Sendmail
SendMail = /usr/sbin/sendmail

###############################################
# Logging Options
. . .

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

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

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

输出将如下所示。 除了running ,状态也可能crashedstopped

OutputName         Type       Host          Status    Pid    Started
bro          standalone localhost     running   6807   12 Apr 05:42:50

如果需要重新启动Bro,可以使用sudo /usr/local/bro/bin/broctl restart

注意broctl restartbroctl deploy不一样。 更改配置设置和/或修改脚本后调用后者; 当您要停止并重新启动整个服务时调用前者。

接下来,让我们使Bro服务更加强大的设置cron工作

第6步 - 为Bro配置cron

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

Bro的cron命令启用即可,但您需要安装实际触发脚本的cron作业。 您需要先在/etc/cron.d为Bro添加一个cron包文件。 按照惯例,我们将把该文件称为bro ,以便创建并打开它。

sudo nano /etc/cron.d/bro

下面显示复制和粘贴到文件中的条目。 它将每五分钟运行一次Bro的cron 如果它检测到Bro已经崩溃,它将重新启动它。

/etc/cron.d/bro
*/5 * * * * root /usr/local/bro/bin/broctl cron

如果您想要更频繁地运行,可以在上面的命令中更改5

完成后保存并关闭文件。

当cron作业被激活时,您应该收到一封电子邮件,指出在/usr/local/bro/logs/stats已经创建了stats文件的目录。 请注意,Bro必须实际崩溃(即被无意中停止)才能工作。 如果您停止使用BroControl停止的Bro,您将无法正常工作。

为了测试它的工作原理,您必须重新启动服务器或者杀死一个Bro进程。 如果您重新启动路由,Bro将在服务器完成重新启动过程五分钟后重新启动。 要使用其他方法,首先要获得一个Bro的进程ID。

ps aux | grep bro

然后杀死其中一个进程。

sudo kill -9 process_id

如果您使用以下方式检查状态:

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

输出将显示它已经崩溃。

OutputName         Type       Host          Status    Pid    Started
bro          standalone localhost     crashed

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

使用Bro完全工作,您应该每隔一小时收到界面上捕获的interresting活动的摘要邮件。 如果它崩溃并重新启动,您将收到一封电子邮件,指出它在崩溃后开始。 在接下来的最后一步中,我们来看看其他几个主要的Bro实用程序。

第7步 - 使用brobro-cutbro-cut策略脚本

bro bro-cut的另外两个主要命令。 使用bro ,您可以捕获实时流量并分析使用其他工具捕获的跟踪文件。 bro-cut是用于从Bro日志读取和获取数据的定制工具。

用于捕获使用bro实时流量的命令格式为sudo /usr/local/bro/bin/bro -i eth0 file... 至少,您必须指定应该捕获流量的接口。 file...是指定义什么是Bro进程的策略脚本。 您不必指定脚本或脚本,因此该命令也可以看起来像sudo /usr/local/bro/bin/bro -i eth0

注意 :Bro使用的脚本位于/usr/local/bro/share/bro目录中。 站点特定的脚本位于/usr/local/bro/share/bro/site/目录中。 确保不要自定义此目录中除/usr/local/bro/share/bro/site/local.bro之外的文件,因为在升级或重新安装Bro时,更改将被覆盖。

因为bro从单个捕获会话创建许多文件到工作目录,所以最好在为捕获会话创建的目录中调用一个bro capture命令。 例如,以下示例显示在实时流量捕获会话期间创建的文件的长列表( ls -l )。

Outputtotal 152
-rw-r--r-- 1 root root   277 Apr 14 09:20 capture_loss.log
-rw-r--r-- 1 root root  4711 Apr 14 09:20 conn.log
-rw-r--r-- 1 root root  2614 Apr 14 04:49 dns.log
-rw-r--r-- 1 root root 25168 Apr 14 09:20 loaded_scripts.log
-rw-r--r-- 1 root root   253 Apr 14 09:20 packet_filter.log
-rw-r--r-- 1 root root   686 Apr 14 09:20 reporter.log
-rw-r--r-- 1 root root   708 Apr 14 04:49 ssh.log
-rw-r--r-- 1 root root   793 Apr 14 09:20 stats.log
-rw-r--r-- 1 root root   373 Apr 14 09:20 weird.log

您现在可以尝试运行其中一个捕获命令。 让它运行一点之后,使用CTRL+C终止bro捕获会话。 您可以使用诸如cat ssh.log | /usr/local/bro/bin/bro-cut -C -d类的命令来阅读每篇cat ssh.log | /usr/local/bro/bin/bro-cut -C -d cat ssh.log | /usr/local/bro/bin/bro-cut -C -d

结论

本文向您介绍了Bro如何从源代码以独立方式安装。 您还学习了如何从MaxMind安装IPv4和IPv6 GeoIP数据库,Bro用于将IP地址定位到城市级别。 对于这种独立的安装方式,您还学习了如何修改其配置文件的相关方面,使用broctrl管理,使用bro来捕获实时流量并对其进行broctrl以输出并读取生成的日志文件。

您可以访问有关如何从项目文档站点使用Bro的更多信息。

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏