Qualys-Logs zur Verwaltung von Sicherheitslücken erfassen
Dieser Parser verarbeitet Qualys Vulnerability Management-Logs im Schlüssel/Wert- (KV) oder JSON-Format. Es werden Details zu Sicherheitslücken, Hostinformationen und Scan-Metadaten extrahiert und dem UDM zugeordnet. Der Parser verarbeitet auch verschiedene Logstrukturen, priorisiert das KV-Parsing und greift bei Bedarf auf JSON zurück. Außerdem teilt er das Array DetectionList in einzelne Sicherheitslückenereignisse auf.
Hinweis
Folgende Voraussetzungen müssen erfüllt sein:
- Google Security Operations-Instanz
- Privilegierter Zugriff auf die Qualys VMDR-Konsole.
Optional: Dedizierten 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 erforderlichen allgemeinen Informationen für den Nutzer ein.
- Wählen Sie den Tab Nutzerrolle aus.
- Achten Sie darauf, dass für die Rolle das Kästchen API-Zugriff aktiviert ist.
- Klicken Sie auf Speichern.
Spezifische Qualys API-URL ermitteln
Option 1
Geben Sie Ihre URLs wie in der Plattformidentifikation beschrieben an.
Option 2
- Melden Sie sich in der Qualys-Konsole an.
- Gehen Sie zu Hilfe > Info.
- Scrollen Sie nach unten, um diese Informationen unter „Security Operations Center (SOC)“ zu sehen.
- Kopieren Sie die Qualys API-URL.
Feeds einrichten
So konfigurieren Sie einen Feed:
- Rufen Sie die Einstellungen > Datenverwaltung > Feeds auf. Wenn Sie eine reine SIEM-Plattform verwenden, rufen Sie die Einstellungen > Feeds auf.
- Klicken Sie auf Neuen Feed hinzufügen.
- Klicken Sie auf der nächsten Seite auf Einzelnen Feed konfigurieren.
- Geben Sie im Feld Feedname einen Namen für den Feed ein, z. B. Qualys-VM-Logs.
- Wählen Sie Drittanbieter-API als Quelltyp aus.
- Wählen Sie Qualys VM als Logtyp 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.
<qualys_base_url>/api/2.0/fo/asset/host/vm/detection/?action=list), wobei<qualys_base_url>die Basis-URL des Qualys API-Servers ist, auf dem sich Ihr Konto befindet.
- Klicken Sie auf Weiter.
- Prü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 |
Wird aus dem Feld DETECTION.FIRST_FOUND_DATETIME geparst, wobei der Stringwert in einen Zeitstempel umgewandelt wird. |
DETECTION.LAST_FOUND_DATETIME |
extensions.vulns.vulnerabilities.last_found |
Wird aus dem Feld DETECTION.LAST_FOUND_DATETIME geparst, wobei der Stringwert in einen Zeitstempel umgewandelt 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 verwendet, um network.ip_protocol und principal.port mit Grok zu extrahieren. |
DETECTION.SEVERITY |
extensions.vulns.vulnerabilities.severity |
Aus DETECTION.SEVERITY zugeordnet. Die Werte 0, 1 und 2 werden zu „LOW“, 3 und 4 zu „MEDIUM“ und 5, 6 und 7 zu „HIGH“. |
DETECTION.STATUS |
extensions.vulns.vulnerabilities.about.labels |
Als Label mit dem Schlüssel „Erkennungsstatus“ hinzugefügt. |
DETECTION.TYPE |
extensions.vulns.vulnerabilities.about.labels |
Als Label mit dem Schlüssel „Erkennungstyp“ 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 |
Verkettet „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 |
Wird aus dem Feld HOST.LAST_SCAN_DATETIME geparst, wobei der Stringwert in einen Zeitstempel umgewandelt wird. |
HOST.LAST_VM_SCANNED_DATE |
extensions.vulns.vulnerabilities.scan_end_time |
Wird aus dem Feld HOST.LAST_VM_SCANNED_DATE geparst, wobei der Stringwert in einen Zeitstempel umgewandelt wird. |
HOST.NETBIOS |
additional.fields |
Wird 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 |
Wird als Label mit dem Schlüssel „HOST QG_HOSTID“ hinzugefügt. |
HOST.TRACKING_METHOD |
additional.fields |
Wird als Label mit dem Schlüssel „HOST TRACKING_METHOD“ hinzugefügt. |
HOST_ID |
principal.asset_id |
Verkettet „QUALYS:“ mit dem Wert von HOST_ID. |
ID |
metadata.product_log_id |
Wird direkt metadata.product_log_id zugeordnet. |
IP |
principal.ip |
Wird direkt principal.ip zugeordnet. |
LastScanDateTime |
extensions.vulns.vulnerabilities.scan_start_time |
Wird aus dem Feld LastScanDateTime geparst, wobei der Stringwert in einen Zeitstempel umgewandelt wird. |
LastVMAuthScanDuration |
additional.fields |
Wird als Label mit dem Schlüssel „LastVMAuthScanDuration“ hinzugefügt. |
LastVMScanDate |
extensions.vulns.vulnerabilities.scan_end_time |
Wird aus dem Feld LastVMScanDate geparst, wobei der Stringwert in einen Zeitstempel umgewandelt wird. |
LastVMScanDuration |
additional.fields |
Wird als Label mit dem Schlüssel „LastVMScanDuration“ hinzugefügt. |
LAST_FOUND_DATETIME |
extensions.vulns.vulnerabilities.last_found |
Wird aus dem Feld LAST_FOUND_DATETIME geparst, wobei der Stringwert in einen Zeitstempel umgewandelt wird. |
LAST_SCAN_DATETIME |
extensions.vulns.vulnerabilities.scan_start_time |
Wird aus dem Feld LAST_SCAN_DATETIME geparst, wobei der Stringwert in einen Zeitstempel umgewandelt wird. |
LAST_VM_SCANNED_DATE |
extensions.vulns.vulnerabilities.scan_end_time |
Wird aus dem Feld LAST_VM_SCANNED_DATE geparst, wobei der Stringwert in einen Zeitstempel umgewandelt wird. |
NETBIOS |
additional.fields |
Wird als Label mit dem Schlüssel „NETBIOS“ hinzugefügt. |
NetworkID |
additional.fields |
Wird als Label mit dem Schlüssel „NetworkID“ hinzugefügt. |
NETWORK_ID |
additional.fields |
Wird 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 |
Setzt principal.asset_id auf „Host Id:%{QgHostID}“. |
SEVERITY |
extensions.vulns.vulnerabilities.severity |
Aus SEVERITY zugeordnet. Die Werte 0, 1 und 2 werden zu „LOW“, 3 und 4 zu „MEDIUM“ und 5, 6 und 7 zu „HIGH“. |
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 |
Hartcodiert auf „Qualys“. |
| – | metadata.product_name |
Hartcodiert auf „Verwaltung von Sicherheitslücken“. |
| – | metadata.event_type |
Wird auf „SCAN_VULN_HOST“ gesetzt, wenn _vulns nicht leer ist, auf „STATUS_UPDATE“, wenn entweder prin_host oder IP nicht leer ist, und andernfalls auf „GENERIC_EVENT“. |
| – | metadata.log_type |
Wird aus dem Feld log_type des Rohlogs übernommen. |
| – | principal.platform |
Wird anhand von OS, Os oder HOST.OS ermittelt. Wenn eines davon „Linux“ enthält, wird die Plattform auf „LINUX“ festgelegt. Wenn einer der Werte „Windows“ enthält, wird die Plattform auf „WINDOWS“ gesetzt. Wenn einer der Werte „mac“ oder „IOS“ enthält, wird die Plattform auf „MAC“ festgelegt. |
detection.DType |
extensions.vulns.vulnerabilities.about.resource.attribute.labels |
Wird 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, wobei der Stringwert in einen Zeitstempel im Array „vulnerabilities“ für Ereignisse konvertiert wird, die aus dem Feld DetectionList geparst wurden. |
detection.LastFoundTime |
extensions.vulns.vulnerabilities.last_found |
Wird aus dem Feld detection.LastFoundTime geparst, wobei der Stringwert in einen Zeitstempel im Array „vulnerabilities“ für Ereignisse konvertiert wird, die aus dem Feld DetectionList geparst wurden. |
detection.LastProcessedDatetime |
extensions.vulns.vulnerabilities.about.resource.attribute.labels |
Wird 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 |
Verknüpft „QID: “ mit dem Wert von detection.Qid im Array „vulnerabilities“ für Ereignisse, die aus dem Feld DetectionList geparst wurden. |
detection.Results |
extensions.vulns.vulnerabilities.description |
Wird direkt dem Beschreibungsfeld im Array „vulnerabilities“ für Ereignisse zugeordnet, die aus dem Feld DetectionList geparst wurden. Tabulatoren und Zeilenumbrüche werden durch Leerzeichen ersetzt. |
detection.Severity |
extensions.vulns.vulnerabilities.severity |
Aus detection.Severity zugeordnet. Die Werte 0, 1, 2 werden zu „LOW“, 3, 4 zu „MEDIUM“ und 5, 6, 7 zu „HIGH“ im Array „vulnerabilities“ für Ereignisse, die aus dem Feld DetectionList geparst werden. |
detection.Status |
extensions.vulns.vulnerabilities.about.resource.attribute.labels |
Wird als Label mit dem Schlüssel „Erkennungsstatus“ im Array „Sicherheitslücken“ 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 auf oberster Ebene verwendet. |
Änderungsprotokoll
Änderungsprotokoll für diesen Parser ansehen
Benötigen Sie weitere Hilfe? Antworten von Community-Mitgliedern und Google SecOps-Experten erhalten