Tenable Security Center

集成版本:15.0

将 Tenable Security Center 与 Google Security Operations 集成

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

集成输入

如需配置集成,请使用以下参数:

参数
Server Address 必需

要在集成中使用的 Tenable Security Center 服务器的地址。

Username 必需

用于登录 Tenable Security Center 服务器的用户名。

Password 必需

用于登录 Tenable Security Center 服务器的密码。

Verify SSL 可选

如果选择此项,则验证与 Tenable 服务器的连接所用的 SSL 证书是否有效。

此选项将会默认选中。

操作

将 IP 添加到 IP 列表素材资源

在 Tenable Security Center 中向 IP 列表资产添加 IP。

参数

参数显示名称 类型 默认值 是必填字段 说明
资源名称 字符串 不适用 指定要向其中添加新 IP 的 IP 列表素材资源的名称。

运行于

此操作在 IP 地址实体上运行。

操作结果

脚本结果
脚本结果名称 值选项 示例
is_success True/False is_success:False
JSON 结果
{
    "type": "regular",
    "response": {
        "id": "41",
        "name": "api_test_5",
        "type": "static",
        "description": "",
        "tags": "qweqwe",
        "context": "",
        "status": "0",
        "createdTime": "1606129689",
        "modifiedTime": "1606129689",
        "ioSyncStatus": "Not Synced",
        "ioFirstSyncTime": "-1",
        "ioLastSyncSuccess": "-1",
        "ioLastSyncFailure": "-1",
        "ioSyncErrorDetails": null,
        "typeFields": {
            "definedIPs": "203.0.113.1,203.0.113.10"
        },
        "repositories": [
            {
                "ipCount": "-1",
                "repository": {
                    "id": "1",
                    "name": "Example-Repository",
                    "description": ""
                }
            }
        ],
        "ipCount": -1,
        "groups": [],
        "assetDataFields": [],
        "canUse": "true",
        "canManage": "true",
        "creator": {
            "id": "1",
            "username": "security_manager",
            "firstname": "Manager",
            "lastname": "Security"
        },
        "owner": {
            "id": "1",
            "username": "security_manager",
            "firstname": "Manager",
            "lastname": "Security"
        },
        "ownerGroup": {
            "id": "0",
            "name": "Full Access",
            "description": "Full Access group"
        },
        "targetGroup": {
            "id": -1,
            "name": "",
            "description": ""
        },
        "template": {
            "id": -1,
            "name": "",
            "description": ""
        }
    },
    "error_code": 0,
    "error_msg": "",
    "warnings": [],
    "timestamp": 1606129688
}
案例墙
结果类型 值/说明 类型
输出消息*

该操作不应失败,也不应停止 playbook 执行
如果静态代码为 200(is_success = true):print "Successfully added the following IPs to the IP List Asset {0} in Tenable Security Center:\n{1}".format(name, entity.identifier)

如果没有 IP 实体:没有 IP 地址添加到 IP 列表资产 {0}.format(name)

操作应失败并停止 playbook 执行
如果出现严重错误(例如凭据错误、无法连接到服务器、其他错误):打印“Error executing action "Add IP to IP List Asset"”。原因: {0}''.format(error.Stacktrace)


如果找不到相应资产:打印“Error executing action "Add IP to IP List Asset". 原因:在 Tenable Security Center 中找不到资产 {0}。 ''.format(error.Stacktrace)

如果不是静态代码 200 (is_success = false):打印“执行操作‘将 IP 添加到 IP 列表资源’时出错”。原因:{0}''.format(error_msg)

常规

创建 IP 列表素材资源

在 Tenable Security Center 中创建 IP 列表资产。需要至少一个 IP 实体才能成功执行。

参数

参数显示名称 类型 默认值 是必填字段 说明
名称 字符串 不适用 指定 IP 列表资产的名称。
说明 字符串 不适用 指定 IP 列表资产的说明。
标记 字符串 不适用 指定 IP 列表资产的标记。

运行于

此操作在 IP 地址实体上运行。

操作结果

