postman关闭ssl验证_使用Elasticsearch与TheHive构建开源安全应急响应平台

本文介绍了如何利用开源软件构建一个安全应急响应平台,包括Wazuh、Elasticsearch、ElastAlert、TheHive和Cortex的集成。平台用于日志分析、告警管理和事件处理。首先,搭建Elasticsearch集群,接着安装Wazuh以监控主机安全数据,然后配置ElastAlert在Elasticsearch中设置告警。同时,利用TheHive管理告警事件,Cortex丰富事件信息。此外,还涉及了MISP威胁情报平台的集成,以及Postman的SSL验证关闭。最后,介绍了ElastAlert用于从Elasticsearch中生成警报,并与TheHive集成发送警报。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

概述

通过开源软件可以构建一个安全应急响应平台,该平台可以进行日志整合、告警生成、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

# 升级

sudo apt update

# 安装

sudo apt install wazuh-manager

详情请参见官方文档

Wazuh API

Wazuh API 是连接 Kibana 所必需的。Wazuh API 的默认账户密码是 foo/bar,如果想要变更可以查阅文档。# 安装 NodeJS

sudo curl -sL https://deb.nodesource.com/setup_8.x | bash -

sudo apt install nodejs

# 安装 Wazuh API

sudo apt install wazuh-api

# 取消自动更新

sudo apt-mark hold wazuh-manager

sudo apt-mark hold wazuh-api

Filebeatcurl -s https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -

sudo echo "deb https://artifacts.elastic.co/packages/6.x/apt stable main" | tee /etc/apt/sources.list.d/elastic-6.x.list

sudo apt update

sudo apt install filebeat=6.6.1

首先安装 Filebeat:# 取消自动更新

sudo apt-mark hold filebeat

# 下载 Filebeat 配置文件

sudo curl -so /etc/filebeat/filebeat.yml https://raw.githubusercontent.com/wazuh/wazuh/3.8/extensions/filebeat/filebeat.yml

# 编辑配置文件

sudo nano /etc/filebeat/filebeat.yml

在末尾的 YOUR_ELASTIC_SERVER_IP 部分替换为 Elasticsearch 6.6.1 服务器的真实 IP。

启动 Filebeat 服务:sudo systemctl daemon-reload

sudo systemctl enable filebeat.service

sudo systemctl start filebeat.service

加载 Wazuh 模版

加载 Logstash 配置

下载用于 Wazuh 远程安装的 Logstash 配置文件,在 Elasticsearch 主机上运行此命令:

确保使用新配置文件运行 Logstash 服务:sudo systemctl restart logstash.service

安装 Kibana

首先尝试运行 Wazuh 文档中提供的命令:sudo -u kibana NODE_OPTIONS="--max-old-space-size=3072" /usr/share/kibana/bin/kibana-plugin install https://packages.wazuh.com/wazuhapp/wazuhapp-3.8.2_6.6.1.zip

如果发现错误:Plugin installation was unsuccessful due to error "Command failed: /usr/share/kibana/node/bin/node /usr/share/kibana/src/cli --env.name=production --optimize.useBundleCache=false --server.autoListen=false --plugins.initialize=false

Browserslist: caniuse-lite is outdated. Please run next command `npm update caniuse-lite browserslist`

之所以运行命令 npm update caniuse-lite browserslist 产生错误,是因为本机尚未安装 Node。

卸载了插件并在没有 NODE 选项的情况下运行命令:

安装 Wazuh Agent

根据你自己的系统情况按照说明进行安装,本文在 Linux 上进行安装。

安装后,需要在 ossec.conf 中编辑 Wazuh Manager 的 IP 地址。Debian 的 Agent 安装在 /var/ossec,编辑 sudo nano /var/ossec/etc/ossec.conf 改变 MANAGER_IP 即可。

Agent 注册

我们使用简单的,不安全的方法注册 Agent:

在 Manager 上,运行以下命令启动注册服务:/var/ossec/bin/ossec-authd

在 Agent 上,使用 Manager 的 IP 地址运行 agent-auth 程序对于 Linux 来说:/var/ossec/bin/agent-auth -m

对于 Windows 来说:C:\Program Files (x86)\ossec-agent\agent-auth.exe -m

应该可以看到如下输出:INFO: No authentication password provided.

INFO: Connected to xxx.xxx.xxx.xxx:1515

INFO: Using agent name as: xxxxxxx

INFO: Send request to manager. Waiting for reply.

INFO: Received response with agent key

