使用 Bro IDS 和 Intel Critical Stack 分析网络活动

使用 Bro IDS 和 Intel Critical Stack 分析网络活动_第1张图片

愈来愈多的网络攻击迫使企业将网络活动控制作为其安全策略的一部分。

入侵检测系统(Intrusion Detection Systems,IDS)被设计用于帮助企业保护网络基础设施。但是一款商业化 IDS 通常价值不菲,对于一些小企业来说这可能是一笔相当大的财务负担。

幸运的是,还有一些开源的 IDS 可供使用。它们提供的可修改插件可用来动态扫描网络和检测来自网络的入侵。

本文会向大家展示一份我们使用 Bro IDS 和 Intel Critical Stack 分析网络活动的研究报告,从结果中将可以看到这些系统在实时检测网络入侵方面表现得相当不错。

目录:

研究目标

研究方法

软件概览

工作流测试

数据可视化

清空数据库

在真实网络中部署监控系统

安装与配置组件指南

总结

参考


研究目标


本次研究的目标为使用开源工具搭建一个高效的网络入侵分析环境。

我们选择了 Bro IDS 作为监测工具,它可以收集一个企业内部所有的网络活动信息并生成大量的日志记录,不过这些数据如果不经过分离或者可视化,系统管理员是很难进行分析的。因此,为了方便进一步的网络入侵分析,我们需要定义出哪些日志所对应的网络活动是可疑的,以及如何将这些数据可视化为表格形式。


研究方法


在研究中,我们希望用最少的组件搭建一套监控系统。首先测试环境中运行该系统获得结果,然后对这些结果进行分析,最后对在真实网络环境中的部署提供参考。

监控系统包含以下部分:

产生网络活动的监控对象

网络入侵检测系统

分析并可视化数据的系统

支撑以上操作的操作系统


软件概览


监测系统实际所用软件如下:

