2017-07-28 23:50:40 +08:00
|
|
|
|
网络分析利器:在 Ubuntu 16.04 上安装 Bro
|
2017-07-26 14:00:11 +08:00
|
|
|
|
============================================================
|
|
|
|
|
|
|
|
|
|
|
2017-07-28 22:42:44 +08:00
|
|
|
|
[![Bro Network Analysis Logo](https://www.unixmen.com/wp-content/uploads/2017/07/brologo-696x696.jpg "brologo")][4]
|
2017-07-26 14:00:11 +08:00
|
|
|
|
|
2017-07-28 23:50:40 +08:00
|
|
|
|
### 简介:Bro 网络分析框架
|
2017-07-26 14:00:11 +08:00
|
|
|
|
|
2017-07-30 11:32:43 +08:00
|
|
|
|
Bro 是一个开源的网络分析框架,侧重于网络安全监控。这是一项长达 15 年的研究成果,被各大学、研究实验室、超级计算机中心和许多开放科学界广泛使用。它主要由伯克利国际计算机科学研究所和伊利诺伊大学厄巴纳-香槟分校的国家超级计算机应用中心开发。
|
2017-07-26 14:00:11 +08:00
|
|
|
|
|
2017-07-28 23:50:40 +08:00
|
|
|
|
Bro 的功能包括:
|
2017-07-26 14:00:11 +08:00
|
|
|
|
|
2017-07-30 11:32:43 +08:00
|
|
|
|
* Bro 的脚本语言支持针对站点定制监控策略
|
2017-07-28 23:50:40 +08:00
|
|
|
|
* 针对高性能网络
|
|
|
|
|
* 分析器支持许多协议,可以在应用层面实现高级语义分析
|
2017-07-30 11:32:43 +08:00
|
|
|
|
* 它保留了其所监控的网络的丰富的应用层统计信息
|
2017-07-28 23:50:40 +08:00
|
|
|
|
* Bro 能够与其他应用程序接口实时地交换信息
|
2017-07-30 11:32:43 +08:00
|
|
|
|
* 它的日志全面地记录了一切信息,并提供网络活动的高级存档
|
2017-07-26 14:00:11 +08:00
|
|
|
|
|
2017-07-28 23:50:40 +08:00
|
|
|
|
本教程将介绍如何从源代码构建,并在 Ubuntu 16.04 服务器上安装 Bro。
|
2017-07-26 14:00:11 +08:00
|
|
|
|
|
2017-07-28 23:50:40 +08:00
|
|
|
|
### 准备工作
|
2017-07-26 14:00:11 +08:00
|
|
|
|
|
2017-07-28 23:50:40 +08:00
|
|
|
|
Bro 有许多依赖文件:
|
2017-07-26 14:00:11 +08:00
|
|
|
|
|
|
|
|
|
* Libpcap ([http://www.tcpdump.org][2])
|
2017-07-28 23:50:40 +08:00
|
|
|
|
* OpenSSL 库 ([http://www.openssl.org][3])
|
|
|
|
|
* BIND8 库
|
2017-07-26 14:00:11 +08:00
|
|
|
|
* Libz
|
2017-07-28 23:50:40 +08:00
|
|
|
|
* Bash (BroControl 所需要)
|
|
|
|
|
* Python 2.6+ (BroControl 所需要)
|
2017-07-26 14:00:11 +08:00
|
|
|
|
|
2017-07-28 23:50:40 +08:00
|
|
|
|
从源代码构建还需要:
|
2017-07-26 14:00:11 +08:00
|
|
|
|
|
|
|
|
|
* CMake 2.8+
|
|
|
|
|
* Make
|
|
|
|
|
* GCC 4.8+ or Clang 3.3+
|
|
|
|
|
* SWIG
|
|
|
|
|
* GNU Bison
|
|
|
|
|
* Flex
|
|
|
|
|
* Libpcap headers
|
|
|
|
|
* OpenSSL headers
|
|
|
|
|
* zlib headers
|
|
|
|
|
|
2017-07-30 11:32:43 +08:00
|
|
|
|
### 起步
|
2017-07-26 14:00:11 +08:00
|
|
|
|
|
2017-07-28 23:50:40 +08:00
|
|
|
|
首先,通过执行以下命令来安装所有必需的依赖项:
|
2017-07-26 14:00:11 +08:00
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
# apt-get install cmake make gcc g++ flex bison libpcap-dev libssl-dev python-dev swig zlib1g-dev
|
|
|
|
|
```
|
|
|
|
|
|
2017-07-30 11:32:43 +08:00
|
|
|
|
#### 安装定位 IP 地理位置的 GeoIP 数据库
|
2017-07-26 14:00:11 +08:00
|
|
|
|
|
2017-07-28 23:50:40 +08:00
|
|
|
|
Bro 使用 GeoIP 的定位地理位置。安装 IPv4 和 IPv6 版本:
|
2017-07-26 14:00:11 +08:00
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
$ wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz
|
|
|
|
|
$wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCityv6-beta/GeoLiteCityv6.dat.gz
|
|
|
|
|
```
|
|
|
|
|
|
2017-07-28 23:50:40 +08:00
|
|
|
|
解压这两个压缩包:
|
2017-07-26 14:00:11 +08:00
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
$ gzip -d GeoLiteCity.dat.gz
|
|
|
|
|
$ gzip -d GeoLiteCityv6.dat.gz
|
|
|
|
|
```
|
|
|
|
|
|
2017-07-28 23:50:40 +08:00
|
|
|
|
将解压后的文件移动到 `/usr/share/GeoIP` 目录下:
|
2017-07-26 14:00:11 +08:00
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
# mvGeoLiteCity.dat /usr/share/GeoIP/GeoIPCity.dat
|
|
|
|
|
# mv GeoLiteCityv6.dat /usr/share/GeoIP/GeoIPCityv6.dat
|
|
|
|
|
```
|
|
|
|
|
|
2017-07-28 23:50:40 +08:00
|
|
|
|
现在,可以从源代码构建 Bro 了。
|
2017-07-26 14:00:11 +08:00
|
|
|
|
|
2017-07-28 23:50:40 +08:00
|
|
|
|
### 构建 Bro
|
2017-07-26 14:00:11 +08:00
|
|
|
|
|
2017-07-28 23:50:40 +08:00
|
|
|
|
最新的 Bro 开发版本可以通过 `git` 仓库获得。执行以下命令:
|
2017-07-26 14:00:11 +08:00
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
$ git clone --recursive git://git.bro.org/bro
|
|
|
|
|
```
|
|
|
|
|
|
2017-07-28 23:50:40 +08:00
|
|
|
|
转到克隆下来的目录,然后使用以下命令就可以简单地构建 Bro:
|
2017-07-26 14:00:11 +08:00
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
$ cd bro
|
|
|
|
|
$ ./configure
|
|
|
|
|
$ make
|
|
|
|
|
```
|
|
|
|
|
|
2017-07-30 11:32:43 +08:00
|
|
|
|
`make` 命令需要一些时间来构建一切。确切的时间取决于服务器的性能。
|
2017-07-26 14:00:11 +08:00
|
|
|
|
|
2017-07-28 23:50:40 +08:00
|
|
|
|
可以使用一些参数来执行 `configure` 脚本,以指定要构建的依赖关系,特别是 `--with-*` 选项。
|
2017-07-26 14:00:11 +08:00
|
|
|
|
|
2017-07-28 23:50:40 +08:00
|
|
|
|
### 安装 Bro
|
2017-07-26 14:00:11 +08:00
|
|
|
|
|
2017-07-28 23:50:40 +08:00
|
|
|
|
在克隆的 `bro` 目录中执行:
|
2017-07-26 14:00:11 +08:00
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
# make install
|
|
|
|
|
```
|
|
|
|
|
|
2017-07-28 23:50:40 +08:00
|
|
|
|
默认安装路径为 `/usr/local/bro`。
|
2017-07-26 14:00:11 +08:00
|
|
|
|
|
2017-07-28 23:50:40 +08:00
|
|
|
|
### 配置 Bro
|
2017-07-26 14:00:11 +08:00
|
|
|
|
|
2017-07-28 23:50:40 +08:00
|
|
|
|
Bro 的配置文件位于 `/usr/local/bro/etc` 目录下。 这里有三个文件:
|
2017-07-26 14:00:11 +08:00
|
|
|
|
|
2017-07-28 23:50:40 +08:00
|
|
|
|
* `node.cfg`,用于配置要监视的单个节点(或多个节点)。
|
|
|
|
|
* `broctl.cfg`,BroControl 的配置文件。
|
|
|
|
|
* `networks.cgf`,包含一个使用 CIDR 标记法表示的网络列表。
|
2017-07-26 14:00:11 +08:00
|
|
|
|
|
2017-07-28 23:50:40 +08:00
|
|
|
|
#### 配置邮件设置
|
2017-07-26 14:00:11 +08:00
|
|
|
|
|
2017-07-28 23:50:40 +08:00
|
|
|
|
打开 `broctl.cfg` 配置文件:
|
2017-07-26 14:00:11 +08:00
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
# $EDITOR /usr/local/bro/etc/broctl.cfg
|
|
|
|
|
```
|
|
|
|
|
|
2017-07-30 11:32:43 +08:00
|
|
|
|
查看 `Mail Options` 选项,并编辑 `MailTo` 行如下:
|
2017-07-26 14:00:11 +08:00
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
# Recipient address for emails sent out by Bro and BroControl
|
|
|
|
|
MailTo = admin@example.com
|
|
|
|
|
```
|
|
|
|
|
|
2017-07-28 23:50:40 +08:00
|
|
|
|
保存并关闭。还有许多其他选项,但在大多数情况下,默认值就足够好了。
|
2017-07-26 14:00:11 +08:00
|
|
|
|
|
2017-07-30 11:32:43 +08:00
|
|
|
|
#### 选择要监视的节点
|
2017-07-26 14:00:11 +08:00
|
|
|
|
|
2017-07-28 23:50:40 +08:00
|
|
|
|
开箱即用,Bro 被配置为以独立模式运行。在本教程中,我们就是做一个独立的安装,所以没有必要改变。但是,也请查看 `node.cfg` 配置文件:
|
2017-07-26 14:00:11 +08:00
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
# $EDITOR /usr/local/bro/etc/node.cfg
|
|
|
|
|
```
|
|
|
|
|
|
2017-07-28 23:50:40 +08:00
|
|
|
|
在 `[bro]` 部分,你应该看到这样的东西:
|
2017-07-26 14:00:11 +08:00
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
[bro]
|
|
|
|
|
type=standalone
|
|
|
|
|
host=localhost
|
|
|
|
|
interface=eth0
|
|
|
|
|
```
|
|
|
|
|
|
2017-07-30 11:32:43 +08:00
|
|
|
|
请确保 `inferface` 与 Ubuntu 16.04 服务器的公网接口相匹配。
|
2017-07-26 14:00:11 +08:00
|
|
|
|
|
2017-07-28 23:50:40 +08:00
|
|
|
|
保存并退出。
|
2017-07-26 14:00:11 +08:00
|
|
|
|
|
2017-07-30 11:32:43 +08:00
|
|
|
|
#### 配置监视节点的网络
|
2017-07-26 14:00:11 +08:00
|
|
|
|
|
2017-07-28 23:50:40 +08:00
|
|
|
|
最后一个要编辑的文件是 `network.cfg`。使用文本编辑器打开它:
|
2017-07-26 14:00:11 +08:00
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
# $EDITOR /usr/local/bro/etc/networks.cfg
|
|
|
|
|
```
|
|
|
|
|
|
2017-07-28 23:50:40 +08:00
|
|
|
|
默认情况下,你应该看到以下内容:
|
2017-07-26 14:00:11 +08:00
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
# 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
|
|
|
|
|
```
|
|
|
|
|
|
2017-07-28 23:50:40 +08:00
|
|
|
|
删除这三个条目(这只是如何使用此文件的示例),并输入服务器的公用和专用 IP 空间,格式如下:
|
2017-07-26 14:00:11 +08:00
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
X.X.X.X/X Public IP space
|
|
|
|
|
X.X.X.X/X Private IP space
|
|
|
|
|
```
|
|
|
|
|
|
2017-07-28 23:50:40 +08:00
|
|
|
|
保存并退出。
|
2017-07-26 14:00:11 +08:00
|
|
|
|
|
2017-07-28 23:50:40 +08:00
|
|
|
|
### 使用 BroControl 管理 Bro 的安装
|
2017-07-26 14:00:11 +08:00
|
|
|
|
|
2017-07-30 11:32:43 +08:00
|
|
|
|
管理 Bro 需要使用 BroControl,它支持交互式 shell 和命令行工具两种形式。启动该 shell:
|
2017-07-26 14:00:11 +08:00
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
# /usr/local/bro/bin/broctl
|
|
|
|
|
```
|
|
|
|
|
|
2017-07-28 23:50:40 +08:00
|
|
|
|
要想使用命令行工具,只需将参数传递给上一个命令,例如:
|
2017-07-26 14:00:11 +08:00
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
# /usr/local/bro/bin/broctl status
|
|
|
|
|
```
|
|
|
|
|
|
2017-07-28 23:50:40 +08:00
|
|
|
|
这将通过显示以下的输出来检查 Bro 的状态:
|
2017-07-26 14:00:11 +08:00
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
Name Type Host Status Pid Started
|
|
|
|
|
bro standalone localhost running 6807 20 Jul 12:30:50
|
|
|
|
|
```
|
|
|
|
|
|
2017-07-28 23:50:40 +08:00
|
|
|
|
### 结论
|
2017-07-26 14:00:11 +08:00
|
|
|
|
|
2017-07-28 23:50:40 +08:00
|
|
|
|
这是一篇 Bro 的安装教程。我们使用基于源代码的安装,因为它是获得可用的最新版本的最有效的方法,但是该网络分析框架也可以下载预构建的二进制格式文件。
|
2017-07-26 14:00:11 +08:00
|
|
|
|
|
2017-07-28 23:50:40 +08:00
|
|
|
|
下次见!
|
2017-07-26 14:00:11 +08:00
|
|
|
|
|
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
via: https://www.unixmen.com/how-to-install-bro-ubuntu-1604/
|
|
|
|
|
|
2017-07-30 11:32:43 +08:00
|
|
|
|
作者:[Giuseppe Molica][a]
|
2017-07-28 23:50:40 +08:00
|
|
|
|
译者:[firmianay](https://github.com/firmianay)
|
2017-07-30 11:32:43 +08:00
|
|
|
|
校对:[wxy](https://github.com/wxy)
|
2017-07-26 14:00:11 +08:00
|
|
|
|
|
|
|
|
|
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
|
|
|
|
|
|
|
|
|
[a]:https://www.unixmen.com/author/tutan/
|
|
|
|
|
[1]:https://www.unixmen.com/author/tutan/
|
|
|
|
|
[2]:http://www.tcpdump.org/
|
|
|
|
|
[3]:http://www.openssl.org/
|
|
|
|
|
[4]:https://www.unixmen.com/wp-content/uploads/2017/07/brologo.jpg
|