suricata + ELK/Splunk 可视化

suricata可视化

方式1:suicata + ELK

1.1 在展示数据的机器上配置dockers环境

1.2 部署架构

机器部署内容IP
流量机器suricata监听流量+filebeat传输数据192.168.1.110
数据展示机器docker部署ELK192.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 进行数据展示

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值