入侵检测系统:Bro Network Security Monitor](https://www.bro.org/) 和 {Intel Critical Stack。

数据可视化:ELK Stack,其中包含了 Elasticsearch、Logstash 和 Kibana。

操作系统:Ubuntu 16.04 虚拟机,配置为网关。


工作流测试


我们通过以下方式对监控系统进行测试:

一个客户端向互联网发送请求,这样目标就产生了网络活动。

Bro 使用 tcpdump 分析 enp0s8(eth1) 接口的网络情况并利用插件将记录保存到日志。

Elasticsearch 使用 Logstash 分析 Bro 日志并将它们收集到本地数据库中。

Kibana 从数据库中提取数据并建立视图。


数据可视化


为了将网络数据可视化为便于分析网络可疑活动的形式,我们使用了 Kibana。

我们将数据可视化为以下图表的形式:

The connections count per minute chart 展示了每分钟的连接数。非正常活动的一个标志是在非工作时段的连接数很多。

The top protocols chart 展示了网络上流量的类型和数量。

使用 Bro IDS 和 Intel Critical Stack 分析网络活动_第2张图片

The top 10 talkers chart 展示了最活跃的主机,这些很可能是受感染主机。

使用 Bro IDS 和 Intel Critical Stack 分析网络活动_第3张图片

The top 10 HTTP requests chart 展示了未经加密的请求,这些网站可能被恶意软件所感染。

使用 Bro IDS 和 Intel Critical Stack 分析网络活动_第4张图片

The top 10 remote ports chart 展示了请求数最多的10个远程端口。如果某些端口每分钟的连接数和请求数很多的话,很可能就是可疑的活动。

使用 Bro IDS 和 Intel Critical Stack 分析网络活动_第5张图片

Bro log files 展示了 Bro 文件中的记录数目和 Bro IDS 的总体状态。

使用 Bro IDS 和 Intel Critical Stack 分析网络活动_第6张图片

The top 10 malware domains chart 包含了 Intel Critical Stack 提供的来自恶意软件数据库的提要数据。


清空数据库


前文提到过,在正常操作过程中 Bro 会产生大量的日志文件。如果你的数据库存储空间很有限,你可以选择在一个特定时间段清空数据库。为了删除不必要的数据,我们为 Logstash 使用了 Curator,并在 Crontab 中添加了一个日常任务来删除旧的 ELK 数据。

关于哪个 Curator 选择要清空的数据,请看下面 actionfile.yml 文件的内容。

0 1 * * * curator /root/actionfile.yml

actionfile.yml:

actions:

1:

action: delete_indices

description: >-

options:

  ignore_empty_list: True

  timeout_override:

  continue_if_exception: False

  disable_action: False

filters:

- filtertype: pattern

  kind: prefix

  value: logstash-

  exclude:

- filtertype: age

  source: name

  direction: older

  timestring: '%Y.%m.%d'

  unit: days

  unit_count: 30

  exclude:


在真实网络环境中部署该系统


经过分析实验室环境下的测试结果,我们总结出在一个真实网络中部署该系统需要以下条件:

A switch with port mirroring

A server with 32+ GB RAM and 6–10 TB HDD

需要注意的是,所需的系统配置取决于网络服务提供商的带宽。如果你有好几个 1 Gbps 的信道,那么你就得安装高性能的网络设备了。

安装与配置指南

下面介绍如何安装监控系统所需的组件并进行配置。

安装 Bro IDS

配置虚拟机

我们的研究中使用的虚拟机有两块网络适配器:第一块用于广域网连接,第二块用于局域网连接。

注意,以下所有命令均需要 root 权限。

首先安装 DHCP 服务器:

apt-get install isc-dhcp-server

然后进行配置。添加以下内容到  /etc/default/isc-dhcp-server 文件中

INTERFACES="enp0s8"

打开 /etc/sysctl.conf 文件注释掉

#net.ipv4.ip_forward=1

执行以下命令

sysctl -p /etc/sysctl.conf

在 /etc/network/interfaces 文件中指定以下内容

auto lo

iface lo inet loopback

auto enp0s8

iface enp0s8 inet static

address 10.10.0.1

netmask 255.255.255.0

配置路由

为了主机能连接局域网和广域网,需要配置路由,首先打开防火墙

ufw enable

然后运行 rc-local,这是为了在机器重启后恢复 IP 表

systemctl enable rc-local.service

打开 /etc/rc.local 文件并添加以下内容

/sbin/iptables-restore < /etc/iptables/rules.v4

然后运行以下命令

iptables -t nat -A POSTROUTING -o enp0s3 -j MASQUERADE

iptables -A FORWARD -i enp0s8 -o enp0s3 -m state --state RELATED,ESTABLISHED -j ACCEPT

iptables -A FORWARD -i enp0s8 -o enp0s3 -j ACCEPT

iptables -A INPUT -p tcp --dport 5601 -j ACCEPT

iptables -A INPUT -p udp --dport 5601 -j ACCEPT

iptables-save > /etc/iptables/rules.v4

接着配置 DHCP 服务器自动接收 IP 地址。打开 /etc/dhcp/dhcpd.conf 文件并添加以下内容

subnet 10.10.0.0 netmask 255.255.255.0 {

range 10.10.0.50 10.10.0.150;

option broadcast-address 10.10.0.255;

option routers 10.10.0.1;

option domain-name-servers 10.10.0.1, 8.8.8.8;

}

为 Bro 安装依赖包

为了 Bro 能正常运行,需要安装一些特定的包,运行以下命令

apt-get install cmake make gcc g++ flex bison libpcap-dev libgeoip-dev libssl-dev python-dev zlib1g-dev libmagic-dev swig libgoogle-perftools-dev

mkdir -p /nsm/bro

安装 Bro IDS

为了安装 Bro IDS,运行以下命令

cd ~

下载 Bro IDS

wget https://www.bro.org/downloads/release/bro-2.4.1.tar.gz

解压文件

tar -xvzf bro-2.4.1.tar.gz

cd bro-2.4.1

配置安装选项并安装 Bro IDS

./configure --prefix=/nsm/bro

make

make install

export PATH=/nsm/bro/bin:$PATH

配置 Bro IDS

在 node.cfg 文件中指定要监控经过哪块网卡的网络流量

nano /nsm/bro/etc/node.cfg

在 networks.cfg 文件中指定要监控哪个子网

nano /nsm/bro/etc/networks.cfg

启动 Bro IDS

为了启动 Bro,运行以下命令

/nsm/bro/bin/broctl

install

exit

编辑 rc.local 文件

sudo nano /etc/rc.local

添加以下内容

/nsm/bro/bin/broctl start

然后重启虚拟机

shutdown -r now

WatchDog for Bro IDS

WatchDog 会在 Bro 崩溃之后的一段特定时间后自动启动 Bro

crontab -e

# add: */5 * * * * /nsm/bro/bin/broctl cron

Intel Critical Stack

为了将 Intel Critical Stack 添加到 Bro IDS,你需要访问 https://intel.criticalstack.com/,创建 sensor,订阅 feeds,然后在安装了 Bro IDS 的虚拟机上面运行以下命令

curl https://packagecloud.io/install/repositories/criticalstack/critical-stack-intel/script.deb.sh | sudo bash

使用以下命令配置 sensor

apt-get install critical-stack-intel

critical-stack-intel api

为了接收 feeds 需要检查并安装更新

broctl check

broctl install

broctl restart

安装 ELK

apt-get update

安装 Java Development Kit

apt-get install -y openjdk-8-jdk

apt-get install -y wget apt-transport-https

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -

echo "deb https://artifacts.elastic.co/packages/5.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elk.list

apt-get update

安装 ElasticSearch

apt-get install -y elasticsearch

systemctl enable elasticsearch

systemctl start elasticsearch

安装 Logstash

apt-get install -y logstash

systemctl start logstash

systemctl enable logstash

安装并配置 Kibana

apt-get install -y kibana

nano /etc/kibana/kibana.yml

server.host: "0.0.0.0"

systemctl restart kibana

systemctl enable kibana

使用以下命令配置 Logstash

cd /etc/logstash/conf.d/

wget https://raw.githubusercontent.com/fakrul/bro-elk/master/bro-conn_log.conf

wget https://raw.githubusercontent.com/fakrul/bro-elk/master/bro-dns_log.conf

wget https://raw.githubusercontent.com/fakrul/bro-elk/master/bro-files_log.conf

wget https://raw.githubusercontent.com/fakrul/bro-elk/master/bro-http_log.conf

wget https://raw.githubusercontent.com/fakrul/bro-elk/master/bro-intel_log.conf

wget https://raw.githubusercontent.com/fakrul/bro-elk/master/bro-notice_log.conf

wget https://raw.githubusercontent.com/fakrul/bro-elk/master/bro-ssh_log.conf

wget https://raw.githubusercontent.com/fakrul/bro-elk/master/bro-ssl_log.conf

wget https://raw.githubusercontent.com/fakrul/bro-elk/master/bro-tunnel_log.conf

wget https://raw.githubusercontent.com/fakrul/bro-elk/master/bro-weird_log.conf

wget https://raw.githubusercontent.com/fakrul/bro-elk/master/bro-x509_log.conf

注意:应该将 conf 文件中的路径改为 log 文件所在路径。

然后为 Logstash 安装 Filter Translate 插件

cd /usr/share/logstash/bin/

logstash-plugin install logstash-filter-translate

systemctl restart logstash

配置 Kibana 可视化

将以下 JSON (JavaScript Object Notation) 文件导入 Kibana,目的是为了生成网络中可疑活动的可视化图表。

[

{

  "_id": "AWHWhw9vuiCz3jvXS1Sb",

  "_type": "visualization",

  "_source": {

    "title": "TOP 10 REMOTE PORTS",

    "visState": "{\"title\":\"TOP 10 REMOTE PORTS\",\"type\":\"table\",\"params\":{\"perPage\":10,\"showPartialRows\":false,\"showMeticsAtAllLevels\":false,\"sort\":{\"columnIndex\":null,\"direction\":null},\"showTotal\":false,\"totalFunc\":\"sum\",\"type\":\"table\"},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"bucket\",\"params\":{\"field\":\"id_resp_port.keyword\",\"exclude\":\"0\",\"size\":10,\"order\":\"desc\",\"orderBy\":\"1\",\"customLabel\":\"Remote Port\"}}],\"listeners\":{}}",

    "uiStateJSON": "{\"vis\":{\"params\":{\"sort\":{\"columnIndex\":null,\"direction\":null}}}}",

    "description": "",

    "version": 1,

    "kibanaSavedObjectMeta": {

      "searchSourceJSON": "{\"index\":\"AWHWHTYfuiCz3jvXGox0\",\"query\":{\"match_all\":{}},\"filter\":[{\"meta\":{\"index\":\"AWHWHTYfuiCz3jvXGox0\",\"negate\":false,\"disabled\":false,\"alias\":null,\"type\":\"phrase\",\"key\":\"type.keyword\",\"value\":\"bro-conn_log\"},\"query\":{\"match\":{\"type.keyword\":{\"query\":\"bro-conn_log\",\"type\":\"phrase\"}}},\"$state\":{\"store\":\"appState\"}}]}"

    }

  }

},

{

  "_id": "AWHXprt1uiCz3jvX3lHz",

  "_type": "visualization",

  "_source": {

    "title": "TOP 10 MALWARE DOMAINS",

    "visState": "{\"title\":\"TOP 10 MALWARE DOMAINS\",\"type\":\"table\",\"params\":{\"perPage\":10,\"showPartialRows\":false,\"showMeticsAtAllLevels\":false,\"sort\":{\"columnIndex\":null,\"direction\":null},\"showTotal\":false,\"totalFunc\":\"sum\",\"type\":\"table\"},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"bucket\",\"params\":{\"field\":\"seen.node.keyword\",\"size\":10,\"order\":\"desc\",\"orderBy\":\"1\",\"customLabel\":\"Malware Domains\"}}],\"listeners\":{}}",

    "uiStateJSON": "{\"vis\":{\"params\":{\"sort\":{\"columnIndex\":null,\"direction\":null}}}}",

    "description": "",

    "version": 1,

    "kibanaSavedObjectMeta": {

      "searchSourceJSON": "{\"index\":\"AWHWHTYfuiCz3jvXGox0\",\"query\":{\"match_all\":{}},\"filter\":[]}"

    }

  }

},

{

  "_id": "AWHWRzB1uiCz3jvXLjB9",

  "_type": "visualization",

  "_source": {

    "title": "TOP PROTOCOLS",

    "visState": "{\"title\":\"TOP PROTOCOLS\",\"type\":\"pie\",\"params\":{\"addTooltip\":true,\"addLegend\":true,\"legendPosition\":\"right\",\"isDonut\":false,\"type\":\"pie\"},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"segment\",\"params\":{\"field\":\"proto.keyword\",\"size\":5,\"order\":\"desc\",\"orderBy\":\"1\",\"customLabel\":\"Protocol\"}}],\"listeners\":{}}",

    "uiStateJSON": "{}",

    "description": "",

    "version": 1,

    "kibanaSavedObjectMeta": {

      "searchSourceJSON": "{\"index\":\"AWHWHTYfuiCz3jvXGox0\",\"query\":{\"match_all\":{}},\"filter\":[{\"meta\":{\"index\":\"AWHWHTYfuiCz3jvXGox0\",\"negate\":false,\"disabled\":false,\"alias\":null,\"type\":\"phrase\",\"key\":\"type.keyword\",\"value\":\"bro-conn_log\"},\"query\":{\"match\":{\"type.keyword\":{\"query\":\"bro-conn_log\",\"type\":\"phrase\"}}},\"$state\":{\"store\":\"appState\"}}]}"

    }

  }

},

{

  "_id": "AWHWq6wBuiCz3jvXXqYo",

  "_type": "visualization",

  "_source": {

    "title": "BRO LOGS",

    "visState": "{\"title\":\"BRO LOGS\",\"type\":\"table\",\"params\":{\"perPage\":3,\"showMeticsAtAllLevels\":false,\"showPartialRows\":false,\"showTotal\":true,\"sort\":{\"columnIndex\":null,\"direction\":null},\"totalFunc\":\"sum\",\"type\":\"table\"},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{\"customLabel\":\"# OF RECORDS\"}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"bucket\",\"params\":{\"field\":\"type.keyword\",\"include\":\"\",\"size\":5,\"order\":\"desc\",\"orderBy\":\"1\",\"customLabel\":\"LOG FILES\"}}],\"listeners\":{}}",

    "uiStateJSON": "{\"vis\":{\"params\":{\"sort\":{\"columnIndex\":null,\"direction\":null}}}}",

    "description": "",

    "version": 1,

    "kibanaSavedObjectMeta": {

      "searchSourceJSON": "{\"index\":\"AWHWHTYfuiCz3jvXGox0\",\"query\":{\"match_all\":{}},\"filter\":[{\"meta\":{\"index\":\"AWHWHTYfuiCz3jvXGox0\",\"type\":\"phrases\",\"key\":\"type\",\"value\":\"bro-conn_log, bro-http_log, bro-intel_log\",\"params\":[\"bro-conn_log\",\"bro-http_log\",\"bro-intel_log\"],\"negate\":false,\"disabled\":false,\"alias\":null},\"query\":{\"bool\":{\"should\":[{\"match_phrase\":{\"type\":\"bro-conn_log\"}},{\"match_phrase\":{\"type\":\"bro-http_log\"}},{\"match_phrase\":{\"type\":\"bro-intel_log\"}}],\"minimum_should_match\":1}},\"$state\":{\"store\":\"appState\"}}]}"

    }

  }

},

{

  "_id": "AWHWTDyouiCz3jvXMHmd",

  "_type": "visualization",

  "_source": {

    "title": "TOP 10 TALKERS",

    "visState": "{\"title\":\"TOP 10 TALKERS\",\"type\":\"histogram\",\"params\":{\"grid\":{\"categoryLines\":false,\"style\":{\"color\":\"#eee\"},\"valueAxis\":\"ValueAxis-1\"},\"categoryAxes\":[{\"id\":\"CategoryAxis-1\",\"type\":\"category\",\"position\":\"bottom\",\"show\":false,\"style\":{},\"scale\":{\"type\":\"linear\"},\"labels\":{\"show\":true,\"truncate\":0},\"title\":{\"text\":\"\"}}],\"valueAxes\":[{\"id\":\"ValueAxis-1\",\"name\":\"LeftAxis-1\",\"type\":\"value\",\"position\":\"left\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\",\"mode\":\"normal\"},\"labels\":{\"show\":true,\"rotate\":0,\"filter\":false,\"truncate\":100},\"title\":{\"text\":\"Count\"}}],\"seriesParams\":[{\"show\":\"true\",\"type\":\"histogram\",\"mode\":\"normal\",\"data\":{\"label\":\"Count\",\"id\":\"1\"},\"valueAxis\":\"ValueAxis-1\",\"drawLinesBetweenPoints\":true,\"showCircles\":true}],\"addTooltip\":true,\"addLegend\":true,\"legendPosition\":\"right\",\"times\":[],\"addTimeMarker\":false,\"type\":\"histogram\",\"orderBucketsBySum\":false},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"group\",\"params\":{\"field\":\"id_orig_host.keyword\",\"size\":10,\"order\":\"desc\",\"orderBy\":\"1\",\"customLabel\":\"Host\"}}],\"listeners\":{}}",

    "uiStateJSON": "{}",

    "description": "",

    "version": 1,

    "kibanaSavedObjectMeta": {

      "searchSourceJSON": "{\"index\":\"AWHWHTYfuiCz3jvXGox0\",\"query\":{\"match_all\":{}},\"filter\":[{\"meta\":{\"index\":\"AWHWHTYfuiCz3jvXGox0\",\"negate\":false,\"disabled\":false,\"alias\":null,\"type\":\"phrase\",\"key\":\"type.keyword\",\"value\":\"bro-conn_log\"},\"query\":{\"match\":{\"type.keyword\":{\"query\":\"bro-conn_log\",\"type\":\"phrase\"}}},\"$state\":{\"store\":\"appState\"}}]}"

    }

  }

},

{

  "_id": "AWHWRA0BuiCz3jvXLG2E",

  "_type": "visualization",

  "_source": {

    "title": "CONNECTIONS COUNT PER MINUTE",

    "visState": "{\"title\":\"CONNECTIONS COUNT PER MINUTE\",\"type\":\"line\",\"params\":{\"addLegend\":true,\"addTimeMarker\":false,\"addTooltip\":true,\"categoryAxes\":[{\"id\":\"CategoryAxis-1\",\"labels\":{\"show\":true,\"truncate\":0},\"position\":\"bottom\",\"scale\":{\"type\":\"linear\"},\"show\":true,\"style\":{},\"title\":{\"text\":\"@timestamp per minute\"},\"type\":\"category\"}],\"grid\":{\"categoryLines\":true,\"style\":{\"color\":\"#eee\"},\"valueAxis\":\"ValueAxis-1\"},\"legendPosition\":\"top\",\"seriesParams\":[{\"show\":true,\"mode\":\"normal\",\"type\":\"line\",\"drawLinesBetweenPoints\":true,\"showCircles\":true,\"data\":{\"id\":\"3\",\"label\":\"Count\"},\"valueAxis\":\"ValueAxis-1\"}],\"times\":[],\"type\":\"line\",\"valueAxes\":[{\"id\":\"ValueAxis-1\",\"labels\":{\"filter\":false,\"rotate\":0,\"show\":true,\"truncate\":100},\"name\":\"LeftAxis-1\",\"position\":\"left\",\"scale\":{\"mode\":\"normal\",\"type\":\"linear\"},\"show\":true,\"style\":{},\"title\":{\"text\":\"Count\"},\"type\":\"value\"}]},\"aggs\":[{\"id\":\"2\",\"enabled\":true,\"type\":\"date_histogram\",\"schema\":\"segment\",\"params\":{\"field\":\"@timestamp\",\"interval\":\"m\",\"customInterval\":\"2h\",\"min_doc_count\":1,\"extended_bounds\":{}}},{\"id\":\"3\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}}],\"listeners\":{}}",

    "uiStateJSON": "{}",

    "description": "",

    "version": 1,

    "kibanaSavedObjectMeta": {

      "searchSourceJSON": "{\"index\":\"AWHWHTYfuiCz3jvXGox0\",\"query\":{\"match_all\":{}},\"filter\":[{\"meta\":{\"index\":\"AWHWHTYfuiCz3jvXGox0\",\"negate\":false,\"disabled\":false,\"alias\":null,\"type\":\"phrase\",\"key\":\"type.keyword\",\"value\":\"bro-conn_log\"},\"query\":{\"match\":{\"type.keyword\":{\"query\":\"bro-conn_log\",\"type\":\"phrase\"}}},\"$state\":{\"store\":\"appState\"}}]}"

    }

  }

},

{

  "_id": "AWHWefVTuiCz3jvXRbLT",

  "_type": "visualization",

  "_source": {

    "title": "TOP 10 HTTP REQUESTS",

    "visState": "{\"title\":\"TOP 10 HTTP REQUESTS\",\"type\":\"histogram\",\"params\":{\"grid\":{\"categoryLines\":false,\"style\":{\"color\":\"#eee\"},\"valueAxis\":\"ValueAxis-1\"},\"categoryAxes\":[{\"id\":\"CategoryAxis-1\",\"type\":\"category\",\"position\":\"bottom\",\"show\":false,\"style\":{},\"scale\":{\"type\":\"linear\"},\"labels\":{\"show\":true,\"truncate\":0,\"filter\":false},\"title\":{\"text\":\"\"}}],\"valueAxes\":[{\"id\":\"ValueAxis-1\",\"name\":\"LeftAxis-1\",\"type\":\"value\",\"position\":\"left\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\",\"mode\":\"normal\"},\"labels\":{\"show\":true,\"rotate\":0,\"filter\":false,\"truncate\":100},\"title\":{\"text\":\"Count\"}}],\"seriesParams\":[{\"show\":\"true\",\"type\":\"histogram\",\"mode\":\"normal\",\"data\":{\"label\":\"Count\",\"id\":\"1\"},\"valueAxis\":\"ValueAxis-1\",\"drawLinesBetweenPoints\":true,\"showCircles\":true}],\"addTooltip\":true,\"addLegend\":true,\"legendPosition\":\"right\",\"times\":[],\"addTimeMarker\":false,\"type\":\"histogram\",\"orderBucketsBySum\":false},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"group\",\"params\":{\"field\":\"referrer.keyword\",\"exclude\":\"-\",\"size\":10,\"order\":\"desc\",\"orderBy\":\"1\",\"customLabel\":\"HTTP Host\"}}],\"listeners\":{}}",

    "uiStateJSON": "{}",

    "description": "",

    "version": 1,

    "kibanaSavedObjectMeta": {

      "searchSourceJSON": "{\"index\":\"AWHWHTYfuiCz3jvXGox0\",\"query\":{\"match_all\":{}},\"filter\":[{\"meta\":{\"index\":\"AWHWHTYfuiCz3jvXGox0\",\"negate\":false,\"disabled\":false,\"alias\":null,\"type\":\"phrase\",\"key\":\"type.keyword\",\"value\":\"bro-http_log\"},\"query\":{\"match\":{\"type.keyword\":{\"query\":\"bro-http_log\",\"type\":\"phrase\"}}},\"$state\":{\"store\":\"appState\"}}]}"

    }

  }

}

]

配置 Kibana 面板

下面的 JSON 文件描述了图表是以何种顺序显示在面板上的。

[

{

  "_id": "AWHXaEbeuiCz3jvXvitY",

  "_type": "dashboard",

  "_source": {

    "title": "Statistics Dashboard",

    "hits": 0,

    "description": "",

    "panelsJSON": "[{\"col\":1,\"id\":\"AWHWRA0BuiCz3jvXLG2E\",\"panelIndex\":1,\"row\":1,\"size_x\":12,\"size_y\":3,\"type\":\"visualization\"},{\"col\":1,\"id\":\"AWHWRzB1uiCz3jvXLjB9\",\"panelIndex\":2,\"row\":4,\"size_x\":4,\"size_y\":3,\"type\":\"visualization\"},{\"col\":5,\"id\":\"AWHWTDyouiCz3jvXMHmd\",\"panelIndex\":3,\"row\":4,\"size_x\":4,\"size_y\":3,\"type\":\"visualization\"},{\"col\":9,\"id\":\"AWHWefVTuiCz3jvXRbLT\",\"panelIndex\":4,\"row\":4,\"size_x\":4,\"size_y\":3,\"type\":\"visualization\"},{\"col\":1,\"id\":\"AWHWhw9vuiCz3jvXS1Sb\",\"panelIndex\":5,\"row\":7,\"size_x\":4,\"size_y\":5,\"type\":\"visualization\"},{\"col\":5,\"id\":\"AWHWq6wBuiCz3jvXXqYo\",\"panelIndex\":6,\"row\":7,\"size_x\":4,\"size_y\":5,\"type\":\"visualization\"},{\"col\":9,\"id\":\"AWHXprt1uiCz3jvX3lHz\",\"panelIndex\":7,\"row\":7,\"size_x\":4,\"size_y\":5,\"type\":\"visualization\"}]",

    "optionsJSON": "{\"darkTheme\":false}",

    "uiStateJSON": "{\"P-5\":{\"vis\":{\"params\":{\"sort\":{\"columnIndex\":null,\"direction\":null}}}},\"P-6\":{\"vis\":{\"params\":{\"sort\":{\"columnIndex\":null,\"direction\":null}}}},\"P-7\":{\"vis\":{\"params\":{\"sort\":{\"columnIndex\":null,\"direction\":null}}}}}",

    "version": 1,

    "timeRestore": false,

    "kibanaSavedObjectMeta": {

      "searchSourceJSON": "{\"filter\":[{\"query\":{\"match_all\":{}}}],\"highlightAll\":true,\"version\":true}"

    }

  }

}

]

大功告成!现在你可以开始监控网络活动了。

总结

本文我们介绍了一种使用开源工具分析网络活动的方法,其中重点使用了 BRO IDS 和 Intel Critical Stack。这种方法对于探测受感染的主机是行之有效的,而且除了搭建环境外并不需要任何其他方面的投资。

我们还提供了一份如何配置 Bro 和 Critical Stack Agent 来进行网络监控和数据收集的指南。最后我们解释了如何使用 ELK Stack 来可视化数据和生成图表。

参考

https://en.wikipedia.org/wiki/Intrusion_detection_system

https://www.bro.org/

https://intel.criticalstack.com/

https://www.elastic.co/

示例下载:

visualizations.zip

dashboard.zip

原文链接:[翻译]使用 Bro IDS 和 Intel Critical Stack 分析网络活动

本文由看雪翻译小组 hesir 编译,来源Dev's blog

转载请注明来自看雪论坛

你可能感兴趣的:(使用 Bro IDS 和 Intel Critical Stack 分析网络活动)