Fortinet FortiSIEM

本文档介绍了如何将 Fortinet FortiSIEM 与 Google Security Operations 集成。

在 Google Security Operations 中配置 Fortinet FortiSIEM 集成

有关如何在 Google SecOps 中配置集成的详细说明,请参阅配置集成。

集成参数

使用以下参数配置集成:

参数显示名称 类型 默认值 为必填项 说明
API 根 字符串 https://x.x.x.x:port 是 指定目标 FortiSIEM 安装的 API 根。
用户名 字符串 不适用 是 指定要用于目标 FortiSIEM 安装的用户名。
密码 密码 不适用 是 指定要用于目标 FortiSIEM 安装的密码。
验证 SSL 复选框 勾选 否 如果启用,Google SecOps 服务器会检查证书是否已针对 API 根进行配置。

产品应用场景

  1. 将提醒从 SIEM 注入到 Google SecOps。
  2. 使用 SIEM 中的数据来丰富 Google SecOps 提醒。
  3. 将 Google SecOps 提醒的处理状态同步回 SIEM 端。

操作

Ping

说明

使用 Google SecOps Content Hub 页面中的集成配置页面上提供的参数,测试与 FortiSIEM 的连接。

参数

不适用

运行时间

该操作不会对实体执行,也没有强制性输入参数。

操作执行结果

脚本结果
脚本结果名称 值选项 示例
is_success True/False is_success=False
JSON 结果
N/A
实体丰富化

不适用

数据分析

不适用

案例墙
结果类型 值/说明 类型
输出消息*

操作不应失败,也不应停止 playbook 执行:

如果成功:“已使用提供的连接参数成功连接到 FortiSIEM 安装!”

操作应失败并停止 playbook 执行:

>如果未成功:“Failed to connect to the FortiSIEM installation! Error is {0}".format(exception.stacktrace)"

常规

丰富实体

说明

使用 Fortinet FortiSIEM CMDB 中的信息丰富实体。支持的实体:主机名、IP 地址。

参数

参数显示名称 类型 默认值 为必填项 说明
目标组织 字符串 不适用 否 指定可选的目标组织名称,以便仅在此组织中查找丰富信息。

运行时间

此操作将在以下实体上运行:

  • 主机名
  • IP 地址

操作执行结果

