上一期通过创建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.rpm
sudo 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设置成2,Store as field以及Extractor title都设置成rule_group2
点击Try预览效果
效果符合预期,点击Create extractor
接着一样找到详细日志中rule_group字段,点击末尾小三角图标选择Create extractor
选择Split & index,点击Submit
在弹出窗口中Split by设置成,(英文逗号),Target index设置成3,Store 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_sourceIp
data_win_eventdata_destinationIp
data_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-5dad09fa4d0e
https://github.com/socfortress/Wazuh-Rules