使用 Bro IDS 和 Intel Critical Stack 分析網路活動

Editor發表於2018-05-10


愈來愈多的網路攻擊迫使企業將網路活動控制作為其安全策略的一部分。


入侵檢測系統(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 分析網路活動

The top 10 talkers chart 展示了最活躍的主機,這些很可能是受感染主機。

使用 Bro IDS 和 Intel Critical Stack 分析網路活動

The top 10 HTTP requests chart 展示了未經加密的請求,這些網站可能被惡意軟體所感染。

使用 Bro IDS 和 Intel Critical Stack 分析網路活動

The top 10 remote ports chart 展示了請求數最多的10個遠端埠。如果某些埠每分鐘的連線數和請求數很多的話,很可能就是可疑的活動。

使用 Bro IDS 和 Intel Critical Stack 分析網路活動

Bro log files 展示了 Bro 檔案中的記錄數目和 Bro IDS 的總體狀態。

使用 Bro IDS 和 Intel Critical Stack 分析網路活動

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

轉載請註明來自看雪論壇

相關文章