概述
通过开源软件可以构建一个安全应急响应平台,该平台可以进行日志整合、告警生成、IoC 丰富与事件管理。
在上面的流程图中,作为 HIDS 的 Wazuh 将数据发送回 Wazuh Manager 与 Elasticsearch。ElastAlert 观测到新事件并在 TheHive 中相应生成告警。然后通过 Cortex 与 MISP 查询额外信息丰富该事件,之后自动关闭该事件或提交给分析师。
请注意,系统中的任何端点服务或者可以生成日志传送给 Elasticsearch 的 Agent 都可以被替代。该套系统的好处在于绝大多数的组件都可以替换。
Wazuh
Wazuh 是一个开源安全监控解决方案,用于收集、分析主机安全数据。Wazuh 是 OSSEC 项目的分支。Wazuh 组件与 Elasticsearch 和 Kibana 的整合度很高,可以用来执行许多与安全相关的任务,如日志分析、Rootkit 检测、监听端口检测、文件完整性检测等。
Elasticsearch
Elasticsearch 将充当整个系统的日志存储库。Elasticsearch 非常强大,具备很多功能。常与 Logstash(日志收集)和 Kibana(可视化)结合使用。Elasticsearch 为所有类型的数据存储都提供了一个强大的平台。
ElastAlert
ElastAlert 是由 Yelp 发起的项目,为 Elasticsearch 提供告警机制。ElastAlert 通过 REST API 查询 Elasticsearch 并有多个输出来匹配告警。
TheHive
TheHive 是一个可扩展的、开源、免费安全应急响应平台,旨在让任何安全从业人员能够轻松地处理安全事件,并快速地采取行动。本质上讲 TheHive 是一个告警管理平台,用于管理全部事件告警。
Cortex
Cortex 与 TheHive 是一个团队开发的产品。Cortex 使用分析器获取日志中有关指标信息的其他数据。允许在第三方服务中查询 IP、URL 与文件哈希等指标,并将第三方返回的结果作为附加信息丰富告警事件。
MISP
MISP 是 CIRCL 维护的开源威胁情报共享平台,其 Feed 可以是某个组织提供的付费订阅,也可以是社区维护的开源订阅,这也是数据丰富的主要来源。
Elasticsearch 安装
首先部署 Elasticsearch 集群,系统使用 Ubuntu 16.04(文章使用虚拟机安装,DHCP 为该虚拟机预留了地址,确保其始终使用相同的 IP 地址)。
作者提供了 Vagrantfile 帮助配置构建 Elasticsearch 虚拟机。
ELK 安装
注意:TheHive 正在进行一些后端重构,这会导致设置复杂化。TheHive 背后的开发团队认为 Elasticsearch 已经不再满足它们的需求了,4.0 版本后将在后端使用 GraphDB。当前稳定版本 3.2.1 版本以及我们在此使用的 beta 版本 3.3.0 都是用 Elasticsearch 5.6 作为后端。因此,在虚拟机中需要部署 Elasticsearch、Logstash 和 Kibana 6.6.1 作为日志存储仓库,另一个 Elasticsearch 5.6.15 部署在 TheHive 虚拟机中作为后端。
虽然我总结了安装步骤,但是如果需要进一步了解细节可以查看安装指南。# 首先安装 Java,选择使用 OpenJDK 安装
sudo apt-get install openjdk-8-jre
# 添加密钥与仓库
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
echo "deb https://artifacts.elastic.co/packages/6.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-6.x.list
sudo apt-get update
# 为了防止更新破坏 SearchGuard,选择安装固定版本的 Elasticsearch
apt-cache policy elasticsearch
sudo apt-get install elasticsearch=6.6.1 logstash=1:6.6.1-1 kibana=6.6.1
# 阻止软件更新
sudo apt-mark hold elasticsearch logstash kibana
# 将 Elasticsearch、Logstash 和 Kibana 设置为自启动
sudo systemctl daemon-reload
sudo systemctl enable elasticsearch.service
sudo systemctl enable logstash.service
sudo systemctl enable kibana.service
# 未来确定好兼容性,可以进行升级
sudo apt-mark unhold elasticsearch
优化
默认情况下,Elasticsearch 依赖的 Java 堆的大小为 1 GB。可以通过修改 /etc/elasticsearch/jvm.options 中的 Xms1g 与 Xmx1g 参数,将其增加到总内存的 50-80%。我的虚拟机只有 4GB 内存,所以我保留了默认值。
编辑配置文件 /etc/elasticsearch/elasticsearch.yml:取消 cluster.name 和 node.name 的注释,并设置为不同的名字
设置 bootstrap.memory_lock 为 True
设置 network.host 为 0.0.0.0
设置 discovery.type 为 single-node
编辑服务 sudo systemctl edit elasticsearch.service:[Service]
LimitMEMLOCK=infinity
然后继续执行:# 重新加载
sudo systemctl daemon-reload
# 重新启动
sudo systemctl start elasticsearch.service
# 检查确保 Elasticsearch 可用
curl http://localhost:9200/_cat/health
应该可以看到类似的响应:1551641374 19:29:34 demo-cluster green 1 1 0 0 0 0 0 0 - 100.0%
Kibana
编辑 Kibana 的配置文件:sudo nano /etc/kibana/kibana.yml
设置 Kibana 来响应外部接口:server.host: 0.0.0.0
启动服务:sudo systemctl start kibana.service
打开浏览器:http://:5601 应该可以看到 Kibana 控制台
Logstash
按照如下命令执行:sudo apt install logstash
sudo systemctl enable logstash.service
sudo systemctl daemon-reload
注意:此时 Logstash 没有运行。
Wazuh 安装
这部分将讲述如何安装 Wazuh Manager,并将 Wazuh 与 Elasticsearch 进行集成。
使用 Wazuh 的 Agent 及其规则集来识别端点的行为并生成告警。这些告警从 Wazuh 的 Agent 转发到 Wazuh Manager 写入 /var/ossec/logs/alerts/alerts.json。Filebeat 的服务不断监视该文件的更改,然后转发给 Elasticsearch。
Wazuh Manager# 为 Wazuh 仓库安装 GPG 密钥
curl -s https://packages.wazuh.com/key/GPG-KEY-WAZUH | apt-key add -
# 添加仓库
echo "deb https://packages.wazuh.com/3.x/apt/ stable main" | tee -a /etc/apt/sources.list.d/wazuh.list
# 升级