跳到主要内容
版本:v1.5.5

使用手册(应用安全)

💡   提示:

本使用手册的内容适用于购买了 云原生应用安全防护系统 的用户。

1 安全概览

安全概览 菜单包含了 总览告警 两个选项。

总览页面以数据日志的形式展示了瑞数云检测到的安全数据,帮助管理员对业务的访问情况进行监测和管理。

告警页面包含了 高级安全规则 的触发情况统计。(购买 高级安全规则 模块后,才能看到告警页面)

1.1 总览

  • 防护站点:展示了当前已建立的站点数量统计(请参考 站点管理 小节中的内容)。

    • 防护站点数:当前已经建立的所有站点数量。

    • 开启防护站点数:当前处于监控或拦截模式的站点数量。

    • 未开启防护站点数:当前处于透传模式的站点数量。

  • 基础应用安全规则库:展示了与OWASP安全相关的信息(未购买基础应用安全模块,无法看到该图表)。

    • 攻击类型总数:基础应用安全规则中包含了许多预置规则,这些规则被划分为多个分类。这里显示了分类的数量。

    • 明细规则总数:基础应用安全规则中包含了许多预置规则。这里显示了规则的总条数。

💡   提示:

通过页面左上角的 站点设置 下拉菜单,可以指定查看全部被防护站点、或者仅查看指定的被防护站点的安全数据。

通过页面右上角的时间选择按钮,可以指定查看数据的时间跨度。

  • 攻击总览:展示了在指定时间范围内,选中的被防护站点受到的所有攻击的数量统计。

    • 全部请求:展示了在指定时间范围内,针对选中的被防护站点的所有请求的数量统计。
  • Web攻击:展示了在指定时间范围内,选中的被防护站点受到的所有 Web 攻击的数量统计,即 BOT攻击和高级规则攻击之和。

    • OWASP攻击:展示了在指定时间范围内,选中的被防护站点受到的所有 OWASP 类型的攻击数量。
  • BOT攻击:展示了在指定时间范围内,选中的被防护站点受到的所有机器人攻击的数量统计。

    • 高级规则攻击:展示了在指定时间范围内,选中的被防护站点上触发了规则并且已被拦截的请求总数量。
  • 基础安全分析:展示了在指定时间范围内,选中的被防护站点上触发的基础应用安全规则的的线型趋势图。
  • BOT安全:展示了在指定时间范围内,选中的被防护站点的正常流量、机器人流量和其他流量的柱形分布图。
  • 攻击类型占比:展示了在指定时间范围内,选中的被防护站点受到的攻击类型占比。
  • 攻击来源IP/攻击路径:当选择全部站点的总览数据时,该图表显示攻击来源 IP 的排名情况,展示了在指定时间范围内,所有站点受到的攻击来源 IP 的数量排名。当选择单一站点的总览数据时,该图表显示不同路径受到的攻击情况,展示了在指定时间范围内,该站点上的路径受到的攻击次数排名(攻击次数包括 OWASP 和 Bot 攻击,以及高级安全规则触发并阻断的次数)。
  • 名单请求量:展示了在指定时间范围内,选中的被防护站点上符合放过名单和阻断名单的请求数量趋势图。

1.2 告警

💡   提示:

通过页面左上角的 站点设置 下拉菜单,可以指定查看全部被防护站点、或者仅查看指定的被防护站点的安全数据。

通过页面右上角的时间选择按钮,可以指定查看数据的时间跨度。

  • 告警总览:展示了在指定时间范围内,选中的被防护站点上告警数据:

    • 告警总数:当前指定时间范围内,选中的被防护站点上高级安全规则的总触发次数。

    • 昨日告警数:昨日24小时内,选中的被防护站点上高级安全规则的总触发次数。

    • 今日告警数:从今日零点到当前的时间范围内,选中的被防护站点上高级安全规则的总触发次数。

    • 今日减少/新增告警数(较昨日):选中的被防护站点上,今日告警数与昨日告警数的相差数量。

    • 环比昨日减少/新增率:选中的被防护站点上,今日告警数相对于昨日告警数的变化百分比。

  • 告警类型分布:以饼图的形式展示了选中的被防护站点上所有已触发规则的次数占比。单击饼图中某个规则代表的部分,可以在 告警列表 区域中展示已触发的规则列表。

  • 告警数量走势图:以线形图的形式展示了选中的被防护站点上指定时间范围内,规则触发次数的变化情况。

  • 聚合排序:以柱形图的形式展示了选中的被防护站点上不同源 IP、用户、或设备触发规则的次数排名。通过该区域右上角的 类型筛选 下拉菜单来指定筛选条件。单击该区域中的柱形图,可以在 告警列表 区域中展示已触发的规则列表。

  • 告警列表:以列表的形式展示了选中的被防护站点上已触发规则的规则列表。通过该区域右上角的 类型筛选 下拉菜单来指定筛选条件。支持采用源 IP、用户、设备和告警类型、以及全部作为筛选条件。用于分别展示相同源 IP 的触发规则列表、相同用户的触发规则列表、相同设备的触发规则列表、相同告警类型(即相同规则)的触发规则列表。

    💡   提示:

    类型筛选选择告警类型时,会提供额外的下拉菜单用于选择一个已触发的规则,从而展示出对规则所有的触发条目。

2 日志管理 - 搜索

日志管理菜单下的 搜索 页面提供了查看日志触发信息、原始日志、检测日志和访问日志的入口,如下图所示。

选择日志 下拉菜单中选择需要查看的日志名称,即可在右方页面中看到日志详情。

  • 日志触发信息 中包含了高级安全规则的触发记录。

    💡   提示:

    购买了高级安全模块后,下拉菜单中才会显示日志触发信息选项。 在日志触发信息中,鼠标左键单击 triggered_events 字段中的任意已触发事件,会显示三个选项:

    1. 增加到过滤器:将当前事件添加到过滤器中,让当前日志触发信息页面仅显示 包含 该事件的触发信息记录。
    2. 排除到过滤:将当前事件添加到过滤器中,让当前日志触发信息页面仅显示 不包含 该事件的触发信息记录。
    3. 查看告警信息:跳转到 告警 页面,显示与当前事件相关联的告警信息。
  • 原始日志 中包含了来自 TCP 日志源和 KAFKA 日志源的原始日志信息。

    💡   提示:

    购买了高级安全模块后,下拉菜单中才会显示原始日志选项。

    原始日志页面默认没有任何日志,需要手动创建相应的 TCP 或 KAFKA 日志源,并通过 TCP 端口发送日志或通过 KAFKA 消费日志,才能在原始日志中看到接收的日志。请参考 3.2 日志配置 小节的内容了解详细的配置方法。

  • 检测日志 中包含了浏览器端探针回传数据的请求记录。

  • 微信日志 中包含了微信小程序客户端 SDK 回传数据的请求记录。

    💡   提示:

    新建站点时,如果没有选中 微信小程序防护,则下拉菜单中不会显示微信日志。请参考 3.1.2 防护模式 小节中的内容。

  • 访问日志 中包含了所有业务请求的记录(即被防护站点的访问日志),以及基础应用安全规则的触发日志。

    💡   提示:

    系统会默认为每个被防护站点生成一个带有该站点名称的访问日志。

    请参考 3.1 站点管理 小节的内容来了解站点的添加,并参考 接入指南 中介绍的接入方法来实现站点的接入。完成站点添加和接入后,即可在 日志管理 > 搜索 页面中 选择日志 下拉菜单内选择该访问日志,查看被保护站点的访问记录。

通过页面左上角的 新增过滤 按钮可以实现仅显示包含指定字段的日志。

通过在左侧 字段搜索 标题下方的文本框中输入部分字段名,可以从当前选中日志中快速查找字段。

通过页面右上角的时间配置项可以显示指定时间段内的日志。

通过右侧的 收起顶部菜单 按钮,可以隐藏顶部的菜单栏。

💡   提示:

关于日志中的常用字段及其含义,请参考 附录1 字段列表

如果需要针对具体的业务需求定制日志,请通过 附录 5 中的信息联系我们。

3 配置管理

配置管理菜单包含了站点管理、事件管理和日志配置三个用于基础配置的子菜单。

  • 站点管理:用于针对不同站点的域名创建和管理不同的安全防护方案。

    请阅读 3.1 站点管理 小节的内容了解详细的配置方法。

    建立站点后,参考 接入指南 中介绍的接入方法来实现对该站点的防护。

  • 日志配置:用于为更多的日志输入源创建日志解析配置(瑞数云自带一个默认的访问日志解析配置)。

    通过创建新的日志解析配置,瑞数云可以解析基于 TCP 协议接收的日志(例如通过 Linux 系统的 rsyslog 模块发送的日志)、或者解析从 KAFKA 节点上消费的日志,从而能够在 日志管理 > 搜索 页面中进行查看和作为事件的日志源使用。

    请参考 3.2 日志配置 小节的内容了解详细的配置方法。

  • 事件管理:用于创建和管理不同的事件。当一条日志中某一个或多个字段的值符合预期,则被视为发生了一个事件。因此,一个事件的发生在本质上是指 “日志中的某一个或多个字段的值,与事件中对这一个或这些字段值的描述相符” 。

    事件管理页面中处于启用状态的事件可以用于创建高级安全规则(请参考 4.3 高级安全规则)。当规则中引用的一个或多个事件发生时,则触发该规则,并执行规则中指定的动作(例如阻断访问者的后续访问),从而实现安全防护。

    请阅读 3.3 事件管理 小节的内容了解详细的配置方法。

💡   提示:

以上三个配置菜单之间存在着相互依赖的关系。

① 每创建一个新站点,会自动生成以该站点名称命名的访问日志配置(记录 Web 和微信访问流量)和微信日志配置(记录微信 SDK 回传流量)。

② 成功接入瑞数云后,业务流量将由该访问日志进行解析。微信 SDK 回传流量将由微信日志配置来进行解析,并将解析后的日志显示在搜索页面中。

③ 解析后的日志,可以被指定作为一个或多个事件的日志源。这样,瑞数云就能够基于事件中的字段值描述来对这个日志源中的字段值进行检查,以判断是否发生了该事件。

3.1 站点管理

站点管理 页面用于制定和保存不同的安全防护方案。这些方案包含了防护机制的详细配置。

