网站首页 > 技术文章 正文
在事件响应活动中,经常需要收集、利用和关联来自异质来源和许多不同主机的大量数据。拥有一个能够快速导入、操作、丰富和交叉搜索这些数据的工具是武器库中的一个重要项目。
为了实现这样的目标,我最喜欢的解决方案是使用基于Elastic单节点容器部署的 "便携式SIEM"。
使用docker-compose技术和一些小的定制,就有可能拥有一个随时可以使用的SIEM,从一个带有一堆命令的新环境开始,这里包括那些用于导入数据的命令。一旦IR被关闭,报告被写入,就可以直接删除容器,释放资源,为下一个事件提供一个随时可以使用的环境,不受之前事件的污染,就像取证时使用的无菌支持一样。
我将在这篇文章中描述的是主机的初始配置和Elastic stack的编译文件。此外,我还将描述如何运行一个filebeat runonce容器,从取证分流生成的csv中导入数据。
我的安装是基于Debian 11的虚拟机,我们需要安装docker引擎和相关的docker-compose;这里可以找到安装docker引擎的快速入门指南。
下一步是使用docker-compose定义文件来安装Elastic stack。正如Elastic官方文档中所描述的,我们需要做的就是从官方github仓库下载docker-compose.yml文件和.env文件,调整它们以反映我们的需求,并启动服务boundle。
有一些强制性的设置是我们必须要改变的:
ELASTIC_PASSWORD,这是分配给弹性用户的密码,它是集群的默认超级用户。
KIBANA_PASSWORD,这是kibana_system用户使用的密码,用于kibana和elasticsearch之间的内部通信。
STACK_VERSION,我们希望Elastic stack部署的版本。
.env文件中的其余选项是可选的,用于根据网络或系统要求进行环境定制。
通常,这些步骤对于启动集群已经足够了,然而我还会做进一步的改变,以节省资源和优化网络。
从默认的官方docker-compose.yml文件中,我删除了es02和es03的节点和它们的子节点,这样弹性搜索集群就会在单节点设置中成长起来。我们还需要调整es01.environment节点下的变量:
cluster.initial_master_nodes: 我们需要只留下es01
discovery.seed_hosts: 我们只需要定义es01
在这一点上,我们需要做的是将docker-compose.yml和.env文件存储在专门用于SIEM的同一目录下(例如,/data/siem),并从那里启动组合:
> cd /data/siem
> sudo docker-compose up -d
该发动机部署了三个集装箱:
弹性搜索容器
kibana容器
一个名为setup的临时容器,用于执行集群的基本操作(密码定义、用户定义等)。
一旦启动操作完成,就可以用浏览器访问SIEM的URL http://HOST_MACHINE_IP:5601,使用之前在.env文件中定义的弹性用户和密码。
当SIEM启动并运行时,是时候导入需要分析的数据了。为此,建议使用filebeat的runonce容器,读取存储在主机中的csv文件并将数据索引到弹性搜索节点。
首先,我们必须创建 filebeat 配置文件 filebeat.docker.yml
filebeat:
inputs:
- type: filestream
id: irharvester
paths:
- csv.txt
processors:
- decode_csv_fields:
fields:
message: csv
outputs:
elasticsearch:
hosts: ["https://specify_es_host:9200"]
username: "elastic"
password: "YOUR_PASSWORD"
protocol: https
ssl.verification_mode: none
在上面的配置中,我们要指示filebeat从一个路径为csv.txt(可以是多个)的文件中读取,并将csv解码器应用于逐行导入的消息字段。csv剖析的结果被存储在一个名为csv的字段中。同时,指定将数据发送到哪里进行索引,在这种情况下是弹性搜索容器。
然后,为了启动数据摄取,就像运行一个基于官方filebeat镜像和相关文件映射的容器一样简单。
> sudo docker run -d --rm \
--name=harvester --network=backend \
--volume="$(pwd)/filebeat.docker.yml:/usr/share/filebeat/filebeat.yml:ro" \
--volume="$(pwd)/csv.txt:/usr/share/filebeat/csv.txt:ro" \
docker.elastic.co/beats/filebeat:8.8.0 \
-E 'output.elasticsearch.hosts=["https://siem_es01_1:9200"]' \
-E 'output.elasticsearch.password=$ELASTIC_PASSWORD' -e
现在可以使用kibana搜索导入的数据,并利用数据操作的力量,既可以在索引时使用filebeat处理器或摄取管道,也可以使用运行时字段,使数据适应具体的事件用例。
- 上一篇: 日志服务架构设计
- 下一篇: 智汇华云 | 集群日志动态采集方案
猜你喜欢
- 2024-09-22 经典案例复盘——运维专家讲述如何实现K8S落地
- 2024-09-22 EFK 日志系统收集K8s日志 (二)
- 2024-09-22 Docker安装ELK并实现JSON格式日志分析
- 2024-09-22 开发利器丨如何使用ELK设计微服务中的日志收集方案?
- 2024-09-22 智汇华云 | 集群日志动态采集方案
- 2024-09-22 日志服务架构设计
- 2024-09-22 如何将 Python 项目日志接入到 ELK
- 2024-09-22 搭建ELK容器化,so easy
- 2024-09-22 Elasticsearch Service 数据接入
- 2024-09-22 监控K8S集群日志 ds+node_filebeat
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- oraclesql优化 (66)
- 类的加载机制 (75)
- feignclient (62)
- 一致性hash算法 (71)
- dockfile (66)
- 锁机制 (57)
- javaresponse (60)
- 查看hive版本 (59)
- phpworkerman (57)
- spark算子 (58)
- vue双向绑定的原理 (68)
- springbootget请求 (58)
- docker网络三种模式 (67)
- spring控制反转 (71)
- data:image/jpeg (69)
- base64 (69)
- java分页 (64)
- kibanadocker (60)
- qabstracttablemodel (62)
- java生成pdf文件 (69)
- deletelater (62)
- com.aspose.words (58)
- android.mk (62)
- qopengl (73)
- epoch_millis (61)
本文暂时没有评论,来添加一个吧(●'◡'●)