Collecter les journaux Rapid7 InsightIDR

Compatible avec :

Ce parseur gère les journaux au format JSON et SYSLOG provenant de Rapid7 InsightIDR. Il extrait les champs, les normalise au format UDM et applique une logique spécifique aux données de vulnérabilité, y compris les scores CVSS et les informations sur les exploits, en traitant séparément les formats JSON et syslog. Il mappe également les tentatives d'authentification et les événements de session sur les types d'événements UDM appropriés.

Avant de commencer

Assurez-vous de remplir les conditions préalables suivantes :

  • Instance Google SecOps.
  • Accès privilégié à la console de gestion InsightIDR.

Configurer une clé API dans Rapid7 InsightIDR

  1. Connectez-vous à la plate-forme de commandes InsightIDR.
  2. Cliquez sur Administration.
  3. Cliquez sur Clés API.
  4. Accédez à l'onglet Clés de l'organisation.
  5. Cliquez sur Nouvelle clé d'organisation.
  6. Sélectionnez une organisation et donnez un nom à la clé (par exemple, Google SecOps).
  7. Générez la clé.
  8. Copiez la clé à partir de la nouvelle fenêtre qui l'affiche.

Configurer des flux

Il existe deux points d'entrée différents pour configurer les flux dans la plate-forme Google SecOps :

  • Paramètres SIEM> Flux
  • Plate-forme de contenu > Packs de contenu

Configurer des flux à partir de Paramètres SIEM > Flux

Pour configurer un flux, procédez comme suit :

  1. Accédez à Paramètres SIEM > Flux.
  2. Cliquez sur Add New Feed (Ajouter un flux).
  3. Sur la page suivante, cliquez sur Configurer un seul flux.
  4. Dans le champ Nom du flux, saisissez un nom pour le flux (par exemple, Journaux Rapid7 InsightIDR).
  5. Sélectionnez API tierce comme type de source.
  6. Sélectionnez Rapid7 Insight comme type de journal.
  7. Cliquez sur Suivant.
  8. Spécifiez les valeurs des paramètres d'entrée suivants :
    • En-tête HTTP d'authentification : jeton généré précédemment au format X-Api-Key:<value> (par exemple, X-Api-Key:AAAABBBBCCCC111122223333).
    • Point de terminaison de l'API : saisissez vulnerabilities ou assets.
    • Nom d'hôte de l'API : nom de domaine complet du point de terminaison de l'API Rapid7 au format [region].api.insight.rapid7.com.
  9. Cliquez sur Suivant.
  10. Vérifiez la configuration du flux sur l'écran Finaliser, puis cliquez sur Envoyer.

Configurer des flux depuis le Hub de contenu

Indiquez les valeurs des champs suivants :

  • En-tête HTTP d'authentification : jeton généré précédemment au format X-Api-Key:<value> (par exemple, X-Api-Key:AAAABBBBCCCC111122223333).
  • Point de terminaison de l'API : saisissez vulnerabilities ou assets.
  • Nom d'hôte de l'API : nom de domaine complet du point de terminaison de l'API Rapid7 au format [region].api.insight.rapid7.com.

Options avancées

  • Nom du flux : valeur préremplie qui identifie le flux.
  • Type de source : méthode utilisée pour collecter les journaux dans Google SecOps.
  • Espace de noms de l'élément : espace de noms associé au flux.
  • Libellés d'ingestion : libellés appliqués à tous les événements de ce flux.

Table de mappage UDM