脚本结果
脚本结果名称 值选项 示例
is_success True/False is_success:False
JSON 结果
{
    "type": "regular",
    "response": {
        "id": "41",
        "name": "api_test_5",
        "type": "static",
        "description": "",
        "tags": "qweqwe",
        "context": "",
        "status": "0",
        "createdTime": "1606129689",
        "modifiedTime": "1606129689",
        "ioSyncStatus": "Not Synced",
        "ioFirstSyncTime": "-1",
        "ioLastSyncSuccess": "-1",
        "ioLastSyncFailure": "-1",
        "ioSyncErrorDetails": null,
        "typeFields": {
            "definedIPs": "203.0.113.1,203.0.113.10"
        },
        "repositories": [
            {
                "ipCount": "-1",
                "repository": {
                    "id": "1",
                    "name": "Example-Repository",
                    "description": ""
                }
            }
        ],
        "ipCount": -1,
        "groups": [],
        "assetDataFields": [],
        "canUse": "true",
        "canManage": "true",
        "creator": {
            "id": "1",
            "username": "security_manager",
            "firstname": "Manager",
            "lastname": "Security"
        },
        "owner": {
            "id": "1",
            "username": "security_manager",
            "firstname": "Manager",
            "lastname": "Security"
        },
        "ownerGroup": {
            "id": "0",
            "name": "Full Access",
            "description": "Full Access group"
        },
        "targetGroup": {
            "id": -1,
            "name": "",
            "description": ""
        },
        "template": {
            "id": -1,
            "name": "",
            "description": ""
        }
    },
    "error_code": 0,
    "error_msg": "",
    "warnings": [],
    "timestamp": 1606129688
}
案例墙
结果类型 值/说明 类型
输出消息*

操作不应失败,也不应停止 playbook 执行
如果静态代码为 200(is_success = true):打印“已在 Tenable Security Center 中成功创建新的 IP 列表资产 {0},其中包含以下 IP:\n{1}”。format(name, entity.identifier)

如果没有 IP 实体:打印“At least 1 IP entity should be available in order to create an IP List Asset”(至少应有 1 个 IP 实体才能创建 IP 列表资源)。


操作应失败并停止 playbook 执行
如果出现致命错误(例如凭据错误、无法连接到服务器等):打印“Error executing action "Create IP List Asset".”。原因:{0}''.format(error.Stacktrace)

如果不是静态代码 200 (is_success = false):打印“执行操作‘创建 IP 列表素材资源’时出错”。原因:{0}''.format(error_msg)

常规

丰富 IP

获取有关 IP 地址的信息并丰富这些信息。

参数

参数 类型 默认值 说明
代码库名称 字符串 不适用 代码库名称。

运行于

此操作在 IP 地址实体上运行。

操作结果

实体丰富化
扩充项字段名称 逻辑 - 应用场景
macAddress 返回 JSON 结果中是否存在相应值
severityLow 返回 JSON 结果中是否存在相应值
links 返回 JSON 结果中是否存在相应值
ip 返回 JSON 结果中是否存在相应值
上次扫描 返回 JSON 结果中是否存在相应值
severityCritical 返回 JSON 结果中是否存在相应值
总计 返回 JSON 结果中是否存在相应值
severityAll 返回 JSON 结果中是否存在相应值
mcafeeGUID 返回 JSON 结果中是否存在相应值
policyName 返回 JSON 结果中是否存在相应值
uuid 返回 JSON 结果中是否存在相应值
lastAuthRun 返回 JSON 结果中是否存在相应值
severityInfo 返回 JSON 结果中是否存在相应值
osCPE 返回 JSON 结果中是否存在相应值
唯一性 返回 JSON 结果中是否存在相应值
dnsName 返回 JSON 结果中是否存在相应值
仓库 返回 JSON 结果中是否存在相应值
ip 返回 JSON 结果中是否存在相应值
说明 返回 JSON 结果中是否存在相应值
name 返回 JSON 结果中是否存在相应值
lastUnauthRun 返回 JSON 结果中是否存在相应值
biosGUID 返回 JSON 结果中是否存在相应值
tpmID 返回 JSON 结果中是否存在相应值
得分 返回 JSON 结果中是否存在相应值
hasPassive 返回 JSON 结果中是否存在相应值
pluginSet 返回 JSON 结果中是否存在相应值
hasCompliance 返回 JSON 结果中是否存在相应值
severityHigh 返回 JSON 结果中是否存在相应值
netbiosName 返回 JSON 结果中是否存在相应值
severityMedium 返回 JSON 结果中是否存在相应值
os 返回 JSON 结果中是否存在相应值
脚本结果
脚本结果名称 值选项 示例
is_success True/False is_success:False
JSON 结果
[
{
"EntityResult":
{
"macAddress": "",
"severityLow": "0",
"links": [],
"ip": "203.0.113.1",
"lastScan": "1549425224",
"severityCritical": "0",
"total": "2",
"severityAll": "0,0,0,0,2",
"mcafeeGUID": "",
"policyName": "1e2e4247-0de7-56d5-8026-34ab1f3150ef-1130313/Basic Discovery Scan",
"uuid": "",
"lastAuthRun": "",
"severityInfo": "2",
"osCPE": "",
"uniqueness": "repositoryID,ip,dnsName",
 "dnsName": "example.com",
"repository":
          {
"id": "1",
"description": "",
"name": "repository"
          },
"lastUnauthRun": "1549363419",
"biosGUID": "",
"tpmID": "",
"score": "0",
"hasPassive": "No",
"pluginSet": "201902020242",
"hasCompliance": "No",
"severityHigh": "0",
"netbiosName": "",
"severityMedium": "0",
"os": ""
},
"Entity": "203.0.113.1"
}
]

