Collecter les journaux Rapid7 InsightIDR
Cet analyseur gère les journaux au format JSON et SYSLOG de Rapid7 InsightIDR. Il extrait les champs, les normalise en fonction de l'UDM et exécute une logique spécifique pour les données de vulnérabilité, y compris les scores CVSS et les informations sur les failles, en traitant les formats JSON et syslog séparément. 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 disposer d'une instance Google SecOps.
- Assurez-vous de disposer d'un accès privilégié à la console de gestion InsightIDR.
Configurer une clé API dans Rapid7 InsightIDR
- Connectez-vous à la plate-forme de commande 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 attribuez un nom à la clé (par exemple, Google SecOps).
- Générez la clé.
Copiez la clé à partir d'une nouvelle fenêtre qui l'affiche.
Configurer un flux dans Google SecOps pour ingérer les journaux Rapid7 InsightIDR
- Cliquez sur Ajouter.
- Dans le champ Nom du flux, saisissez un nom pour le flux (par exemple, Journaux 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 précédemment généré au format
X-Api-Key:<value>
(par exemple, X-Api-Key:AAAABBBBCCCC111122223333). - Point de terminaison de l'API: saisissez vulnérabilités ou composants.
- Nom d'hôte de l'API: nom de domaine complet (FQDN) du point de terminaison de l'API Rapid7 au format
[region].api.insight.rapid7.com
. - Espace de noms des éléments: espace de noms des éléments.
- Libellés d'ingestion: libellé appliqué aux événements de ce flux.
- En-tête HTTP d'authentification: jeton précédemment généré au format
- Cliquez sur Suivant.
- Vérifiez la configuration du flux dans l'écran Finaliser, puis cliquez sur Envoyer.
Tableau de mappage UDM
Champ de journal | Mappage UDM | Logique |
---|---|---|
added |
vulnerabilities.first_found |
Le champ added est converti en code temporel et mappé sur vulnerabilities.first_found . |
Authentication |
security_result.detection_fields.value |
La valeur de Authentication du journal brut est mappée sur le champ value dans security_result.detection_fields . Le key correspondant est défini sur "Authentication" (Authentification). |
critical_vulnerabilities |
asset.attribute.labels.value |
La valeur de critical_vulnerabilities est mappée sur le 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 sur le champ value dans asset.attribute.labels . La key correspondante est définie sur "Access Complexity(Ac)". |
cvss_v2_availability_impact |
asset.attribute.labels.value |
La valeur de cvss_v2_availability_impact est mappée sur le 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 sur le 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 sur le 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 valeur à virgule flottante, 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 sur le 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 valeur à virgule flottante, 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 sur le champ value dans asset.attribute.labels . Le key correspondant est "Nombre d'exploits" ou "Classement 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 le sont également, 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 est vide et que ip et mac le sont également, la valeur de id est utilisée pour asset.hostname . |
ip |
asset.ip , entity.asset.ip |
La valeur de ip est mappée à la fois sur 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é sur vulnerabilities.scan_end_time . |
last_scan_end |
vulnerabilities.last_found |
Le champ last_scan_end est converti en code temporel et mappé sur vulnerabilities.last_found . |
last_scan_start |
vulnerabilities.first_found |
Le champ last_scan_start est converti en code temporel et mappé sur vulnerabilities.first_found . |
links |
vulnerabilities.cve_id , vulnerabilities.vendor_knowledge_base_article_id |
Le champ id dans links est mappé sur vulnerabilities.cve_id , et le champ href dans links est mappé sur vulnerabilities.vendor_knowledge_base_article_id . |
mac |
asset.mac , entity.asset.mac |
La valeur de mac est convertie en minuscules et mappée à la fois sur 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 sur le 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 aucune de ces valeurs ne correspond, la valeur est définie sur "UNKNOWN_PLATFORM". |
Port |
principal.port |
La valeur de Port est mappée sur principal.port et convertie en entier. |
Principal |
principal.user.email_addresses |
Si Principal est une adresse e-mail, elle est mappée sur 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 "HTTP" ou "HTTPS", il est mappé sur network.application_protocol . |
published |
vulnerabilities.last_found |
Le champ published est converti en code temporel et mappé sur 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 sur le 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 format "Nombre total de sessions pour l'utilisateur 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 sur le 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 la valeur est "Info", elle est mappée sur "INFORMATIONAL" dans security_result.severity . S'il s'agit de"Error", il est mappé 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 sur le 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 sur le 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 guillemets ni crochets de fermeture est mappée sur observer.application . |
Status |
network.http.response_code |
La valeur de Status est mappée sur network.http.response_code et convertie en 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 sur le 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 metadata.collected_timestamp pour les événements d'entité. Pour les messages syslog, il est mappé sur 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 sur le champ value dans asset.attribute.labels . key correspondant est défini sur "Total des failles". |
URI |
security_result.detection_fields.value |
La valeur de URI est mappée sur le 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é. Code codé en dur sur "Rapid7 Insight". Code codé en dur sur "Rapid7 Insight". Coded en dur sur "ASSET" pour les journaux JSON. Initialement défini sur "GENERIC_EVENT", il peut être remplacé par "PROCESS_UNCATEGORIZED", "STATUS_UPDATE" ou "USER_LOGIN" en fonction d'autres champs. Définissez cette valeur sur "AUTHTYPE_UNSPECIFIED" pour les événements "USER_LOGIN". Définissez la valeur sur "ALLOW" ou "BLOCK" en fonction de product_event_type . Code 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 . |
Modifications
2024-05-13
- Ajout de la compatibilité avec le nouveau format des journaux SYSLOG+KV.
2023-05-05
- Amélioration
- Mappage de "tags.type" sur "asset.attribute.labels.key".
- Mappage de "tags.name" sur "asset.attribute.labels.value".
2022-12-15
- Amélioration
- Amélioration de l'analyseur pour analyser les journaux d'application au format Syslog.
- Ajout de modèles Grok pour les journaux de type "Session créée", "Session détruite", "Tentative d'authentification réussie" et "Tentative d'authentification échouée".