通过上周的文章,大致知道了开源SOC整体架构,今天从后端存储方面再来细化下整体架构图。
存储的基础要求就是满足存储一段时间的日志并且提供快速索引,看到这两个需求很快就可以想起ES,确实ES可以满足需求,今天使用到的也是ES的一个分支版本,通过Wazuh indexer实现。
那么什么是Wazuh?
Wazuh 体系结构基于在受监视端点上运行的代理,这些代理将安全数据转发到中央服务器。支持防火墙、交换机、路由器和接入点等无代理设备,并且可以通过 Syslog、SSH 或使用其 API 主动提交日志数据。中央服务器解码和分析传入的信息,并将结果传递给Wazuh索引器进行索引和存储。
https://documentation.wazuh.com/current/getting-started/architecture.html
整体架构分为Wazuh agent不断将事件发送到Wazuh server进行分析和威胁检测,Wazuh server使用 Filebeat 使用 TLS 加密将警报和事件数据发送到 Wazuh indexer。Filebeat 读取 Wazuh server输出数据并将其发送到 Wazuh indexer(默认情况下侦听端口 9200/TCP)。Wazuh indexer索引数据后,Wazuh dashboard将用于挖掘和可视化信息。
通过以上介绍Wazuh indexer是一个快速弹性的全文搜索和分析引擎,并提供近乎实时的数据搜索和分析功能。主要用于索引并存储生成的警报。主要使用9200以及9300端口。
根据官方文档描述,Wazuh indexer可以单机安装也可以组成集群安装,支持Amazon Linux 2、CentOS 7, 8、Red Hat Enterprise Linux 7, 8, 9、Ubuntu 16.04, 18.04, 20.04, 22.04等操作系统安装,需要主机至少拥有2C4G硬件资源,推荐8C16G。
https://documentation.wazuh.com/current/installation-guide/wazuh-indexer/index.html
每台Server90天平均每秒产生0.25告警,90天平均占用3.7GB,每台Workstation90天平均每秒产生0.1告警,90天平均占用1.5GB,每台Network devices90天平均每秒产生0.5告警,90天平均占用7.4GB。
根据官方文档给的主机硬件资源要求计算,80 workstations, 10 servers, and 10 network devices, 需要存储90天告警需要230 GB存储空间,如果是业务使用一定需要提前计算好存储空间,建议多预留一些存储空间。
https://documentation.wazuh.com/current/installation-guide/wazuh-indexer/index.html
由于成本考虑本次使用单机部署。根据官方文档描述提供两种方式安装Wazuh installation assistant(一键部署)和Step-by-step installation(手动安装),由于安装过程中需要修改默认参数,所以选择手动安装。在手动安装Wazuh indexer之前需要先安装操作系统,在支持操作系统列表中选择CentOS 7进行安装。由于安装操作基础比较基础,本文不进行赘述,不懂如何安装操作系统可以搜索如何安装CentOS 7虚拟机。
参考官方文档,安装Wazuh indexer过程分为三个阶段。1.证书创建;2.节点安装;3.初始化。安装过程需要拥有root权限。
0.安装CentOS 7操作系统,IP地址为192.168.116.200
ip a
cat /etc/os-release
1.证书创建
下载wazuh-certs-tool.sh脚本和config.yml 配置文件
curl -sO https://packages.wazuh.com/4.3/wazuh-certs-tool.sh
curl -sO https://packages.wazuh.com/4.3/config.yml
编辑config.yml配置文件,将节点名称和 IP 值并将其替换为相应的名称和 IP 地址。比如此处将节点名称修改成soc-demo,IP地址根据实际修改成192.168.116.200
nodes:
# Wazuh indexer nodes
indexer:
- name: soc-demo
ip: 192.168.116.200
# - name: node-2
# ip: <indexer-node-ip>
# - name: node-3
# ip: <indexer-node-ip>
# Graylog server nodes
# Use node_type only with more than one Wazuh manager
server:
- name: soc-demo
ip: 192.168.116.200
# node_type: master
# - name: wazuh-2
# ip: <wazuh-manager-ip>
# node_type: worker
# Wazuh dashboard node
dashboard:
- name: soc-demo
ip: 192.168.116.200
vi /etc/hosts //修改hosts文件
ping soc-demo
运行./wazuh-certs-tool.sh脚本用于创建证书
bash ./wazuh-certs-tool.sh -A
以上步骤完成第一步证书创建。
2.节点安装
安装包依赖
yum install coreutils
添加Wazuh仓库
rpm --import https://packages.wazuh.com/key/GPG-KEY-WAZUH
echo -e '[wazuh]\ngpgcheck=1\ngpgkey=https://packages.wazuh.com/key/GPG-KEY-WAZUH\nenabled=1\nname=EL-$releasever - Wazuh\nbaseurl=https://packages.wazuh.com/4.x/yum/\nprotect=1' | tee /etc/yum.repos.d/wazuh.repo
安装Wazuh indexer
yum -y install wazuh-indexer
编辑Wazuh indexer配置文件
vi /etc/wazuh-indexer/opensearch.yml
以下需要修改network.host、node.name、cluster.initial_master_nodes、cluster.name、discovery.seed_hosts、node.max_local_storage_nodes等字段
network.host: "192.168.116.200"
node.name: "soc-demo"
cluster.initial_master_nodes:
- "soc-demo"
#- "node-2"
#- "node-3"
cluster.name: "soc-cluster"
discovery.seed_hosts:
- "192.168.116.200"
# - "node-2-ip"
# - "node-3-ip"
node.max_local_storage_nodes: "1"
path.data: /var/lib/wazuh-indexer
path.logs: /var/log/wazuh-indexer
打包证书
tar -cvf ./wazuh-certificates.tar -C ./wazuh-certificates/ .
rm -rf ./wazuh-certificates
接下来部署证书
NODE_NAME=soc-demo //设置环境变量
mkdir /etc/wazuh-indexer/certs
tar -xf ./wazuh-certificates.tar -C /etc/wazuh-indexer/certs/ ./$NODE_NAME.pem ./$NODE_NAME-key.pem ./admin.pem ./admin-key.pem ./root-ca.pem
mv -n /etc/wazuh-indexer/certs/$NODE_NAME.pem /etc/wazuh-indexer/certs/indexer.pem
mv -n /etc/wazuh-indexer/certs/$NODE_NAME-key.pem /etc/wazuh-indexer/certs/indexer-key.pem
chmod 500 /etc/wazuh-indexer/certs
chmod 400 /etc/wazuh-indexer/certs/*
chown -R wazuh-indexer:wazuh-indexer /etc/wazuh-indexer/certs
完成证书部署之后,启动Wazuh indexer服务
systemctl daemon-reload
systemctl enable wazuh-indexer
systemctl start wazuh-indexer
查看Wazuh indexer状态
systemctl status wazuh-indexer
以上步骤完成第二步节点安装。
3.初始化
/usr/share/wazuh-indexer/bin/indexer-security-init.sh
以上步骤完成第三步初始化。
使用以下命令来检查是否正常运行
curl -k -u admin:admin https://192.168.116.200:9200/_cat/nodes?v
接下来安装wazuh dashboard,通过wazuh-dashboard提供图形化界面跟Wazuh indexer进行交互。
首先安装包依赖
yum install libcap
安装wazuh dashboard
yum -y install wazuh-dashboard
编辑配置文件
vi /etc/wazuh-dashboard/opensearch_dashboards.yml
接下来部署证书
NODE_NAME=soc-demo //设置环境变量
//在有wazuh-certificates.tar文件的路径中执行以下命令(该证书是安装wazuh-indexer时生成的)
mkdir /etc/wazuh-dashboard/certs
tar -xf ./wazuh-certificates.tar -C /etc/wazuh-dashboard/certs/ ./$NODE_NAME.pem ./$NODE_NAME-key.pem ./root-ca.pem
mv -n /etc/wazuh-dashboard/certs/$NODE_NAME.pem /etc/wazuh-dashboard/certs/dashboard.pem
mv -n /etc/wazuh-dashboard/certs/$NODE_NAME-key.pem /etc/wazuh-dashboard/certs/dashboard-key.pem
chmod 500 /etc/wazuh-dashboard/certs
chmod 400 /etc/wazuh-dashboard/certs/*
chown -R wazuh-dashboard:wazuh-dashboard /etc/wazuh-dashboard/certs
启动Wazuh dashboard服务
systemctl daemon-reload
systemctl enable wazuh-dashboard
systemctl start wazuh-dashboard
安装完成之后,通过浏览器访问(如果主机存在防火墙需要放通连接)
https://192.168.116.200/app/login?nextUrl=%2F
默认账号密码admin/admin
登录之后通过左侧侧边栏切换菜单
通过Index Management查看当前索引信息
完成以上步骤之后,最初的架构逻辑图细化成下图所示
欢迎订阅收看下期开源SOC实现(二)-Garylog