通过添加站点时选择需要的接入方式,然后参照 接入指南 完成接入,来实现对站点的防护。

  • 添加站点 :单击该按钮将会弹出站点编辑窗口。

  • 全局配置:单击该按钮将打开站点管理的全局配置项页面。

    • 令牌 cookie 名称:用于修改针对 Web 站点的安全令牌名称。建议保持默认即可。
    • 令牌 header 名称:用于修改针对微信小程序的安全令牌名称。建议保持默认即可。
    • 身份 cookie 名称:用于修改针对 Web 站点的身份令牌名称。建议保持默认即可。
    • 身份 header 名称:用于修改针对微信小程序的身份令牌名称。建议保持默认即可。
    • 过期时间(单位:秒):用于修改以上令牌的过期时间(默认 60 秒)。当令牌过期后客户端再次请求时,服务器端会要求客户端重新下载探针 JS。探针 JS 只能在真实的浏览器中运行并从瑞数云获取新的 Cookie令牌,从而防止了非法客户端访问站点。建议保持默认即可。
    • Access Key:系统生成的访问码,是 Web 防护接入时、以及微信小程序集成 SDK 时的必选配置。
    • 启用 IP 锁:启用该配置项令牌将与源 IP 绑定,以避免其他 IP 盗用令牌。

    如果对全局配置进行了任何修改,单击页面底部的 确定 按钮保存即可。

  • 插件:用于下载瑞数云的插件文件。(关于插件版接入方法的详细信息,请参考 接入指南 中相应的文档)

  • 微信小程序SDK:用于下载 SDK 文件,以便集成到微信小程序中。

  • 刷新按钮:用于刷新当前站点的状态信息。

  • 站点管理搜索框:站点管理页面右上角的搜索框支持在当前所有已存在站点中,通过站点名称来进行搜索。

单击 添加站点 按钮,进入新站点配置页面。

💡   提示:

未购买任何模块的新租户为测试租户,最多可以创建 3 个站点。购买任意模块后成为正式租户,最多可以创建 20 个站点。

以下内容将针对添加站点的配置界面进行详细介绍。

▶ 通用配置

通用配置 标签下包含了 站点信息防护模式放过名单配置阻断名单配置、以及 插件配置 等配置项。

3.1.1 站点信息
  • 站点名称:必填项。为被保护的站点输入一个名称,例如 我的网站

  • 域名:必填项。输入被保护站点的域名,例如 www.mysite.com。(对于插件接入和无插件接入的站点,需要同时确保该域名与网关上配置的 server_name 域名完全相同)

3.1.2 防护模式
  • 透传模式:该模式下,瑞数云所有的安全机制都停止工作,不会对流量执行任何安全检查。即余下的所有安全配置项都不会生效,仅针对流量进行日志记录。

  • 监控模式:该模式下,瑞数云不会对异常流量进行拦截,但会进行安全检查并记录日志。即余下的所有安全配置项都生效,但不会对异常流量进行拦截。

  • 拦截模式:该模式下,瑞数云会对异常流量进行拦截,并同时记录日志。

  • Web防护:该选项用于启用针对 Web 流量的防护。默认启用,且不支持关闭。

  • 微信小程序防护:该选项用于启用针对微信小程序流量的防护。

3.1.2 接入方式
  • CNAME接入:通过在DNS服务商处添加CNAME记录,将访问流量导引到瑞数云的节点,实现防护接入。

  • 插件接入:通过在自己的网关服务器上安装瑞数云的插件,来实现防护接入。

  • 旁路接入:通过在站点的页面插入瑞数云的 Web SDK、或者在微信小程序中集成瑞数云的 SDK,来实现防护接入。

💡   提示:

旁路接入仅支持对流量进行监控,不支持对流量的拦截。

3.1.3 放过名单配置

启用路径放过名单和 IP 放过名单后,在对应文本框填写路径正则表达式和源 IP(支持 CIDR 格式)。当请求的路径或源 IP 与名单中任一条匹配时,该请求将被直接转发到上游,同时记录到日志中。

当需要填写多条路径或多个 IP 时,每行填写一条路径或一个 IP。

💡   提示:

路径放过名单填写 / 表示放过所有路径的请求。IP 放过名单填写 0.0.0.0/0 表示放过所有源 IP 的请求。

路径放过名单和 IP 放过名单之间为逻辑或的关系。

3.1.4 阻断名单配置

启用路径阻断名单和 IP 阻断名单后,在对应文本框填写路径正则表达式和源 IP(支持 CIDR 格式)。当请求的路径或源 IP 与名单中任一条匹配时,该请求将被直接拦截,同时记录到日志中。

当需要填写多条路径或多个 IP 时,每行填写一条路径或一个 IP。

💡   提示:

路径阻断名单填写 / 表示拦截所有路径的请求。IP 阻断名单填写 0.0.0.0/0 表示拦截所有源 IP 的请求。

路径阻断名单和 IP 阻断名单之间为逻辑或的关系。

当放过名单与阻断名单填写的内容相同时,放过名单优先级高于阻断名单,即仅放过名单生效。

▶ WEB防护

💡   提示:

配置页面的文本框中预先填写了一些配置实例,请根据当前站点的页面来修改这些配置。

