suricata可视化
方式1:suicata + ELK
1.1 在展示数据的机器上配置dockers环境
1.2 部署架构
机器 | 部署内容 | IP |
---|---|---|
流量机器 | suricata监听流量+filebeat传输数据 | 192.168.1.110 |
数据展示机器 | docker部署ELK | 192.168.10.120 |
1.3 Docker镜像准备(尽量下载最新版)
docker pull logstash:7.7.0
docker pull kibana:7.7.0
docker pull elasticsearch:7.7.0
1.4 filebeat安装
filebeat需要安装在流量监听机器,该部分同样选择7.7.0版本,可在GitHub找到对应版本的tar包下载。
1.4.1 编译filebeat
流量监听机器的系统是armv8,需要在X86_64的系统下进性交叉编译
解压beats源码包
tar xvf beats.xxxxx.tar.gz
beats 有多个分支,进入其中一个分支,这里选择 filebeats
cd filebeats
filebeats 使用go进性交叉编译
CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go build main.go
1.4.2 编译后出现 main 可执行文件,重命名为 filebeats
退出到总目录 beats 后,压缩(一定要是总目录,不能只是 filebeats 这个分支文件夹, filebeats 文件夹里的可执行程序需要依赖 beats 文价夹下其他文件)
tar cvf beats.xxx.tar.gz beats.xxx
将压缩文件拷贝到流量监听机器上
1.5 下载sýnesis™ Lite for Suricata模板
在数据展示机器上下载模板
https://github.com/robcowart/synesis_lite_suricata
1.5.1 配置 logstash
解压、进入logstash配置目录,依次将 conf.d 目录下的
10_input_beats.logstash.conf
20_filter_suricata.logstash.conf
30_output_elasticsearch.logstash.conf
合并到新建的 logstash.conf 中
由于 elasticsearch 不准备使用密码,所以在其配置文件 logstash.conf 文件中,将1160和1170行的 password 字段内容注释即可。
再将 logstash.conf 拷贝到上一级目录,并返回到 synesis_lite_suricata 目录
1.5.2 配置 elasticsearch
该部分不需要进行具体的配置,主要是为了能够将数据保存到宿主机上,创建一个文件夹来保存数据,为了方便直接赋予该文件夹全权限。
mkdir elasticsearch/data -p
chmod 777 elasticsearch/data
1.5.3 编写 docker-compose 文件
新建 docker-compose, 内容如下
注意下面的版本信息,与你实际使用的要一致
volumes字段的信息为对应配置文件的目录,根据需要修改
# yaml settings
version: '3'
services:
elasticsearch:
container_name: elasticsearch_for_suricata
image: elasticsearch:7.7.0
restart: "always"
volumes:
- "./elasticsearch/data:/usr/share/elasticsearch/data"
environment:
"discovery.type": "single-node"
kibana:
container_name: kibana_for_suricata
image: kibana:7.7.0
ports:
- "5601:5601"
restart: "always"
depends_on:
- elasticsearch
logstash:
container_name: logstash_for_suricata
image: logstash:7.7.0
ports:
- "5044:5044"
restart: "always"
volumes:
- "./logstash/synlite_suricata/logstash.conf:/usr/share/logstash/pipeline/logstash.conf"
- "./logstash/synlite_suricata/dictionaries/:/usr/share/logstash/synlite_suricata/dictionaries"
- "./logstash/synlite_suricata/geoipdbs/:/usr/share/logstash/synlite_suricata/geoipdbs"
- "./logstash/synlite_suricata/templates/:/usr/share/logstash/synlite_suricata/templates"
depends_on:
- elasticsearch
environment:
#注意这里的内存配置是模板[1]中所要求,笔者部署过程中发现较小内存无法启动
LS_JAVA_OPTS: "-Xms4g -Xmx4g"
SYNLITE_SURICATA_BEATS_HOST: "0.0.0.0"
SYNLITE_SURICATA_BEATS_PORT: 5044
SYNLITE_SURICATA_ES_HOST: "elasticsearch:9200"
SYNLITE_SURICATA_GEOIP_DB_PATH: "/usr/share/logstash/synlite_suricata/geoipdbs"
SYNLITE_SURICATA_DICT_PATH: "/usr/share/logstash/synlite_suricata/dictionaries"
SYNLITE_SURICATA_TEMPLATE_PATH: "/usr/share/logstash/synlite_suricata/templates"
其中 logstash 服务设置 5044 端口来接收数据,kibana 设置 5601 端口来进行数据展示
此时在初始目录下执行命令,启动 dockers 容器
docker-compose up -f ./docker-compose -d
1.6 配置 filebeats
在流量监听机器机器上操作
进入 filebeats 文价夹下
拷贝下面的内容覆盖到 filebats.yml 里面
filebeat.inputs:
- type: log
enabled: true
paths:
- /root/secheart-defender/build/var/log/suricata/eve.json
fields:
event.type: suricata
output.logstash:
hosts: ["10.20.178.203:5044"]
#数据展示机器的IP地址和端口
#ssl.certificate_authorities: ["/etc/pki/root/ca.pem"]
#ssl.certificate: "/etc/pki/client/cert.pem"
#ssl.key: "/etc/pki/client/cert.key"
配置完成后,启动 filebeats, 程序需要用管理员权限执行
./filebeat -c ./filebeat.yml
1.7 kibana添加索引
访问 http://your_machine_ip:5601,就可以看到Kinaba界面。
1.7.1 index 设置与创建
在 management -> index Patterns 索引管理界面中
点击 suricata 开头的模板
找到 @timestamp 字段,点击右边修改标志
在 format 下拉栏中选择 Date panos
保存,回到索引管理界面中
点击右上角 create index Pattern
如果没有收到 filebeats 传来的数据,无法创建 index
在 index 输入框中填写下方 suricata 开头的 index 模板
点击 next step 后 选择 @timestamp 创建索引模板
1.7.2 数据显示
在 Kinaba 界面,进入 Discover 此时可以看到总体的统计数据,如果没有可以修改时间跨度,或者在 add filter 下面更改索引模式
1.8 kibana添加模板文件
在模板文件的kibana的子目录中含有相应的模板文件,下载至本机
在kibana左侧菜单栏选择最后一个 management,然后点击 saved objects
选择文件或者直接拖拽
点击右下角导入即可
1.9 查看数据
点击 Kibana 左侧第三个dashboard按钮,然后随便选择一个即可
方式2:suicata + splunk
2.1 splunk 官网下载页面
下载 Splunk Enterprise 和 Splunk 通用转发器
2.2 Splunk Enterprise下载和配置
Splunk Enterprise 根据目标机器的平台而定,这里选择 Linux x86_64 tar包
放在数据展示机器上,解压到 /opt 目录下
tar xvzf splunk_package_name.tgz -C /opt
进入 splunk/etc/system/local 目录新建 props.conf 并添加如下内容
[suricata]
KV_MODE = json
NO_BINARY_CHECK = 1
TRUNCATE = 0
进入 splunk bin 目录, 启动 splunk, 初次启动会设置 用户名和密码(设置为 username:admin, password:12345678)
cd <Splunk Enterprise installation directory>/bin
./splunk start
设置结束,可以看到提示,splunk 的端口为 8000, 输入IP 地址+端口即可访问。如果访问不了检查下防火墙
2.3 splunk 网页设置
2.3.1 splunk 配置接收端口
依次进入 设置 -> 转发和接收 -> 配置接收
新增端口 9997 ,这也是通用转发器默认的端口
2.3.2 splunk suricata APP 安装
下载地址
https://splunkbase.splunk.com/app/2760/
下载后在 应用 -> 管理应用 中安装刚才下载的应用
2.3.2 splunk 新建索引
在 设置 -> 索引 -> 新建索引 中新建索引,名称随意,下面的 应用 下拉框选择刚才安装的应用,其他默认就好
2.4 Splunk 通用转发器下载和配置
Splunk 通用转发器 根据目标机器的平台而定,这里选择 Linux ARM tar包
Splunk 通用转发器放在流量机器上
解压到 /opt 目录下
tar xvzf splunkforwarder-<…>-Linux-x86_64.tgz -C /opt
进入 splunkforwarder/bin 目录下
cd <Splunk Enterprise installation directory>/bin
指定 Splunk 接收方的主机名或ip地址
./splunk add forward-server splunk_IP:9997
监视器要发给 Splunk 的文件
./splunk add monitor /var/log/suricata/eve.log
运行 splunkforwarder, 用管理员权限运行
./splunk start
2.5 显示数据
点击左上角 Splunk 可以看到刚才安装的应用,进入刚才安装的应用
点击左上角 default view 选择 dashboard 进行数据展示