开源SOC实现(六)-Grafana Dashboard
2022-12-25 10:46:38 Author: Kali渗透测试教程(查看原文) 阅读量:27 收藏

上一期通过创建extractor把Graylog中日志解析成key:value格式,加强了日志可读性,简化调查难度。接着还需要通过Grafana创建实用的可视化小组件帮助你在第一时间深度了解真正发生的事情,并做出决定。

Grafana是一个多平台开源分析和交互式可视化Web 应用程序。当连接到支持的数据源时,它为 Web 提供图表、图形和警报。
https://en.wikipedia.org/wiki/Grafana

接下来根据官方文档把Grafana好,选择OSS版本进行安装

https://grafana.com/grafana/download?pg=oss-graf&plcmt=resources&edition=oss

wget https://dl.grafana.com/oss/release/grafana-9.3.2-1.x86_64.rpmsudo yum install grafana-9.3.2-1.x86_64.rpm

安装完成后编辑配置文件

vi /etc/grafana/grafana.ini

编辑Server块中内容,去掉protocol前头的,去掉http_addr前头的,设置http_addr = 0.0.0.0,去掉http_port前头,设置完成如下图所示

配置完成之后启动grafana-server服务

systemctl start grafana-server

通过命令看到刚才配置的3000端口正在处于监听状态

netstat -npltd

通过浏览器访问grafana

http://192.168.116.201:3000/login

使用默认密码admin/admin登录后修改密码

登录之后需要为grafana添加数据源,数据源为后端存储、检索的Wazuh indexer,点击左下角⚙按钮,选择Data sources

在页面中点击Add data source

选择数据源类型为Elasticsearch,因为Wazuh indexer使用的是Opensearch

把Name配置成wazuh-indexer,URL配置成https://192.168.116.201:9200,勾选Basic auth以及Skip TLS Verify后,填写Basic auth使用的账号密码,原则上这里需要在Wazuh上新创建一个Grafana使用的账号密码并且赋予对应权限,实验室环境就直接使用admin模拟

Elasticsearch details设置中Index name可以在Wazuh控制台如下位置找到,由于可能会出现很多索引,于是在需要添加上通配符*用于匹配

Time field name字段修改为timestamp,由于Wazuh indexer使用Opensearch 7.10.2,于是ElasticSearch version需要修改成7.10+,配置完成如下图所示

Message field name字段设置成rule_description,Level field name设置成syslog_level,对于一些CVE编号可以设置外部数据源实现一键快捷跳转。

点击Data links中ADD按钮,Field字段设置成^data_vulnerablity_cve$,URL设置成https://nvd.nist.gov/vuln/detail/${__value.raw},URL Label设置成NIST CVE DATABASE

再次点击点击Data links中ADD按钮,Field字段设置成^_id$,URL设置成

https://192.168.116.201/explore?left=%5B%22now-6h%22%2C%22now%22%2C%22wazuh-index%22%2C%7B%22refId%22%3A%22A%22%2C%22query%22%3A%22_id%3A%24%7B__value.raw%7D%22%2C%22alias%22%3A%22%22%2C%22metrics%22%3A%5B%7B%22id%22%3A%221%22%2C%22type%22%3A%22logs%22%2C%22settings%22%3A%7B%22limit%22%3A%22500%22%7D%7D%5D%2C%22bucketAggs%22%3A%5B%5D%2C%22timeField%22%3A%22timestamp%22%7D%5D

URL Label设置成EVENTS DETAILS

点击Save&test按钮保存数据源配置并进行测试,看到下图所示右上角提示Datasource updated

点击Explore可以正常看到日志代表添加成功

在创建仪表盘之前还需要对Graylog数据再做一次格式转换,以便于Grafana更好的提取数据做展示,因为现在rule_groups包含多个字段

登录Graylog点击详细日志,找到rule_group字段,点击末尾小三角图标选择Create extractor

选择Split & index,点击Submit

在弹出窗口中Split by设置成,(英文逗号),Store as field以及Extractor title都设置成rule_group1

点击Try预览效果

效果符合预期,点击Create extractor

接着一样找到详细日志中rule_group字段,点击末尾小三角图标选择Create extractor

选择Split index,点击Submit

在弹出窗口中Split by设置成,(英文逗号),Target index设置成2Store as field以及Extractor title都设置成rule_group2

点击Try预览效果

效果符合预期,点击Create extractor

接着一样找到详细日志中rule_group字段,点击末尾小三角图标选择Create extractor

选择Split index,点击Submit

在弹出窗口中Split by设置成,(英文逗号),Target index设置成3Store as field以及Extractor title都设置成rule_group3

点击Try预览效果

效果符合预期,点击Create extractor

完成以上步骤之后新接收到的日志中就出现了新的3个字段,分别为rule_group1、rule_group2、rule_group3,如下图所示

完成数据格式转换之后,接下来在Grafana中创建可视化面板,由各个可视化面板组成Dashboard。

面板一:Network Connection

该面板主要关注网络连接数据链。

安装可视化插件netsage-sankey-panel

grafana-cli plugins install netsage-sankey-panel

根据提示重启grafana-server服务

systemctl restart grafana-server

在浏览器上点击New dashboard

点击Add new panel

在右上角搜索框中搜索Sankey Panel,选中该组件

接着配置数据源查询参数,由于面板要展示网络信息,登录Graylog查看原始日志跟网络连接相关的

根据rule_group3字段发现其值为sysmon_event3

于是在Grafana面板中设置查询语句为rule_group3:sysmon_event3,注意数据源选择刚才添加的wazuh-indexer

接着添加排序参数,在网络链接中主要关注发起网络连接的源IP,该网络连接中连接到目的IP以及目的端口为多少,在日志中查询这些字段名称,分别为