脚本结果
脚本结果名称 值选项 示例
is_success True/False is_success=False
JSON 结果
[
  {
    "Entity": "centos-xxx",
    "EntityResult": {
      "device": {
        "organization": {
          "@id": "1xx",
          "@name": "Super"
        },
        "accessIp": "172.30.xxx.xxx",
        "approved": "true",
        "components": null,
        "creationMethod": "LOG",
        "deviceType": {
          "accessProtocols": "TELNET,SSH",
          "jobWeight": "10",
          "model": "Unix",
          "vendor": "Generic",
          "version": "ANY"
        },
        "discoverMethod": "LOG",
        "discoverTime": "1640008485000",
        "eventParserList": null,
        "interfaces": null,
        "ipToHostNames": null,
        "luns": null,
        "name": "centos-xxx",
        "naturalId": "centos%2dxxx",
        "processors": null,
        "properties": {
          "customproperty": [
            {
              "matched": "false",
              "propertyDef": {
                "displayInCMDB": "false",
                "displayName": "Importance",
                "groupKey": "false",
                "propertyName": "importance",
                "subValueType": "STRING",
                "valueType": "STRING"
              },
              "propertyName": "importance",
              "propertyValue": "Normal",
              "updated": "false"
            },
            {
              "matched": "false",
              "propertyDef": {
                "displayInCMDB": "false",
                "displayName": "Location Name",
                "groupKey": "false",
                "propertyName": "locationName",
                "subValueType": "STRING",
                "valueType": "STRING"
              },
              "propertyName": "locationName",
              "updated": "false"
            }
          ]
        },
        "raidGroups": null,
        "sanControllerPorts": null,
        "softwarePatches": null,
        "softwareServices": null,
        "status": "2",
        "storageGroups": null,
        "storages": null,
        "unmanaged": "false",
        "updateMethod": "LOG",
        "version": "ANY",
        "winMachineGuid": null
      }
    }
  },
  {
    "Entity": "172.30.xxx.xxx",
    "EntityResult": {
      "device": {
        "organization": {
          "@id": "1xx",
          "@name": "Super"
        },
        "accessIp": "172.30.xxx.xxx",
        "applications": null,
        "approved": "true",
        "components": null,
        "creationMethod": "LOG",
        "deviceType": {
          "accessProtocols": "TELNET,SSH",
          "jobWeight": "10",
          "model": "Unix",
          "vendor": "Generic",
          "version": "ANY"
        },
        "discoverMethod": "LOG",
        "discoverTime": "1640070721000",
        "eventParserList": {
          "eventparser": {
            "deviceType": {
              "category": "Appliance",
              "jobWeight": "10",
              "model": "Generic",
              "vendor": "Generic",
              "version": "ANY"
            },
            "enabled": "true",
            "name": "SyslogNGParser",
            "parserXml": "<patternDefinitions><pattern>..."
          }
        },
        "interfaces": null,
        "ipToHostNames": null,
        "luns": null,
        "name": "centos-xxx",
        "naturalId": "centos",
        "primaryContactUser": "0",
        "processors": null,
        "properties": {
          "customproperty": [
            {
              "matched": "false",
              "propertyDef": {
                "displayInCMDB": "false",
                "displayName": "Importance",
                "groupKey": "false",
                "propertyName": "importance",
                "subValueType": "STRING",
                "valueType": "STRING"
              },
              "propertyName": "importance",
              "propertyValue": "Mission Critical",
              "updated": "false"
            },
            {
              "matched": "false",
              "propertyDef": {
                "displayInCMDB": "false",
                "displayName": "Location Name",
                "groupKey": "false",
                "propertyName": "locationName",
                "subValueType": "STRING",
                "valueType": "STRING"
              },
              "propertyName": "locationName",
              "updated": "false"
            }
          ]
        },
        "raidGroups": null,
        "sanControllerPorts": null,
        "secondaryContactUser": "0",
        "softwarePatches": null,
        "softwareServices": null,
        "status": "2",
        "storageGroups": null,
        "storages": null,
        "unmanaged": "false",
        "updateMethod": "MANUAL",
        "version": "ANY",
        "winMachineGuid": null
      }
    }
  }
]
实体丰富化
扩充项字段名称 来源(JSON 密钥) 逻辑 - 适用情形
accessIp accessIp 当 XML 中有可用数据时
name name 当 XML 中有可用数据时
应用 “applications/name”的 CSV 当 XML 中有可用数据时
creationMethod creationMethod 当 XML 中有可用数据时
deviceType_model deviceType_model 当 XML 中有可用数据时

deviceType_accessProtocols

deviceType_vendor

deviceType_accessProtocols

deviceType_vendor

当 XML 中有可用数据时
discoverMethod discoverMethod 当 XML 中有可用数据时
discoverTime discoverTime 当 XML 中有可用数据时
数据分析

不适用

案例墙
结果类型 值/说明 类型
输出消息*

操作不应失败,也不应停止 playbook 执行:

如果一个实体有可用数据 (is_success=true):“已使用 FortiSIEM 中的信息成功丰富以下实体:{entity.identifier}。”

如果某个实体没有可用数据 (is_success=true):“操作无法使用 FortiSIEM 中的信息丰富以下实体:{entity.identifier}。”

如果所有实体的数据都不可用 (is_success=false):“None of the provided entities were enriched.”

操作应失败并停止 playbook 执行:

如果报告了严重错误(例如凭据错误、无法连接到服务器等),则会显示以下消息:“Error executing action "Enrich Entities". Reason: {0}''.format(error.Stacktrace)

常规
案例墙表格

表标题:{entity.identifier}

表列:

  • 键
  • 值
实体

执行简单查询