该标签的配置项用于指定登录时页面的一些特征字段(即 DOM 对象的 queryselector() 方法支持的元素属性,例如页面元素的 ID 号以 #id 的模式填写),以便帮助瑞数云解析终端用户的登录信息,例如用户名、是否登录成功,并显示在日志里。

确保 启用账户提取 开关为启用状态后,对以下配置项进行填写。

  • 登录页面路径

    填写登录页面的路径,瑞数云会在该路径的页面中查找下面指定的各个页面元素。

  • 登录输入框特征

    将登录页面上用户名输入框元素的某个属性,以 DOM 对象的 queryselector() 方法支持的方式填写到文本框中 ,例如登录用户名输入框的 ID 值为 "uid", 那么就填写 #uid。瑞数云会自动在登录页面中查找该元素中包含的用户名,并将其放入日志中的 account 字段。

  • 登录成功信息特征 和 登录成功信息内容

    登录成功后,找到页面上的提示文本所在的元素,并找到该元素的某个属性和内容。将该属性和内容以 DOM 对象的 queryselector() 方法支持的方式填写到文本框中。例如登录成功后页面显示文本 Congratulations,并且该文本所在元素的 ID 值为 _ctl0__ctl0_Content_Main_promo,则在 登录成功信息特征 中填写 #_ctl0__ctl0_Content_Main_promo,并且在 登录成功信息内容 中填写 Congratulations。瑞数云会自动在登录成功的页面中查找你指定的元素,当该元素的内容成功匹配文本 Congratulations 时,就会在日志中的 login_status 字段中写入 2,表示登录成功。

  • 登录失败信息特征 和 登录失败信息内容

    登录失败后,找到页面上的提示文本所在的元素,并找到该元素的某个属性和内容。将该属性和内容以 DOM 对象的 queryselector() 方法支持的方式填写到文本框中,例如登录失败后页面显示文本 Login Failed,并且该文本所在元素的id值为 “_ctl0__ctl0_Content_Main_message”,则在 登录失败信息特征 中填写 #_ctl0__ctl0_Content_Main_message,并且在 登录失败信息内容 中填写 Login Failed。瑞数云会自动在登录失败的页面中查找你指定的元素,当该元素的内容成功匹配文本 Login Failed 时,就会在日志中的 login_status 字段中写入 1,表示登录失败。

💡   提示:

当瑞数云无法成功匹配 “登录成功信息特征” 和 “登录失败信息特征” 时,会在日志中的 login_status 字段中写入 0,表示非登录行为。

配置完成后单击配置窗口底部的 确定 按钮即可。

保存成功后,可以在站点管理页面中看到该站点的信息。请参考 接入指南 页面中的接入指南来实现对该站点的防护。

💡   提示:

通过站点列表右方操作栏中的按钮,可以对每个站点进行编辑、删除、复制。

▶ CNAME接入

当在 通用配置 标签下的 接入方式 选择 CNAME接入 时,会显示该标签。

  • 服务器配置:根据被防护的站点所采用的协议进行配置。例如需要防护的站点采用HTTPS,则选择 HTTPS 多选框,并上传证书和 key 文件。

💡   提示:

该版本暂不支持强制跳转。

  • 源站回源方式:选择源站的回源协议。

  • 源站地址:填写源站的地址。支持 IP + 端口域名 + 端口

▶ 插件接入

当在 通用配置 标签下的 接入方式 选择 插件接入 时,会显示该标签。

  • 拦截响应状态码

    设置发生拦截操作时(例如请求触发了某个规则而被拦截),返回给客户端的响应码。建议保持默认即可。

  • 拦截响应内容

    设置发生拦截操作时(例如请求触发了某个规则而被拦截),返回给客户端的页面内容。建议保持默认即可。

  • 重载校验状态码

    设置当需要客户端重新发起请求时(例如请求未包含合法令牌或令牌已过期)的返回码。建议保持默认即可。

  • 重载响应内容

    设置当需要客户端重新发起请求时(例如请求未包含合法令牌或令牌已过期)返回的页面内容。建议保持默认即可。

  • 隐藏服务器信息

    该开关启用时,响应中包含的服务器信息会被隐藏。禁用时,响应中包含的服务器信息以明文显示出来。

  • 自定义插件逻辑

    该配置项允许通过代码让插件在指定条件下实施拦截、监控或透传操作,并将指定的值写入 guard_status 字段。例如以下代码实例。

    if ngx.var.request_uri == "/swagger/index.html" then
    return 0, 'status_0'
    elseif ngx.var.request_uri == "/index.jsp?content=personal_checking.htm" then
    return 1, 'status_1'
    elseif ngx.var.request_uri == "/index.jsp?content=personal_deposit.htm" then
    return 2, 'status_2'
    else
    return
    end

    该代码实例含义如下:

    1. 当业务请求访问路径为 "/swagger/index.html" 时,则 return 值为 0,表示插件拦截该请求,同时将值 "status_0" 写入 guard_status 字段。
    2. 当业务请求访问路径为 "/index.jsp?content=personal_checking.htm" 时,则 return 值为 1,表示插件拦截该请求,同时将值 "status_1" 写入 guard_status 字段。
    3. 当业务请求访问路径为 ""/index.jsp?content=personal_deposit.htm" 时,则 return 值为 2,表示插件透传该请求,同时将值 "status_2" 写入 guard_status 字段。

▶ 旁路接入

当在 通用配置 标签下的 接入方式 选择 旁路接入 时,会显示该标签。

💡   提示:

需要首先在 通用配置 下填写 站点名称域名 才能正常显示该标签下的配置项。

  • Web SDK代码:该代码用于插入 Web 页面源代码中,实现对于站点流量的监视。

💡   提示:

该接入方式仅支持对流量进行监控。

对于微信小程序选择旁路模式时,不需要使用 Web SDK 代码,而需要下载和集成瑞数云提供的 SDK 软件包。

3.2 日志配置

💡   提示:

日志配置菜单仅在购买了 高级安全模块 后,才会显示出来。

日志配置是一系列与日志解析有关的设定,用于解析原始日志中的数据,从而生成具有更高可读性的日志。解析后的日志可以在 日志管理 > 搜索 页面中查看。

💡   例如:

原始日志中存在字段 address:10.10.10.10,其中包含了客户端源 IP。通过日志配置的解析,可以指定将该字段映射到指定的新字段名(比如 src_ip),最终就可以在 日志管理 > 搜索 页面中查看这个新字段 src_ip,字段值为 10.10.10.10。

已建立的日志配置,可以在事件编辑窗口中 日志源 下拉菜单中找到,以便作为该事件要监听的日志源。

日志配置页面中可以查看和管理当前所有的日志解析配置。日志配置按照生成方式分为几种类型:系统为每个站点默认生成的 访问日志 配置、微信日志 配置和手动创建的 自定义日志 配置。

  • 访问日志 配置会在每个新的站点创建后自动生成,且配置名称中包含了该站点的名称。

    当站点按照 接入指南 中的方法接入瑞数云后,所有访问记录都会由该访问日志配置进行解析。然后在 日志管理 > 搜索 页面中的 选择日志 下拉菜单中,选择相同名称的访问日志配置,即可查看日志。

    访问日志配置中的设定不能修改,仅允许查看和复制。

    单击操作栏中的 查看 按钮,可以查看该日志配置的详情页面。

    单击操作栏中的 复制 按钮,可以复用该日志配置中的设定,从而快速创建基于 TCP 或 KAFKA 的自定义日志配置(前提是访问日志配置中的设定可适用于将要解析的 TCP 或 KAFKA 日志)。

  • 微信日志 配置会在每个勾选了 微信小程序防护 多选项的新站点创建后自动生成,且配置名称中包含了该站点的名称。

    当微信小程序集成了瑞数云 SDK、并按照 接入指南 中的方法接入瑞数云后,该小程序的 SDK 回传请求会由该微信日志配置进行解析。然后在 日志管理 > 搜索 页面中的 选择日志 下拉菜单中,选择相同名称的 微信日志,即可查看详细内容。

    微信日志配置不仅允许复制和查看,而且增加了编辑和删除选项。但在编辑时,不能对已添加的字段配置区进行修改,也不能新增字段配置区。

  • 自定义日志 配置可以通过单击页面左上角的 新建 按钮来创建。但自定义日志配置仅针对基于 TCP 协议接收的日志进行解析、或者针对 KAKFA 消息系统传来的日志进行解析。

    自定义日志配置不仅允许复制和查看,而且增加了编辑和删除选项。但在编辑时,不能对已添加的字段配置区进行修改,也不能新增字段配置区。

    下载证书 链接为 TCP 日志配置独有的选项。不同的 TCP 解析日志会生成独立的证书。该证书存放到发送日志的主机上,可以在传输日志时建立数据通信链路。

以下内容将对自定义 TCP 和 KAFKA 日志配置的方法进行介绍。

3.2.1 自定义TCP日志配置

瑞数云接收 TCP 日志的接口为 detector.riveryun.com:5514。在完成 TCP 日志配置的创建后,将该配置对应的证书配置到原始日志所在的系统中,即可实现日志传送。

通过管理界面侧边栏的 日志配置 进入日志配置列表,单击左上角的 新建 按钮,开始创建 TCP 日志配置。

  • 配置名称:为当前日志配置填写一个名称,例如 “TCP日志解析配置”。

  • 配置方式:选择 TCP 单选项。

  • 模板类型:模板类型是指瑞数云接收到的日志格式类型。plain_text 单选项表示将要接收到的日志为纯文本格式,例如:

    Jan  1 10:12:09 ubuntu info daemon [1]:  Started Session 1197 of user ubuntu.

    json 单选项表示将要接收到的日志为 JSON 格式,例如:

    {"timestamp":"2023-01-01 10:12:09","message":" Started Session 1197 of user ubuntu.","host":"ubuntu","severity":"info","facility":"daemon","procid":"1"}
  • 时间配置当前时间 表示将收到日志的那一刻作为最终显示的日志时间;日志抽取 表示从收到的日志内容中抽取时间信息,作为最终显示的日志时间。在解析后的日志中,日志时间将保存在默认字段 _timestamp 中。

    当选择 日志抽取 时,会显示额外的配置项,用于描述收到的日志中的时间数据格式信息,以便瑞数云能够正确地抽取到日志中的时间。

    • 时间格式 下拉菜单提供了一个预先定义的常见日志时间格式 YYYY-MM-DD hh:mm:ss。如果将要接收的日志数据中,时间数据格式恰好与该选项匹配(例如 2022-12-30 10:12:09),则可以直接选择该选项。

      针对其他时间格式(例如 Jan  1 10:12:09),则可以在时间格式下拉菜单中选择 自定义时间,如下图所示。

      在自定义时间文本框中输入将要接收的时间格式,例如 Jan  1 10:12:09 则输入 MMM DD hh:mm:ss。

      💡   提示:

      在以上时间格式实例中,M表示月份。月份采用三个字符,则填写MMM,并且 Jan 后面存在一个空格,则相应的在 MMM 后面留一个空格。同理,DD 表示天,采用两个字符(包括 1 前面的一个空格),hh:mm:ss分别表示时分秒。

      无论输入的时间格式采用年月日、或月日年、或其他顺序,解析后写入默认字段 _timestamp 中的时间都将以年月日的顺序呈现(例如 _timestamp":"2023-01-01 10:12:09.000")。

      当前版本的时间解析精度仅精确到秒。无论日志时间中是否存在毫秒(例如解析前 10:12:09.123),解析后毫秒的部分都会以 000 代替(例如解析后 10:12:09.000)。

    • 时间字段 文本框中需要填写的内容由 时间配置 的选项决定。

      当时间配置选择了 plain_text,则需要基于纯文本日志中的时间数据填写相应的正则表达式。例如收到的纯文本日志的时间数据为 Jan  1 10:12:09,则填写 \w{3}\s[\s|\d]\d\s\d{2}:\d{2}:\d{2} 去匹配这段数据。

      当时间配置选择了 json,则可以直接填写日志中存储时间的字段名。例如收到的 JSON 日志中的时间数据为 {"logging_time":"2023-01-01 10:12:09"},则填写 logging_time 即可。

  • 字段配置:字段配置主要用于对日志中除时间数据外的其他数据进行解析。

    💡   提示:

    当然,如果 时间配置 选择了 当前时间,也可以在这里单独对日志中的时间添加一个解析配置。

    开始字段配置之前,先把一条日志复制粘贴到页面右方的样本数据中,可以在配置的过程中实时解析样本日志,起到检验配置是否正确的作用(实时解析功能需要将新建的任意一个字段配置设定为 必要字段 来激活)。

    当模板类型为 plain_text 时,将显示如下图所示的配置按钮。

    • 添加正则抽取

      通过了单击 添加正则抽取 按钮,可以在下方新增一个字段抽取配置区。

      • 字段名称:填写一个字段名。解析出来的字段值将保存在该字段名中。在解析后的日志里将会看到该字段名和字段值。

      • 字段类型:指定字段解析后的数据类型。可选项包括 字符串整型浮点数

      • 正则表达式:填写用于匹配目标数据的正则表达式。

        # 例如需要对以下日志内容中的第一个 ubuntu 进行匹配

        Jan 1 10:12:09 ubuntu info daemon [1]: Started Session 1197 of user ubuntu.

        # 填写以下正则表达式。小括号表示将括号中匹配到的数据放入分组中保存。分组序号也就是抽取位置。
        # 这里只有一对小括号,即放入第 1 个分组保存,因此下方的抽取位置配置项应该填写 1

        (\w{6})\s\w{4}
      • 抽取位置:填写正则表达式匹配的数据所保存的分组号码。如以上范例中需要的分组数据为 1,则填写 1。

      • 是否必要:表示当前字段是否是必要字段。启用该选项后,如果接收的日志中的数据无法与正则表达式成功匹配,则认为必要字段不存在,这条日志将会被丢弃。日志管理 > 搜索 页面中的当前日志配置名称下将无法看到该日志。

        💡   提示:

        一个日志配置中至少需要有一个必要字段。

    • 重点字段

      重点字段配置用于将 字段名称 中配置的字段映射到 IP设备用户、以及 自定义字段 中的相应字段,从而可以在高级安全规则的执行动作中,将该字段指定为目标对象(请参考 4.3 高级安全规则 小节的内容)。

      💡   注意:

      目前系统仅支持针对 IP设备 的拦截。在配置 TCP 或 KAFKA 日志配置的重点字段时,手动将包含源 IP 的字段映射到 IP, 包含fingerprint 的字段映射到 设备即可。

      系统自动生成的各个访问日志配置中已经对重点字段进行了映射。访问日志中的 src_ip 字段被自动映射到重点字段 IP、fingerprint 字段被自动映射到重点字段 设备

      单击 重点字段 按钮,进入如下图所示的编辑界面。

      从下拉菜单中选择需要映射的字段,然后单击 保存 即可。

      💡   注意:

      通过编辑已有的日志配置来增加重点字段时,除了单击重点字段配置窗口的 确定 按钮,还需要再次单击日志配置编辑页面底部的 保存 按钮。

    当模板类型为 json 时,将显示如下图所示的配置按钮。

    除了 添加正则抽取重点字段 按钮(请参考上面 Plain_text 模板类型下的介绍内容),json 模板类型下还另外提供了 添加正则抽取快速添加 两个按钮。

    • 快速添加

      快速添加 按钮用于从一条 JSON 日志范例中快速抽取出字段,并自动添加到配置中。该按钮只有在编辑页面右方的 样本数据 中粘贴了日志范例后,才会转变为可用状态。

      例如,将以下的一条日志范例复制粘贴到样本数据文本框中。

      {"timestamp":"2023-01-01 10:12:09","message":" Started Session 1197 of user ubuntu.","host":"ubuntu","severity":"info","facility":"daemon","procid":"1"}

      按钮会变成蓝色可用状态。单击该按钮即可针对当前日志范例中的所有字段自动生成相应的字段配置区,如下图所示。

      💡   注意:

      请在快速生成配置后,检查每个配置区的 字段类型,如上图红框所示。系统会自动判断样本数据中各个字段的类型,然后作为默认的解析输出类型填写到字段类型中。如果希望输出不同的字段类型,请进行手动修改即可。

    • 添加自动抽取

      如果不需要对 JSON 日志中所有字段进行抽取,则可以单击该按钮,添加如下图所示的配置区,手动指定要抽取的字段。

      • 字段名称:填写一个字段名。解析出来的字段值将保存在该字段名中。在解析后的日志里将会看到该字段名和字段值。

      • 字段来源:填写 JSON 日志中需要解析的字段名。解析出来的字段值将保存在上面输入的字段名称中。

      • 字段类型:指定字段解析后的数据类型。可选项包括 字符串整型浮点数

      • 是否必要:表示当前字段是否是必要字段。启用该选项后,如果接收的 JSON 日志中不存在 字段来源 中指定的字段名,则认为必要字段不存在,这条日志将会被丢弃。日志管理 > 搜索 页面中的当前日志配置名称下将无法看到该日志。

        💡   提示:

        一个日志配置中至少需要有一个必要字段。

  • 启用情报库查询:启用该配置项后,解析出来的日志中的 src_ipuser_agent 字段将会与情报库中的数据进行匹配。当匹配成功时,则会将比对结果写入字段 _intelligence_result。该字段为 JSON 数据,其中包含多个子字段,可以在单事件中作为条件内的可选字段使用。(请参考 3.3.2 新建单事件 小节的内容)

    💡   注意:

    如果需要启用情报库查询,请确保当前日志配置解析后的日志中存在 src_ip 和 user_agent 字段,否则无法达到情报匹配的实际效果。

配置完成后,可以先通过配置页面右方的 样本数据 区域查看当前配置是否正确有效,然后再保存配置。

# 例如样本数据

{"timestamp":"2023-01-01 10:12:09.000","facility":"daemon","host":"ubuntu","message":" Started Session 1197 of user ubuntu.","procid":1,"severity":"info"}

# 解析成功的结果

{"_timestamp":"2023-01-01 10:12:09.000","facility":"daemon","host":"ubuntu","message":" Started Session 1197 of user ubuntu.","procid":1,"severity":"info"}

# 解析错误的结果

{"_timestamp":"2023-01-01 10:12:09.000","facility":"ubuntu","host":"ubuntu","message":" Started Session 1197 of user ubuntu.","procid":1,"severity":"ubun"}

# 解析失败的结果

必要字段不允许为空: host

新建 TCP 日志解析配置并保存后,在日志配置页面中找到该配置对应的 下载证书 链接,将证书文件配置到发送日志的主机上来建立发送主机与瑞数云之间的日志传输链路。瑞数云会将接收并解析后的日志写入 日志管理 > 搜索 页面中该日志配置的名称下。

💡   提示:

附录 3 针对从 Ubuntu 系统发送 TCP 日志并解析的场景提供了一个参考例子。如果以其他操作系统作为发送源,请相应地参考这些操作系统对于 TCP 日志发送的官方介绍。

3.2.2 自定义KAFKA日志配置

在完成 KAFKA 日志配置的创建后,瑞数云将自动从配置中指定 KAFKA 节点获取实时日志数据。

通过管理界面侧边栏的 日志配置 进入日志配置列表,单击左上角的 新建 按钮,开始创建 KAFKA 日志配置。

  • 配置名称:为当前日志配置填写一个名称,例如 “KAFKA日志解析配置”。

  • 配置方式:选择 KAFKA 单选项。

  • KAFKA地址:填写 KAFKA 节点的 IP 地址或域名。

  • KAFKA主题:填写 KAFKA 节点上获取数据时使用的 Topic 名称。

  • 账号:可选填的配置项。如果 KAFKA 节点要求身份验证,请输入正确的账号名称。

  • 密码:可选填的配置项。如果 KAFKA 节点要求身份验证,请输入正确的密码。

  • 模板类型:模板类型是指瑞数云接收到的日志格式类型。plain_text 单选项表示将要接收到的日志为纯文本格式,例如:

    Jan  1 10:12:09 ubuntu info daemon [1]:  Started Session 1197 of user ubuntu.

    json 单选项表示将要接收到的日志为 JSON 格式,例如:

    {"timestamp":"2023-01-01 10:12:09","message":" Started Session 1197 of user ubuntu.","host":"ubuntu","severity":"info","facility":"daemon","procid":"1"}
  • 时间配置

    💡   提示:

    KAFKA 日志配置与 TCP 日志配置中的时间配置方法相同,请参考 3.2.1 自定义TCP日志配置 小节中对时间配置的介绍。

  • 字段配置:字段配置主要用于对日志中除时间数据外的其他数据进行解析。

    💡   提示:

    KAFKA 日志配置与 TCP 日志配置中的字段配置方法相同,请参考 3.2.1 自定义TCP日志配置 小节中对字段配置的介绍。

  • 启用情报库查询

    💡   提示:

    请参考 3.2.1 自定义TCP日志配置 小节中对启用情报库查询的介绍。

新建 KAFKA 日志解析配置并保存后,在相应的 KAFKA 节点上写入日志,瑞数云将会自动从该节点读取和解析日志,并写入 日志管理 > 搜索 页面中该日志配置的名称下。

💡   提示:

附录 4 针对从 KAFKA 节点获取和解析日志的场景提供了一个参考例子。

3.3 事件管理

💡   提示:

事件管理菜单仅在购买了 高级安全模块 后,才会显示出来。

用于创建和管理不同的事件。当一条或多条实时日志中某一个或多个字段的值符合预期,则被视为触发了一个事件。因此,一个事件的触发在本质上是指 “在接收实时日志流的过程中,出现某一个或多个字段的值,与事件中对这一个字段值或这些字段值的描述相符” 。

💡   注意:

事件触发的前提是基于实时日志流,即当前正在接收的日志才有可能触发事件。新建的事件不会因为已经接收保存的历史日志而触发。

可以在 日志管理 > 搜索 页面中选择 日志触发信息,并在 triggered_events 一栏查看已触发的事件。

3.3.1 预置事件

事件管理页面中包含了多条默认的预置事件。

瑞数云在事件管理页面中预先提供了一系列常用的事件。如果需要在创建规则时引用这些事件,请将事件的状态改为启用。

💡   注意:

预置事件默认禁用,并且未选择日志源。这时单击某个事件的启用按钮,会自定进入该事件的编辑界面,要求手动选择日志源(请参考 3.2 日志配置 小节的内容来了解日志源),然后再尝试启用事件。

单击操作一栏中的 编辑,可以对事件进行修改。单击 查看,可以了解事件的详细配置。单击 复制, 可以复制当前事件内容,以便快速创建新事件。单击 删除,可以删除当前事件。

💡   注意:

已删除或修改的预置事件的无法恢复,请谨慎操作。

如果需要自定义事件,可以通过单击 新建 按钮来进行创建。自定义事件根据事件类型分为单事件和组合事件两大类。下面的内容将针对这两种事件类型的创建进行介绍。

3.3.2 新建单事件

单事件 类型用于创建一个单一事件,其中仅包含对一个事件的描述。

单击事件管理页面左上角的 新建 按钮,进入新建事件配置页面,并在 事件类型 菜单中选择 单事件。如下图所示。

单事件类型下分为 简单事件数值统计事件去重统计事件平均统计事件CEP事件,以适应不同的场景。

请根据以下对各个单一事件的介绍来选择一个适合的事件。


▶ 简单事件

简单事件是所有事件中最基本的事件。它直接描述了如何检查当前事件的指定日志源中的字段。

💡   配置范例解读:

上图中的范例所描述的内容为:

监视日志源 “访问日志”,当满足过滤条件的某一条日志中,字段 request 的值的一部分或全部与正则表达式 login.jsp 相匹配、或者字段 src_ip 的值与字符串 10.10.10.10 完全匹配,则视为该事件被触发一次。

  • 事件名称:为新事件输入一个名称。事件的名称不能与已有的事件名称重复。

  • 日志源:为事件指定一个或多个日志源。该日志源包含的字段、或者多个日志源的交集字段将作为事件中的待选字段。

    💡   提示:

    系统默认为每个站点建立了一个对应的访问日志源,其名称中带有对应的站点 ID 号,可直接选择使用。如果需要创建自定义日志源,请参考 3.2 日志配置 小节的内容来创建日志源

    指定多个日志源时,待选字段为各个日志源之间的交集字段。例如,日志源 A 中存在字段 src_ip、referer、user_agent,而日志源 B 中存在字段 src_ip、request、host,则待选字段只有 src_ip 一个。

  • 事件类型:从下拉菜单中选择单事件类型。

  • 触发类型:从下拉菜单中选择简单事件。

  • 过滤条件:选择另一个已存在的事件作为当前事件的过滤条件来对日志进行第一步的过滤。过滤条件的日志源必须包含或等于当前事件的日志源,才能显示在下拉菜单中。同时菜单也提供了一个 全部 选项,表示不对日志进行过滤。

    例如,选中之前创建的 简单事件范例,则符合该范例描述的日志会被 “挑选出来”。这些 “挑选出来” 的日志再与数值统计事件的后续描述进行比较。

    💡   注意:

    请确保需要用作过滤条件的事件的日志源 包含或等于 当前的日志源。不符合该条件的事件不会显示在过滤条件的下拉菜单中。

  • 条件关系:填写后面的一个或多个条件之间的逻辑关系。支持逻辑与 - 运算符号 &、逻辑或 - 运算符号 |、逻辑非 - 运算符号!、以及小括号 ()。

    例如填写 “a|b”,表示后面有 a 和 b 两个条件,并且条件 a 和条件 b 之间的关系为逻辑或。仅存在条件 a,则填写 a 即可。

  • 条件配置区:提供了 4 个配置项,例如上图中的条件 a 的配置区。按照从左到右、从上到下的顺序依次为:

    1. “选择目标字段” 下拉菜单用于从当前日志源的待选字段中指定一个要检查的字段,例如 request。

    2. “选择过滤类型” 下拉菜单提供了 字符串匹配数值判断名单匹配 选项。字符串匹配 适用于字符串类型的字段,例如 request 字段就应该选择字符串匹配;数值判断 适用于数值类型的字段,例如 request_time 字段就应该选择数值判断;名单匹配 适用于已创建了启用名单生成功能的高级规则的情况(关于名单的生成,请参考 4.3 高级安全规则 中对于 是否生成名单 配置项的介绍),这时可以选择一个名单来作为事件触发的判断条件。

    3. 第三个配置项依赖于上面的过滤类型。

    当过滤类型为字符串匹配,该配置项提供 正则匹配精确匹配 两个选项。前者表示填写一个正则表达式,当表达式与部分字段值或完整字段值匹配时都视为匹配成功;后者表示填写一个字符串,当字符串与完整字段值完全匹配则视为匹配成功。

    💡   例如:

    上图中条件 a 的配置,如果改为精确匹配,且字段 request 的目标值为 GET /login.jsp HTTP/1.1,那么就需要在文本框中填写 GET /login.jsp HTTP/1.1。

    当过滤类型为数值判断,该配置项提供 “>=、>、=、<、<=” 几个选项,以便描述数值型字段值的大小。

    当过滤类型为名单匹配时,该配置项提供一个下拉菜单,如果当前已经创建了已启用名单生成功能的高级规则,下拉菜单中将显示该规则对应的名单名称。

    4. 第四个配置项用于填写正则表达式或者数字(取决于过滤类型选择字符串匹配还是数值判断)。

  • 事件描述:输入对该事件的简单描述。描述内容将显示在事件管理页面的 描述 一栏中。


▶ 数值统计事件

数值统计事件用于描述日志中某个字段出现相同字段值的次数。

💡   配置范例解读:

上图中的范例所描述的内容为:

监视日志源 “访问日志”,在 10 秒内满足过滤条件的日志中,字段 IP 出现相同值的次数大于或等于 50 次,则视为该事件被触发一次。

  • 事件名称:为新事件输入一个名称。事件的名称不能与已有的事件名称重复。

  • 日志源:为事件指定一个或多个日志源。该日志源包含的字段、或者多个日志源的交集字段将作为事件中的待选字段。

    💡   提示:

    系统默认为每个站点建立了一个对应的访问日志源,其名称中带有对应的站点 ID 号,可直接选择使用。

    如果需要创建自定义日志源,请参考 3.2 日志配置 小节的内容来创建日志源)

    指定多个日志源时,待选字段为各个日志源之间的交集字段。例如,日志源 A 中存在字段 src_ip、referer、user_agent,而日志源 B 中存在字段 src_ip、request、host,则待选字段只有 src_ip 一个。

  • 事件类型:从下拉菜单中选择单事件类型。

  • 触发类型:从下拉菜单中选择数值统计。

  • 过滤条件:选择另一个已存在的事件作为当前事件的过滤条件来对日志进行第一步的过滤。过滤条件的日志源必须包含或等于当前事件的日志源,才能显示在下拉菜单中。同时菜单也提供了一个 全部 选项,表示不对日志进行过滤。

    例如,选中之前创建的 简单事件范例,则符合该范例描述的日志会被 “挑选出来”。这些 “挑选出来” 的日志再与数值统计事件的后续描述进行比较。

    💡   注意:

    请确保需要用作过滤条件的事件的日志源 包含或等于 当前的日志源。不符合该条件的事件不会显示在过滤条件的下拉菜单中。

  • 触发对象:在过滤条件筛选出来的日志中,指定一个要比较的字段,从而对该字段出现相同字段值的次数进行比较。

    该下拉菜单中提供了 IP、用户、设备、自定义字段1、自定义字段2等选项。

    在选定 访问日志 作为日志源时,IP 值默认为访问日志中的 src_ip 字段值,设备的值默认为访问日志中的 fingerprint 字段值。用户字段和自定义字段暂未在访问日志中实现映射。

    在选定自定义的日志配置作为日志源时,这几个选项的值由该日志源中对重点字段的映射配置决定。

    💡   提示:

    在选择自定义日志源时(即在日志配置中自行创建的基于 TCP 或者 KAFKA 的日志源),需要确保该日志源已通过重点字段的配置来对 IP、用户、设备、自定义字段实现全部或部分映射(请参考 3.2 日志配置 小节的内容)。这样在触发对象下拉菜单中选择已经映射的字段,才能让事件生效。

  • 比较符:选择一个运算符号,以便对当前触发对象的相同字段值的出现次数进行比较。可选符号包括 “>=、>、=、<、<=” 几个选项。

  • 变量:指定一个次数值,作为当前选定的触发对象值的目标比较值。

  • 窗口周期:指定一个时间窗口,限定仅对该时间窗口内接收到的日志内容进行比较。事件单位支持 分钟小时

  • 事件描述:该文本框用于输入对该事件的简单描述。描述内容将显示在事件管理页面的 描述 一栏中。


▶ 去重统计事件

去重统计事件用于描述日志中某个字段的值相同的前提下,另一个字段出现不同字段值的次数。

💡   配置范例解读:

上图中的范例所描述的内容为:

监视日志源 “访问日志”,在 60 秒内产生的日志中,找出字段 IP 的值相同的日志,如果这些日志中出现了 5 个或 5 个以上不同的 user_agent 字段值,则视为该事件被触发一次。

  • 事件名称:为新事件输入一个名称。事件的名称不能与已有的事件名称重复。

  • 日志源:为事件指定一个或多个日志源。该日志源包含的字段、或者多个日志源的交集字段将作为事件中的待选字段。

    💡   提示:

    系统默认为每个站点建立了一个对应的访问日志源,其名称中带有对应的站点 ID 号,可直接选择使用。

    如果需要创建自定义日志源,请参考 3.2 日志配置 小节的内容来创建日志源)

    指定多个日志源时,待选字段为各个日志源之间的交集字段。例如,日志源 A 中存在字段 src_ip、referer、user_agent,而日志源 B 中存在字段 src_ip、request、host,则待选字段只有 src_ip 一个。

  • 事件类型:从下拉菜单中选择单事件类型。

  • 触发类型:从下拉菜单中选择去重统计。

  • 过滤条件:选择另一个已存在的事件作为当前事件的过滤条件来对日志进行第一步的过滤。过滤条件的日志源必须包含或等于当前事件的日志源,才能显示在下拉菜单中。同时菜单也提供了一个 全部 选项,表示不对日志进行过滤。

    例如,选中之前创建的 简单事件范例,则符合该范例描述的日志会被 “挑选出来”。这些 “挑选出来” 的日志再与数值统计事件的后续描述进行比较。

    💡   注意:

    请确保需要用作过滤条件的事件的日志源 包含或等于 当前的日志源。不符合该条件的事件不会显示在过滤条件的下拉菜单中。

  • 触发对象:在过滤条件筛选出来的日志中指定一个字段,从而进一步筛选出该字段值相同的日志,以便对这些日志进行后续比较。

    该下拉菜单中提供了 IP、用户、设备、自定义字段1、自定义字段2等选项。

    在选定 访问日志 作为日志源时,IP 值默认为访问日志中的 src_ip 字段值,设备的值默认为访问日志中的 fingerprint 字段值。用户字段和自定义字段暂未在访问日志中实现映射。

    在选定自定义的日志配置作为日志源时,这几个选项的值由该日志源中对重点字段的映射配置决定。

    💡   注意:

    在选择自定义日志源时(即在日志配置中自行创建的基于 TCP 或者 KAFKA 的日志源),需要确保该日志源已通过重点字段的配置来对 IP、用户、设备、自定义字段实现全部或部分映射(请参考 3.2 日志配置 小节的内容)。这样在触发对象下拉菜单中选择已经映射的字段,才能让事件生效。

  • 去重对象:在过滤条件和触发对象共同筛选出来的日志中,指定一个字段,以便对该字段出现不同字段值的次数进行统计。

  • 比较符:选择一个运算符号,以便对当前去重对象出现不同字段值的次数进行比较。可选符号包括 “>=、>、=、<、<=” 几个选项。

  • 变量:指定一个次数值,作为当前去重对象出现不同字段值的次数的目标比较值。

  • 窗口周期:指定一个时间窗口,限定仅对该时间窗口内接收到的日志内容进行比较。事件单位支持 分钟小时

  • 事件描述:该文本框用于输入对该事件的简单描述。描述内容将显示在事件管理页面的 描述 一栏中。


