Tenable Security Center

整合版本:15.0

本文說明如何將 Tenable Security Center 與 Google Security Operations (Google SecOps) 整合。

事前準備

如要設定 Tenable Security Center 整合,請先取得必要的連線憑證,並確認您瞭解必要的驗證方法。

驗證先決條件

這項整合功能支援兩種互斥的驗證方法。您必須提供一組完整的憑證。

  • 使用者名稱和密碼:使用標準登入憑證。

  • 存取金鑰和私密金鑰 (建議使用):這個方法使用 API 金鑰授權,如果提供兩組憑證,系統會優先採用這個方法。

    如要產生這些金鑰,請參閱「API 金鑰授權」。

SSL 驗證

整合功能預設會驗證 Tenable Security Center 伺服器的 SSL 憑證。如果您的環境使用自行簽署或內部憑證,請務必停用 Verify SSL 設定。

整合輸入內容

如要設定整合,請使用下列參數:

參數
Server Address 必要

整合作業中使用的 Tenable Security Center 伺服器位址。

Username 選用

登入 Tenable Security Center 伺服器的使用者名稱。

必須同時提供 UsernamePassword

Password 選用

登入 Tenable Security Center 伺服器時要使用的密碼。

必須同時提供 UsernamePassword

Access Key 選用

Tenable Security Center 帳戶的存取金鑰。

必須同時提供 Access KeySecret Key

Secret Key 選用

Tenable Security Center 帳戶的密鑰。

必須同時提供 Access KeySecret Key

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
}
案件總覽
結果類型 值/說明 類型
輸出訊息*

動作不應失敗,也不應停止劇本執行:
如果靜態代碼 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)

動作應會失敗,並停止執行劇本:
如果發生嚴重錯誤,例如憑證錯誤、無法連線至伺服器或其他問題:print "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):print "Error executing action "Add IP to IP List Asset". 原因:{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
}
案件總覽
結果類型 值/說明 類型
輸出訊息*

動作不得失敗或停止劇本執行:
If static code 200(is_success = true):print "Successfully created new IP List Asset {0} with the following IPs in Tenable Security Center:\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 清單資產)。


動作應會失敗並停止執行劇本:
如果發生嚴重錯誤,例如憑證錯誤、無法連線至伺服器、其他:列印「Error executing action "Create IP List Asset"」。原因:{0}''.format(error.Stacktrace)

如果不是靜態代碼 200 (is_success = false):請列印「Error executing action 'Create IP List Asset'」(執行「建立 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 結果中存在,則傳回
名稱 如果 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 結果中存在,則傳回
名稱 如果 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 結果中存在,則傳回
名稱

如果 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"
}
]

乒乓

測試連線。

執行日期

這項操作會對所有實體執行。

動作結果

指令碼結果
指令碼結果名稱 值選項 示例
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
}
案件總覽
結果類型 值/說明 類型
輸出訊息*

動作不得失敗,也不得停止劇本執行:
如果靜態程式碼 200(is_success = true):print "Successfully started asset scan {0} in Tenable Security Center.".format(name)

動作應會失敗並停止執行劇本:
如果發生重大錯誤,例如憑證錯誤、無法連線至伺服器或其他錯誤:請列印「Error executing action "Run Asset Scan"」。原因:{0}''.format(error.Stacktrace)

如果找不到資產:列印「Error executing action "Run Asset Scan"」。原因:在 Tenable Security Center 中找不到資產「{0}」。''.format(name)

如果不是靜態代碼 200 (is_success = false):請列印「Error executing action "Run Asset Scan". Reason:{0}".format(error_msg)

一般

連接器

Tenable Security Center 連接器

如需在 Google SecOps 中設定連接器的詳細操作說明,請參閱設定連接器

連接器參數

使用下列參數設定連接器:

參數 類型 預設值 說明
DeviceProductField 字串 device_product 用來判斷裝置產品的欄位名稱。
EventClassId 字串 名稱 用於判斷事件名稱 (子類型) 的欄位名稱。
PythonProcessTimeout 字串 60 執行目前指令碼的 Python 程序逾時限制 (以秒為單位)。
伺服器位址 字串 null 不適用
使用者名稱 字串 null 不適用
密碼 密碼 null 不適用
存取金鑰 字串 null 選用

Tenable Security Center 帳戶的存取金鑰。

必須同時提供 Access KeySecret Key

密鑰 密碼 null 選用

Tenable Security Center 帳戶的密鑰。

必須同時提供 Access KeySecret Key

使用 SSL 核取方塊 已取消勾選 不適用
最多可回溯的天數 整數 1 要擷取資料的天數 (從今天算起)。
每個週期上限 整數 10 每個執行週期擷取至連接器的快訊數量。
Proxy 伺服器位址 字串 null 要使用的 Proxy 伺服器位址。
Proxy 使用者名稱 字串 null 用於驗證的 Proxy 使用者名稱。
Proxy 密碼 密碼 null 用於驗證的 Proxy 密碼。

連接器規則

連接器支援 Proxy。

還有其他問題嗎?向社群成員和 Google SecOps 專業人員尋求答案。