Collecter les journaux Juniper Junos

Compatible avec:

Ce document explique comment collecter les journaux Juniper JunOS à l'aide d'un transfert Google Security Operations.

Pour en savoir plus, consultez Ingestion de données dans Google Security Operations.

Un libellé d'ingestion identifie l'analyseur qui normalise les données de journal brutes au format UDM structuré. Les informations de ce document s'appliquent à l'analyseur avec le libellé d'ingestion JUNIPER_JUNOS.

Configurer la journalisation structurée pour un appareil Juniper Networks SRX

Le format de journal structuré extrait des informations des messages de journal. Le format de journal est conforme au protocole Syslog.

  1. Connectez-vous à la CLI Juniper SRX à l'aide de SSH à l'adresse IP de gestion.
  2. Saisissez CLI à l'invite du shell, puis appuyez sur Entrée.
  3. Saisissez configure, puis appuyez sur Entrée pour accéder au mode de configuration de l'appareil.
  4. Saisissez les coordonnées ou le point de référence du client.
  5. Pour mapper les champs au compte utilisateur, exécutez les commandes suivantes:

       set system syslog host FORWARDER_IP_ADDRESS any info
    
       set system syslog host FORWARDER_IP_ADDRESS structured-data
    
    

    Remplacez FORWARDER_IP_ADDRESS par l'adresse IP du transpondeur Google Security Operations.

  6. Pour activer la journalisation structurée pour les journaux de sécurité, utilisez les commandes suivantes:

       set security log mode stream
    
       set security log source-address SRC_IP_ADDRESS
    
       set security log stream SYSLOG_STREAM_NAME host FORWARDER_IP_ADDRESS
    
       set security log stream SYSLOG_STREAM_NAME format sd-syslog
    
    

    Remplacez les éléments suivants :

    • SRC_IP_ADDRESS: adresse IP de l'appareil Juniper SRX.

    • SYSLOG_STREAM_NAME: nom attribué au serveur syslog.

    • FORWARDER_IP_ADDRESS: adresse IP du transpondeur Google Security Operations.

  7. Assurez-vous que la journalisation est activée pour toutes les règles de sécurité. Pour activer la journalisation, exécutez les commandes suivantes:

       set security policies from-zone <zone-name1> to-zone <zone-name2> policy <policy-name> then log session-close
    
       set security policies from-zone <zone-name1> to-zone <zone-name2> policy <policy-name> then log session-init
    
    
  8. Configurez le nom d'hôte sur l'appareil à l'aide de la commande suivante:

       set system host-name HOSTNAME
    
    

    Remplacez HOSTNAME par l'appareil Juniper Networks SRX attribué.

  9. Saisissez commit pour enregistrer les commandes exécutées dans la configuration.

Configurer le forwarder Google Security Operations et le syslog pour ingérer les journaux Juniper JunOS

  1. Sélectionnez Paramètres du SIEM > Transmetteurs.
  2. Cliquez sur Ajouter un forwarder.
  3. Saisissez un nom unique dans le champ Nom du transmettant.
  4. Cliquez sur Envoyer, puis sur Confirmer. Le forwarder est ajouté, et la fenêtre Ajouter une configuration de collecteur s'affiche.
  5. Dans le champ Nom du collecteur, saisissez un nom unique pour le collecteur.
  6. Sélectionnez Juniper Junos comme Type de journal.
  7. Sélectionnez Syslog comme type de collecteur.
  8. Configurez les paramètres d'entrée suivants :
    • Protocole: spécifiez le protocole en tant que UDP.
    • Address (Adresse) : spécifiez l'adresse IP ou le nom d'hôte cible où se trouve le collecteur et où il écoute les données syslog.
    • Port: spécifiez le port cible sur lequel se trouve le collecteur et qui écoute les données syslog.
  9. Cliquez sur Envoyer.

Pour en savoir plus sur les transferts Google Security Operations, consultez la documentation sur les transferts Google Security Operations. Pour en savoir plus sur les exigences de chaque type de forwarder, consultez la section Configuration des forwarders par type. Si vous rencontrez des problèmes lors de la création de transmetteurs, contactez l'assistance Google Security Operations.