▶ 平均统计事件

平均统计事件用于描述日志中某个数值型字段值在规定时间窗口内的平均值。

💡   注意:

只能对数值型字段值进行平均值的计算。

💡   配置范例解读:

上图中的范例所描述的内容为:

监视日志源 “访问日志”,在 30 秒内产生的日志中,找出字段 IP 的值相同的日志,如果这些日志中 reqeust_time 字段的平均值大于或等于 1(request_time即请求所耗费的时间,单位为秒),则视为该事件被触发一次。

  • 事件名称:为新事件输入一个名称。事件的名称不能与已有的事件名称重复。

  • 日志源:为事件指定一个或多个日志源。该日志源包含的字段、或者多个日志源的交集字段将作为事件中的待选字段。

    💡   提示:

    系统默认为每个站点建立了一个对应的访问日志源,其名称中带有对应的站点 ID 号,可直接选择使用。

    如果需要创建自定义日志源,请参考 3.2 日志配置 小节的内容来创建日志源)

    指定多个日志源时,待选字段为各个日志源之间的交集字段。例如,日志源 A 中存在字段 src_ip、referer、user_agent,而日志源 B 中存在字段 src_ip、request、host,则待选字段只有 src_ip 一个。

  • 事件类型:从下拉菜单中选择单事件类型。

  • 触发类型:从下拉菜单中选择平均统计。

  • 过滤条件:选择另一个已存在的事件作为当前事件的过滤条件来对日志进行第一步的过滤。过滤条件的日志源必须包含或等于当前事件的日志源,才能显示在下拉菜单中。同时菜单也提供了一个 全部 选项,表示不对日志进行过滤。

    例如,选中之前创建的 简单事件范例,则符合该范例描述的日志会被 “挑选出来”。这些 “挑选出来” 的日志再与数值统计事件的后续描述进行比较。

    💡   注意:

    请确保需要用作过滤条件的事件的日志源 包含或等于 当前的日志源。不符合该条件的事件不会显示在过滤条件的下拉菜单中。

  • 触发对象:在过滤条件筛选出来的日志中指定一个字段,从而进一步筛选出该字段值相同的日志,以便对这些日志进行后续比较。

    该下拉菜单中提供了 IP、用户、设备、自定义字段1、自定义字段2等选项。

    在选定 访问日志 作为日志源时,IP 值默认为访问日志中的 src_ip 字段值,设备的值默认为访问日志中的 fingerprint 字段值。用户字段和自定义字段暂未在访问日志中实现映射。

    在选定自定义的日志配置作为日志源时,这几个选项的值由该日志源中对重点字段的映射配置决定。

    💡   注意:

    在选择自定义日志源时(即在日志配置中自行创建的基于 TCP 或者 KAFKA 的日志源),需要确保该日志源已通过重点字段的配置来对 IP、用户、设备、自定义字段实现全部或部分映射(请参考 3.2 日志配置 小节的内容)。这样在触发对象下拉菜单中选择已经映射的字段,才能让事件生效。

  • 均值计算对象:在过滤条件和触发对象共同筛选出来的日志中,指定一个数值型字段,以便对其平均字段值进行计算。

  • 比较符:选择一个运算符号,以便对当前均值计算对象的平均字段值进行比较。可选符号包括 “>=、>、=、<、<=” 几个选项。

  • 变量:指定一个数值,作为当前均值计算对象的平均字段值的目标比较值。

  • 窗口周期:指定一个时间窗口,限定仅对该时间窗口内接收到的日志内容进行比较。事件单位支持 分钟小时

  • 事件描述:该文本框用于输入对该事件的简单描述。描述内容将显示在事件管理页面的 描述 一栏中。