获取与 IP 地址相关的资产。

参数

参数 类型 默认值 说明
代码库名称 字符串 不适用 代码库名称。

运行于

此操作在 IP 地址实体上运行。

操作结果

实体丰富化
扩充项字段名称 逻辑 - 应用场景
id 返回 JSON 结果中是否存在相应值
name 返回 JSON 结果中是否存在相应值
脚本结果
脚本结果名称 值选项 示例
is_success True/False is_success:False
JSON 结果
[
{
"EntityResult":
[
{
"id": "0",
"description": "All defining ranges of the Group in whose context this Asset is being evaluated.",
"name": "All Defined Ranges"
}, {
"id": "2",
"description": "This asset uses the Scan Summary plugin to detect if a host has been scanned by Nessus. The Scan Summary plugin contains the list of tests conducted during the most recent scan.",
"name": "Systems that have been Scanned"
}, {
"id": "13",
"description": "Leverage Nessus plugin 10180 (Ping the remote host) and Nessus plugin 12503 (Host Fully Qualified Domain Name (FQDN) Resolution) to find hosts that don't have a resolvable FQDN in DNS.",
"name": "Scanned Hosts Not in DNS"
}
],
"Entity": "203.0.113.1"
}
]

获取报告

按 ID 或名称获取报告内容。

参数

参数 类型 默认值 说明
报告 ID 字符串 不适用 报告 ID 编号。可在报告网址中找到。

运行于

此操作会在所有实体上运行。

操作结果

脚本结果
脚本结果名称 值选项 示例
is_success True/False is_success:False
JSON 结果
{
"pubSites":
[
"https://example.com",
"https://example.net"
]
}

获取扫描结果

等待扫描完成并获取扫描结果。

参数

参数 类型 默认值 说明
扫描结果 ID

字符串

不适用 扫描结果 ID。

运行于

此操作会在所有实体上运行。

操作结果

脚本结果
脚本结果名称 值选项 示例
is_success True/False is_success:False
JSON 结果

{
"severity_summary":
[
{
"count": "0",
"severity":
{
"id": "4",
"name": "Critical",
"description": "Critical Severity"
}
}, {
"count": "0",
"severity":
{
"id": "3",
"name": "High",
"description": "High Severity"
}
}, {
"count": "3",
"severity":
{"id": "2",
"name": "Medium",
"description": "Medium Severity"
}}
],
"results":
[
{
"name": "DNS Server Recursive Query Cache Poisoning Weakness",
"family": "DNS",
"hostTotal": "1",
"pluginID": "10539",
"total": "1",
"severity": "Medium"
}, {
"name": "DNS Server Spoofed Request Amplification DDoS",
"family": "DNS",
"hostTotal": "1",
"pluginID": "35450",
"total": "1",
"severity": "Medium"
}, {
"name": "SSL Medium Strength Cipher Suites Supported",
"family": "General",
"hostTotal": "1",
"pluginID": "42873",
"total": "1",
"severity": "Medium"
}
]
}

获取 IP 的漏洞

获取 IP 地址的漏洞和严重程度摘要。

参数

不适用

运行于

此操作在 IP 地址实体上运行。

操作结果