Référence du mappage de champs

Cet analyseur extrait des champs des messages syslog Juniper JUNOS, en traitant à la fois les formats clé-valeur et les formats non clé-valeur. Il utilise des modèles Grok pour faire correspondre différentes structures de messages, y compris les journaux du pare-feu, l'activité SSH et les exécutions de commandes, puis met en correspondance les champs extraits avec l'UDM. L'analyseur gère également les journaux au format CEF à l'aide d'un fichier d'inclusion et effectue des actions spécifiques en fonction du contenu du message, comme fusionner les adresses IP et les noms d'utilisateur dans les champs UDM appropriés.

Tableau de mappage UDM

Champ de journal Mappage UDM Logique
DPT target.port Port de destination de la connexion réseau, converti en entier.
DST target.ip Adresse IP de destination de la connexion réseau.
FLAG additional.fields{}.key: "FLAG", additional.fields{}.value.string_value: valeur de FLAG Option TCP associée à la connexion réseau.
ID additional.fields{}.key: "ID", additional.fields{}.value.string_value: valeur de ID Champ d'identification de l'adresse IP.
IN additional.fields{}.key: "IN", additional.fields{}.value.string_value: valeur de IN Interface réseau entrante.
LEN additional.fields{}.key: "LEN", additional.fields{}.value.string_value: valeur de LEN Longueur du paquet IP.
MAC principal.mac Adresse MAC extraite du champ MAC.
OUT additional.fields{}.key: "OUT", additional.fields{}.value.string_value: valeur de OUT Interface réseau sortante.
PREC additional.fields{}.key: "PREC", additional.fields{}.value.string_value: valeur de PREC Champ "Precedence" (Priorité) de l'en-tête IP.
PROTO network.ip_protocol Protocole IP utilisé dans la connexion réseau.
RES additional.fields{}.key: "RES", additional.fields{}.value.string_value: valeur de RES Champ réservé dans l'en-tête TCP.
SPT principal.port Port source de la connexion réseau, converti en entier.
SRC principal.ip Adresse IP source de la connexion réseau.
TOS additional.fields{}.key: "TOS", additional.fields{}.value.string_value: valeur de TOS Champ "Type de service" de l'en-tête IP.
TTL network.dns.additional.ttl Valeur de durée de vie, convertie en entier non signé.
URGP additional.fields{}.key: "URGP", additional.fields{}.value.string_value: valeur de URGP Champ Urgent pointer dans l'en-tête TCP.
WINDOW additional.fields{}.key: "WINDOW_SIZE", additional.fields{}.value.string_value: valeur de WINDOW Taille de la fenêtre TCP.
action security_result.action Action effectuée par le pare-feu, extraite du message CEF.
agt observer.ip Adresse IP de l'agent.
amac target.mac Adresse MAC de la cible, convertie en minuscules et avec les traits d'union remplacés par des deux-points.
app target.application Application impliquée dans l'événement.
artz observer.zone Fuseau horaire de l'observateur.
atz target.location.country_or_region Fuseau horaire cible.
categoryBehavior additional.fields{}.key: "Comportement de la catégorie", additional.fields{}.value.string_value: valeur de categoryBehavior sans barre oblique Comportement de la catégorie.
categoryDeviceGroup additional.fields{}.key: "Groupe d'appareils de la catégorie", additional.fields{}.value.string_value: valeur de categoryDeviceGroup sans barre oblique Groupe d'appareils de la catégorie.
categoryObject additional.fields{}.key: "Objet de catégorie", additional.fields{}.value.string_value: valeur de categoryObject sans barre oblique Objet de catégorie.
categoryOutcome additional.fields{}.key: "Résultat de la catégorie", additional.fields{}.value.string_value: valeur de categoryOutcome sans barre oblique Résultat de la catégorie.
categorySignificance additional.fields{}.key: "Significance de la catégorie", additional.fields{}.value.string_value: valeur de categorySignificance Importance de la catégorie.
command target.process.command_line La commande a été exécutée.
cs1Label additional.fields{}.key: cs1Label, additional.fields{}.value.string_value: valeur du champ CEF correspondant Libellé et valeur du champ de chaîne personnalisée 1 du message CEF.
cs2Label additional.fields{}.key: cs2Label, additional.fields{}.value.string_value: valeur du champ CEF correspondant Libellé et valeur du champ de chaîne personnalisée 2 du message CEF.
cs3Label additional.fields{}.key: cs3Label, additional.fields{}.value.string_value: valeur du champ CEF correspondant Libellé et valeur du champ de chaîne personnalisé 3 du message CEF.
cs4Label additional.fields{}.key: cs4Label, additional.fields{}.value.string_value: valeur du champ CEF correspondant Libellé et valeur du champ de chaîne personnalisée 4 du message CEF.
cs5Label additional.fields{}.key: cs5Label, additional.fields{}.value.string_value: valeur du champ CEF correspondant Libellé et valeur du champ de chaîne personnalisée 5 du message CEF.
cs6Label additional.fields{}.key: cs6Label, additional.fields{}.value.string_value: valeur du champ CEF correspondant Libellé et valeur du champ de chaîne personnalisé 6 du message CEF.
dhost target.hostname Nom d'hôte de destination.
deviceCustomString1 additional.fields{}.key: cs1Label, additional.fields{}.value.string_value: valeur de deviceCustomString1 Chaîne personnalisée de l'appareil 1.
deviceCustomString2 additional.fields{}.key: cs2Label, additional.fields{}.value.string_value: valeur de deviceCustomString2 Chaîne personnalisée de l'appareil 2.
deviceCustomString3 additional.fields{}.key: cs3Label, additional.fields{}.value.string_value: valeur de deviceCustomString3 Chaîne personnalisée de l'appareil 3.
deviceCustomString4 additional.fields{}.key: cs4Label, additional.fields{}.value.string_value: valeur de deviceCustomString4 Chaîne personnalisée de l'appareil 4.
deviceCustomString5 additional.fields{}.key: cs5Label, additional.fields{}.value.string_value: valeur de deviceCustomString5 Chaîne personnalisée de l'appareil 5.
deviceCustomString6 additional.fields{}.key: cs6Label, additional.fields{}.value.string_value: valeur de deviceCustomString6 Chaîne personnalisée de l'appareil 6
deviceDirection network.direction Sens du trafic réseau.
deviceEventClassId additional.fields{}.key: "eventId", additional.fields{}.value.string_value: valeur de deviceEventClassId ID de la classe d'événements de l'appareil.
deviceFacility observer.product.subproduct Équipement de l'appareil.
deviceProcessName about.process.command_line Nom du processus de l'appareil.
deviceSeverity security_result.severity Gravité de l'appareil.
deviceTimeZone observer.zone Fuseau horaire de l'appareil.
deviceVendor metadata.vendor_name Fournisseur de l'appareil.
deviceVersion metadata.product_version Version de l'appareil.
dpt target.port Port de destination.
dst target.ip Adresse IP de destination.
duser target.user.user_display_name Compte utilisateur de destination.
eventId additional.fields{}.key: "eventId", additional.fields{}.value.string_value: valeur de eventId ID de l'événement.
event_time metadata.event_timestamp Heure à laquelle l'événement s'est produit, extraite du message.
firewall_action security_result.action_details Action effectuée par le pare-feu.
host principal.hostname, intermediary.hostname Nom d'hôte de l'appareil générant le journal. Utilisé à la fois pour le principal et l'intermédiaire dans différents cas.
msg security_result.summary Message associé à l'événement, utilisé comme résumé du résultat de sécurité.
name metadata.product_event_type Nom de l'événement.
process_name additional.fields{}.key: "nom_processus", additional.fields{}.value.string_value: valeur de process_name Nom du processus.
p_id target.process.pid ID du processus, converti en chaîne.
sha256 principal.process.file.sha256 Hachage SHA-256 d'un fichier, extrait des informations de clé SSH2.
shost principal.hostname Nom d'hôte source
source_address principal.ip Adresse IP source.
source_port principal.port Port source, converti en entier.
src principal.ip Adresse IP source.
src_ip principal.ip Adresse IP source.
src_port principal.port Port source, converti en entier.
ssh2 security_result.detection_fields{}.key: "ssh2", security_result.detection_fields{}.value: valeur de ssh2 Informations sur la clé SSH2.
subtype metadata.product_event_type Sous-type de l'événement.
task_summary security_result.description Résumé de la tâche, utilisé comme description du résultat de sécurité.
timestamp metadata.event_timestamp Horodatage de l'événement.
user target.user.userid Utilisateur associé à l'événement.
username principal.user.userid Nom d'utilisateur associé à l'événement.
user_name principal.user.userid Nom d'utilisateur.
metadata.vendor_name Code codé en dur sur "Juniper Firewall". Code codé en dur sur "Juniper Firewall". Code codé en dur sur "JUNIPER_JUNOS". Déterminé par la logique de l'analyseur en fonction du contenu du journal. La valeur par défaut est "STATUS_UPDATE" si le message n'est pas un message CEF et qu'aucun autre type d'événement spécifique n'est identifié. Définissez cette valeur sur "NETWORK_HTTP" pour les messages CEF. Si aucun champ desc n'est présent, ce champ est renseigné avec l'message_description extrait du message de journal brut.

