Collecter les journaux Juniper Junos
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.
- Connectez-vous à la CLI Juniper SRX à l'aide de SSH à l'adresse IP de gestion.
- Saisissez
CLI
à l'invite du shell, puis appuyez sur Entrée. - Saisissez
configure
, puis appuyez sur Entrée pour accéder au mode de configuration de l'appareil. - Saisissez les coordonnées ou le point de référence du client.
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.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.
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
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é.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
- Sélectionnez Paramètres du SIEM > Transmetteurs.
- Cliquez sur Ajouter un forwarder.
- Saisissez un nom unique dans le champ Nom du transmettant.
- Cliquez sur Envoyer, puis sur Confirmer. Le forwarder est ajouté, et la fenêtre Ajouter une configuration de collecteur s'affiche.
- Dans le champ Nom du collecteur, saisissez un nom unique pour le collecteur.
- Sélectionnez Juniper Junos comme Type de journal.
- Sélectionnez Syslog comme type de collecteur.
- 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.
- 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.