Collecter les journaux de gestion des failles Qualys

Compatible avec:

Cet analyseur gère les journaux de gestion des vulnérabilités Qualys au format clé-valeur (KV) ou JSON. Il extrait les détails des failles, les informations sur l'hôte et les métadonnées d'analyse, et les met en correspondance avec la UDM. L'analyseur gère également différentes structures de journaux, donne la priorité à l'analyse KV et revient au format JSON si nécessaire, et divise le tableau DetectionList en événements de vulnérabilité individuels.

Avant de commencer

  • Assurez-vous de disposer d'une instance Google Security Operations.
  • Assurez-vous de disposer d'un accès privilégié à la console Qualys VMDR.

Facultatif: Créer un utilisateur d'API dédié dans Qualys

  1. Connectez-vous à la console Qualys.
  2. Accédez à Utilisateurs.
  3. Cliquez sur Nouveau > Utilisateur.
  4. Saisissez les informations générales requises pour l'utilisateur.
  5. Sélectionnez l'onglet Rôle utilisateur.
  6. Assurez-vous que la case Accès aux API est cochée pour le rôle.
  7. Cliquez sur Enregistrer.

Identifier votre URL d'API Qualys spécifique

Option 1

Identifiez vos URL comme indiqué dans la section Identification de la plate-forme.

Option 2

  1. Connectez-vous à la console Qualys.
  2. Accédez à Aide > À propos.
  3. Faites défiler la page pour afficher ces informations sous "Centre des opérations de sécurité (SOC)".
  4. Copiez l'URL de l'API Qualys.