INFO: Valid key created. Finished.

INFO: Connection closed.

Wazuh 仪表盘

此时连接到 Kibana,就会在左侧工具栏中发现 Wazuh 的图标,点击此按钮跳转到配置 API 的页面:Username: foo

Password: bar

Server: http://

API Port: 55000

保存 API 配置,然后点击跳转到 Overview 页面。点击页面顶端的 Agent 即可查看 ID 为 001 的 Agent,即之前注册好的主机。它显示为 Active 状态即视为正常,否则可能需要在 Agent 上确保更改 MANAGER_IP 成功并重启 Agent 的服务。

测试

在 Kibana 中,深入到 Management > Elasticsearch > Index Management 应该可以看到名为 wazuh-monitoring-3.x 的索引。然后转到 Management > Kibana > Index Patterns,如果还没有定义默认索引模式,点击 wazuh-monitoring,然后点击右上角的星号将其设为默认值。

点击 Discover 查看已创建的事件,可能暂时还没有。返回 Elasticsearch Index Management 页面,等待名为 wazuh-alerts 的索引出现。我们试图通过生成告警让其出现。

作为测试,转到另一个主机并尝试使用虚假的用户通过 SSH 登录主机:ssh fakeuser@。这将会触发主机的 auth.log 出现无效的登录尝试,这将被 Wazuh Agent 获取,在新创建的 wazuh-alerts 索引中生成新条目。现在,我们就得到了一个存储告警的仓库。

MISP 部署

部署 MISP 可以允许 Cortex 或者任何能够发起简单 REST 请求的程序查询威胁指标,如 IP 地址、URL 与文件哈希。MISP 可以自主添加订阅与查询的源,返回的信息取决于订阅源提供的数据,而且订阅源之间的差异很大。有些只是提供了数据列表,有些提供了大量额外的信息。

将 MISP 通过 Docker 进行部署相比通过源码安装容易得多,哈佛安全小组提供了一个示例。请注意:如果将其部署到生产环境中,应该使用 build.sh,这样就可以在构建之前更改默认的 MySQL 密码与 MISP_FQDN。

初始化 MISP 数据库:docker run -it --rm -v /docker/misp-db:/var/lib/mysql harvarditsecurity/misp /init-db。这可以启动容器,运行脚本使用必要的数据库文件填充 misp-db 目录,最后删除容器。如果查看 misp-db 目录,可以发现已经新增了文件。

生成 SSL 证书

如果不生成 SSL 证书,Cortex 就不能请求 MISP,按照如下命令生成证书:sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /docker/certs/misp.key -out /docker/certs/misp.crt,如果没有特殊要求,可以接受所有默认选项。

运行容器docker run -it -d \

-p 443:443 \

-p 80:80 \

-p 3306:3306 \

-v /docker/certs:/etc/ssl/private \

-v /docker/misp-db:/var/lib/mysql \

harvarditsecurity/misp

打开浏览器访问 admin@admin.test 和 admin 作为用户名与密码。系统会要求更改密码,新的密码至少包含 12 个字符,其中包含大写字母和特殊字符。

配置 MISP

在 Administration > Server Settings 与 Maintenance > MISP Settings 中设置 MISP.live 为 TRUE、MISP.disable_emailing 为 TRUE。

在 Sync Actions > List Feeds 的列表中选择订阅源进行订阅。我选了 malwaredomainlist,选中复选框然后点击顶部的 Enable Feed 就可以了。在列表中可以看到该订阅源,点击向下箭头就可以拉取所有事件,可以在 Administration > Jobs 处查看正在执行的任务。

点击放大镜图标,可以显示 IP 的列表,复制其中任意一个,之后会用到。

Postman

我们使用 Postman 来测试 API,在 File > Settings 中将 SSL certificate verification 设为 OFF。

在 MISP 中,在 Administration > List Users 中拷贝用户的身份密钥。在 Postman 中设置 Header 中的三个字段:Accept application/json

Contect-Type application/json

Authorization

将用户的身份密钥粘贴到 Authorization 字段中。

换到 Body 选项卡,点击 Raw 按钮并粘贴以下 JSON,将值替换为之前复制的 IP 地址:{

"returnFormat": "json",

"value": "8.8.8.8"

}

