Elkeid HUB 社区版快速上手教程

本教程的前置条件

在开始本教程之前,请检查:

  • 已经按照部署文档,使用elkeidup正确部署了 HUB。
  • 至少有一个可以使用的数据输入源(Input)和数据存储的输出源(Output)。在HIDS场景中,数据输入源为 AgentCenter 配置文件中指定的 kafka ,输出源可以使用 ES 或 Kafka ,本教程中以 ES 为例。

e.g. 社区版默认已配置输入源(hids,k8s)可在前端看到,方便测试使用

Step 1. 访问并登录前端

使用部署前端机器的 IP 即可访问前端,登录信息为elkeidup部署创建的用户名和密码。

Step 2. 编写策略

基本概念介绍

RuleSet是HUB实现检测/响应的核心部分,可以根据业务需要对输入的数据进行检测响应,配合插件还能实现报警的直接推送或对消息的进一步处理。因此如果有额外的业务需要可能需要自行编写部分规则。

RuleSet是通过XML格式来描述的规则集,RuleSet分为两种类型rulewhitelistrule为如果检测到会继续向后传递,whitelist则为检测到不向后传递,向后传递相当于检出,因此whitelist一般用于白名单。

Ruleset里可以包含一条或多条rule,多个rule之间的关系是'或'的关系,即如果一条数据可以同时命中多条rule。

使用前端编写规则

进入规则页->规则集页面,可以看到当前收藏的RuleSet和全部RuleSet。

当Type为Rule时会出现未检测时丢弃字段,意味未检测到是否丢弃,默认是True即为未检测到即丢弃,不向下传递,在这里我们设为True。创建完成后,在创建好的条目上点击规则按钮,进入该Ruleset详情。在RuleSet详情中点击新建会弹出表单编辑器。

HUB已经默认开放了数十条规则,可以查看已经编写的规则,进行相关策略编写

也可以根据Elkeid HUB 社区版使用手册 进行编写.编写完成后,可以在项目页新建project,将编写好的规则与输入输出进行组合.

下图即为hids告警处理的过程:数据按照dsl的顺序,依次经过RULESET.hids_detect、RULESET.hids_filter等规则进行处理,最后再通过RULESET.push_hids_alert推送到CWPP console.

完成以上步骤后,进入规则发布页面,会显示出刚才修改的全部内容,每一个条目对应着一个组件修改,点击 Diff 可以查看修改详情。检查无误后,点击提交,将变更下发到HUB集群。

任务提交后,会自动跳转到任务详情页面,显示当前任务执行进度。

配置下发完成后,需要启动刚才新建的两个项目,进入规则发布->项目操作页面,分别启动全部已有的 项目。

进阶操作

配置ES Index查看报警

此步骤适用于OutputType使用ES的用户,Kafka用户可以自行配置。

建议先使用反弹shell等恶意行为触发一下告警流,让至少一条数据先打入ES,从而在Kibana上可以配置Index Pattern。
  1. 在输出页配置es类型的输出,可开启AddTimestamp,方便在kibana页面配置相关索引

  1. 编辑hids项目,加入刚编些好的es输出

  1. 提交变更

  1. 首先进入ES 的 stack management,选择kibana 的index patterns,点击 create index patten

  1. 输入之前填入的ES output index name,以星号 * 作为后缀,这里以默认推荐优先,分别为alert 或者 raw_alert
    • 如果这时index中存在数据(即已经触发过告警流),那么应能正确匹配到alert或者 raw_alert index

  1. 配置时间字段
    • 如果这时index中存在数据(即已经触发过告警流),那么应能正确匹配到timestamp字段,否则此处无下拉选择框

  1. 去浏览数据
    • 进入discover 看板,选择刚才创建的 alert* 看板,调整右侧时间,即可看到告警

示例

sqlmap检测规则编写

在本教程中,会尝试在前端中编写一条规则,为检查执行sqlmap命令的规则.

在该检测场景中,我们只需要关注Execve相关的信息,因此我添加了data_type为59的过滤字段,因此该规则只会对data_type为59的数据进行处理。之后我添加了一个CheckNode,检查数据中argv字段中是否包含'sqlmap',编写完的效果如下:

可以看到分别设置了三个CheckNode来进行检测,一是直接检测argv中是否包含sqlmap,二是检测exe字段是否包含python,三是使用正则来进行匹配是否为单独的word,当这三个同时满足,就会触发报警,编写好后,点击保存。

我们单独为该测试规则建立一个Output和Project,如下图所示:

进入测试环境执行sqlmap相关指令,在kibana中添加对应的index pattern,稍微等待一会就可以找到对应的报警结果。

可以看到出现了报警。

推送飞书插件编写

规则写完了,如果我想在发生该事件的时候飞书提醒我该如何实现呢?RuleSet并不支持这项功能,此时可以通过编写插件来实现。

创建并使用Python 插件的步骤如下:

  1. 点击创建按钮

  1. 按照需求,填写信息

  1. 点击确认,完成创建

  1. 编辑插件

默认为只读状态,需要点击编辑才能进行编辑

编辑后点击保存

  1. 在Rule中添加action

  1. 同策略发布相同,在策略发布界面发布策略

这样每当这个rule的条件被触发,就会调用这个插件进行报警。