Tenable Security Center
Versione integrazione: 15.0
Questo documento spiega come integrare Tenable Security Center con Google Security Operations (Google SecOps).
Prima di iniziare
Per configurare l'integrazione di Tenable Security Center, devi prima ottenere le credenziali di connessione necessarie e confermare di comprendere il metodo di autenticazione richiesto.
Prerequisiti di autenticazione
L'integrazione supporta due metodi di autenticazione reciprocamente esclusivi. Devi fornire una coppia completa di credenziali.
Nome utente e password: utilizza le tue credenziali di accesso standard.
Chiave di accesso e chiave segreta (consigliato): questo metodo utilizza l'autorizzazione della chiave API e ha la priorità se vengono fornite entrambe le coppie di credenziali.
Per generare queste chiavi, consulta Autorizzazione della chiave API.
Verifica SSL
L'integrazione verifica per impostazione predefinita il certificato SSL del server Tenable Security Center. Se il tuo ambiente utilizza un certificato autofirmato o interno, devi disattivare l'impostazione Verify SSL.
Input di integrazione
Per configurare l'integrazione, utilizza i seguenti parametri:
| Parametri | |
|---|---|
Server Address |
Obbligatorio L'indirizzo del server Tenable Security Center da utilizzare nell'integrazione. |
Username |
Optional Nome utente per accedere al server Tenable Security Center. Devono essere forniti sia |
Password |
Optional Password per accedere al server Tenable Security Center. Devono essere forniti sia |
Access Key |
Optional Chiave di accesso dell'account Tenable Security Center. Devono essere forniti sia |
Secret Key |
Optional Chiave segreta dell'account Tenable Security Center. Devono essere forniti sia |
Verify SSL |
Optional Se selezionata, verifica che il certificato SSL per la connessione al server Tenable sia valido. Selezionata per impostazione predefinita. |
Azioni
Aggiungere un asset elenco IP-IP
Aggiungi un IP a un asset elenco IP in Tenable Security Center.
Parametri
| Nome visualizzato del parametro | Tipo | Valore predefinito | È obbligatorio | Descrizione |
|---|---|---|---|---|
| Nome risorsa | Stringa | N/D | Sì | Specifica il nome dell'asset elenco IP a cui vuoi aggiungere nuovi IP. |
Pubblica su
Questa azione viene eseguita sull'entità Indirizzo IP.
Risultati dell'azione
Risultato dello script
| Nome del risultato dello script | Opzioni di valore | Esempio |
|---|---|---|
| is_success | Vero/Falso | is_success:False |
Risultato 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
}
Bacheca casi
| Tipo di risultato | Valore/Descrizione | Tipo |
|---|---|---|
| Messaggio di output* | L'azione non deve non riuscire né interrompere l'esecuzione di un playbook:
Se non sono presenti entità IP: non sono stati aggiunti indirizzi IP all'asset elenco IP {0}.format(name)
Se non è codice statico 200 (is_success = false): stampa "Error executing action "Add IP to IP List Asset". Motivo: {0}''.format(error_msg) |
Generale |
Crea asset elenco IP
Crea un asset elenco IP in Tenable Security Center. Richiede almeno un'entità IP per l'esecuzione corretta.
Parametri
| Nome visualizzato del parametro | Tipo | Valore predefinito | È obbligatorio | Descrizione |
|---|---|---|---|---|
| Nome | Stringa | N/D | Sì | Specifica il nome della risorsa elenco IP. |
| Descrizione | Stringa | N/D | No | Specifica la descrizione dell'asset elenco IP. |
| Tag | Stringa | N/D | No | Specifica il tag dell'asset elenco IP. |
Pubblica su
Questa azione viene eseguita sull'entità Indirizzo IP.
Risultati dell'azione
Risultato dello script
| Nome del risultato dello script | Opzioni di valore | Esempio |
|---|---|---|
| is_success | Vero/Falso | is_success:False |
Risultato 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
}
Bacheca casi
| Tipo di risultato | Valore/Descrizione | Tipo |
|---|---|---|
| Messaggio di output* | L'azione non deve non riuscire né interrompere l'esecuzione di un playbook:
Se non sono presenti entità IP, stampa "Per creare un asset elenco IP deve essere disponibile almeno un'entità IP".
Se non è codice statico 200 (is_success = false): stampa "Error executing action "Create IP List Asset". Motivo: {0}''.format(error_msg) |
Generale |
Arricchisci IP
Ottieni informazioni sugli indirizzi IP e arricchiscile.
Parametri
| Parametro | Tipo | Valore predefinito | Descrizione |
|---|---|---|---|
| Nome repository | Stringa | N/D | Il nome del repository. |
Pubblica su
Questa azione viene eseguita sull'entità Indirizzo IP.
Risultati dell'azione
Arricchimento delle entità
| Nome campo di arricchimento | Logica: quando applicarla |
|---|---|
| macAddress | Restituisce se esiste nel risultato JSON |
| severityLow | Restituisce se esiste nel risultato JSON |
| link | Restituisce se esiste nel risultato JSON |
| ip | Restituisce se esiste nel risultato JSON |
| ultima scansione | Restituisce se esiste nel risultato JSON |
| severityCritical | Restituisce se esiste nel risultato JSON |
| totale | Restituisce se esiste nel risultato JSON |
| severityAll | Restituisce se esiste nel risultato JSON |
| mcafeeGUID | Restituisce se esiste nel risultato JSON |
| policyName | Restituisce se esiste nel risultato JSON |
| uuid | Restituisce se esiste nel risultato JSON |
| lastAuthRun | Restituisce se esiste nel risultato JSON |
| severityInfo | Restituisce se esiste nel risultato JSON |
| osCPE | Restituisce se esiste nel risultato JSON |
| unicità | Restituisce se esiste nel risultato JSON |
| dnsName | Restituisce se esiste nel risultato JSON |
| repository | Restituisce se esiste nel risultato JSON |
| ip | Restituisce se esiste nel risultato JSON |
| descrizione | Restituisce se esiste nel risultato JSON |
| nome | Restituisce se esiste nel risultato JSON |
| lastUnauthRun | Restituisce se esiste nel risultato JSON |
| biosGUID | Restituisce se esiste nel risultato JSON |
| tpmID | Restituisce se esiste nel risultato JSON |
| punteggio | Restituisce se esiste nel risultato JSON |
| hasPassive | Restituisce se esiste nel risultato JSON |
| pluginSet | Restituisce se esiste nel risultato JSON |
| hasCompliance | Restituisce se esiste nel risultato JSON |
| severityHigh | Restituisce se esiste nel risultato JSON |
| netbiosName | Restituisce se esiste nel risultato JSON |
| severityMedium | Restituisce se esiste nel risultato JSON |
| os | Restituisce se esiste nel risultato JSON |
Risultato dello script
| Nome del risultato dello script | Opzioni di valore | Esempio |
|---|---|---|
| is_success | Vero/Falso | is_success:False |
Risultato 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"
}
]
Recupera asset correlati
Ottieni asset correlati a un indirizzo IP.
Parametri
| Parametro | Tipo | Valore predefinito | Descrizione |
|---|---|---|---|
| Nome repository | Stringa | N/D | Il nome del repository. |
Pubblica su
Questa azione viene eseguita sull'entità Indirizzo IP.
Risultati dell'azione
Arricchimento delle entità
| Nome campo di arricchimento | Logica: quando applicarla |
|---|---|
| id | Restituisce se esiste nel risultato JSON |
| nome | Restituisce se esiste nel risultato JSON |
Risultato dello script
| Nome del risultato dello script | Opzioni di valore | Esempio |
|---|---|---|
| is_success | Vero/Falso | is_success:False |
Risultato 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"
}
]
Scarica report
Recupera i contenuti del report per ID o nome.
Parametri
| Parametro | Tipo | Valore predefinito | Descrizione |
|---|---|---|---|
| ID report | Stringa | N/D | Numero ID report.Si trova nell'URL del report. |
Run On
Questa azione viene eseguita su tutte le entità.
Risultati dell'azione
Risultato dello script
| Nome del risultato dello script | Opzioni di valore | Esempio |
|---|---|---|
| is_success | Vero/Falso | is_success:False |
Risultato JSON
{
"pubSites":
[
"https://example.com",
"https://example.net"
]
}
Recuperare i risultati della scansione
Attendi il completamento della scansione e ottieni i risultati.
Parametri
| Parametro | Tipo | Valore predefinito | Descrizione |
|---|---|---|---|
| ID risultato della scansione | Stringa |
N/D | L'ID dei risultati della scansione. |
Pubblica su
Questa azione viene eseguita su tutte le entità.
Risultati dell'azione
Risultato dello script
| Nome del risultato dello script | Opzioni di valore | Esempio |
|---|---|---|
| is_success | Vero/Falso | is_success:False |
Risultato 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"
}
]
}
Ottieni le vulnerabilità per l'IP
Visualizza il riepilogo delle vulnerabilità e della gravità per un indirizzo IP.
Parametri
N/D
Pubblica su
Questa azione viene eseguita sull'entità Indirizzo IP.
Risultati dell'azione
Arricchimento delle entità
| Nome campo di arricchimento | Logica: quando applicarla |
|---|---|
| macAddress | Restituisce se esiste nel risultato JSON |
| protocollo | Restituisce se esiste nel risultato JSON |
| uuid | Restituisce se esiste nel risultato JSON |
| famiglia | Restituisce se esiste nel risultato JSON |
| pluginInfo | Restituisce se esiste nel risultato JSON |
| ip | Restituisce se esiste nel risultato JSON |
| pluginID | Restituisce se esiste nel risultato JSON |
| gravità | Restituisce se esiste nel risultato JSON |
| repository | Restituisce se esiste nel risultato JSON |
| unicità | Restituisce se esiste nel risultato JSON |
| dnsName | Restituisce se esiste nel risultato JSON |
| porta | Restituisce se esiste nel risultato JSON |
| netbiosName | Restituisce se esiste nel risultato JSON |
| nome | Restituisce il valore se esiste nel risultato JSON |
Risultato dello script
| Nome del risultato dello script | Opzioni di valore | Esempio |
|---|---|---|
| is_success | Vero/Falso | is_success:False |
Risultato 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"
}
]
Dindin
Testa la connettività.
Pubblica su
Questa azione viene eseguita su tutte le entità.
Risultati dell'azione
Risultato dello script
| Nome del risultato dello script | Opzioni di valore | Esempio |
|---|---|---|
| null | N/D | N/D |
Scansiona IP
Avvia una scansione degli indirizzi IP.
Parametri
| Parametro | Tipo | Valore predefinito | Descrizione |
|---|---|---|---|
| Nome scansione | Stringa | N/D | Il nome della scansione da creare. |
| Nome del criterio | Stringa | N/D | Il nome della policy. |
Pubblica su
Questa azione viene eseguita sull'entità Indirizzo IP.
Risultati dell'azione
Risultato dello script
| Nome del risultato dello script | Opzioni di valore | Esempio |
|---|---|---|
| scan_result_id | N/D | N/D |
Esegui scansione asset
Esegui la scansione degli asset in Tenable Security Center.
Dove trovare l'ID criterio e l'ID repository
Per l'ID norma:
- Vai a
https://INSTANCE_IP_ADDRESS/#policies. - Seleziona la norma che vuoi utilizzare in azione.
- Nell'URL, potrai visualizzare un ID di queste norme.
Per l'ID repository:
- Vai a
https://INSTANCE_IP_ADDRESS/#repositories. - Seleziona il repository che vuoi utilizzare nell'azione.
- Nell'URL, potrai vedere un ID del repository.
Parametri
| Nome visualizzato del parametro | Tipo | Valore predefinito | È obbligatorio | Descrizione |
|---|---|---|---|---|
| Nome scansione | N/D | Sì | Specifica il nome della scansione. | |
| Nome risorsa | Stringa | N/D | Sì | Specifica il nome dell'asset da analizzare. |
| ID policy | Numero intero | N/D | Sì | Specifica l'ID della policy da utilizzare nella scansione. |
| ID repository | Numero intero | N/D | Sì | Specifica l'ID del repository da utilizzare nella scansione. |
| Descrizione | Stringa | N/D | No | Specifica la descrizione della scansione. |
Pubblica su
Questa azione non viene eseguita sulle entità.
Risultati dell'azione
Risultato dello script
| Nome del risultato dello script | Opzioni di valore | Esempio |
|---|---|---|
| is_success | Vero/Falso | is_success:False |
Risultato 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
}
Bacheca casi
| Tipo di risultato | Valore/Descrizione | Tipo |
|---|---|---|
| Messaggio di output* | L'azione non deve non riuscire né interrompere l'esecuzione di un playbook:
L'azione deve non riuscire e interrompere l'esecuzione di un playbook: Se l'asset non è stato trovato: stampa "Errore durante l'esecuzione dell'azione "Esegui scansione asset". Motivo: l'asset {0} non è stato trovato in Tenable Security Center. ''.format(name) Se non è il codice statico 200 (is_success = false): stampa "Error executing action "Run Asset Scan". Motivo:{0}".format(error_msg) |
Generale |
Connettori
Connettore Tenable Security Center
Per istruzioni dettagliate su come configurare un connettore in Google SecOps, vedi Configurazione del connettore.
Parametri del connettore
Utilizza i seguenti parametri per configurare il connettore:
| Parametro | Tipo | Valore predefinito | Descrizione |
|---|---|---|---|
| DeviceProductField | Stringa | device_product | Il nome del campo utilizzato per determinare il prodotto del dispositivo. |
| EventClassId | Stringa | nome | Il nome del campo utilizzato per determinare il nome dell'evento (sottotipo). |
| PythonProcessTimeout | Stringa | 60 | Il limite di timeout (in secondi) per il processo Python che esegue lo script corrente. |
| Indirizzo del server | Stringa | null | N/D |
| Nome utente | Stringa | null | N/D |
| Password | Password | null | N/D |
| Chiave di accesso | Stringa | null | Optional Chiave di accesso dell'account Tenable Security Center. Devono essere forniti sia |
| Chiave segreta | Password | null | Optional Chiave segreta dell'account Tenable Security Center. Devono essere forniti sia |
| Use SSL (Usa SSL) | Casella di controllo | Deselezionata | N/D |
| Max Days Backwards | Numero intero | 1 | Il numero di giorni precedenti a partire dai quali vuoi recuperare i dati. |
| Limite per ciclo | Numero intero | 10 | La quantità di avvisi importati nel connettore in ogni ciclo di esecuzione. |
| Indirizzo del server proxy | Stringa | null | L'indirizzo del server proxy da utilizzare. |
| Nome utente proxy | Stringa | null | Il nome utente del proxy con cui eseguire l'autenticazione. |
| Password proxy | Password | null | La password del proxy per l'autenticazione. |
Regole del connettore
Il connettore supporta i proxy.
Hai bisogno di ulteriore assistenza? Ricevi risposte dai membri della community e dai professionisti di Google SecOps.