说明

根据提供的参数执行 FortiSIEM 事件查询。

参数

参数显示名称 类型 默认值 为必填项 说明
事件类型 CSV 不适用 否

指定查询应提取的事件类型。

此参数接受以逗号分隔的字符串形式的多个值。

要提取的最低严重级别 整数 不适用 否

以数字形式指定要提取到 Google SecOps 的最低事件严重级别。

示例:5 或 7

事件类别 CSV 不适用 否

指定查询应提取的事件类别。

此参数接受以逗号分隔的字符串形式的多个值。

事件 ID CSV 不适用 否

(可选)指定查询应提取的确切事件 ID。

此参数接受以逗号分隔的字符串形式的多个值。

要返回的字段 CSV 不适用 否

指定要返回的字段。

如果未提供任何内容,该操作会返回所有字段。

排序字段 字符串 phRecvTime 否 指定应使用哪个参数进行排序。
排列顺序 DDL

降序

可能的值:

  • 升序
  • 降序
否 指定排序顺序。
时间范围 DDL

过去 1 小时

可能的值:

  • 过去 1 小时
  • 过去 6 小时
  • 过去 24 小时
  • 上周
  • 上个月
  • 自定义
否

指定结果的时间范围。

如果选择“自定义”,您还需要提供“开始时间”参数。

开始时间 字符串 不适用 否

指定结果的开始时间。

如果为“时间范围”参数选择了“自定义”,则此参数是必需的。

格式:ISO 8601

示例:2021-04-23T12:38Z

结束时间 字符串 不适用 否

指定结果的结束时间。

如果未提供任何内容,并且为“时间范围”参数选择了“自定义”,则此参数会使用当前时间。

格式:ISO 8601

返回的结果数上限 整数 50 否 指定要返回的结果数。

运行时间

此操作不会对实体执行。

操作执行结果

脚本结果
脚本结果名称 值选项 示例
is_success True/False is_success=False
JSON 结果
[
  {
    "custId": "1",
    "attributes": {
      "eventType": "Unknown_EventType",
      "eventSeverity": "3",
      "eventAction": "0 (Permit)",
      "phRecvTime": "Wed Dec 29 00:36:55 IST 2021",
      "relayDevIpAddr": "172.30.20xxx",
      "reptDevIpAddr": "172.30.20xxx",
      "destIpAddr": "172.30.20xxx",
      "destName": "HOST-172.30.20xxx",
      "reptDevName": "centos-xxx",
      "reptVendor": "Unknown",
      "customer": "Super",
      "reptModel": "Unknown",
      "rawEventMsg": "<27>Dec 29 00:36:47 centos-xxx aella_flow[5074]: 1902195|aos_afix_json|ERR|Failed to send message: Couldn't connect to server/7",
      "collectorId": "1",
      "eventId": "4242813061460978xxx",
      "phEventCategory": "0 (External)",
      "count": "1",
      "eventName": "Unknown event type",
      "eventParsedOk": "0",
      "parserName": "SyslogNGParser"
    },
    "dataStr": null,
    "eventType": "Unknown_EventType",
    "id": "4242813061460978xxx",
    "index": "0",
    "nid": "4242813061460978xxx",
    "receiveTime": "2021-12-29T00:36:55+02:00"
  }
]
实体丰富化

不适用

数据分析

不适用

案例墙
结果类型 值/说明 类型
输出消息*

操作不应失败,也不应停止 playbook 执行:

如果至少找到了一些数据 (is_success=true):“已成功在 FortiSIEM 中检索到所构建查询‘{query}’的结果。”

如果未找到任何结果 (is_success=false):“在 FortiSIEM 中未找到与构建的查询‘{Query}’相符的结果。”

操作应失败并停止 playbook 执行:

如果报告了严重错误(例如凭据错误、无法连接到服务器等),则会显示以下消息:“Error executing action "Simple Query". Reason: {0}''.format(error.Stacktrace)