▶ CEP事件

CEP 事件用于描述多个简单事件出现的顺序、次数和这些事件出现时相互之间的连续方式。

💡   配置范例解读:

上图中的范例所描述的内容为:

监视日志源 “访问日志”,在 60 秒内产生的日志中,找出字段 IP 的值相同的日志。如果在这些日志中首先找到一条符合简单事件 1 的日志,然后找到两条、或三条、或四条符合简单事件 2 的日志,且这些日志紧挨着连续出现(即它们之间不存在其他日志),则视为该 CEP 事件被触发一次。

  • 事件名称:为新事件输入一个名称。事件的名称不能与已有的事件名称重复。

  • 日志源:为事件指定一个或多个日志源。该日志源包含的字段、或者多个日志源的交集字段将作为事件中的待选字段。

    💡   提示:

    系统默认为每个站点建立了一个对应的访问日志源,其名称中带有对应的站点 ID 号,可直接选择使用。

    如果需要创建自定义日志源,请参考 3.2 日志配置 小节的内容来创建日志源)

    指定多个日志源时,待选字段为各个日志源之间的交集字段。例如,日志源 A 中存在字段 src_ip、referer、user_agent,而日志源 B 中存在字段 src_ip、request、host,则待选字段只有 src_ip 一个。

  • 事件类型:从下拉菜单中选择单事件类型。

  • 触发类型:从下拉菜单中选择 CEP。

  • 连续方式:严格连续是指 CEP 事件中指定的简单事件必须紧挨着连续触发,即符合这些简单事件描述的日志必须紧挨着连续出现,它们之间不能存在其他日志。反之,宽松连续则是指符合这些简单事件描述的日志之间可以存在其他日志。

  • 过滤条件:CEP 事件的过滤条件是由一个或多个事件组成的事件序列。选择另一个或多个已存在的事件来组成序列。过滤条件的日志源必须包含或等于当前事件的日志源,才能显示在下拉菜单中。

    💡   注意:

    请确保需要用作过滤条件的事件的日志源 包含或等于 当前的日志源。不符合该条件的事件不会显示在过滤条件的下拉菜单中。

  • 重复次数:设定每个简单事件的触发次数。当触发次数为一个确定的数值时,可以在前后两个文本框都填写相同的数值来实现。当触发次数为某个数值范围时,在第一个文本框中填写起始数值,第二个文本框中填写结束数值。

    💡   例如:

    指定事件重复两次,则填写 2 至 2;指定事件重复 3 到 5 次,则填写 3 至 5。

  • 操作:用于添加和删除过滤条件。

  • 触发对象:指定一个字段,以便从当前日志源中筛选出该字段的值相同的日志,然后对这些日志进行事件序列匹配。

    该下拉菜单中提供了 IP、用户、设备、自定义字段1、自定义字段2等选项。

    在选定 访问日志 作为日志源时,IP 值默认为访问日志中的 src_ip 字段值,设备的值默认为访问日志中的 fingerprint 字段值。用户字段和自定义字段暂未在访问日志中实现映射。

    在选定自定义的日志配置作为日志源时,这几个选项的值由该日志源中对重点字段的映射配置决定。

    💡   注意:

    在选择自定义日志源时(即在日志配置中自行创建的基于 TCP 或者 KAFKA 的日志源),需要确保该日志源已通过重点字段的配置来对 IP、用户、设备、自定义字段实现全部或部分映射(请参考 3.2 日志配置 小节的内容)。这样在触发对象下拉菜单中选择已经映射的字段,才能让事件生效。

  • 窗口周期:指定一个时间窗口,限定仅对该时间窗口内接收到的日志内容进行比较。事件单位支持 分钟小时

  • 事件描述:该文本框用于输入对该事件的简单描述。描述内容将显示在事件管理页面的 描述 一栏中。


