Raccogliere i log Juniper Junos
Questo documento descrive come raccogliere i log di Juniper Junos utilizzando un forwarder di Google Security Operations.
Per ulteriori informazioni, consulta Importazione dei dati in Google Security Operations.
Un'etichetta di importazione identifica l'analizzatore sintattico che normalizza i dati dei log non elaborati
in formato UDM strutturato. Le informazioni contenute in questo documento si applicano al parser con l'etichetta di importazione JUNIPER_JUNOS
.
Configurare il logging strutturato per un dispositivo Juniper Networks SRX
Il formato dei log strutturati estrae le informazioni dai messaggi di log. Il formato dei log è conforme al protocollo Syslog.
- Accedi alla CLI Juniper SRX utilizzando SSH per il relativo indirizzo IP di gestione.
- Digita
CLI
al prompt della shell e premi Invio. - Digita
configure
e premi Invio per accedere alla modalità di configurazione del dispositivo. - Inserisci i dati di contatto o il punto di riferimento del cliente.
Per mappare i campi all'account utente, esegui i seguenti comandi:
set system syslog host FORWARDER_IP_ADDRESS any info set system syslog host FORWARDER_IP_ADDRESS structured-data
Sostituisci
FORWARDER_IP_ADDRESS
con l'indirizzo IP del forwarder di Google Security Operations.Per attivare la registrazione strutturata per i log di sicurezza, utilizza i seguenti comandi:
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
Sostituisci quanto segue:
SRC_IP_ADDRESS
: l'indirizzo IP del dispositivo Juniper SRX.SYSLOG_STREAM_NAME
: il nome assegnato al server syslog.FORWARDER_IP_ADDRESS
: l'indirizzo IP del forwarder di Google Security Operations.
Assicurati che il logging sia abilitato in tutti i criteri di sicurezza. Per abilitare il logging, esegui i seguenti comandi:
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
Configura il nome host sul dispositivo utilizzando il seguente comando:
set system host-name HOSTNAME
Sostituisci
HOSTNAME
con il dispositivo Juniper Networks SRX assegnato.Inserisci
commit
per salvare i comandi eseguiti nella configurazione.
Configura il forwarder di Google Security Operations e syslog per importare i log di Juniper Junos
- Seleziona Impostazioni SIEM > Inoltratori.
- Fai clic su Aggiungi nuovo mittente.
- Inserisci un nome univoco nel campo Nome mittente.
- Fai clic su Invia e poi su Conferma. Il forwarder viene aggiunto e viene visualizzata la finestra Aggiungi configurazione del collettore.
- Nel campo Nome del raccoglitore, inserisci un nome univoco per il raccoglitore.
- Seleziona Juniper Junos come Tipo di log.
- Seleziona Syslog come Tipo di collettore.
- Configura i seguenti parametri di input:
- Protocollo: specifica il protocollo come UDP.
- Indirizzo: specifica l'indirizzo IP o il nome host di destinazione in cui risiede il raccoglitore e ascolta i dati syslog.
- Porta: specifica la porta di destinazione in cui risiede il raccoglitore e che ascolta i dati syslog.
- Fai clic su Invia.
Per ulteriori informazioni sui forwarder di Google Security Operations, consulta la documentazione sui forwarder di Google Security Operations. Per informazioni sui requisiti per ciascun tipo di inoltro, consulta Configurazione degli inoltratori per tipo. Se riscontri problemi durante la creazione dei reindirizzamenti, contatta l'assistenza di Google Security Operations.
Riferimento alla mappatura dei campi
Questo parser estrae i campi dai messaggi syslog Juniper JUNOS, gestendo sia i formati chiave-valore che non chiave-valore. Utilizza pattern grok per abbinare varie strutture di messaggi, tra cui log della firewall, attività SSH ed esecuzioni di comandi, quindi mappa i campi estratti all'UDM. Il parser gestisce anche i log in formato CEF utilizzando un file include ed esegue azioni specifiche in base ai contenuti del messaggio, ad esempio l'unione di indirizzi IP e nomi utente in campi UDM appropriati.
Tabella di mappatura UDM
Campo log | Mappatura UDM | Logica |
---|---|---|
DPT |
target.port |
La porta di destinazione della connessione di rete, convertita in un numero intero. |
DST |
target.ip |
L'indirizzo IP di destinazione della connessione di rete. |
FLAG |
additional.fields{}.key : "FLAG", additional.fields{}.value.string_value : valore di FLAG |
Il flag TCP associato alla connessione di rete. |
ID |
additional.fields{}.key : "ID", additional.fields{}.value.string_value : valore di ID |
Il campo di identificazione IP. |
IN |
additional.fields{}.key : "IN", additional.fields{}.value.string_value : valore di IN |
L'interfaccia di rete in entrata. |
LEN |
additional.fields{}.key : "LEN", additional.fields{}.value.string_value : valore di LEN |
La lunghezza del pacchetto IP. |
MAC |
principal.mac |
L'indirizzo MAC estratto dal campo MAC . |
OUT |
additional.fields{}.key : "OUT", additional.fields{}.value.string_value : valore di OUT |
L'interfaccia di rete in uscita. |
PREC |
additional.fields{}.key : "PREC", additional.fields{}.value.string_value : valore di PREC |
Il campo Precedence nell'intestazione IP. |
PROTO |
network.ip_protocol |
Il protocollo IP utilizzato nella connessione di rete. |
RES |
additional.fields{}.key : "RES", additional.fields{}.value.string_value : valore di RES |
Campo riservato nell'intestazione TCP. |
SPT |
principal.port |
La porta di origine della connessione di rete, convertita in un numero intero. |
SRC |
principal.ip |
L'indirizzo IP di origine della connessione di rete. |
TOS |
additional.fields{}.key : "TdS", additional.fields{}.value.string_value : valore di TOS |
Il campo Tipo di servizio nell'intestazione IP. |
TTL |
network.dns.additional.ttl |
Valore TTL (Time To Live), convertito in un numero intero non firmato. |
URGP |
additional.fields{}.key : "URGP", additional.fields{}.value.string_value : valore di URGP |
Campo Urgent pointer nell'intestazione TCP. |
WINDOW |
additional.fields{}.key : "WINDOW_SIZE", additional.fields{}.value.string_value : valore di WINDOW |
Le dimensioni della finestra TCP. |
action |
security_result.action |
L'azione intrapresa dal firewall, estratta dal messaggio CEF. |
agt |
observer.ip |
L'indirizzo IP dell'agente. |
amac |
target.mac |
L'indirizzo MAC della destinazione, convertito in minuscolo e con i trattini sostituiti da due punti. |
app |
target.application |
L'applicazione coinvolta nell'evento. |
artz |
observer.zone |
Il fuso orario dell'osservatore. |
atz |
target.location.country_or_region |
Il fuso orario di destinazione. |
categoryBehavior |
additional.fields{}.key : "Comportamento della categoria", additional.fields{}.value.string_value : valore di categoryBehavior con le barre oblique rimosse |
Il comportamento della categoria. |
categoryDeviceGroup |
additional.fields{}.key : "Gruppo di dispositivi della categoria", additional.fields{}.value.string_value : valore di categoryDeviceGroup con le barre oblique rimosse |
Il gruppo di dispositivi della categoria. |
categoryObject |
additional.fields{}.key : "Oggetto categoria", additional.fields{}.value.string_value : valore di categoryObject con le barre oblique rimosse |
L'oggetto categoria. |
categoryOutcome |
additional.fields{}.key : "Risultato categoria", additional.fields{}.value.string_value : valore di categoryOutcome con le barre oblique rimosse |
Il risultato della categoria. |
categorySignificance |
additional.fields{}.key : "Significatività della categoria", additional.fields{}.value.string_value : valore di categorySignificance |
L'importanza della categoria. |
command |
target.process.command_line |
Il comando è stato eseguito. |
cs1Label |
additional.fields{}.key : cs1Label , additional.fields{}.value.string_value : valore del campo CEF corrispondente |
Etichetta e valore del campo stringa personalizzata 1 del messaggio CEF. |
cs2Label |
additional.fields{}.key : cs2Label , additional.fields{}.value.string_value : valore del campo CEF corrispondente |
Etichetta e valore del campo stringa personalizzato 2 del messaggio CEF. |
cs3Label |
additional.fields{}.key : cs3Label , additional.fields{}.value.string_value : valore del campo CEF corrispondente |
Etichetta e valore del campo stringa personalizzato 3 del messaggio CEF. |
cs4Label |
additional.fields{}.key : cs4Label , additional.fields{}.value.string_value : valore del campo CEF corrispondente |
Etichetta e valore del campo stringa personalizzata 4 del messaggio CEF. |
cs5Label |
additional.fields{}.key : cs5Label , additional.fields{}.value.string_value : valore del campo CEF corrispondente |
Etichetta e valore del campo stringa personalizzata 5 del messaggio CEF. |
cs6Label |
additional.fields{}.key : cs6Label , additional.fields{}.value.string_value : valore del campo CEF corrispondente |
Etichetta e valore del campo stringa personalizzato 6 del messaggio CEF. |
dhost |
target.hostname |
Nome host di destinazione. |
deviceCustomString1 |
additional.fields{}.key : cs1Label , additional.fields{}.value.string_value : valore di deviceCustomString1 |
Stringa personalizzata del dispositivo 1. |
deviceCustomString2 |
additional.fields{}.key : cs2Label , additional.fields{}.value.string_value : valore di deviceCustomString2 |
Stringa personalizzata del dispositivo 2. |
deviceCustomString3 |
additional.fields{}.key : cs3Label , additional.fields{}.value.string_value : valore di deviceCustomString3 |
Stringa personalizzata del dispositivo 3. |
deviceCustomString4 |
additional.fields{}.key : cs4Label , additional.fields{}.value.string_value : valore di deviceCustomString4 |
Stringa personalizzata del dispositivo 4. |
deviceCustomString5 |
additional.fields{}.key : cs5Label , additional.fields{}.value.string_value : valore di deviceCustomString5 |
Stringa personalizzata del dispositivo 5. |
deviceCustomString6 |
additional.fields{}.key : cs6Label , additional.fields{}.value.string_value : valore di deviceCustomString6 |
Stringa personalizzata del dispositivo 6. |
deviceDirection |
network.direction |
La direzione del traffico di rete. |
deviceEventClassId |
additional.fields{}.key : "eventId", additional.fields{}.value.string_value : valore di deviceEventClassId |
L'ID della classe di eventi del dispositivo. |
deviceFacility |
observer.product.subproduct |
La struttura del dispositivo. |
deviceProcessName |
about.process.command_line |
Il nome del processo del dispositivo. |
deviceSeverity |
security_result.severity |
La gravità del dispositivo. |
deviceTimeZone |
observer.zone |
Il fuso orario del dispositivo. |
deviceVendor |
metadata.vendor_name |
Il fornitore del dispositivo. |
deviceVersion |
metadata.product_version |
La versione del dispositivo. |
dpt |
target.port |
La porta di destinazione. |
dst |
target.ip |
L'indirizzo IP di destinazione. |
duser |
target.user.user_display_name |
L'utente di destinazione. |
eventId |
additional.fields{}.key : "eventId", additional.fields{}.value.string_value : valore di eventId |
ID evento. |
event_time |
metadata.event_timestamp |
L'ora in cui si è verificato l'evento, analizzata dal messaggio. |
firewall_action |
security_result.action_details |
L'azione intrapresa dal firewall. |
host |
principal.hostname , intermediary.hostname |
Il nome host del dispositivo che genera il log. Utilizzato sia per il principale che per l'intermediario in casi diversi. |
msg |
security_result.summary |
Il messaggio associato all'evento, utilizzato come riepilogo del risultato di sicurezza. |
name |
metadata.product_event_type |
Il nome dell'evento. |
process_name |
additional.fields{}.key : "process_name", additional.fields{}.value.string_value : valore di process_name |
Il nome del processo. |
p_id |
target.process.pid |
L'ID processo, convertito in una stringa. |
sha256 |
principal.process.file.sha256 |
L'hash SHA256 di un file, estratto dalle informazioni sulla chiave SSH2. |
shost |
principal.hostname |
Nome host di origine. |
source_address |
principal.ip |
L'indirizzo IP di origine. |
source_port |
principal.port |
La porta di origine, convertita in un numero intero. |
src |
principal.ip |
L'indirizzo IP di origine. |
src_ip |
principal.ip |
L'indirizzo IP di origine. |
src_port |
principal.port |
La porta di origine, convertita in un numero intero. |
ssh2 |
security_result.detection_fields{}.key : "ssh2", security_result.detection_fields{}.value : valore di ssh2 |
Informazioni sulla chiave SSH2. |
subtype |
metadata.product_event_type |
Il sottotipo di evento. |
task_summary |
security_result.description |
Il riepilogo dell'attività, utilizzato come descrizione del risultato di sicurezza. |
timestamp |
metadata.event_timestamp |
Il timestamp dell'evento. |
user |
target.user.userid |
L'utente associato all'evento. |
username |
principal.user.userid |
Il nome utente associato all'evento. |
user_name |
principal.user.userid |
Il nome utente. |
metadata.vendor_name |
Hardcoded su "Juniper Firewall". Hardcoded su "Juniper Firewall". Hardcoded su "JUNIPER_JUNOS". Determinato dalla logica dell'analizzatore in base ai contenuti del log. Il valore predefinito è "STATUS_UPDATE" se non si tratta di un messaggio CEF e non viene identificato nessun altro tipo di evento specifico. Impostato su "NETWORK_HTTP" per i messaggi CEF. Se non è presente alcun campo desc , questo campo viene compilato con il valore message_description estratto dal messaggio di log non elaborato. |
Modifiche
2024-05-02
- Enhancement-
- Sono stati aggiunti pattern Grok per supportare i nuovi log nel formato SYSLOG + KV.
2023-10-25
- Enhancement-
- Sono stati aggiunti pattern Grok per analizzare i log non analizzati.
- "source_port" è stato mappato a "principal.port".
- "source_address" è stato mappato a "principal.ip".
- "user_name" è stato mappato a "target.user.userid".
- "application_name" è stato mappato a "target.application".
- "p_id" è stato mappato a "target.process.pid".
- È stato aggiunto il controllo "invalid_pattern" prima della mappatura KV.
- È stato aggiunto un pattern Grok per mappare "security_result.description" quando "description_present" è falso.
2023-08-17
- Enhancement-
- È stato aggiunto il pattern Grok ai log non analizzati analizzati.
- "msg" è stato mappato a "security_result.summary".
- "src_ip" è stato mappato a "principal.ip".
- "user" è stato mappato a "target.user.userid".
- "username" è stato mappato a "principal.user.userid".
- "command" è stato mappato a "target.process.command_line".
- "src_port" è stato mappato a "principal.port".
- "ssh2" è stato mappato a "security_result.detection_fields".
- "sha256" è stato mappato a "principal.process.file.sha256".
- "desc" è stato mappato a "sec_result.summary".
- "mac-address" è stato mappato a "principal.mac".
- "host" è stato mappato a "principal.hostname" se event_type è "STATUS_UPDATE".
2023-01-15
- Enhancement-
- Pattern Grok modificato per supportare i log non analizzati contenenti il tipo "UI_CMDLINE_READ_LINE", "UI_COMMIT_PROGRESS", "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
- Nuovo parser predefinito.