Modifications

2024-05-02

  • Enhancement-
  • Ajout de modèles Grok pour prendre en charge les nouveaux journaux au format SYSLOG + KV.

2023-10-25

  • Enhancement-
  • Ajout de modèles Grok pour analyser les journaux non analysés.
  • "source_port" a été mappé sur "principal.port".
  • Mappage de "source_address" sur "principal.ip".
  • "user_name" a été mappé sur "target.user.userid".
  • "application_name" a été mappé sur "target.application".
  • Mappage de "p_id" sur "target.process.pid".
  • Ajout de la vérification "invalid_pattern" avant le mappage KV.
  • Ajout d'un modèle Grok pour mapper "security_result.description" lorsque "description_present" est défini sur "false".

2023-08-17

  • Enhancement-
  • Ajout d'un modèle Grok aux journaux non analysés.
  • Mappage de "msg" sur "security_result.summary".
  • Mappage de "src_ip" sur "principal.ip".
  • "user" a été mappé sur "target.user.userid".
  • "username" a été mappé sur "principal.user.userid".
  • "command" a été mappé sur "target.process.command_line".
  • Mappage de "src_port" sur "principal.port".
  • "ssh2" a été mappé sur "security_result.detection_fields".
  • "sha256" a été mappé sur "principal.process.file.sha256".
  • Mappage de "desc" sur "sec_result.summary".
  • "mac-address" a été mappé sur "principal.mac".
  • "host" a été mappé sur "principal.hostname" si event_type est "STATUS_UPDATE".