Champ de journal Mappage UDM Logique
added vulnerabilities.first_found Le champ added est converti en code temporel et mappé à vulnerabilities.first_found.
Authentication security_result.detection_fields.value La valeur de Authentication du journal brut est mappée au champ value dans security_result.detection_fields. Le key correspondant est défini sur "Authentification".
critical_vulnerabilities asset.attribute.labels.value La valeur de critical_vulnerabilities est mappée au champ value dans asset.attribute.labels. Le key correspondant est défini sur "Failles critiques".
cves vulnerabilities.cve_id La valeur de cves est mappée sur vulnerabilities.cve_id.
cvss_v2_access_complexity asset.attribute.labels.value La valeur de cvss_v2_access_complexity est mappée au champ value dans asset.attribute.labels. Le key correspondant est défini sur "Complexité d'accès(Ac)".
cvss_v2_availability_impact asset.attribute.labels.value La valeur de cvss_v2_availability_impact est mappée au champ value dans asset.attribute.labels. Le key correspondant est défini sur "Impact sur la disponibilité (A)".
cvss_v2_confidentiality_impact asset.attribute.labels.value La valeur de cvss_v2_confidentiality_impact est mappée au champ value dans asset.attribute.labels. Le key correspondant est défini sur "Impact sur la confidentialité (C)".
cvss_v2_integrity_impact asset.attribute.labels.value La valeur de cvss_v2_integrity_impact est mappée au champ value dans asset.attribute.labels. Le key correspondant est défini sur "Impact sur l'intégrité (I)".
cvss_v2_score vulnerabilities.cvss_base_score La valeur de cvss_v2_score est convertie en chaîne, puis en float, et mappée sur vulnerabilities.cvss_base_score.
cvss_v2_vector vulnerabilities.cvss_vector La valeur de cvss_v2_vector est mappée sur vulnerabilities.cvss_vector.
cvss_v3_availability_impact asset.attribute.labels.value La valeur de cvss_v3_availability_impact est mappée au champ value dans asset.attribute.labels. Le key correspondant est défini sur "Impact sur la disponibilité (A)".
cvss_v3_score vulnerabilities.cvss_base_score La valeur de cvss_v3_score est convertie en chaîne, puis en float, et mappée sur vulnerabilities.cvss_base_score.
cvss_v3_vector vulnerabilities.cvss_vector La valeur de cvss_v3_vector est mappée sur vulnerabilities.cvss_vector.
description vulnerabilities.description La valeur de description du journal brut est mappée sur vulnerabilities.description.
exploits asset.attribute.labels.value La valeur de exploits est convertie en chaîne et mappée au champ value dans asset.attribute.labels. Le key correspondant est "Nombre d'exploits" ou "Rang de l'exploit" en fonction de la présence du champ "rank" dans l'objet exploits.
host_name asset.hostname La valeur de host_name est mappée sur asset.hostname. Si host_name est vide et que ip et mac sont également vides, la valeur de id est utilisée à la place.
id asset.product_object_id La valeur de id est mappée sur asset.product_object_id. Si host_name, ip et mac sont vides, la valeur de id est utilisée pour asset.hostname.
ip asset.ip, entity.asset.ip La valeur de ip est mappée à asset.ip et entity.asset.ip.
last_assessed_for_vulnerabilities vulnerabilities.scan_end_time Le champ last_assessed_for_vulnerabilities est converti en code temporel et mappé à vulnerabilities.scan_end_time.
last_scan_end vulnerabilities.last_found Le champ last_scan_end est converti en code temporel et mappé à vulnerabilities.last_found.
last_scan_start vulnerabilities.first_found Le champ last_scan_start est converti en code temporel et mappé à vulnerabilities.first_found.
links vulnerabilities.cve_id, vulnerabilities.vendor_knowledge_base_article_id Le champ id dans links est mappé à vulnerabilities.cve_id, et le champ href dans links est mappé à vulnerabilities.vendor_knowledge_base_article_id.
mac asset.mac, entity.asset.mac La valeur de mac est convertie en minuscules et mappée à asset.mac et entity.asset.mac.
MessageSourceAddress principal.ip, principal.asset.ip L'adresse IP extraite de MessageSourceAddress est mappée sur principal.ip et principal.asset.ip.
Method network.http.method La valeur de Method est mappée sur network.http.method.
moderate_vulnerabilities asset.attribute.labels.value La valeur de moderate_vulnerabilities est convertie en chaîne et mappée au champ value dans asset.attribute.labels. Le key correspondant est défini sur "Vulnérabilités modérées".
os_architecture asset.hardware.cpu_platform La valeur de os_architecture est mappée sur asset.hardware.cpu_platform.
os_description asset.platform_software.platform_version La valeur de os_description est mappée sur asset.platform_software.platform_version.
os_family asset.platform_software.platform La valeur de os_family est convertie en majuscules et mappée sur asset.platform_software.platform. Une gestion spéciale est appliquée pour "MAC OS X", "IOS", "WINDOWS", "MAC" et "LINUX". Si elle ne correspond à aucune de ces valeurs, elle est définie sur "UNKNOWN_PLATFORM".
Port principal.port La valeur de Port est mappée sur principal.port et convertie en nombre entier.
Principal principal.user.email_addresses Si Principal est une adresse e-mail, elle est mappée à principal.user.email_addresses.
product_event_type metadata.product_event_type La valeur de product_event_type est mappée sur metadata.product_event_type.
Protocol network.application_protocol Si Protocol est défini sur "HTTP" ou "HTTPS", il est mappé sur network.application_protocol.
published vulnerabilities.last_found Le champ published est converti en code temporel et mappé à vulnerabilities.last_found.
Referer network.http.referral_url La valeur de Referer est mappée sur network.http.referral_url.
risk_score asset.attribute.labels.value La valeur de risk_score est convertie en chaîne et mappée au champ value dans asset.attribute.labels. Le key correspondant est défini sur "Score de risque".
security_result_summary security_result.summary La valeur de security_result_summary est mappée sur security_result.summary. S'il correspond au modèle "Nombre total de sessions pour le principal : ", le nombre est extrait et associé à un libellé distinct avec la clé "Session Count" dans security_result.detection_fields.
Session network.session_id La valeur de Session est mappée sur network.session_id.
severe_vulnerabilities asset.attribute.labels.value La valeur de severe_vulnerabilities est convertie en chaîne et mappée au champ value dans asset.attribute.labels. Le key correspondant est défini sur "Failles graves".
severity vulnerabilities.severity, security_result.severity La valeur de severity est convertie en majuscules. Si la valeur est "HIGH", "LOW", "CRITICAL" ou "MEDIUM", elle est mappée sur vulnerabilities.severity. Pour les messages syslog, si le niveau est "Info", il est associé à "INFORMATIONAL" dans security_result.severity. Si la valeur est "Error", elle est mappée sur "ERROR" dans security_result.severity.
severity_score asset.attribute.labels.value La valeur de severity_score est convertie en chaîne et mappée au champ value dans asset.attribute.labels. Le key correspondant est défini sur "Score de gravité".
SiloID security_result.detection_fields.value La valeur de SiloID est mappée au champ value dans security_result.detection_fields. Le key correspondant est défini sur "ID de silo".
SourceModuleName target.resource.name La valeur de SourceModuleName sans guillemets est mappée sur target.resource.name.
SourceModuleType observer.application La valeur de SourceModuleType, sans les guillemets ni les crochets fermants, est mappée à observer.application.
Status network.http.response_code La valeur de Status est mappée sur network.http.response_code et convertie en nombre entier.
tags asset.attribute.labels Pour chaque élément du tableau tags, le champ type est mappé sur key et le champ name est mappé sur value dans asset.attribute.labels.
Thread security_result.detection_fields.value La valeur de Thread est mappée au champ value dans security_result.detection_fields. Le key correspondant est défini sur "Thread".
timestamp event.timestamp, metadata.collected_timestamp, read_only_udm.metadata.event_timestamp Le champ timestamp est converti en code temporel et mappé sur event.timestamp pour les journaux JSON et sur metadata.collected_timestamp pour les événements d'entité. Pour les messages syslog, il est associé à read_only_udm.metadata.event_timestamp.
title vulnerabilities.description La valeur de title est mappée sur vulnerabilities.description.
total_vulnerabilities asset.attribute.labels.value La valeur de total_vulnerabilities est convertie en chaîne et mappée au champ value dans asset.attribute.labels. Le key correspondant est défini sur "Total des failles".
URI security_result.detection_fields.value La valeur de URI est mappée au champ value dans security_result.detection_fields. Le key correspondant est défini sur "URI".
User-Agent network.http.user_agent, network.http.parsed_user_agent La valeur de User-Agent est mappée sur network.http.user_agent. Il est également mappé sur network.http.parsed_user_agent et converti en objet user-agent analysé. Codé en dur sur "Rapid7 Insight". Codé en dur sur "Rapid7 Insight". Codé en dur sur "ASSET" pour les journaux JSON. Défini sur "GENERIC_EVENT" au départ, puis potentiellement modifié en "PROCESS_UNCATEGORIZED", "STATUS_UPDATE" ou "USER_LOGIN" en fonction d'autres champs. Définissez la valeur sur "AUTHTYPE_UNSPECIFIED" pour les événements "USER_LOGIN". Définissez la valeur sur "ALLOW" (AUTORISER) ou "BLOCK" (BLOQUER) en fonction de product_event_type. Codé en dur sur "RAPID7_INSIGHT" pour les messages syslog.
username principal.user.user_display_name La valeur de username, sans guillemets et potentiellement analysée pour l'adresse e-mail, est mappée sur principal.user.user_display_name. L'adresse e-mail extraite, le cas échéant, est mappée sur principal.user.email_addresses.

Vous avez encore besoin d'aide ? Obtenez des réponses de membres de la communauté et de professionnels Google SecOps.