实体丰富化
扩充项字段名称 逻辑 - 应用场景
macAddress 返回 JSON 结果中是否存在相应值
协议 返回 JSON 结果中是否存在相应值
uuid 返回 JSON 结果中是否存在相应值
系列 返回 JSON 结果中是否存在相应值
pluginInfo 返回 JSON 结果中是否存在相应值
ip 返回 JSON 结果中是否存在相应值
pluginID 返回 JSON 结果中是否存在相应值
和程度上减少 返回 JSON 结果中是否存在相应值
仓库 返回 JSON 结果中是否存在相应值
唯一性 返回 JSON 结果中是否存在相应值
dnsName 返回 JSON 结果中是否存在相应值
端口 返回 JSON 结果中是否存在相应值
netbiosName 返回 JSON 结果中是否存在相应值
name

如果存在于 JSON 结果中,则返回

脚本结果
脚本结果名称 值选项 示例
is_success True/False is_success:False
JSON 结果
[
{
"EntityResult":
[
{
"macAddress": "",
"protocol": "TCP",
"uuid": "",
"family": "Web Servers",
"pluginInfo": "10107 (443/6) HTTP Server Type and Version",
"ip": "203.0.113.1",
"pluginID": "10107",
"severity": "Info",
"repository": "repo",
"uniqueness": "repositoryID,ip,dnsName",
"dnsName": "example.com",
"port": "443",
"netbiosName": "",
"name": "HTTP Server Type and Version"
}, {
"macAddress": "",
"protocol": "UDP",
"uuid": "",
"family": "DNS",
"pluginInfo": "10539 (53/17) DNS Server Recursive Query Cache Poisoning Weakness",
"ip": "203.0.113.1",
"pluginID": "10539",
"severity": "Medium",
"repository": "repo",
"uniqueness": "repositoryID,ip,dnsName",
"dnsName": "exaample.com",
"port": "53",
"netbiosName": "",
"name": "DNS Server Recursive Query Cache Poisoning Weakness"
}, {
"macAddress": "",
"protocol": "TCP",
"uuid": "",
"family": "General",
"pluginInfo": "10863 (443/6) SSL Certificate Information",
"ip": "203.0.113.1",
"pluginID": "10863",
"severity": "Info",
"repository": "repo",
"uniqueness": "repositoryID,ip,dnsName",
"dnsName": "example.com",
"port": "443",
"netbiosName": "",
"name": "SSL Certificate Information"
}
],
"Entity": "203.0.113.1"
}
]

Ping

测试连接性。

运行于

此操作会在所有实体上运行。

操作结果

脚本结果
脚本结果名称 值选项 示例
null 不适用 不适用

扫描 IP

启动 IP 地址扫描。

参数

参数 类型 默认值 说明
扫描名称 字符串 不适用 要创建的扫描的名称。
政策名称 字符串 不适用 政策的名称。

运行于

此操作在 IP 地址实体上运行。

操作结果

脚本结果
脚本结果名称 值选项 示例
scan_result_id 不适用 不适用

运行资源扫描

在 Tenable Security Center 中执行资产扫描。

在哪里可以找到政策 ID 和代码库 ID

对于政策 ID

  1. 导航到 https://INSTANCE_IP_ADDRESS/#policies
  2. 选择您要在操作中使用的政策。
  3. 您将能够在网址中看到相应政策的 ID。

对于制品库 ID

  1. 导航到 https://INSTANCE_IP_ADDRESS/#repositories
  2. 选择要在操作中使用的代码库。
  3. 在网址中,您将能够看到相应代码库的 ID。

参数

参数显示名称 类型 默认值 是必填字段 说明
扫描名称 不适用 指定扫描的名称。
资源名称 字符串 不适用 指定应扫描的资产的名称。
政策 ID 整数 不适用 指定扫描中应使用的政策的 ID。
仓库 ID 整数 不适用 指定应在扫描中使用的代码库的 ID。
说明 字符串 不适用 指定扫描的说明。

运行于

此操作不会在实体上运行。

操作结果