应该会接收到以下响应:{

"response": {

"Attribute": [

{

"id": "15",

"event_id": "1",

"object_id": "0",

"object_relation": null,

"category": "Network activity",

"type": "ip-dst",

"to_ids": false,

"uuid": "5c8550db-5314-4538-a0d8-0146ac110002",

"timestamp": "1552240859",

"distribution": "0",

"sharing_group_id": "0",

"comment": "",

"deleted": false,

"disable_correlation": false,

"value": "23.253.130.80",

"Event": {

"org_id": "1",

"distribution": "0",

"id": "1",

"info": "malwaredomainlist feed",

"orgc_id": "1",

"uuid": "5c8550db-2d90-425f-9bc5-0146ac110002"

}

}

]

}

}

此时,MISP 现在已经可以响应查询请求,为 Cortex 的加入做好了准备。返回订阅列表可以添加更多订阅源,在 Administration > Scheduled Tasks 中可以将 fetch_feeds 设置为 24 并点击 Update All 就可以配置好定时拉取任务。

TheHive & Cortex

这篇文章部署的 TheHive 3.3.0 RC5 与 Cortex stable v2.1.2,而 TheHive 4.1 版本(预计在 2019 年第二季度发布)后将取消 Elasticsearch 作为后端,转而使用 GraphDB。

注:后续使用 3.3.0 稳定版安装也可以正常使用。

安装 TheHive & Elasticsearch 5.6# 添加仓库与密钥

echo 'deb https://dl.bintray.com/thehive-project/debian-beta any main' | sudo tee -a /etc/apt/sources.list.d/thehive-project.list

echo "deb https://artifacts.elastic.co/packages/5.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-5.x.list

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -

curl https://raw.githubusercontent.com/TheHive-Project/TheHive/master/PGP-PUBLIC-KEY | sudo apt-key add -

# 更新并安装需要的 Java

sudo apt-get update

sudo apt-get install openjdk-8-jre

# 安装 Elasticsearch 5.6.15,这是仓库中最新的版本

sudo apt-get install elasticsearch

# 修改配置文件

sudo nano /etc/elasticsearch/elasticsearch.yml

cluster.name: hive

bootstrap.memory_lock: true

discovery.type: single-node

# 设置服务自启动

sudo systemctl daemon-reload

sudo systemctl enable elasticsearch

sudo systemctl start elasticsearch

# 检查响应

curl http://localhost:9200

# 如果安装成功继续安装 TheHive

sudo apt-get install thehive=3.3.0-0.1RC5

# 阻止版本更新

apt-mark hold elasticsearch thehive

# 编辑配置文件

sudo nano /etc/thehive/application.conf

# 取消注释,并更改密码

#play.http.secret.key

# 设置服务自启动

sudo systemctl daemon-reload

sudo systemctl enable thehive

sudo systemctl start thehive

打开浏览器,查看网站:http://:9000,应该可以看到数据库更新消息:

点击 Update Database,如果没有看到上面的消息而是看到了登录框,意味着与 Elasticsearch 的连接中断了,请检测日志 \var\log\thehive。

更新完成后,仍然有机会为管理员账户更改用户名与密码。还可以检查 Elasticsearch 名为 the_hive_14 的索引:

如果忘记了管理员的账户与密码,请删除此索引重新开始。

安装 Cortex

注:安装 Cortex 3.0.0-RC1 会遇到一些问题,安装 Cortex 2.1.3 则不会遇到。

在 TheHive 主机上安装 Cortex:sudo apt-get install cortex=2.1.3-1

sudo apt-mark hold cortex

安装 Cortex 有一些依赖需要先安装:sudo apt-get install -y --no-install-recommends python-pip python2.7-dev python3-pip python3-dev ssdeep libfuzzy-dev libfuzzy2 libimage-exiftool-perl libmagic1 build-essential git libssl-dev

sudo pip install -U pip setuptools && sudo pip3 install -U pip setuptools

安装 Cortex Analyzer

从 GitHub 拉取源代码,为每个 Analyzer 单独安装 requirements.txt 的依赖:cd /etc/cortex

git clone https://github.com/TheHive-Project/Cortex-Analyzers

本文的下载位置在:/etc/cortex:# 更改文件夹权限

chown -R root:cortex Cortex-Analyzers

# 为所有 Analyzer 安装依赖(两行作为一条命令执行)

for I in $(find Cortex-Analyzers -name 'requirements.txt'); do sudo -H pip2 install -r $I; done && \

for I in $(find Cortex-Analyzers -name 'requirements.txt'); do sudo -H pip3 install -r $I || true; done