如果“开始时间”参数为空,且“时间范围”参数设置为“自定义”(失败):“执行操作‘<操作名称>’时出错。原因:在‘时间范围’参数中选择‘自定义’时,应提供‘开始时间’。”

如果“开始时间”的值大于“结束时间”参数的值(失败):“执行操作‘<操作名称>’时出错。原因:‘结束时间’应晚于‘开始时间’。

常规
表

表名称:简单查询结果

表列:回答中的所有列

常规

执行自定义查询

说明

在 FortiSIEM 中执行自定义查询。

参数

参数显示名称 类型 默认值 为必填项 说明
查询 字符串多行输入字段 (属性 = 值或值)且(属性 = 值或值) 是

指定用于检索事件相关信息的查询。

示例:(relayDevIpAddr = 172.30.202.1 OR 172.30.202.2) AND (reptDevName = HOST1)

要返回的字段 CSV 否

指定要返回的字段。

如果未提供任何内容,该操作会返回所有字段。

排序字段 字符串 phRecvTime 否 指定应使用哪个参数进行排序。
排列顺序 DDL

降序

可能的值:

  • 升序
  • 降序
否 指定排序顺序。
时间范围 DDL

过去 1 小时

可能的值:

  • 过去 1 小时
  • 过去 6 小时
  • 过去 24 小时
  • 上周
  • 上个月
  • 自定义
否

指定结果的时间范围。

如果选择“自定义”,您还需要提供“开始时间”参数。

开始时间 字符串 不适用 否

指定结果的开始时间。

如果为“时间范围”参数选择了“自定义”,则此参数是必需的。

格式:ISO 8601

示例:2021-04-23T12:38Z

结束时间 字符串 不适用 否

指定结果的结束时间。

如果未提供任何内容,并且为“时间范围”参数选择了“自定义”,则此参数会使用当前时间。

返回的结果数上限 整数 50 否 指定要返回的结果数。

运行时间

此操作不会对实体执行。

操作执行结果

脚本结果
脚本结果名称 值选项 示例
is_success True/False is_success=False
JSON 结果
[
  {
    "custId": "1",
    "attributes": {
      "eventType": "Unknown_EventType",
      "eventSeverity": "3",
      "eventAction": "0 (Permit)",
      "phRecvTime": "Wed Dec 29 00:36:55 IST 2021",
      "relayDevIpAddr": "172.30.20xxx",
      "reptDevIpAddr": "172.30.20xxx",
      "destIpAddr": "172.30.20xxx",
      "destName": "HOST-172.30.20xxx",
      "reptDevName": "centos-xxx",
      "reptVendor": "Unknown",
      "customer": "Super",
      "reptModel": "Unknown",
      "rawEventMsg": "<27>Dec 29 00:36:47 centos-xxx aella_flow[5074]: 1902195|aos_afix_json|ERR|Failed to send message: Couldn't connect to server/7",
      "collectorId": "1",
      "eventId": "4242813061460978xxx",
      "phEventCategory": "0 (External)",
      "count": "1",
      "eventName": "Unknown event type",
      "eventParsedOk": "0",
      "parserName": "SyslogNGParser"
    },
    "dataStr": null,
    "eventType": "Unknown_EventType",
    "id": "4242813061460978xxx",
    "index": "0",
    "nid": "4242813061460978xxx",
    "receiveTime": "2021-12-29T00:36:55+02:00"
  }
]
实体丰富化

不适用

数据分析

不适用

案例墙
结果类型 值/说明 类型
输出消息*

操作不应失败,也不应停止 playbook 执行:

如果至少找到了一些数据 (is_success=true):“已成功在 FortiSIEM 中检索到所提供查询‘{query}’的结果。”

如果未找到任何结果 (is_success=false):“在 FortiSIEM 中未找到与提供的查询‘{Query}’相符的结果。”

操作应失败并停止 playbook 执行:

如果报告了严重错误(例如凭据错误、无法连接到服务器等),则会显示以下消息:“Error executing action "Simple Query". Reason: {0}''.format(error.Stacktrace)

