Collecter les journaux Rapid7 InsightIDR
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
- Connectez-vous à la plate-forme de commandes InsightIDR.
- Cliquez sur Administration.
- Cliquez sur Clés API.
- Accédez à l'onglet Clés de l'organisation.
- Cliquez sur Nouvelle clé d'organisation.
- Sélectionnez une organisation et donnez un nom à la clé (par exemple, Google SecOps).
- Générez la clé.
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 :
- Accédez à Paramètres SIEM > Flux.
- Cliquez sur Add New Feed (Ajouter un flux).
- Sur la page suivante, cliquez sur Configurer un seul flux.
- Dans le champ Nom du flux, saisissez un nom pour le flux (par exemple, Journaux Rapid7 InsightIDR).
- Sélectionnez API tierce comme type de source.
- Sélectionnez Rapid7 Insight comme type de journal.
- Cliquez sur Suivant.
- 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
.
- En-tête HTTP d'authentification : jeton généré précédemment au format
- Cliquez sur Suivant.
- 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 : 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.