Qualys-Protokolle zur Verwaltung von Sicherheitslücken erfassen
Dieser Parser verarbeitet Qualys-Sicherheitslücken-Management-Protokolle entweder im Schlüssel/Wert-Format (KV) oder im JSON-Format. Es werden Details zu Sicherheitslücken, Hostinformationen und Scanmetadaten extrahiert und dem UDM zugeordnet. Der Parser verarbeitet auch verschiedene Protokollstrukturen, priorisiert das KV-Parsen und greift bei Bedarf auf JSON zurück. Außerdem wird das DetectionList
-Array in einzelne Sicherheitsereignisse unterteilt.
Hinweise
- Sie benötigen eine Google Security Operations-Instanz.
- Sie benötigen Berechtigungen für die Qualys VMDR-Konsole.
Optional: Einen speziellen API-Nutzer in Qualys erstellen
- Melden Sie sich in der Qualys-Konsole an.
- Gehen Sie zu Nutzer.
- Klicken Sie auf Neu > Nutzer.
- Geben Sie die für den Nutzer erforderlichen Allgemeinen Informationen ein.
- Wählen Sie den Tab Nutzerrolle aus.
- Das Kästchen API-Zugriff muss für die Rolle ausgewählt sein.
- Klicken Sie auf Speichern.
Spezifische Qualys API-URL angeben
Option 1
Geben Sie Ihre URLs wie in der Plattformidentifikation angegeben an.
Option 2
- Melden Sie sich in der Qualys-Konsole an.
- Gehen Sie zu Hilfe > Info.
- Scrollen Sie nach unten zu „Security Operations Center (SOC)“.
- Kopieren Sie die URL der Qualys API.
Feed in Google SecOps für die Aufnahme von Qulay-VM-Logs konfigurieren
- Gehen Sie zu SIEM-Einstellungen > Feeds.
- Klicken Sie auf Neu hinzufügen.
- Geben Sie im Feld Feedname einen Namen für den Feed ein, z. B. Qualys-VM-Protokolle.
- Wählen Sie Drittanbieter-API als Quelltyp aus.
- Wählen Sie als Logtyp Qualys-VM aus.
- Klicken Sie auf Weiter.
- Geben Sie Werte für die folgenden Eingabeparameter an:
- Nutzername: Geben Sie den Nutzernamen ein.
- Secret: Geben Sie das Passwort ein.
- Vollständiger API-Pfad: Geben Sie die URL des Qualys API-Servers an (z. B.
https://<qualys_base_url>/api/2.0/fo/asset/host/?action=list
), wobei<qualys_base_url>
die Basis-URL des Qualys API-Servers ist, auf dem sich Ihr Konto befindet. - Asset-Namespace: der Asset-Namespace.
- Aufnahmelabels: Das Label, das auf die Ereignisse aus diesem Feed angewendet wird.
- Klicken Sie auf Weiter.
- Überprüfen Sie die Feedkonfiguration auf dem Bildschirm Abschließen und klicken Sie dann auf Senden.
UDM-Zuordnungstabelle
Logfeld | UDM-Zuordnung | Logik |
---|---|---|
DETECTION.FIRST_FOUND_DATETIME |
extensions.vulns.vulnerabilities.first_found |
Aus dem Feld DETECTION.FIRST_FOUND_DATETIME geparst, wobei der Stringwert in einen Zeitstempel konvertiert wird. |
DETECTION.LAST_FOUND_DATETIME |
extensions.vulns.vulnerabilities.last_found |
Aus dem Feld DETECTION.LAST_FOUND_DATETIME geparst, wobei der Stringwert in einen Zeitstempel konvertiert wird. |
DETECTION.QID |
extensions.vulns.vulnerabilities.name |
Verkettet „QID:“ mit dem Wert von DETECTION.QID . |
DETECTION.RESULTS |
extensions.vulns.vulnerabilities.description |
Wird direkt dem Beschreibungsfeld zugeordnet. Wird auch zum Extrahieren von network.ip_protocol und principal.port mit Grok verwendet. |
DETECTION.SEVERITY |
extensions.vulns.vulnerabilities.severity |
Zugewiesen von DETECTION.SEVERITY . Die Werte 0, 1 und 2 werden zu „Niedrig“, 3 und 4 zu „Mittel“ und 5, 6 und 7 zu „Hoch“. |
DETECTION.STATUS |
extensions.vulns.vulnerabilities.about.labels |
Als Label mit dem Schlüssel „Detection status“ hinzugefügt. |
DETECTION.TYPE |
extensions.vulns.vulnerabilities.about.labels |
Als Label mit dem Schlüssel „Detection type“ hinzugefügt. |
DNS |
principal.hostname |
Wird direkt principal.hostname zugeordnet. |
DNSData.DOMAIN |
principal.domain.name |
Wird direkt principal.domain.name zugeordnet. |
HOST.ASSET_ID |
principal.asset_id |
Verbindet „QUALYS:“ mit dem Wert von HOST.ASSET_ID . |
HOST.DNS |
principal.hostname |
Wird direkt principal.hostname zugeordnet, wenn DNS leer ist. |
HOST.DNS_DATA.DOMAIN |
principal.domain.name |
Wird direkt principal.domain.name zugeordnet, wenn DNSData.DOMAIN leer ist. |
HOST.ID |
metadata.product_log_id |
Wird direkt metadata.product_log_id zugeordnet. |
HOST.IP |
principal.ip |
Wird direkt principal.ip zugeordnet, wenn IP leer ist. |
HOST.LAST_SCAN_DATETIME |
extensions.vulns.vulnerabilities.scan_start_time |
Aus dem Feld HOST.LAST_SCAN_DATETIME geparst, wobei der Stringwert in einen Zeitstempel konvertiert wird. |
HOST.LAST_VM_SCANNED_DATE |
extensions.vulns.vulnerabilities.scan_end_time |
Aus dem Feld HOST.LAST_VM_SCANNED_DATE geparst, wobei der Stringwert in einen Zeitstempel konvertiert wird. |
HOST.NETBIOS |
additional.fields |
Als Label mit dem Schlüssel „HOST NETBIOS“ hinzugefügt. |
HOST.OS |
principal.platform_version |
Wird direkt principal.platform_version zugeordnet, wenn OS leer ist. |
HOST.QG_HOSTID |
additional.fields |
Als Label mit dem Schlüssel „HOST QG_HOSTID“ hinzugefügt. |
HOST.TRACKING_METHOD |
additional.fields |
Als Label mit dem Schlüssel „HOST TRACKING_METHOD“ hinzugefügt. |
HOST_ID |
principal.asset_id |
Verbindet „QUALYS:“ mit dem Wert von HOST_ID . |
ID |
metadata.product_log_id |
Wird direkt auf metadata.product_log_id zugeordnet. |
IP |
principal.ip |
Wird direkt principal.ip zugeordnet. |
LastScanDateTime |
extensions.vulns.vulnerabilities.scan_start_time |
Aus dem Feld LastScanDateTime geparst, wobei der Stringwert in einen Zeitstempel konvertiert wird. |
LastVMAuthScanDuration |
additional.fields |
Als Label mit dem Schlüssel „LastVMAuthScanDuration“ hinzugefügt. |
LastVMScanDate |
extensions.vulns.vulnerabilities.scan_end_time |
Aus dem Feld LastVMScanDate geparst, wobei der Stringwert in einen Zeitstempel konvertiert wird. |
LastVMScanDuration |
additional.fields |
Als Label mit dem Schlüssel „LastVMScanDuration“ hinzugefügt. |
LAST_FOUND_DATETIME |
extensions.vulns.vulnerabilities.last_found |
Aus dem Feld LAST_FOUND_DATETIME geparst, wobei der Stringwert in einen Zeitstempel konvertiert wird. |
LAST_SCAN_DATETIME |
extensions.vulns.vulnerabilities.scan_start_time |
Aus dem Feld LAST_SCAN_DATETIME geparst, wobei der Stringwert in einen Zeitstempel konvertiert wird. |
LAST_VM_SCANNED_DATE |
extensions.vulns.vulnerabilities.scan_end_time |
Aus dem Feld LAST_VM_SCANNED_DATE geparst, wobei der Stringwert in einen Zeitstempel konvertiert wird. |
NETBIOS |
additional.fields |
Als Label mit dem Schlüssel „NETBIOS“ hinzugefügt. |
NetworkID |
additional.fields |
Als Label mit dem Schlüssel „NetworkID“ hinzugefügt. |
NETWORK_ID |
additional.fields |
Als Label mit dem Schlüssel „NetworkID“ hinzugefügt. |
OS |
principal.platform_version |
Wird direkt principal.platform_version zugeordnet. |
Os |
principal.platform_version |
Wird direkt principal.platform_version zugeordnet, wenn OS leer ist. |
QID |
extensions.vulns.vulnerabilities.name |
Verkettet „QID:“ mit dem Wert von QID . |
QgHostID |
principal.asset_id |
Legt principal.asset_id auf „Host-ID:%{QgHostID}“ fest. |
SEVERITY |
extensions.vulns.vulnerabilities.severity |
Zugewiesen von SEVERITY . Die Werte 0, 1 und 2 werden zu „LOW“ (Niedrig), 3 und 4 zu „MEDIUM“ (Mittel) und 5, 6 und 7 zu „HIGH“ (Hoch). |
TRACKING_METHOD |
additional.fields |
Als Label mit dem Schlüssel „TRACKING_METHOD“ hinzugefügt. |
TrackingMethod |
additional.fields |
Als Label mit dem Schlüssel „TRACKING_METHOD“ hinzugefügt. |
– | metadata.vendor_name |
„Qualys“ ist hartcodiert. |
– | metadata.product_name |
„Sicherheitslückenverwaltung“ ist hartcodiert. |
– | metadata.event_type |
Legen Sie „SCAN_VULN_HOST“ fest, wenn _vulns nicht leer ist, „STATUS_UPDATE“, wenn entweder prin_host oder IP nicht leer ist, und andernfalls „GENERIC_EVENT“. |
– | metadata.log_type |
Aus dem Feld log_type des Rohlogs. |
– | principal.platform |
Wird anhand von OS , Os oder HOST.OS ermittelt. Wenn einer dieser Werte „Linux“ enthält, wird die Plattform auf „LINUX“ festgelegt. Wenn einer der Werte „Windows“ enthält, wird die Plattform auf „WINDOWS“ festgelegt. Wenn einer der Werte „mac“ oder „ios“ enthält, wird die Plattform auf „MAC“ festgelegt. |
detection.DType |
extensions.vulns.vulnerabilities.about.resource.attribute.labels |
Als Label mit dem Schlüssel „Detection Type“ im Array „vulnerabilities“ für Ereignisse hinzugefügt, die aus dem Feld DetectionList geparst wurden. |
detection.FirstFoundTime |
extensions.vulns.vulnerabilities.first_found |
Wird aus dem Feld detection.FirstFoundTime geparst. Der Stringwert wird in das Array „vulnerabilities“ für Ereignisse umgewandelt, die aus dem Feld DetectionList geparst wurden. |
detection.LastFoundTime |
extensions.vulns.vulnerabilities.last_found |
Wird aus dem Feld detection.LastFoundTime geparst. Der Stringwert wird in das Array „vulnerabilities“ für Ereignisse umgewandelt, die aus dem Feld DetectionList geparst wurden. |
detection.LastProcessedDatetime |
extensions.vulns.vulnerabilities.about.resource.attribute.labels |
Als Label mit dem Schlüssel „LastProcessedDatetime“ im Array „vulnerabilities“ für Ereignisse hinzugefügt, die aus dem Feld DetectionList geparst wurden. |
detection.LastTestDateTime |
extensions.vulns.vulnerabilities.about.resource.attribute.labels |
Wird als Label mit dem Schlüssel „LastTestDateTime“ im Array „vulnerabilities“ für Ereignisse hinzugefügt, die aus dem Feld DetectionList geparst wurden. |
detection.LastUpdateDateTime |
extensions.vulns.vulnerabilities.about.resource.attribute.labels |
Wird als Label mit dem Schlüssel „LastUpdateDateTime“ im Array „vulnerabilities“ für Ereignisse hinzugefügt, die aus dem Feld DetectionList geparst wurden. |
detection.Qid |
extensions.vulns.vulnerabilities.name |
„QID:“ wird mit dem Wert von detection.Qid im Array „vulnerabilities“ für Ereignisse verknüpft, die aus dem Feld DetectionList geparst wurden. |
detection.Results |
extensions.vulns.vulnerabilities.description |
Wird für Ereignisse, die aus dem Feld DetectionList geparst werden, direkt dem Beschreibungsfeld im Array „vulnerabilities“ zugeordnet. Tabulatoren und Zeilenumbrüche werden durch Leerzeichen ersetzt. |
detection.Severity |
extensions.vulns.vulnerabilities.severity |
Zugewiesen von detection.Severity . Die Werte 0, 1 und 2 werden im Array „vulnerabilities“ für Ereignisse, die aus dem Feld DetectionList geparst werden, zu „LOW“ (Niedrig), 3 und 4 zu „MEDIUM“ (Mittel) und 5, 6 und 7 zu „HIGH“ (Hoch). |
detection.Status |
extensions.vulns.vulnerabilities.about.resource.attribute.labels |
Als Label mit dem Schlüssel „Detection status“ im Array „vulnerabilities“ für Ereignisse hinzugefügt, die aus dem Feld DetectionList geparst wurden. |
detection.TimesFound |
extensions.vulns.vulnerabilities.about.resource.attribute.labels |
Wird als Label mit dem Schlüssel „TimesFound“ im Array „vulnerabilities“ für Ereignisse hinzugefügt, die aus dem Feld DetectionList geparst wurden. |
timestamp |
metadata.event_timestamp , timestamp |
Das Feld timestamp des Rohlogs wird sowohl für den Ereigniszeitstempel als auch für den Zeitstempel der obersten Ebene verwendet. |
Änderungen
2023-10-27
- Es wurde eine For-Schleife hinzugefügt, um die Ereignisse aufzuteilen, wenn mehrere „QIDs“ vorhanden sind.
2023-04-25
- „DetectionList.FirstFoundTime“ wurde in „extensions.vulns.vulnerabilities.first_found“ umgewandelt.
- „DetectionList.LastFoundTime“ wurde in „extensions.vulns.vulnerabilities.last_found“ umgewandelt.
- „DetectionList.TimesFound“ wurde in „extensions.vulns.vulnerabilities.about.resource.attribute.labels“ geändert.
- „DetectionList.LastTestDateTime“ wurde in „extensions.vulns.vulnerabilities.about.resource.attribute.labels“ geändert.
- „DetectionList.LastUpdateDateTime“ wurde in „extensions.vulns.vulnerabilities.about.resource.attribute.labels“ geändert.
- „DetectionList.LastProcessedDatetime“ wurde in „extensions.vulns.vulnerabilities.about.resource.attribute.labels“ umgewandelt.
2023-01-23
- Die Array-Details „DetectionList“ wurden auf „extensions.vulns.vulnerabilities“ zugeordnet.
- „DetectionList.Qid“ wurde in „extensions.vulns.vulnerabilities.name“ geändert.
- „DetectionList.Severity“ wurde in „extensions.vulns.vulnerabilities.severity“ geändert.
- „DetectionList.Results“ wurde in „extensions.vulns.vulnerabilities.description“ geändert.
- „DetectionList.Status“ und „DetectionList.DType“ wurden in „extensions.vulns.vulnerabilities.about.resource.attribute.labels“ umgewandelt.
2022-09-29
- „ID“ wurde mit „metadata.product_log_id“ verknüpft.
- „Netbios“, „TrackingMethod“ und „NetworkID“ wurden in „additional.fields“ zugeordnet.
- „QgHostID“ wurde „principal.asset_id“ zugeordnet.
- „Os“ wurde auf „principal.platform_version“ zugeordnet.
- Bedingte Prüfung für „vulns“ hinzugefügt.
2022-07-20
- Zuordnung für die folgenden Felder hinzugefügt:
- „DETECTION.FIRST_FOUND_DATETIME“ wurde in „event.idm.read_only_udm.extensions.vulns.vulnerabilities.first_found“ umgewandelt.
- „DETECTION.LAST_FOUND_DATETIME“ wird auf „event.idm.read_only_udm.extensions.vulns.vulnerabilities.last_found“ zugeordnet.
- „HOST.LAST_VM_SCANNED_DATE“ wird auf „event.idm.read_only_udm.extensions.vulns.vulnerabilities.scan_end_time“ zugeordnet.
- „HOST.LAST_SCAN_DATETIME“ wird auf „event.idm.read_only_udm.extensions.vulns.vulnerabilities.scan_start_time“ zugeordnet.
- „DETECTION.QID“ wurde auf „event.idm.read_only_udm.extensions.vulns.vulnerabilities.name“ zugeordnet.
- „DETECTION.SEVERITY“ wurde auf „event.idm.read_only_udm.extensions.vulns.vulnerabilities.severity“ zugeordnet.
- „DETECTION.TYPE“ wurde auf „event.idm.read_only_udm.extensions.vulns.vulnerabilities.about.labels“ zugeordnet.
- „DETECTION.STATUS“ wird auf „event.idm.read_only_udm.extensions.vulns.vulnerabilities.labels“ zugeordnet.
- „DETECTION.RESULTS“ wird auf „event.idm.read_only_udm.extensions.vulns.vulnerabilities.description“ zugeordnet.
- „HOST.DNS_DATA.DOMAIN“ ist auf „event.idm.read_only_udm.principal.domain.name“ zugeordnet.
- „HOST.ASSET_ID“ ist auf „event.idm.read_only_udm.principal.asset_id“ zugeordnet.
- „HOST.IP“ ist auf „event.idm.read_only_udm.principal.ip“ zugeordnet.
- „HOST.OS“ ist auf „event.idm.read_only_udm.principal.platform_version“ zugeordnet.
- „HOST.DNS“ ist auf „event.idm.read_only_udm.principal.hostname“ zugeordnet.
- „HOST.QG_HOSTID“ ist auf „event.idm.read_only_udm.additional.fields“ zugeordnet.
- „HOST.NETBIOS“ ist auf „event.idm.read_only_udm.additional.fields“ zugeordnet.
- „HOST.TRACKING_METHOD“ ist auf „event.idm.read_only_udm.additional.fields“ zugeordnet.