Configurer un flux dans Google SecOps pour ingérer les journaux de VM Qulays

  1. Accédez à Paramètres du SIEM > Flux.
  2. Cliquez sur Ajouter.
  3. Dans le champ Nom du flux, saisissez un nom pour le flux (par exemple, Journaux de VM Qualys).
  4. Sélectionnez API tierce comme type de source.
  5. Sélectionnez VM Qualys comme type de journal.
  6. Cliquez sur Suivant.
  7. Spécifiez les valeurs des paramètres d'entrée suivants :
    • Nom d'utilisateur: saisissez le nom d'utilisateur.
    • Secret: saisissez le mot de passe.
    • Chemin d'accès complet de l'API: indiquez l'URL du serveur de l'API Qualys (par exemple, https://<qualys_base_url>/api/2.0/fo/asset/host/?action=list), où <qualys_base_url> est l'URL de base du serveur de l'API Qualys sur lequel se trouve votre compte.
    • Espace de noms des éléments: espace de noms des éléments.
    • Libellés d'ingestion: libellé appliqué aux événements de ce flux.
  8. Cliquez sur Suivant.
  9. Vérifiez la configuration du flux dans l'écran Finaliser, puis cliquez sur Envoyer.

Tableau de mappage UDM

Champ de journal Mappage UDM Logique
DETECTION.FIRST_FOUND_DATETIME extensions.vulns.vulnerabilities.first_found Analyse du champ DETECTION.FIRST_FOUND_DATETIME, convertissant la valeur de la chaîne en code temporel.
DETECTION.LAST_FOUND_DATETIME extensions.vulns.vulnerabilities.last_found Analyse du champ DETECTION.LAST_FOUND_DATETIME, convertissant la valeur de la chaîne en code temporel.
DETECTION.QID extensions.vulns.vulnerabilities.name Concaténe "QID: " avec la valeur de DETECTION.QID.
DETECTION.RESULTS extensions.vulns.vulnerabilities.description Correspond directement au champ "Description". Permet également d'extraire network.ip_protocol et principal.port à l'aide de grok.
DETECTION.SEVERITY extensions.vulns.vulnerabilities.severity Mappé à partir de DETECTION.SEVERITY. Les valeurs 0, 1 et 2 deviennent "LOW" (BAS), les valeurs 3 et 4 deviennent "MEDIUM" (MOYEN) et les valeurs 5, 6 et 7 deviennent "HIGH" (ÉLEVÉ).
DETECTION.STATUS extensions.vulns.vulnerabilities.about.labels Ajouté en tant que libellé avec la clé "État de la détection".
DETECTION.TYPE extensions.vulns.vulnerabilities.about.labels Ajouté en tant que libellé avec la clé "Type de détection".
DNS principal.hostname Correspond directement à principal.hostname.
DNSData.DOMAIN principal.domain.name Correspond directement à principal.domain.name.
HOST.ASSET_ID principal.asset_id Concaténe "QUALYS:" avec la valeur de HOST.ASSET_ID.
HOST.DNS principal.hostname Mappe directement à principal.hostname si DNS est vide.
HOST.DNS_DATA.DOMAIN principal.domain.name Mappe directement à principal.domain.name si DNSData.DOMAIN est vide.
HOST.ID metadata.product_log_id Correspond directement à metadata.product_log_id.
HOST.IP principal.ip Mappe directement à principal.ip si IP est vide.
HOST.LAST_SCAN_DATETIME extensions.vulns.vulnerabilities.scan_start_time Analyse du champ HOST.LAST_SCAN_DATETIME, convertissant la valeur de la chaîne en code temporel.
HOST.LAST_VM_SCANNED_DATE extensions.vulns.vulnerabilities.scan_end_time Analyse du champ HOST.LAST_VM_SCANNED_DATE, convertissant la valeur de la chaîne en code temporel.
HOST.NETBIOS additional.fields Ajouté en tant que libellé avec la clé "HOST NETBIOS".
HOST.OS principal.platform_version Mappe directement à principal.platform_version si OS est vide.
HOST.QG_HOSTID additional.fields Ajouté en tant que libellé avec la clé "HOST QG_HOSTID".
HOST.TRACKING_METHOD additional.fields Ajouté en tant que libellé avec la clé "HOST TRACKING_METHOD".
HOST_ID principal.asset_id Concaténe "QUALYS:" avec la valeur de HOST_ID.
ID metadata.product_log_id Correspond directement à metadata.product_log_id.
IP principal.ip Correspond directement à principal.ip.
LastScanDateTime extensions.vulns.vulnerabilities.scan_start_time Analyse du champ LastScanDateTime, convertissant la valeur de la chaîne en code temporel.
LastVMAuthScanDuration additional.fields Ajouté en tant que libellé avec la clé "LastVMAuthScanDuration".
LastVMScanDate extensions.vulns.vulnerabilities.scan_end_time Analyse du champ LastVMScanDate, convertissant la valeur de la chaîne en code temporel.
LastVMScanDuration additional.fields Ajouté en tant que libellé avec la clé "LastVMScanDuration".
LAST_FOUND_DATETIME extensions.vulns.vulnerabilities.last_found Analyse du champ LAST_FOUND_DATETIME, convertissant la valeur de la chaîne en code temporel.
LAST_SCAN_DATETIME extensions.vulns.vulnerabilities.scan_start_time Analyse du champ LAST_SCAN_DATETIME, convertissant la valeur de la chaîne en code temporel.
LAST_VM_SCANNED_DATE extensions.vulns.vulnerabilities.scan_end_time Analyse du champ LAST_VM_SCANNED_DATE, convertissant la valeur de la chaîne en code temporel.
NETBIOS additional.fields Ajouté en tant que libellé avec la clé "NETBIOS".
NetworkID additional.fields Ajouté en tant que libellé avec la clé "NetworkID".
NETWORK_ID additional.fields Ajouté en tant que libellé avec la clé "NetworkID".
OS principal.platform_version Correspond directement à principal.platform_version.
Os principal.platform_version Mappe directement à principal.platform_version si OS est vide.
QID extensions.vulns.vulnerabilities.name Concaténe "QID: " avec la valeur de QID.
QgHostID principal.asset_id Définit principal.asset_id sur "ID de l'hôte:%{QgHostID}".
SEVERITY extensions.vulns.vulnerabilities.severity Mappé à partir de SEVERITY. Les valeurs 0, 1 et 2 deviennent "LOW" (BAS), les valeurs 3 et 4 deviennent "MEDIUM" (MOYEN) et les valeurs 5, 6 et 7 deviennent "HIGH" (ÉLEVÉ).
TRACKING_METHOD additional.fields Ajouté en tant que libellé avec la clé "TRACKING_METHOD".
TrackingMethod additional.fields Ajouté en tant que libellé avec la clé "TRACKING_METHOD".
N/A metadata.vendor_name Code codé en dur sur "Qualys".
N/A metadata.product_name Code codé en dur sur "Gestion des failles".
N/A metadata.event_type Définissez-le sur "SCAN_VULN_HOST" si _vulns n'est pas vide, sur "STATUS_UPDATE" si prin_host ou IP ne sont pas vides, et sur "GENERIC_EVENT" dans le cas contraire.
N/A metadata.log_type Extrait du champ log_type du journal brut.
N/A principal.platform Déterminé à partir de OS, Os ou HOST.OS. Si l'un de ces éléments contient "Linux", la plate-forme est définie sur "LINUX". Si l'un d'eux contient "Windows", la plate-forme est définie sur "WINDOWS". Si l'un d'eux contient "mac" ou "IOS", la plate-forme est définie sur "MAC".
detection.DType extensions.vulns.vulnerabilities.about.resource.attribute.labels Ajouté en tant que libellé avec la clé "Type de détection" dans le tableau des failles pour les événements analysés à partir du champ DetectionList.
detection.FirstFoundTime extensions.vulns.vulnerabilities.first_found Analyse à partir du champ detection.FirstFoundTime, conversion de la valeur de la chaîne en code temporel dans le tableau des failles pour les événements analysés à partir du champ DetectionList.
detection.LastFoundTime extensions.vulns.vulnerabilities.last_found Analyse à partir du champ detection.LastFoundTime, conversion de la valeur de la chaîne en code temporel dans le tableau des failles pour les événements analysés à partir du champ DetectionList.
detection.LastProcessedDatetime extensions.vulns.vulnerabilities.about.resource.attribute.labels Ajouté en tant que libellé avec la clé "LastProcessedDatetime" dans le tableau des failles pour les événements analysés à partir du champ DetectionList.
detection.LastTestDateTime extensions.vulns.vulnerabilities.about.resource.attribute.labels Ajouté en tant que libellé avec la clé "LastTestDateTime" dans le tableau des failles pour les événements analysés à partir du champ DetectionList.
detection.LastUpdateDateTime extensions.vulns.vulnerabilities.about.resource.attribute.labels Ajouté en tant que libellé avec la clé "LastUpdateDateTime" dans le tableau des failles pour les événements analysés à partir du champ DetectionList.
detection.Qid extensions.vulns.vulnerabilities.name Concatenates "QID: " avec la valeur de detection.Qid dans le tableau des failles pour les événements analysés à partir du champ DetectionList.
detection.Results extensions.vulns.vulnerabilities.description Correspond directement au champ de description du tableau des failles pour les événements analysés à partir du champ DetectionList. Les tabulations et les sauts de ligne sont remplacés par des espaces.
detection.Severity extensions.vulns.vulnerabilities.severity Mappé à partir de detection.Severity. Les valeurs 0, 1 et 2 deviennent "LOW" (FAIBLE), 3 et 4 deviennent "MEDIUM" (MOYENNE) et 5, 6 et 7 deviennent "HIGH" (ÉLEVÉ) dans le tableau des failles pour les événements analysés à partir du champ DetectionList.
detection.Status extensions.vulns.vulnerabilities.about.resource.attribute.labels Ajouté en tant que libellé avec la clé "État de la détection" dans le tableau des failles pour les événements analysés à partir du champ DetectionList.
detection.TimesFound extensions.vulns.vulnerabilities.about.resource.attribute.labels Ajouté en tant que libellé avec la clé "TimesFound" dans le tableau des failles pour les événements analysés à partir du champ DetectionList.
timestamp metadata.event_timestamp, timestamp Le champ timestamp du journal brut est utilisé à la fois pour l'horodatage de l'événement et l'horodatage de niveau supérieur.

Modifications

2023-10-27

  • Ajout d'une boucle "for" pour diviser les événements en cas de présence de plusieurs "QID".

2023-04-25

  • Mappage de "DetectionList.FirstFoundTime" sur "extensions.vulns.vulnerabilities.first_found".
  • Mappage de "DetectionList.LastFoundTime" sur "extensions.vulns.vulnerabilities.last_found".
  • Mappage de "DetectionList.TimesFound" sur "extensions.vulns.vulnerabilities.about.resource.attribute.labels".
  • "DetectionList.LastTestDateTime" a été mappé sur "extensions.vulns.vulnerabilities.about.resource.attribute.labels".
  • Mappage de "DetectionList.LastUpdateDateTime" sur "extensions.vulns.vulnerabilities.about.resource.attribute.labels".
  • Mappage de "DetectionList.LastProcessedDatetime" sur "extensions.vulns.vulnerabilities.about.resource.attribute.labels".

2023-01-23

  • Mise en correspondance des détails du tableau "DetectionList" avec "extensions.vulns.vulnerabilities".
  • Mappage de "DetectionList.Qid" sur "extensions.vulns.vulnerabilities.name".
  • Mappage de "DetectionList.Severity" sur "extensions.vulns.vulnerabilities.severity".
  • Mappage de "DetectionList.Results" sur "extensions.vulns.vulnerabilities.description".
  • Mise en correspondance de "DetectionList.Status" et "DetectionList.DType" avec "extensions.vulns.vulnerabilities.about.resource.attribute.labels".

2022-09-29

  • Mappage de "ID" sur "metadata.product_log_id".
  • Mappage de "Netbios","TrackingMethod" et "NetworkID" sur "additional.fields".
  • Mappage de "QgHostID" sur "principal.asset_id".
  • "Os" a été mappé sur "principal.platform_version".
  • Ajout d'une vérification conditionnelle pour "vulns".

2022-07-20

  • Ajout du mappage pour les champs suivants:
  • "DETECTION.FIRST_FOUND_DATETIME" mappé sur "event.idm.read_only_udm.extensions.vulns.vulnerabilities.first_found".
  • "DETECTION.LAST_FOUND_DATETIME" mappé sur "event.idm.read_only_udm.extensions.vulns.vulnerabilities.last_found".
  • "HOST.LAST_VM_SCANNED_DATE" mappé sur "event.idm.read_only_udm.extensions.vulns.vulnerabilities.scan_end_time".
  • "HOST.LAST_SCAN_DATETIME" mappé sur "event.idm.read_only_udm.extensions.vulns.vulnerabilities.scan_start_time".
  • "DETECTION.QID" mappé sur "event.idm.read_only_udm.extensions.vulns.vulnerabilities.name".
  • "DETECTION.SEVERITY" mappé sur "event.idm.read_only_udm.extensions.vulns.vulnerabilities.severity".
  • "DETECTION.TYPE" mappé sur "event.idm.read_only_udm.extensions.vulns.vulnerabilities.about.labels".
  • "DETECTION.STATUS" mappé sur "event.idm.read_only_udm.extensions.vulns.vulnerabilities.labels".
  • "DETECTION.RESULTS" mappé sur "event.idm.read_only_udm.extensions.vulns.vulnerabilities.description".
  • "HOST.DNS_DATA.DOMAIN" mappé sur "event.idm.read_only_udm.principal.domain.name".
  • "HOST.ASSET_ID" mappé sur "event.idm.read_only_udm.principal.asset_id".
  • "HOST.IP" mappé sur "event.idm.read_only_udm.principal.ip".
  • "HOST.OS" mappé sur "event.idm.read_only_udm.principal.platform_version".
  • "HOST.DNS" mappé sur "event.idm.read_only_udm.principal.hostname".
  • "HOST.QG_HOSTID" mappé sur "event.idm.read_only_udm.additional.fields".
  • "HOST.NETBIOS" mappé sur "event.idm.read_only_udm.additional.fields".
  • "HOST.TRACKING_METHOD" mappé sur "event.idm.read_only_udm.additional.fields".