事件配置完成后,单击配置页面下方的保存按钮即可在 事件管理 页面中看到新建的事件。

💡   注意:

新建的事件默认为禁用状态,需要在 事件管理 页面中的 状态 一栏内,手动单击该栏中的开关按钮,将它修改为启用,才能在创建高级安全规则时引用该事件。

3.3.3 新建组合事件

组合事件 类型用于创建一个包含了多个单事件的组合型事件,其中对这些单事件的逻辑关系进行了描述。

单击事件管理页面左上角的 新建 按钮,进入新建事件配置页面,并在 事件类型 菜单中选择 组合事件。如下图所示。

💡   配置范例解读:

上图中的范例所描述的内容为:

监视日志源 “访问日志”,当该日志源中的数据同时触发了事件 a 和事件 b,或者同时触发了事件 c 和事件 d、或者触发了事件 e,则视为该组合事件被触发一次。

创建组合事件之前,需要首先创建好单事件。并且确保这些单事件的日志源与当前所选的日志源相同、或者包含当前所选的日志源。

事件配置完成后,单击配置页面下方的保存按钮即可在 事件管理 页面中看到新建的事件。

💡   注意:

新建的事件默认为禁用状态,需要在 事件管理 页面中的 状态 一栏内,手动单击该栏中的开关按钮,将它修改为启用,才能在创建高级安全规则时引用该事件。

4 规则管理

规则管理页面包含了 防BOT规则基础应用安全规则(需要购买基础应用安全模块)和 高级安全规则(需要购买高级安全模块),如下图所示。

💡   提示:

基础应用安全规则高级安全规则 标签需要在购买了 基础应用安全模块 或者 高级安全模块 后,才会显示出来。

页面顶部的 防护站点 下拉菜单包含了当前所有可用的站点名称。

每个站点名称下的基础应用安全规则仅对带有该 ID 的请求生效,带有其他 ID 的请求不会触发当前 ID 下的基础应用安全规则。

与基础应用安全规则不同的是,高级安全规则的触发取决于它们关联的事件,与其所处的站点名称无关。但高级规则触发后,其执行动作将仅对访问当前站点的请求生效(关于高级安全规则中的执行动作,请参考 4.3 高级安全规则 小节的内容)。

4.1 防BOT规则

该标签下的配置项用于针对扫描器、搜索引擎、脚本工具、其他爬虫等防护检测类型选择防护配置。防BOT规则开关 可以启用或禁用所有防护检测类型。也可以通过页面右侧的 规则开关 单独启用或禁用每种防护检测类型。

💡   提示:

防BOT规则开关 仅对当前页面顶部选中的 防护站点 有效。即关闭当前 防护站点 下的 防BOT规则开关,不会影响其他站点。

以下表格列出了个几种防护检测类型的简单介绍。

防护检测类型简介
扫描器启用该类型后,瑞数云将对各种扫描器发起的请求进行检测和拦截。
搜索引擎(该功能暂未支持)
脚本工具启用该类型后,瑞数云将对各种脚本工具发起的请求进行检测和拦截。
其他爬虫启用该类型后,瑞数云将对搜索引擎以外的爬虫程序的请求进行检测和拦截。

4.2 基础应用安全规则

💡   提示:

基础应用安全规则标签仅在购买了 基础应用安全模块 后,才会显示出来。

基础应用安全规则属于 OWASP 类安全规则。触发基础应用安全规则后,根据您选择的 异步模式同步模式,会实施不同的拦截操作。

💡   提示:

请参考 插件接入指南 相关文档中对于 异步和同步模式 的介绍。

  • 异步模式下,插件会持续转发请求,当瑞数云的返回结果表明某个请求触发了基础应用安全规则时,才会根据当前站点的工作模式决定如何处理相同客户端的后续请求。例如当前站点处于 拦截模式,则会对该客户端的后请求持续拦截 一分钟

  • 同步模式下,插件会等待瑞数云返回每个请求的检测结果,当瑞数云的返回结果表明某个请求触发了基础应用安全规则,才会根据当前站点的工作模式决定如果处理该请求。例如当前站点处于 拦截模式,则会拒绝转发该请求。

基础应用安全规则标签下包含了瑞数云集成的一系列预置规则和自定义规则入口。

在预置规则页面中,可以对预置规则进行管理。在自定义规则页面中,可以自行定义新的基础规则。

4.2.1 预置基础应用安全规则

瑞数云提供了 196 条预置基础规则,并将它们按照不同的攻击类别进行分组归类,所有规则组都默认为启用状态。

以 JAVA 攻击类型为例,上图中把针对该攻击类型的 9 条规则归为一个规则组,该规则组的 ID(即图中规则列表第一列的安全规则ID)为 001。

规则组的防护等级决定了该组中所启用的规则条数。选择 宽松,则该组中启用的规则数量最低。其他防护等级:正常严格超严格 将依次增加规则组中启用的规则数量。超严格 会启用规则组中的所有规则。

💡   提示:

默认防护等级为宽松。防护等级越高,安全性越高,但可能会提高误报率。

以下表格列出了当前所有预置规则类别的简单介绍。如果需要查看每个类别中的各条规则详情,可以按照上图中所示,单击 规则数量 一栏中的数字进入详情页面。

安全规则ID规则类型描述
001JAVA攻击包含了针对远程命令执行、有效负载执行、可疑 JAVA 类等攻击类型的检测规则
002文件和路径攻击包含了针对路径遍历、系统文件、受限文件等攻击类型的检测规则
003Node JS 攻击包含了针对 Node.js 注入攻击的检测规则
004PHP 注入攻击包含了针对各种 PHP 注入攻击手段的检测规则
005远程代码执行攻击包含了针对 UNIX 命令注入、Windows 命令注入、Windows PowerShell 命令等攻击类型的检测规则
006远程文件包含 (RFI) 攻击包含了针对 URL 参数、URL负载尾随问号、域外引用等攻击类型的检测规则
007会话固定攻击包含了针对 HTML 中设置 Cookie 值、以及针对 SessionID 参数名等攻击类型的检测规则
008SQL 注入攻击包含了针对多种 SQL 注入攻击的检测规则
009跨站点脚本攻击包含了针对多种跨站脚本攻击的检测规则
010协议攻击包含了针对 HTTP 请求走私攻击、HTTP 响应拆分攻击、HTTP 标头注入攻击等攻击类型的检测规则
011协议执行包含了针对无效 HTTP 请求行、表单数据绕过等攻击类型的检测规则
012端口和环境扫描程序包含了针对多种扫描器的检测规则

4.2.2 自定义基础应用安全规则

自定义规则页面与预置规则页面中的配置项类似,主要的区别在于自定义规则页面提供了一个 添加规则 按钮,并且没有 防护等级 配置项。

单击 添加规则 按钮,进入以下界面。

输入一个规则名称,然后选择规则将要检查请求的哪些位置,例如 URL 或 URL 的参数等。每选中一个检查位置,页面会实时显示该位置相应的配置项,以便输入正则表达式等详细设定。

💡   提示:

攻击类型和检查方向不支持修改,由系统分别自动填写为 自定义请求。建议输入备注信息简单介绍当前规则,以便其他使用者能够在规则列表中对该规则有一个大概的了解。

如下图所示,当选中 任意位置 时,会在下拉菜单下方出现该检查位置对应的正则输入框。在输入框中输入正则表达式并保存后,瑞数云将会用该正则表达式对 检查位置 下拉菜单中所有选项的对应位置进行匹配。当任意一个位置匹配成功时,就会触发这条规则。

以下列表包含了所有可选检查位置的描述。

💡   注意:

插件版部署方式,且采用异步模式时,检查位置仅支持 请求URL请求URL参数名

检查位置描述
全部针对 检查位置 下拉菜单中所有选项的对应位置,使用正则表达式对请求进行匹配。当所有选项都匹配成功时,就会触发规则。
任意位置针对 检查位置 下拉菜单中所有选项的对应位置,使用正则表达式对请求进行匹配。 当任意选项匹配成功时,就会触发规则。
请求URL针对请求 URL中的路径以及路径后的部分,即包含查询字符串数据在内的字符串,使用正则表达式进行匹配。
请求URL参数名针对 URL 的参数名,使用正则表达式进行匹配。
请求头名针对请求头中的字段名,使用正则表达式进行匹配。
请求头Referer针对请求头中 Referer 字段的值,使用正则表达式进行匹配。
请求头UA针对请求头中 User-Agent 字段的值,使用正则表达式进行匹配。
请求头Cookie名针对请求头中 Cookie 的名称,使用正则表达式进行匹配。
请求Body针对请求体的内容,使用正则表达式进行匹配。
源IP针对请求的源 IP,使用正则表达式进行匹配。
请求URL参数值针对 URL 的参数值,使用正则表达式进行匹配。每条正则表达式需要指定一个参数名(.*代表任意参数名)。可以配置多条正则表达式和它们对应的参数名。
请求头值针对请求头的字段值,使用正则表达式进行匹配。每条正则表达式需要指定一个字段名(.*代表任意字段名)。可以配置多条正则表达式和它们对应的字段名。
请求头Cookie值针对请求头中的 Cookie 值,使用正则表达式进行匹配。每条正则表达式需要指定一个 Cookie 字段名(.*代表任意字段名)。可以配置多条正则表达式和它们对应的 Cookie 字段名。

4.3 高级安全规则

💡   提示:

高级安全规则标签仅在购买了 高级安全模块 后,才会显示出来。