脚本结果
脚本结果名称 值选项 示例
is_success True/False is_success:False
JSON 结果
{
    "type": "regular",
    "response": {
        "id": "11",
        "name": "Scan Name",
        "description": "",
        "ipList": "",
        "type": "policy",
        "dhcpTracking": "false",
        "classifyMitigatedAge": "0",
        "emailOnLaunch": "false",
        "emailOnFinish": "false",
        "timeoutAction": "import",
        "scanningVirtualHosts": "false",
        "rolloverType": "template",
        "status": "0",
        "createdTime": "1606132784",
        "modifiedTime": "1606132784",
        "maxScanTime": "3600",
        "reports": [],
        "assets": [
            {
                "id": "38",
                "name": "api_test_1",
                "description": ""
            }
        ],
        "credentials": [],
        "numDependents": "0",
        "schedule": {
            "id": -1,
            "objectType": -1,
            "type": "now",
            "start": "",
            "repeatRule": "",
            "enabled": "true",
            "nextRun": -1,
            "dependent": {
                "id": -1,
                "name": "",
                "description": ""
            }
        },
        "policy": {
            "id": "1000002",
            "context": "",
            "name": "Host Discovery",
            "description": "",
            "tags": "",
            "owner": {
                "id": "1",
                "username": "security_manager",
                "firstname": "Manager",
                "lastname": "Security"
            },
            "ownerGroup": {
                "id": "0",
                "name": "Full Access",
                "description": "Full Access group"
            }
        },
        "policyPrefs": [
            {
                "name": "MODE|discovery",
                "value": "host_enumeration"
            },
            {
                "name": "description",
                "value": ""
            },
            {
                "name": "display_unreachable_hosts",
                "value": "no"
            },
            {
                "name": "log_live_hosts",
                "value": "yes"
            },
            {
                "name": "name",
                "value": "Host Discovery"
            },
            {
                "name": "reverse_lookup",
                "value": "no"
            }
        ],
        "repository": {
            "id": "1",
            "name": "Example-Repository",
            "description": ""
        },
        "canUse": "true",
        "canManage": "true",
        "plugin": {
            "id": -1,
            "name": "",
            "description": ""
        },
        "zone": {
            "id": -1,
            "name": "",
            "description": ""
        },
        "ownerGroup": {
            "id": "0",
            "name": "Full Access",
            "description": "Full Access group"
        },
        "creator": {
            "id": "1",
            "username": "security_manager",
            "firstname": "Manager",
            "lastname": "Security"
        },
        "owner": {
            "id": "1",
            "username": "security_manager",
            "firstname": "Manager",
            "lastname": "Security"
        },
        "scanResultID": "34"
    },
    "error_code": 0,
    "error_msg": "",
    "warnings": [],
    "timestamp": 1606132783
}
案例墙
结果类型 值/说明 类型
输出消息*

该操作不应失败,也不应停止 playbook 执行:
如果静态代码为 200(is_success = true):打印“Successfully started asset scan {0} in Tenable Security Center.”(已在 Tenable Security Center 中成功开始资产扫描 {0})。format(name)

操作应失败并停止 playbook 执行
如果出现致命错误,例如凭据错误、无法连接到服务器等:打印“执行操作‘运行资产扫描’时出错”。原因:{0}''.format(error.Stacktrace)

如果未找到相应资产:打印“执行操作‘运行资产扫描’时出错”。原因:在 Tenable Security Center 中找不到资产 {0}。''.format(name)

如果不是静态代码 200(is_success = false):打印“执行操作‘运行资产扫描’时出错。”原因:{0}".format(error_msg)

常规

连接器

Tenable Security Center 连接器

有关如何在 Google SecOps 中配置连接器的详细说明,请参阅配置连接器

连接器参数

使用以下参数配置连接器:

参数 类型 默认值 说明
DeviceProductField 字符串 device_product 用于确定设备产品的字段名称。
EventClassId 字符串 name 用于确定事件名称(子类型)的字段名称。
PythonProcessTimeout 字符串 60 运行当前脚本的 Python 进程的超时时间限制(以秒为单位)。
服务器地址 字符串 null 不适用
用户名 字符串 null 不适用
密码 密码 null 不适用
Use SSL(使用 SSL) 复选框 尚未核查 不适用
回溯的天数上限 整数 1 您要提取数据的天数(从今天开始往回数)。
每个周期的限额 整数 10 每个执行周期内提取到连接器中的提醒数量。
代理服务器地址 字符串 null 要使用的代理服务器的地址。
代理用户名 字符串 null 用于进行身份验证的代理用户名。
代理密码 密码 null 用于进行身份验证的代理密码。

连接器规则

连接器支持代理。

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