安装依赖不可避免地会出现一些错误,解决此类办法的好方法是挑选要安装哪些 Analyzer 防止依赖冲突。修改 Cortex 的配置文件 application.conf 指向 Cortex-Analyzers 目录:sudo nano /etc/cortex/application.conf。取消注释 #play.http.secret.key,并更改密码。找到 ## ANALYZERS 的位置,将其改为 /etc/cortex/Cortex-Analyzers/analyzers。

启动 Cortex:sudo systemctl enable cortex

sudo systemctl start cortex

打开浏览器检查安装是否成功:http://:9001。更新数据库并创建管理员用户登录,就像安装 TheHive 时做的那样。

Cortex 中规定必须在组织账户下登录才能启用、管理 Analyzer,否则只能创建组织与用户。

点击 +Add Organization 创建一个新组织,切换到 Users 标签页点击 +Add User 创建一个新用户,并且将新用户分配给创建的组织并分配 OrgAdmin 角色。保存后,点击 New Password 为刚创建的用户设置密码,按回车键保存。然后注销账户,用新用户登录。点击顶部的 Organization 标签页,点击 Analyzers 子选项卡,而不是顶部蓝色的 Analyzers 选项卡。如果 Cortex 配置正确,应该可以看到 Analyzers,按照我的配置安装了 113 个可用的 Analyzer。

可以启用以下几个 Analyzer,接受默认配置:Abuse_Finder_2_0

CyberCrime-Tracker_1_0

Cyberprotect_ThreatScore_1_0

DShield_lookup_1_0

MISP_2_0

URLhaus_2_0

Urlscan_io_Search_0_1_0

除了 MISP 之外,这些都不需要 API 密钥或者进行进一步的配置。 点击 Users 子选项卡并创建一个新用户和 TheHive 集成。该用户应该分配 read & analyze 角色,这次可以不用为其设置密码,点击 Create API Key 并且拷贝该密钥。

点击页面顶端的 +New Analysis:不用管 TLP 与 PAP

更改数据类型为 IP

添加 8.8.8.8

选中你启用的 Analyzer 旁边的框

点击开始

修改 TheHive 的 application.conf 来指向 Cortex:sudo nano /etc/thehive/application.conf。滚动到底部,找到 #Cortex 部分,取消注释 play.modules.enabled += connectors.cortex.CortexConnector。

添加 API 密钥与 URL:play.modules.enabled += connectors.cortex.CortexConnector

cortex {

"CORTEX-SERVER-ID" {

url = "http://127.0.0.1:9001"

key = "wrXichGSPy4xvjpWVdeQoNmoKn9Yxnsn"

# # HTTP client configuration (SSL and proxy)

# ws {}

}

}

重启服务器,两个服务再次启动的时候就可以使用了。在 TheHive 点击 +New Case 测试 Cortex:

给事件一个名称与描述,然后打开这个事件,点击 Observables 选项卡,点击 +Add Observable 设置 Type = IP、Value = 1.1.1.1、Tag 为 test。只需要提供 tag 或者 description,不必二者都填。

在 Observable 列表中点击该 IP 地址,这将打开一个新选项卡,包含相关数据,也可以在底部看到 Analyzer:

点击 Run All,如果返回 Cortex 将会看到 Analyzer 在 Job History 标签页中运行。回到 TheHive,现在 Analyzer 应该有了最后分析的时间与日期。返回 Observables 选项卡并刷新页面,应该可以在 Observables 下看到一个标签列表:

导入报告模版

在 https://dl.bintray.com/thehive-project/binary/report-templates.zip 下载报告模版包。使用管理员帐号登录 TheHive,点击 Admin > Report templates 选择 Import templates,在其中选择下载的包。

现在,在 Observables 中点击最后分析时间时将会获得包含分析结果的报告:

启用 MISP

在 MISP 的页面上点击 Administration > Add User:给用户分配一个电子邮件,cortex@admin.test

将用户添加到 ORGNAME 组织

分配角色 user

取消底部所有复选框

拷贝用户 API 密钥

在 Cortex 的页面上点击 Organization > Analyzers,在搜索框中输入 misp,然后启用 MISP_2_0:为 MISP 服务器提供描述

URL = https://

key = AuthKey from MISP user you created

cert_check: False

现在回到 MISP 页面,点击 Sync Actions > List Feeds。找到其中一个订阅源,然后点击右侧放大镜,从列表中选择一个 IP 并复制。