高级安全规则是基于 事件 的高级规则。通过创建不同的规则,可以对各种简单或复杂的攻击行为进行检测。检测到攻击时会自动生成日志触发信息,并执行规则中设定的执行动作,例如阻断攻击者的后续访问。

💡   提示:

页面顶部的 防护站点 用于选择一个站点 ID。该 ID 下创建的规则触发后,规则中的执行动将仅对带有该 ID 的请求生效。但高级安全规则的触发取决于它们关联的事件,与其所处的站点 ID 无关。

创建高级规则前,需要首先创建该规则所需要的事件。通过管理界面左侧导航栏中的 配置管理 > 事件管理 菜单,可以创建事件(请参考 3.3 事件管理 小节中的内容)。

在高级安全规则页面中,单击 新建 按钮,进入新规则编辑界面。以下图片提供了一个高级规则配置范例。

💡   配置范例解读:

上图中的范例所描述的内容为:

当规则关联的事件 组合事件范例 触发时,在后续 300 秒内,触发该事件的日志中的源 IP 地址将被写入瑞数云的 威胁情报库。当该源 IP 再次发起的请求访问该站点,就会被拒绝访问(前提是该站点为 拦截模式,请参考 3.1.2 防护模式 中对 拦截模式 的介绍)。最后,该请求的 src_ip 字段值,即源 IP 还会被保存,生成一个基于该规则名称而命名的名单。该名单可以作为新建简单事件时的触发判断条件来使用。

一个规则可以同时关联多个事件。这些事件之间为逻辑或的关系,即只要成功触发了其中一个事件,就会触发该规则。可以在 日志管理 > 搜索 页面中选择 日志触发信息,并在 triggered_rules 一栏查看已触发的规则。

  • 规则名称:为新规则输入一个唯一的名称。该名称不能与其他规则的名称重复。

  • 规则描述:输入对该规则的简单描述。描述内容将显示在高级安全规则页面的 描述 一栏中。

  • 关联事件:从下拉菜单选择一个或多个需要关联的事件,只要其中一个事件被触发,就会触发该规则。

    💡   提示:

    下拉菜单只会显示已启用的事件。

  • 执行动作:选择 阻断 时,如果规则被触发,就会对下方指定的目标对象进行拦截。选择 无动作,则触发规则时仅会在 日志触发信息 中进行记录。

  • 目标对象:指规则触发时需要拦截的对象,包括 IP用户设备自定义字段1自定义字段2。这些对象的值来自于日志配置中重点字段的映射。

    💡   提示:

    请参考 3.2.1 自定义TCP日志配置 小节中对重点字段配置的介绍。

  • 拦截时间:指目标对象被拒绝访问的持续时长,单位为秒。

  • 规则优先级:规定了规则触发时执行动作的优先级。最小值 0 由系统自动填写,表示无执行动作。当执行动作选择阻断时,系统自动填入 1,表示最高执行优先级,这时可以手动修改该优先级。如果同一个请求同时触发多个不同优先级的规则,仅优先级最低的规则会执行动作。

    💡   提示:

    大于等于 1 的优先级数值不能重复。新建规则的优先级数值已存在时,系统会自动将当前等于和大于该数值的优先级加 1。

    例如,当前存在三条规则,分别是优先级为 1 的 A、优先级为 2 的 B、优先级为 3 的 C。新建优先级为 2 的D。保存后,A 的优先级仍然为 1、D 的优先级为 2、B 的优先级变成了 3、C 的优先级变成了 4。

  • 是否生成名单:启用后,在下方的下拉菜单中选定一个字段。当该规则被触发时,就会自动保存该字段的信息,例如指定 src_ip 字段,则所有触发该规则的请求的源 IP 将被保存起来,生成一个基于该规则名称命名的名单。该名单可以作为新建简单事件时的触发判断条件来使用。

    💡   提示:

    只要新建了启用名单生成功能的规则,并不需要等待规则触发,就可以立即使用该名单来创建新事件。但该事件要等待名单真正生成、即规则被触发后,才能触发。

5 平台

管理界面左侧导航栏的底部提供了名为 平台 的选项,如下图所示。

💡   提示:

单击 收起菜单 选项,可以将左侧导航栏缩小到仅一个图标的宽度。

单击 平台 选项可以访问瑞数云平台上不同产品的配置入口、当前组合的订单详情、以及账号管理页面。如下图所示。

💡   提示:

只有管理员可以查看 订单管理账号管理

  • 系统登录标签:该标签下包含了两个产品类型,即应用安全和数据安全。当未购买了对应的产品时,产品类型的图标为灰色。反之,则会切换为蓝色。

    单击产品类型的图标,即可进入该产品的配置管理页面。

  • 订单管理标签:该标签下包含了当前租户的订单详情。

    • 激活板块:显示当前各个防护模块的工作状态和规格。

      module_status

      当模块正常工作时,工作状态显示为 “激活”。

      没有购买的模块会显示为 “未购买”。

      已超过使用期限的模块,会显示 “已过期”。

    • 购买记录:显示当前已购买的模块。

      显示当前所有的购买订单相关信息,包括订单创建时间、订单号、所购商品名称和数量、订单过期时间、订单状态、备注信息和操作。

      未购买任何模块时,仅有一个 测试版的防Bots模块,使用期限一个月。

      💡   提示:

      单击操作一栏中的 续期购买其他模块 按钮,会弹出包含联系方式的提示信息,并不能直接续期或购买。

  • 账号管理标签:该标签包含了当前用户基本信息和账户列表。

    • 基本信息

      com_manage

      企业 ID 是通过华为云购买防护服务时注册生成的 ID 号、或者通过瑞数云管理界面注册生成的 ID 号。

      版本类型显示为 “测试”,表示当前用户未购买任何防护服务。“正式”,表示当前用户已购买了防护服务。

      客户名称为当前登录的账号邮件地址。

      客户ID 为当前登录的账号的 ID。

      💡   提示:

      该 ID 号仅用于通过华为云注册的用户,便于华为云端对用户进行管理。

    • 账户列表

      acounts

      显示当前每个可用账号的创建时间、账号 ID、账号名、状态、权限和操作等信息。支持对账号(不包括租户账号)进行密码重置、禁用、修改权限和删除的操作。并且在右上角提供账号筛选下拉菜单和创建新账号按钮。

      💡   提示:

      仅管理员有权对其他账号进行操作。但管理员不能对自己进行禁用或修改权限。

      账号筛选下拉菜单可以根据账号的激活状态和启用禁用状态进行筛选,并显示筛选结果。

      单击页面右方的 创建账号 按钮,可以添加新账号,如下图所示。

      以下表格对配置项进行了说明。

      配置项说明
      角色可选角色包括:
          管理员(可访问管理界面的所有内容)
          用户(可访问安全概览、日志配置、配置管理、规则管理)
          访客(可访问安全概览、日志管理)角色。
      邮箱输入邮箱后,该邮箱可以作为账号名登录系统。

      填写完成后单击 发送 按钮,所填邮箱将收到一封激活邮件。通过该邮件有中的链接激活后,即可使用该邮箱地址登录系统。

      💡   注意:

      已激活的邮箱不能再次用于新账号的创建。5 分钟内针对相同邮箱只能发送一封激活邮件,且 5 分钟内最多创建 5 个新账号。

6 其他

在管理界面的右上角可以看到当前登录的账号信息,单击后可以展开 我的账号系统版本退出 三个选项。

我的账号:显示了当前账号的账号名、ID、角色和权限等信息,同时可以修改当前账号的密码,如下图所示;

💡   提示:

密码长度为 8-16 位,需要由英文大写、英文小写、数字、符号中至少 3 种组合而成,同时系统将对修改后的密码进行弱口令检查。

系统版本:显示了当前系统的版本号;

退出:单击后,将退出当前账号的登录状态,回到登录页面。

附录 1 字段列表

字段名类型解释
accountString通过 WEB字段提取 功能获取的浏览器端登录被保护站点时所用的账号名
body_bytes_sentUInt64服务器端返回的 HTTP 响应体长度
client_bot_typeString浏览器端机器人类型
detection_resultString针对浏览器端的检测结果
fingerprintString浏览器端的指纹
guard_statusString插件对于浏览器端请求的判断结果:
TOKEN_MISS:令牌不存在
TOKEN_INVALID:令牌不合规
TOKEN_EXPIRED:令牌过期
IGNORE:不需要进行检测
PASS:检测通过
BOT:自动化工具检测未通过
REPUTATION:风控规则检测未通过
OWASP:基础规则检测未通过
ip_cityStringIP 地址所属城市,来自 _intelligence_result 内部字段
ip_classificationStringIP 信誉分类,来自 _intelligence_result 内部字段 udger.ip_classification
ip_data_center_nameStringIP 对应的数据中心名,来自 _intelligence_result 内部字段 udger.ip_data_center_name
keeper_versionString当前插件版本
login_statusUInt8浏览器端登录被保护站点时的登录状态。0表示无登录行为,1表示登录成功,2表示登录失败
meta_dataString客户自定义信息
referrerString浏览器端请求的地址
requestString浏览器端的请求方法+请求路径+请求协议版本
request_timeFloat64请求耗时
sessionString请求会话 ID
site_idString站点 ID
source_typeString请求的来源
src_ipString请求的源 IP
statusUInt16请求的响应码
tenant_idString租户 ID 号
ua_classificationString基于情报库对客户端浏览器进行的分类,来自 _intelligence_result 内部字段 udger.ua_classification
ua_familyString基于情报库对客户端浏览器的名称解析结果,来自 _intelligence_result 内部字段 udger.ua_family
ua_osString基于情报库对浏览器端的操作系统分析结果,来自 _intelligence_result 内部字段 udger.ua_os
ua_version_majorString基于情报库对浏览器主版本信息的分析结果,来自 _intelligence_result 内部字段 udger.ua_version_major
user_agentString浏览器详细信息
x_forwarded_forString请求头中的 X-Forwarded-For 字段
raw_dataString原始日志数据
reasonString日志解析失败时的原因
log_idString日志的 ID 号
login_statusInt(仅存在于检测日志中)账号登录状态,0 表示未登录,1 表示登录失败,2 表示登录成功
log_setting_idString日志配置的 ID 号
parsedUInt8日志解析成功为 1,失败为 0
t_detectorDateTime64访问云端花费的时长
_intelligence_resultJSON基于情报库对请求的 src_ip 和 user_agent 进行比对后生成的结果
waf_triggered_rulesString被触发的基础应用安全规则的 ID 号
waf_triggered_categoriesString被触发的基础应用安全规则的分类
waf_triggered_scoreUInt64被触发的所有基础应用安全规则的分数总和
hostnameString请求的主机名
schemeString请求的协议
triggered_eventsString被触发的事件的名称
triggered_rulesString被触发的风控安全规则的名称
acted_rulesString被触发且配置了动作的风控安全规则的名称
_timestampString日志的时间戳

附录 2 支持的浏览器

以下表格列出了瑞数云的管理界面和 JS 探针支持的浏览器。

分类浏览器版本
管理界面

• Chrome v57 或更高版本

• Firefox v52 或更高版本

• Edge v79 或更高版本

JS探针