2023-01-15

  • Enhancement-
  • Modification du format Grok pour prendre en charge les journaux non analysés contenant les types "UI_CMDLINE_READ_LINE", "UI_COMMIT_PROGRESS" et "UI_CHILD_START".
  • "UI_CFG_AUDIT_OTHER", "UI_LOGIN_EVENT", "UI_CHILD_STATUS", "UI_LOGOUT_EVENT", "UI_LOAD_EVENT",
  • "JTASK_IO_CONNECT_FAILED", "UI_AUTH_EVENT", "UI_NETCONF_CMD", "UI_COMMIT_NO_MASTER_PASSWORD", "UI_CFG_AUDIT_SET", "UI_JUNOSCRIPT_CMD",
  • "SNMPD_AUTH_FAILURE", "UI_CFG_AUDIT_NEW", "UI_COMMIT" , "LIBJNX_LOGIN_ACCOUNT_LOCKED", "UI_COMMIT_COMPLETED",
  • "PAM_USER_LOCK_LOGIN_REQUESTS_DENIED", "RTPERF_CPU_USAGE_OK", "RTPERF_CPU_THRESHOLD_EXCEEDED", "LIBJNX_LOGIN_ACCOUNT_UNLOCKED",
  • "JSRPD_SET_OTHER_INTF_MON_FAIL", "JSRPD_SET_SCHED_MON_FAILURE", "UI_CHILD_WAITPID", "UI_DBASE_LOGIN_EVENT".

2022-05-02

  • Nouveau parseur par défaut.