在 Cortex 中点击 +New Analysis,添加 IP 的数据类型,然后粘贴复制的 IP 地址。选择 MISP_2_0 的 Analyzer 运行。在 Job History 页面点击 View 将会看到复制的 IP 列表名与其他信息。可以在 TheHive 中添加此 IP 为 Observables 进行测试。现在已经将 TheHive、MISP 与 Coretx 集成在了一起。

ElastAlert

最后一步是安装 ElastAlert 从 Elasticsearch 中的事件中生成警报。ElastAlert 当前版本要求 Python 2.7,本文安装在了 Elasticsearch 主机上:sudo apt install python-pip

pip install elastalert

安装位置在:/home/username/.local/bin/elastalert,注:ElastAlert 也有 Docker 镜像提供。

配置 ElastAlert

创建一个目录来存储配置和规则:mkdir -p ~/elastalert/rules。可以拉取公开配置文件或者制作自己的配置文件,复制如下必要的设置,保存为 ~/elastalert/config.yaml:rules_folder: /home/username/elastalert/rules

run_every:

minutes: 1

buffer_time:

minutes: 15

es_host: x.x.x.x

es_port: 9200

use_ssl: False

writeback_index: elastalert_status

alert_time_limit:

days: 2

运行 elastalert-create-index 在 Elasticsearch 中创建必要的索引。可以得到以下结果:Elastic Version:6

Mapping used for string:{'type': 'keyword'}

New index elastalert_status created

Done!

创建规则

在 TheHive 页面中点击 Admin > Users,创建一个名为 elastalert 的用户,但不为其分配角色,并选中 elastalert。点击 Create API Key 并拷贝 API 密钥。TheHive 的管理指南指出:“为了更好地审计,一旦创建了用户,就无法删除该用户,只能锁定该账户”。

每条规则定义要执行的查询,触发匹配的参数与每个匹配触发的告警列表。本文中创建一个规则来识别失败的 SSH 登录,编辑规则文件 nano ~/elastalert/rules/failed_ssh_login.yaml:es_host: x.x.x.x

es_port: 9200

name: SSH Failed Login

type: frequency

index: wazuh-alerts-3.x-*

num_events: 2

timeframe:

hours: 1

filter:

- term:

rule.id: "5710"

alert: hivealerter

hive_connection:

hive_host: http://x.x.x.x

hive_port: 9000

hive_apikey:

hive_alert_config:

type: 'external'

source: 'elastalert'

description: '{rule[name]}'

severity: 2

tags: ['{rule[name]}', '{match[agent][ip]}', '{match[predecoder][program_name]}']

tlp: 3

status: 'New'

follow: True

hive_observable_data_mapping:

- ip: "{match[src_ip]}"

注意最后将 Observables 映射为 Types 的部分。尽管可以在标签字段使用嵌套的字段名({match[data][srcip]}),但对于 hive_observable_data_mapping 好像并不起作用。只能使用单个字段名('{match[srcip]}')。

我们需要修改 Logstash 主机上的 01-wazuh.conf 配置文件来解决这个问题。在 Logstash 主机上修改 01-wazuh.conf 文件 [data][srcip] 过滤器的部分,将 add_field => [ "@src_ip", "%{[data][srcip]}" ] 改为 add_field => [ "src_ip", "%{[data][srcip]}" ]。geoip 过滤器的部分,将 source => "@src_ip" 改为 source => "src_ip"。

现在日志中应该已经有了 src_ip 字段,可以通过 Kibana 进行验证。在 Kibana 页面中选择 Management > Kibana > Index Patterns,选择 wazuh-alerts 索引模式,点击 Refresh 启用新字段:# 测试规则

elastalert-test-rule ~/elastalert/rules/failed_ssh_login.yaml

# 运行 ElastAlert

elastalert --verbose --config ~/elastalert/config.yaml

针对运行着 Wazuh Agent 的主机生成一些告警:连续运行三次以下命令:ssh invaliduser@serverip。

此时应该可以看到 Kibana 中显示了告警,ElastAlert 可以在下次运行时接收这些告警:INFO:elastalert:Ran SSH Failed Login from 2019-03-31 18:21 UTC to 2019-04-02 15:01 UTC: 3 query hits (0 already seen), 1 matches, 1 alerts sent

在 TheHive 的 Alerts 下生成新告警:

点击右侧 Page 图标预览告警,可以为其分配一个模版,然后导入它:

这时已经完成了全部任务,Wazuh 生成的告警已经能在 TheHive 中显示为事件了。

*参考来源:Arnaud Loos,FB 小编 Avenger 编译,转载请注明来自FreeBuf.COM

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值