• IE v8或更高版本

• Chrome v49 或更高版本

• Firefox v52 或更高版本

• Safari v10 或更高版本

• Edge v44 或更高版本

附录 3 发送TCP日志的范例

💡   提示:

这里将以 Ubuntu 操作系统作为 TCP 日志发送源,介绍从创建日志配置到验证日志接收的完整过程。如果以其他操作系统作为发送源,请相应地参考这些操作系统对于 TCP 日志发送的官方配置介绍。

步骤一:基于日志内容定制日志配置

按照 3.2.1 自定义TCP日志配置 小节的内容,针对以下待发送的 TCP 日志数据范例建立一个日志配置。

▶ 针对 plain_text 模板类型

日志配置中模板类型为 plain_text 时,请基于以下日志数据范例来定制日志解析配置。

Jan  1 10:12:09 ubuntu info daemon [1]:  Started Session 1197 of user ubuntu.

Jan 2 10:13:09 ubuntu info daemon [1]: Started Session 1198 of user ubuntu.

将其中一条日志复制到编辑窗口右方的样本数据中,然后开始填写配置。

如果当前配置中至少有一个字段已经被作为 必要字段,每当完成一个字段抽取的配置时,页面都会实时解析样本数据,并将结果显示在页面下方。

💡   注意:

以上日志内容为 rsyslog 最终发送到瑞数云时的格式,并非当前主机上的原始日志。这是因为 rsyslog 在转发日志过程中,会基于自身的配置对日志进行一次解析,然后将解析后的日志发送出去。

原始日志内容可以在 步骤四 中查看。

基于以上日志内容创建的日志配置如下图所示。

配置完成后,以上样本数据的解析结果如下所示。

{"_timestamp":"2023-01-01 10:12:09.000","facility":"daemon","host":"ubuntu","message":" Started Session 1197 of user ubuntu.","procid":1,"severity":"info"}

💡   提示:

当前版本的时间解析精度仅精确到秒。无论日志时间中是否存在毫秒(例如解析前 10:12:09.123),解析后毫秒的部分都会以 000 代替(例如解析后 10:12:09.000)。

解析成功表示当前配置可以正常解析日志,单击 保存 按钮来保存配置。

▶ 针对 json 模板类型

日志配置中模板类型为 json 时,请基于以下日志数据范例来定制日志解析配置。

{"timestamp":"2023-01-01 10:12:09","facility":"daemon","host":"ubuntu","message":" Started Session 1197 of user ubuntu.","procid":1,"severity":"info"}

{"timestamp":"2023-01-02 10:13:09","facility":"daemon","host":"ubuntu","message":" Started Session 1198 of user ubuntu.","procid":1,"severity":"info"}

将其中一条日志复制到编辑窗口右方的样本数据中,然后开始填写配置。

如果当前配置中至少有一个字段已经被作为 必要字段,每当完成一个字段抽取的配置时,页面都会实时解析样本数据,并将结果显示在页面下方。

💡   注意:

以上日志内容为 rsyslog 最终发送到瑞数云时的格式,并当前主机上的原始日志。这是因为 rsyslog 在转发日志过程中,会基于自身的配置对日志进行一次解析,然后将解析后的日志发送出去。

基于以上日志内容创建的日志配置如下图所示。

💡   提示:

以上针对 json 模板类型的实例中,是通过 添加自动抽取 按钮来实现的手动配置。更加快捷的方法是,在粘贴样本数据后,单击 快速添加 按钮,这时页面会基于当前粘贴的 JSON 样本数据自动生成配置,然后将字段名称按照需要修改即可。

配置完成后,以上样本数据的解析结果如下所示。

{"_timestamp":"2023-01-01 10:12:09.000","facility":"daemon","host":"ubuntu","message":" Started Session 1197 of user ubuntu.","procid":1,"severity":"info"}

💡   提示:

当前版本的时间解析精度仅精确到秒。无论日志时间中是否存在毫秒(例如解析前 10:12:09.123),解析后毫秒的部分都会以 000 代替(例如解析后 10:12:09.000)。

解析成功表示当前配置可以正常解析日志,单击 保存 按钮来保存配置。

步骤二:下载和安装证书

配置管理 > 日志管理 界面,下载刚才创建的日志配置的证书压缩文件,并复制到发送日志的主机系统中。然后执行以下命令解压该文件,并将解压后的文件复制到 /etc/rsyslog.d/ 路径下。

unzip <证书压缩文件名>.zip
cp ca_cert.pem csr_cert.pem private_key.pem /etc/rsyslog.d/

步骤三:新建和修改配置文件

在发送日志的主机上,执行以下命令,进入 TCP_LOG.conf 文件编辑界面,并将命令下方的指令写入该文件,最后将该文件保存和复制到 /etc/rsyslog.d/ 路径下。

  • 日志配置中模板类型为 plain_text 时,请阅读以下内容。

    # 编辑文件

    vi TCP_LOG.conf

    # 将以下指令复制粘贴到编辑界面中

    # make gtls driver the default
    $DefaultNetstreamDriver gtls

    # certificate files
    $DefaultNetstreamDriverCAFile /etc/rsyslog.d/ca_cert.pem
    $DefaultNetstreamDriverCertFile /etc/rsyslog.d/csr_cert.pem
    $DefaultNetstreamDriverKeyFile /etc/rsyslog.d/private_key.pem

    $ActionSendStreamDriverAuthMode anon
    $ActionSendStreamDriverMode 1
    $template myformat,"%TIMESTAMP:1:15% %hostname% %syslogseverity-text% %syslogfacility-text% \[%procid%\]\: %msg% \n"
    *.* @@detector.riveryun.com:5514;myformat

    # 保存并复制到 /etc/rsyslog.d/ 路径下

    :wq!
    cp TCP_LOG.conf /etc/rsyslog.d/
  • 日志配置中模板类型为 json 时,请阅读以下内容。

    # 编辑文件

    vi TCP_LOG.conf

    # 将以下指令复制粘贴到编辑界面中

    # make gtls driver the default
    $DefaultNetstreamDriver gtls

    # certificate files
    $DefaultNetstreamDriverCAFile /etc/rsyslog.d/ca_cert.pem
    $DefaultNetstreamDriverCertFile /etc/rsyslog.d/csr_cert.pem
    $DefaultNetstreamDriverKeyFile /etc/rsyslog.d/private_key.pem

    $ActionSendStreamDriverAuthMode anon
    $ActionSendStreamDriverMode 1
    template(name="json_lines" type="list" option.json="on") {
    constant(value="{")
    constant(value="\"timestamp\":\"")
    property(name="timereported" dateFormat="year")
    constant(value="-")
    property(name="timereported" dateFormat="month")
    constant(value="-")
    property(name="timereported" dateFormat="day")
    constant(value=" ")
    property(name="timereported" dateFormat="hour")
    constant(value=":")
    property(name="timereported" dateFormat="minute")
    constant(value=":")
    property(name="timereported" dateFormat="second")
    constant(value="")
    constant(value="\",\"message\":\"")
    property(name="msg")
    constant(value="\",\"host\":\"")
    property(name="hostname")
    constant(value="\",\"severity\":\"")
    property(name="syslogseverity-text")
    constant(value="\",\"facility\":\"")
    property(name="syslogfacility-text")
    constant(value="\",\"app-name\":\"")
    property(name="programname")
    constant(value="\",\"procid\":\"")
    property(name="procid")
    constant(value="\"}\n")
    }
    *.* @@detector.riveryun.com:5514;json_lines

    # 保存并复制到 /etc/rsyslog.d/ 路径下

    :wq!
    cp TCP_LOG.conf /etc/rsyslog.d/

完成 TCP_LOG.conf 文件配置后,接下来确保 /etc/rsyslog.conf 文件中存在以下指令,且指令没有被注释。

module(load="imudp")
input(type="imudp" port="514")

$IncludeConfig /etc/rsyslog.d/*.conf

最后执行以下命令重启 rsyslog 进程,使配置生效。

systemctl restart rsyslog

步骤四:验证配置是否生效

执行以下命令进入文件 ORIGINAL_LOG.log 的编辑界面,并将命令后的日志粘贴到界面中,然后保存该文件。

# 编辑文件

vi ORIGINAL_LOG.log

# 将以下日志复制粘贴到编辑界面中

<30>Jan 01 10:12:09 ubuntu [1]: Started Session 1197 of user ubuntu.

<30>Jan 02 10:13:09 ubuntu [1]: Started Session 1198 of user ubuntu.

# 保存文件

:wq!

执行以下命令进入 sendlog.sh 脚本编辑界面。

# 编辑文件

vi sendlog.sh

# 将以下指令复制粘贴到编辑界面中,并把 <本机IP地址> 替换成当前主机的IP地址

while read -r line
do
echo $line |nc -w 1 -u <本机IP地址> 514
done < ORIGINAL_LOG.log

# 保存文件,并赋予可执行权限

:wq!
chmod +x sendlog.sh

执行以下命令来发送 ORIGINAL_LOG.log 文件中的日志。

sh sendlog.sh

登录 瑞数云管理界面,在 日志管理 > 搜索 页面中的 选择日志 下拉菜单中,选择刚才创建的日志配置名称,并通过右上角 快速选择 按钮选中 所有,最后单击 搜索,查看接收并解析后的日志,如下图所示。

附录 4 发送KAFKA日志的范例

步骤一:基于日志内容定制日志配置

按照 3.2.2 自定义KAFKA日志配置 小节的内容,针对以下待发送的 KAFKA 日志数据范例建立一个日志配置。

▶ 针对 plain_text 模板类型

日志配置中模板类型为 plain_text 时,请基于以下日志数据范例来定制日志解析配置。

{"timestamp":"2022-10-19 14:32:16.456","src_ip":"10.10.10.10", "user_agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36", "device":"x64 Core i7 13700 proccessor Win10","message":"account Ryn1997 tried to login at login.jsp", "request":"http://target_site/login.jsp", "request_time": 0.8}

KAFKA日志配置中基于 plain_text 模板类型的配置与 附录 3针对 plain_text 模板类型 的内容相同,请参考该小节来进行配置。

▶ 针对 json 模板类型

日志配置中模板类型为 json 时,请基于以下日志数据范例来定制日志解析配置。

{"timestamp":"2022-10-19 14:32:16.456","src_ip":"10.10.10.10", "user_agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36", "device":"x64 Core i7 13700 proccessor Win10","message":"account Ryn1997 tried to login at login.jsp", "request":"http://target_site/login.jsp", "request_time": 0.8}

KAFKA日志配置中基于 json 模板类型的配置与 附录 3针对 json 模板类型 的内容相同,请参考该小节来进行配置。

步骤二:验证配置是否生效

将以上日志范例基于配置中设定的 KAFKA 主题写入 KAFKA 节点,瑞数云会自动采用该日志配置从 KAFKA 节点获取日志并进行解析。

登录 瑞数云管理界面,在 日志管理 > 搜索 页面中的 选择日志 下拉菜单中,选择刚才创建的日志配置名称,并通过右上角 快速选择 按钮选中 所有,最后单击 搜索,查看接收并解析后的日志,如下图所示。