Suricata+ELK 8.4.3(docker)可视化
主机1安装elk
主机2安装suricata+filebeat
主机1、主机2均为Ubuntu18.04
1 安装elk
1.1 准备
准备docker镜像
docker pull logstash:8.4.3
docker pull kibana:8.4.3
docker pull elasticsearch:8.4.3
创建文件夹用于docker映射
mkdir -p /data/elk/{es,logstash,kibana}
编辑文件/etc/sysctl.conf
,在文件最后一行添加
vm.max_map_count=262144
执行命令令配置生效。该配置限制了一个进程可以拥有的虚拟内存区域的数量,如果太小会导致容器无法启动,所以提前进行配置。elasticsearch运行要求该值最小为262144。
sysctl -p
1.2 生成elasticsearch密码
创建文件夹/data/elk/es/data
修改文件夹属主和属组为1000。在docker容器中,elasticsearch运行用户为1000;如果系统中已存在uid=1000的用户,可以将文件夹权限给到777。
运行elasticsearch,使用-v
参数指定文件夹映射关系。
docker run -d --name es -p 9200:9200 -p 9300:9300 -v /data/elk/es/data:/usr/share/elasticsearch/data elasticsearch:8.4.3
等容器内服务启动后,使用https
访问目标主机的9200
端口,发现要求输入用户名跟密码。
在8.4.3版本的elasticsearch中,服务首次运行时会生成随机密码和随机enrollment token,如下图所示。
但是由于我们使用了-d
参数,无法看到回显信息,所以需要对密码进行重置。
进入docker中的/usr/share/elasticsearch/bin
目录,默认情况下直接docker exec -it es bash
拿到的是elasticsearch用户,且在/usr/share/elasticsearch
路径下,所以直接进入bin目录即可。
调用elasticsearch-setup-passwords
设置内置用户的密码,interactive
参数表示在交互式模式下手动指定密码。为了方便此处将所有密码都设置为123456
。
elasticsearch-setup-passwords interactive
使用刚才设置的密码成功访问elasticsearch服务。
而刚才生成的密码信息也已经存储到了映射的/data/elk/es/data
中。
停止并删除刚才创建的elasticsearch容器
1.3 运行elk
写docker-compose.yml文件,创建docker network,指定elasticseach的IP地址为172.16.200.10
,kibana的地址为172.16.200.20
,logstash的地址为172.16.200.30
,指定kibana和logstash的配置文件映射
version: '3'
services:
elasticsearch:
container_name: es
image: elasticsearch:8.4.3
restart: "always"
ports:
- "9200:9200"
expose:
- "9300"
volumes:
- "/data/elk/es/data:/usr/share/elasticsearch/data"
environment:
discovery.type: single-node
networks:
elastic:
ipv4_address: 172.16.200.10
kibana:
container_name: kibana
image: kibana:8.4.3
restart: "always"
ports:
- "5601:5601"
volumes:
- "/data/elk/kibana/kibana.yml:/usr/share/kibana/config/kibana.yml"
networks:
elastic:
ipv4_address: 172.16.200.20
depends_on:
- elasticsearch
logstash:
container_name: logstash
image: logstash:8.4.3
restart: "always"
expose:
- "5044"
volumes:
- "/data/elk/logstash/logstash.yml:/usr/share/logstash/logstash.yml"
depends_on:
- elasticsearch
networks:
elastic:
ipv4_address: 172.16.200.30
networks:
elk:
driver: bridge
ipam:
config:
- subnet: "172.16.200.0/24"
创建kibana的配置文件/data/elk/kibana/kibana.yml
,其中 elasticsearch.hosts
和elasticsearch.password
根据实际情况填写,elasticsearch.password
处使用之前设置的kibana_system
用户的密码,非elastic用户的密码。
server.name: kibana
server.host: "0.0.0.0"
elasticsearch.hosts: ["http://172.16.200.10:9200"]
elasticsearch.username: "kibana_system"
elasticsearch.password: "123456"
xpack.monitoring.ui.container.elasticsearch.enabled: true
创建logstash的配置文件/data/elk/logstash/logstash.yml
,修改同理
http.host: "0.0.0.0"
xpack.monitoring.elasticsearch.hosts: [ "http://172.16.200.10:9200" ]
xpack.monitoring.elasticsearch.username: "logstash_system"
xpack.monitoring.elasticsearch.password: "123456"
将/data/elk/es
、/data/elk/kibana
、/data/elk/logstash
的文件属主和属组都修改为1000
启动ELK
docker-compose up -d
使用http
访问9200
端口,使用elastic用户的密码进行认证
使用http
访问5601
端口,使用elastic用户的密码进行认证
这两个随便点都可以
到这里,elk配置暂告一段落
2 安装suricata
在主机2上安装suricata
使用官方文档中的快速安装方法
sudo add-apt-repository ppa:oisf/suricata-stable
sudo apt update
sudo apt install suricata jq
下载suricata规则
suricata-update
检查suricata运行状态,为exited
systemctl status suricata
修改suricata的配置文件/etc/suricata/suricata.yaml
,确认网卡名称与本机相同。
重启suricata服务,为running
状态
在本次安装中,只使用了suricata的默认规则,可以根据实际需求安装其他规则包。
在/var/log/suricata/eve.json
中可以看到记录的事件
3 安装filebeat
参考官方文档
下载deb包
curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-8.4.3-amd64.deb
安装deb包
sudo dpkg -i filebeat-8.4.3-amd64.deb
修改配置文件/etc/filebeat/filebeat.yml
,直接将原来的filebeat.yml备份,然后重新写一个。filebeat.config.modules
是为了联动suricata。由于elasticsearch没有启用TLS,所以不需要配置ssl.ca_trusted_fingerprint
。
output.elasticsearch:
hosts: ["http://10.2.4.13:9200"]
username: "elastic"
password: "123456"
# If using Elasticsearch's default certificate
# ssl.ca_trusted_fingerprint: "<es cert fingerprint>"
setup.kibana:
host: "http://10.2.4.13:5601"
filebeat.config.modules:
path: ${path.config}/modules.d/*.yml
reload.enabled: false
启用filebeat的suricata模块
sudo filebeat modules enable suricata
将/etc/filebeat/modules.d/suricata.yml
文件中enabled
的值改为true
执行命令将suricata的dashboard添加到kibana中
filebeat setup
登录kibana,在Dashboard
中看到filebeat添加的模板
将filebeat开机自启,并启动filebeat
systemctl enable filebeat
systemctl start filebeat
4 最终效果
随便找个工具攻击一下安装suricata的主机,生成数据
打开Dashboard中的任意模板,以Events Overview
为例,看到如下效果
Alert Overview
的效果如下
在Discover
模块也能够看到suricata传过来的事件信息。
由于suricata的规则包比较粗略,所以记录了一些不必要的内容,所以后续还是要做suricata规则上的优化。
5 参考链接
https://www.osgeo.cn/suricata/quickstart.html#installation
https://www.elastic.co/guide/en/beats/filebeat/current/setup-repositories.html文章来源:https://www.toymoban.com/news/detail-824111.html
https://www.elastic.co/guide/en/beats/filebeat/current/filebeat-installation-configuration.html文章来源地址https://www.toymoban.com/news/detail-824111.html
到了这里,关于Suricata+ELK 8.4.3(docker)可视化的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!