data_win_eventdata_sourceIpdata_win_eventdata_destinationIpdata_win_eventdata_destinationPort

得知字段之后在Grafana面板中一次设置分组条件,如下图所示

完成添加之后,面板中呈现出对应数据类似下图所示(根据日志数量会各不相同)

接着还需要处理面板中显示的字段以及面板名称以便于区分,点击Transform,搜索Organize fields

点击Organize fields,对需要重命名的字段添加别名

完成之后点击右边Title字段设置成面板新名称Network Connection,设置完点击Apply

这样子就完成了面板一Network Connection的编辑。

面板二:Destination GEO

该面板主要关注目的IP地址地理位置信息。

切换路径

cd /etc/graylog/server

下载相关数据库

wget https://github.com/socfortress/Wazuh-Rules/releases/download/1.0/GeoLite2-City.mmdb

ls

登录Graylog控制台,点击System-Configurations,找到Geo-Location Processor,点击Update

在弹出窗口中勾选Enable Geo-Location processor,其他字段保持默认,点击Save

在该页面中找到Message Processors Configuration,点击Update,把GeoIP Resolver移至最后一行,点击Save

可以看到在新接收到的日志中出现GEO相关字段

安装可视化插件

grafana-cli plugins install grafana-worldmap-panel

根据提示重启grafana-server服务

systemctl restart grafana-server

回到Grafana控制台,点击右上角新增一个面板

点击Add new panel

右上角选择Worldmap Panel

接着配置数据源查询参数,由于面板要展示网络地理位置信息,登录Graylog查看原始日志跟网络连接相关的,根据rule_group3字段发现其值为sysmon_event3

接着添加排序参数,在网络链接中主要关注发起网络连接的目的IP位置信息,在日志中查询这些字段名称为

data_win_eventdata_destinationIp_country_code

于是在Grafana面板中设置查询语句为rule_group3:sysmon_event3,注意数据源选择刚才添加的wazuh-indexer

接着添加排序参数

点击右边Title设置成Destination GEO,点击Apply

这样子就完成了面板二Destination GEO的编辑。

面板三:Endpoint Connection

这个面板主要关注每个端点有多少连接,可以简单用一个直方图实现。点击右上角新增一个面板

点击Add new panel

右上角默认为Time series,数据源选择wazuh-indexer,查询语句一样为rule_group3:sysmon_event3

接着选择分组字段,在日志中查看为agent_ip

于是在Grafana面板中分组条件,如下图所示

点击右边Graph styles设置为Bars

Legend字段中Placement设置成Right

Title设置成Endpoint Connection,点击Apply

这样子就完成了面板三Endpoint Connection的编辑。

面板四:Process info

这个面板主要关注端点上什么程序网络连接次数最多,点击右上角新增一个面板

点击Add new panel

右上角选择Bar Gauge

数据源选择wazuh-indexer,由于还是跟网络连接相关,查询语句一样为rule_group3:sysmon_event3

接着选择分组字段,由于关注在网络链接中主要关注发起网络连接的程序名称,在日志中查看跟该字段相关名称为

data_win_eventdata_image

接着添加排序参数,如下图所示

点击右边把Value options中Calculation设置成Total,Bar gauge中Orientation设置成Horizontal以及Display mode设置成Retro LCD

Thresholds设置成超过20为红色

最后将Title设置成Process info,设置完成点击Apply

这样子就完成了面板四Process info的编辑。

面板五:talosintelligence

这个面板主要关注网络中哪个目的地址被连接的最多,点击右上角新增一个面板

点击Add new panel

右上角选择Table

接着配置数据源查询参数,查找原始日志发现其字段为rule_group3:sysmon_event_3

接着选择分组字段,由于还是跟目的IP地址相关,在日志中查询这些字段名称为

data_win_eventdata_destinationIp

于是在Grafana面板中设置查询语句为rule_group3:sysmon_event3,注意数据源选择刚才添加的wazuh-indexer

接着添加排序参数

添加完面板显示如下图所示

由于希望点击IP地址时可以自动打开外部链接查询该IP相关信息,需要对该字段进行重写,点击右侧Overrides,点击Add field override

点击Fields with name,选择data_win_eventdata_destinationIp,接着点击Add override property,选择Data links

点击Add link,具体参数填写如下图所示,勾选Open in new tab,点击Save

https://talosintelligence.com/reputation_center/lookup?search=${__value.text}

配置完成之后,点击右边All按钮,把Title设置成talosintelligence

鼠标点击面板中的IP地址会自动跳转到Cisco的talosintelligence网站

这样子就完成了面板五talosintelligence的编辑。

接下来对刚才配置的面板进行排列

排列完成点击右上角保存图标,配置Dashboard名称后点击Save,把该Dashboard进行保存。

这样就完成了Grafana入门,通过配置几个简单的网络相关面板,让你对网络状态一目了然,还有更多的面板可以进行自定义,欢迎大家探索后分享出来。

接下来需要对SIEM日志中目的IP地址做自动调查,欢迎订阅收看开源SOC实现(七)-自动调查之目的IP地址。

感谢互联网上开源的项目。

参考链接:

https://talosintelligence.com/https://socfortress.medium.com/part-6-best-open-source-siem-dashboards-5dad09fa4d0ehttps://github.com/socfortress/Wazuh-Rules

文章来源: http://mp.weixin.qq.com/s?__biz=MzI3NDYwMzI4Mg==&mid=2247486122&idx=1&sn=eeeea8195d42504c1cdff28fdec07318&chksm=eb10c6d7dc674fc18835a73a4787189b4e32b80765eaf84ca1f662f1840110fb503bb0e395f8#rd
如有侵权请联系:admin#unsafe.sh