如果“开始时间”参数为空,且“时间范围”参数设置为“自定义”(失败):“执行操作‘<操作名称>’时出错。原因:在‘时间范围’参数中选择‘自定义’时,应提供‘开始时间’。”

如果“开始时间”的值大于“结束时间”参数的值(失败):“执行操作‘<操作名称>’时出错。原因:‘结束时间’应晚于‘开始时间’。”

常规
表

表名称:自定义查询结果

表列:回答中的所有列

常规

连接器

FortiSIEM Incidents 连接器

连接器说明

连接器可用于提取 FortiSIEM 突发事件。连接器许可名单可用于仅注入特定类型的突发事件,具体取决于突发事件的“eventType”属性值。连接器的 SourceGroupIdentifier 可用于根据突发事件 ID 对 Google SecOps 提醒进行分组。连接器需要 FortiSIEM 6.3 或更高版本。

连接器参数

参数显示名称 类型 默认值 为必填项 说明
产品字段名称 字符串 deviceProduct 是 输入源字段名称,以便检索产品字段名称。
事件字段名称 字符串 eventType 是 输入源字段名称,以检索事件字段名称。
环境字段名称 字符串 否

描述存储环境名称的字段的名称。

如果未找到环境字段,则环境为默认环境。

环境正则表达式模式 字符串 .* 否

要对“环境字段名称”字段中的值运行的正则表达式模式。

默认值为 .*,用于捕获所有值并返回未更改的值。

用于允许用户通过正则表达式逻辑操作环境字段。

如果正则表达式模式为 null 或空,或者环境值为 null,则最终环境结果为默认环境。

脚本超时 整数 300 是 指定连接器运行的超时时间。
API 根 字符串 https:/x.x.x.x:port 是 指定目标 FortiSIEM 安装的 API 根。
用户名 字符串 不适用 是 指定要用于目标 FortiSIEM 安装的用户名。
密码 密码 不适用 是 指定要用于目标 FortiSIEM 安装的密码。
验证 SSL 复选框 勾选 否 如果启用,Google SecOps 服务器会检查为 API 根配置的证书。
目标组织 CSV 不适用 否

指定连接器应提取哪些组织的突发事件。

参数接受多个值,以英文逗号分隔的字符串形式表示。

回溯的小时数上限 整数 24 是 指定时间范围,以提取过去 X 小时内的突发事件。
每个周期的突发事件数上限 整数 10 是 指定在一次连接器运行期间应处理的突发事件数量。
每个突发事件的事件数上限 整数 100 是

指定连接器应针对突发事件跟踪的事件数量上限。

达到上限后,新事件将不会添加到 Google SecOps。

要提取的突发事件状态 CSV 0 否

指定要提取到 Google SecOps 的突发事件状态。

此参数接受以逗号分隔的字符串形式的多个值。

0 表示处于未结状态的突发事件。

要提取的最低严重级别 整数 不适用 否 指定要提取到 Google SecOps 的突发事件的最低事件严重级别(以数字表示,例如 5 或 7)。
将白名单用作黑名单 复选框 尚未核查 是 如果启用,白名单将用作黑名单。
跟踪添加到已提取突发事件的新事件 复选框 勾选 是 如果启用此选项,当新事件添加到已提取的 FortiSIEM 事件时,Google SecOps 中会创建包含这些新事件的新提醒。
跟踪新事件阈值(小时) 整数 24 是

如果勾选了“跟踪添加到已提取突发事件的新事件”复选框,请指定连接器应跟踪已提取突发事件的新事件的最长小时数。

达到上限后,新事件将不会添加到 Google SecOps。

代理服务器地址 字符串 不适用 否 指定要使用的代理服务器的地址。
代理用户名 字符串 不适用 否 指定用于进行身份验证的代理用户名。
代理密码 密码 不适用 否 指定用于进行身份验证的代理密码。

连接器规则

代理支持

连接器支持代理。

需要更多帮助?获得社区成员和 Google SecOps 专业人士的解答。