ElastAlert 的规则和警报 2

派对从另一个人说的开始… 我将向您展示一些我认为您希望能够利用您的日志并将我们的 SIEM 发展为 SOC 的东西, 非常有趣的话题. 首先我们有 ElastAlert2, 这是一个开源工具,允许我们使用 Elasticsearch 中存储的数据生成基于规则的警报.

如果您保存, 例如 Elasticsearch 中的日志, 来自 Active Directory 的日志, 从 Entra, 从防火墙, 您的服务器, 摊位或其他小工具… 我们将能够通过一系列规则以自动化的方式进行查询, 然后如果我们对任何情况感兴趣,请提醒我们 (或执行作). 井 弹性警报 2 他来就是为了这个, 来帮助我们, 我们将能够创建 (或导入) 我们需要多少规则就有多少规则来进行我们需要的查询.

在本文档中,我们将看一个具体的例子, 我不知道, 有这么多的可能性… 我们将尝试检测我们的系统何时受到威胁, 检测可疑活动 (或恶意), 归根结底,这是一个防止更大邪恶的问题, 通过提醒我们或生成缓解这种情况的作. 嗯,那个, 在我们拥有的示例中, 我们会尝试检测某人何时 (例如) 您已成功登录 FortiGate 防火墙. 由于这是第一个文档,我们将这样做, 检测, 并通过 Telegram 生成警报. 在其他文件中,我们将看到更多可以做的事情.

侧面的 Txapas, 开始! 我们需要什么? 嗯,通常的! 耐心和 Docker!🤣 因此,在我们用于这些目的的 Linux 的机器上, 以及安装 Docker 和 Docker Compose 之后, 好吧,我们将使用它部署一个容器, 就这么简单, 这个容器, 弹性警报2, 将负责读取我们留在文件夹中的规则文件,并制作, 您必须执行的作 😅.

git 克隆 HTTPS://github.com/jertel/elastalert2.git CD elastalert2 mkdir config mkdir rules

我们用这样的东西来创建我们的 docker-compose.yml:

版本: '3.9'
services:
    弹性警报2:
        图像: 'jertel/elastalert2:latest'
        volumes:
            - './rules:/opt/elastalert/rules'
            - './config/elastalert.yaml:/opt/elastalert/config.yaml'
        container_name: elastalert 重启: Unless-Stopped 网络:
           red_elastalert2:

网络:
  red_elastalert2:
    司机: 桥

首先, 我们还必须编辑 ElastAlert2 配置文件 './config/elastalert.yaml', 我们将在此处指示 Elasticsearch 服务器, 您的端口, 访问凭证… 当我们在做这件事时,, 让我们输入我们的 Telegram 的数据, 既然我们已经说过我们希望接收这种类型的警报.

es_host: "SERVIDOR_ELASTICSEARCH"
es_port: 波多黎各 es_username: 用户es_password: 密码rules_folder: 规则 run_every:
  纪要: 1
buffer_time:
  纪要: 1
writeback_index: elastalert_status alert_time_limit.天: 2

telegram_bot_token: "TOKEN_BOT_TELEGRAM"
telegram_room_id: "ID_GRUPO_TELEGRAM"
telegram_parse_mode: "HTML格式"
alert_text_type: alert_text_only

我们已经准备好了, 剩下的就是展开它, 我将您留在命令下方以查看日志,以防您遇到任何事件:

Sudo Docker compose up -d sudo Docker logs elastalert -f

现在有艰苦🤠的工作,美丽的😍部分,无非是创造我们需要的规则, 多达, 在这种情况下,我们希望接收的 Alerts, 或 import existing 😉 rules. 我给你留下一个规则的例子 (./rules/OpenServicesIT-Fortinet-FortiGate-Login-Correct.yaml) 我们将在哪里看到我们期望的内容, 一个规则,将在 FortiGate 中搜索成功登录的日志, 这是, 每次有人登录 FortiGate 时, 通过 GUI 或 CLI, 以令人满意的方式. 我们将收到该提醒, 在这种情况下,通过 Telegram,我们不会做任何其他事情 (目前)….

名字: Fortinet-FortiGate-Login-correct 类型: 频率num_events: 1

指数: filebeat-* 阈值: 10
use_count_query: false 时间帧:
  纪要: 3

滤波器:
- 查询:
    query_string:
      查询: 'tags: fortigate 和 fortinet.firewall.action: login AND rule.description: "登录成功"'

alert:
  - 电报 alert_subject: <b>FortiGate 网关 - 登录</b>

alert_text: |
  管理员已成功登录到 FortiGate, 更多信息:
  用户: {0}
  方法: {1}
  源 IP 地址: {2}
  固件名称: {3}
alert_text_args: ["source.user.name", "fortinet.firewall.method", "源 .ip", "observer.name"]

如您所见, 它有一个规则格式,我们必须一丝不苟地遵守, 有很多可能性, 在这种特殊情况下,每个 1 分钟后,我们将进行 Elasticsearch 查询,一旦我们 1 事件, 因为它会在 Telegram 上生成如此漂亮的警报. 也不要用“愚蠢”的警报让 Telegram 发疯’ 为此,我们将提供其他事件管理工具, 但这是一个非常实际的例子.

创建规则后, 或者当我们修改它们时, ElastAlert2 将自动重新加载它们, 我们不需要重置任何东西. 就这么简单, 这将开始在 Elasticsearch 中寻找我们需要的内容! 我可能会为您提供一些其他示例,这些示例可以使用 ElastAlert2 制定一些奇怪的规则, 针对黑名单的任何检查, 不可能的旅行检测或时间旅行者 (或者你说的任何话), 与 Crowdsec 决策集成… 有布料要剪裁…

祝您一切顺利, 你照顾好自己, 一如既往, 雨伞和太阳😅伞,什么老短语… 拥抱! 🫂

推荐文章

作者

nheobug@bujarra.com
Autor del blog Bujarra.com Cualquier necesidad que tengas, 请随时与我联系, 我会尽我所能帮助你, 分享就是生活 ;) . 享受文档!!!

部署 NetBox 和 NetBox-Scanner

18 de March de 2025