查看原文
其他

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

hesir 看雪学院 2019-05-26

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

 

入侵检测系统(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 虚拟机,配置为网关。



工作流测试



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

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

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

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

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



数据可视化



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

 

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

 

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

 

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

 

 

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

 

 

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

 

 

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

 

 

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

 

 

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 <your API key>

为了接收 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/

 





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

转载请注明来自看雪论坛



往期热门阅读:


扫描二维码关注我们,更多干货等你来拿!

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存