Recopila registros del firewall Juniper NetScreen
En este documento, se explica cómo configurar los registros del firewall Juniper NetScreen para que se envíen a Google Security Operations. El analizador extrae campos con patrones de grok y controla varios formatos de syslog y cargas útiles de JSON. Luego, asigna estos campos extraídos a la UDM y clasifica los eventos como conexiones de red, accesos de usuarios, actualizaciones de estado o eventos genéricos según la presencia de campos específicos, como direcciones IP, nombres de usuario y puertos.
Antes de comenzar
- Asegúrate de tener acceso de administrador al firewall Juniper NetScreen.
- Asegúrate de tener una instancia de Google Security Operations.
Obtén el archivo de autenticación de transferencia de Google SecOps
- Accede a la consola de Google SecOps.
- Ve a Configuración de SIEM > Agentes de recopilación.
- Descarga el archivo de autenticación de transferencia. Guarda el archivo de forma segura en el sistema en el que se instalará Bindplane.
Obtén el ID de cliente de Google SecOps
- Accede a la consola de Google SecOps.
- Ve a Configuración de SIEM > Perfil.
- Copia y guarda el ID de cliente de la sección Detalles de la organización.
Instala el agente de Bindplane
Instalación de Windows
- Abre el símbolo del sistema o PowerShell como administrador.
Ejecuta el siguiente comando:
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
Instalación de Linux
- Abre una terminal con privilegios de raíz o sudo.
Ejecuta el siguiente comando:
sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
Recursos de instalación adicionales
- Para obtener más opciones de instalación, consulta esta guía de instalación.
Configura el agente de Bindplane para transferir Syslog y enviarlo a Google SecOps
Accede al archivo de configuración:
- Ubica el archivo
config.yaml
. Por lo general, se encuentra en el directorio/etc/bindplane-agent/
en Linux o en el directorio de instalación en Windows. - Abre el archivo con un editor de texto (por ejemplo,
nano
,vi
o Bloc de notas).
- Ubica el archivo
Edita el archivo
config.yaml
de la siguiente manera:receivers: tcplog: # Replace the port and IP address as required listen_address: "0.0.0.0:54525" exporters: chronicle/chronicle_w_labels: compression: gzip # Adjust the path to the credentials file you downloaded in Step 1 creds: '/path/to/ingestion-authentication-file.json' # Replace with your actual customer ID from Step 2 customer_id: <customer_id> endpoint: malachiteingestion-pa.googleapis.com # Add optional ingestion labels for better organization ingestion_labels: log_type: SYSLOG namespace: juniper_firewall raw_log_field: body service: pipelines: logs/source0__chronicle_w_labels-0: receivers: - tcplog exporters: - chronicle/chronicle_w_labels
Reemplaza el puerto y la dirección IP según sea necesario en tu infraestructura.
Reemplaza
<customer_id>
por el ID de cliente real.Actualiza
/path/to/ingestion-authentication-file.json
a la ruta de acceso en la que se guardó el archivo de autenticación en la sección Obtén el archivo de autenticación de transferencia de Google SecOps.
Reinicia el agente de Bindplane para aplicar los cambios.
Para reiniciar el agente de Bindplane en Linux, ejecuta el siguiente comando:
sudo systemctl restart bindplane-agent
Para reiniciar el agente de Bindplane en Windows, puedes usar la consola Services o ingresar el siguiente comando:
net stop BindPlaneAgent && net start BindPlaneAgent
Configura el firewall NetScreen de Juniper Networks
- Accede a la interfaz web de Juniper NetScreen.
- Selecciona Configuración > Configuración de informes > Configuración de registros.
- Selecciona todas las casillas de verificación de Gravedad del evento.
- Haz clic en Aplicar.
- Selecciona Configuración > Configuración de informes > Syslog.
- Selecciona la casilla de verificación Habilitar mensajes de Syslog.
- En la lista Interfaz de origen, selecciona la interfaz NetScreen desde la que se deben enviar los paquetes de syslog.
- En la sección Syslog servers, selecciona la casilla de verificación Enable y proporciona la siguiente información:
- IP/Nombre de host: Ingresa la dirección IP
Bindplane
. - Puerto: Ingresa el número de puerto
Bindplane
. - Instalación de MDR: Selecciona el nivel de la instalación Local0.
- Facility: Selecciona el nivel de la instalación Local0.
- IP/Nombre de host: Ingresa la dirección IP
- Haz clic en Aplicar.
Tabla de asignación de UDM
Campo de registro | Asignación de UDM | Lógica |
---|---|---|
ACTION |
security_result.action_details |
Se asignan directamente desde el campo ACTION extraído a través de los filtros GROK y KV. |
APPLICATION |
principal.application |
Se asignan directamente desde el campo APPLICATION extraído a través de los filtros GROK y KV. |
application |
target.application |
Se asignan directamente desde el campo application extraído a través de GROK. |
attack-name |
security_result.threat_name |
Se asignan directamente desde el campo attack-name extraído a través de GROK. |
bytes-from-client |
network.sent_bytes |
Se asignan directamente desde el campo bytes-from-client extraído a través de GROK. |
bytes-from-server |
network.received_bytes |
Se asignan directamente desde el campo bytes-from-server extraído a través de GROK. |
command |
target.process.command_line |
Se asignan directamente desde el campo command extraído a través de GROK. |
destination-address |
target.ip |
Se asignan directamente desde el campo destination-address extraído a través de GROK. |
destination-port |
target.port |
Se asignan directamente desde el campo destination-port extraído a través de GROK. |
destination-zone |
additional.fields[].value.string_value |
Se asignan directamente desde el campo destination-zone extraído a través de los filtros GROK y KV. key se configura como destination-zone . |
destination_zone-name |
security_result.detection_fields[].value |
Se asignan directamente desde el campo destination_zone-name extraído a través de GROK. key se configura como dstzone . |
dst-nat-rule-name |
security_result.detection_fields[].value |
Se asignan directamente desde el campo dst-nat-rule-name extraído a través de GROK. key se configura como dst-nat-rule-name . |
dst-nat-rule-type |
security_result.detection_fields[].value |
Se asignan directamente desde el campo dst-nat-rule-type extraído a través de GROK. key se configura como dst-nat-rule-type . |
elapsed-time |
network.session_duration.seconds |
Se asignan directamente desde el campo elapsed-time extraído a través de GROK. |
encrypted |
security_result.detection_fields[].value |
Se asignan directamente desde el campo encrypted extraído a través de GROK. key se configura como encrypted . |
event_time |
metadata.event_timestamp |
La marca de tiempo se extrae del registro sin procesar con varios patrones de GROK, dando prioridad a event_time , luego a TIMESTAMP_ISO8601 y, por último, a SYSLOGTIMESTAMP . Luego, se convierte en un objeto de marca de tiempo. |
host |
principal.hostname , intermediary.hostname |
Si type es NetScreen , se asigna a intermediary.hostname . De lo contrario, se asigna a principal.hostname . |
host_ip |
intermediary.ip |
Se asignan directamente desde el campo host_ip extraído a través de GROK. |
icmp-type |
network.icmp_type |
Se asignan directamente desde el campo icmp-type extraído a través de GROK. |
ident |
target.application |
Se asigna directamente desde el campo ident extraído a través de filtros GROK y JSON. |
inbound-bytes |
network.received_bytes |
Se asignan directamente desde el campo inbound-bytes extraído a través de GROK. |
inbound-packets |
network.received_packets |
Se asignan directamente desde el campo inbound-packets extraído a través de GROK. |
ip |
principal.ip , intermediary.ip |
Si type es NetScreen , se asigna a intermediary.ip . De lo contrario, se asigna a principal.hostname . |
message |
security_result.description |
Si el mensaje es JSON y no se incluye el campo log_message_data , se usa el campo message como descripción. |
msg_data |
security_result.summary |
Se asignan directamente desde el campo msg_data extraído a través de GROK. |
nat-destination-address |
target.nat_ip |
Se asignan directamente desde el campo nat-destination-address extraído a través de GROK. |
nat-destination-port |
target.nat_port |
Se asignan directamente desde el campo nat-destination-port extraído a través de GROK. |
nat-source-address |
principal.nat_ip |
Se asignan directamente desde el campo nat-source-address extraído a través de GROK. |
nat-source-port |
principal.nat_port |
Se asignan directamente desde el campo nat-source-port extraído a través de GROK. |
outbound-bytes |
network.sent_bytes |
Se asignan directamente desde el campo outbound-bytes extraído a través de GROK. |
outbound-packets |
network.sent_packets |
Se asignan directamente desde el campo outbound-packets extraído a través de GROK. |
packets-from-client |
network.sent_packets |
Se asignan directamente desde el campo packets-from-client extraído a través de GROK. |
packets-from-server |
network.received_packets |
Se asignan directamente desde el campo packets-from-server extraído a través de GROK. |
packet-incoming-interface |
security_result.detection_fields[].value |
Se asignan directamente desde el campo packet-incoming-interface extraído a través de GROK. key se configura como packet-incoming-interface . |
pid |
target.process.pid |
Se asigna directamente desde el campo pid extraído a través de filtros GROK y JSON. |
policy-name |
security_result.rule_name |
Se asignan directamente desde el campo policy-name extraído a través de GROK. |
PROFILE |
additional.fields[].value.string_value |
Se asignan directamente desde el campo PROFILE extraído a través de los filtros GROK y KV. key se configura como PROFILE . |
protocol-id , protocol-name |
network.ip_protocol |
Se asigna desde el campo protocol-id o protocol-name extraído a través de GROK. El valor se convierte en la enumeración de protocolo IP correspondiente. |
REASON |
additional.fields[].value.string_value |
Se asignan directamente desde el campo REASON extraído a través de los filtros GROK y KV. key se configura como REASON . |
reason |
security_result.description |
Se asignan directamente desde el campo reason extraído a través de GROK. |
rule-name |
security_result.rule_name |
Se asignan directamente desde el campo rule-name extraído a través de GROK. |
SESSION_ID |
network.session_id |
Se asignan directamente desde el campo SESSION_ID extraído a través de los filtros GROK y KV. |
service-name |
security_result.detection_fields[].value |
Se asignan directamente desde el campo service-name extraído a través de GROK. key se configura como srvname . |
source-address |
principal.ip |
Se asignan directamente desde el campo source-address extraído a través de GROK. |
source-port |
principal.port |
Se asignan directamente desde el campo source-port extraído a través de GROK. |
source-zone |
additional.fields[].value.string_value |
Se asignan directamente desde el campo source-zone extraído a través de los filtros GROK y KV. key se configura como source-zone . |
source_zone-name |
security_result.detection_fields[].value |
Se asignan directamente desde el campo source_zone-name extraído a través de GROK. key se configura como srczone . |
src-nat-rule-name |
security_result.detection_fields[].value |
Se asignan directamente desde el campo src-nat-rule-name extraído a través de GROK. key se configura como src-nat-rule-name . |
src-nat-rule-type |
security_result.detection_fields[].value |
Se asignan directamente desde el campo src-nat-rule-type extraído a través de GROK. key se configura como src-nat-rule-type . |
subtype |
metadata.product_event_type |
Se asignan directamente desde el campo subtype extraído a través de GROK. |
threat-severity |
security_result.severity_details |
Se asignan directamente desde el campo threat-severity extraído a través de GROK. |
time |
metadata.event_timestamp |
Se asigna directamente desde el campo time extraído a través de filtros GROK y JSON. Se convirtió en un objeto de marca de tiempo. |
username |
target.user.userid |
Se asignan directamente desde el campo username extraído a través de GROK. |
metadata.log_type |
Se codifica en JUNIPER_FIREWALL . Se codifica de forma fija en JUNIPER_FIREWALL o NetScreen según el campo type . Se codifica en JUNIPER_FIREWALL . Se establece en ALLOW o BLOCK según la lógica del analizador. Establece el valor en BAJO, MEDIO, ALTO, INFORMATIVO o CRÍTICO según los campos subtype y severity_details . |
Cambios
2025-02-20
Mejora:
- Se modificó la asignación de
target.user.userid
aadditional.fields
cuandouser_value
comienza conRT_FLOW
.
2025-02-06
Mejora:
- Si
user_value
esUI_LOGIN_EVENT
, asócialo aadditional.fields
.
2025-01-15
Mejora:
- Si
user_name
tieneRT_FLOW_SESSION_DENY
, asócialo asecurity_result.action
comoBLOCK
. De lo contrario, cambia la asignación deuser_name
detarget.user.userid
asecurity_result.summary
. - Se asignó
sec_desc
asecurity_result.description
.
2024-10-31
Mejora:
- Se agregó un nuevo patrón de Grok para analizar registros sin analizar.
- Se asignó
processid
atarget.process.id
- Se asignaron
TSr
yTSi
aadditional.fields
. - Se agregó la función
gsub
para asignarRemote-IP
atarget.ip
. - Se agregó la función
gsub
para asignarTSi
yLocal_IKE_ID
aadditional.fields
. - Se agregó el filtro KV a
kv_data1
para analizar campos no analizados.
2024-10-30
Mejora:
- Se agregó un nuevo patrón de Grok para analizar el nuevo patrón de registro.
- Se asignó
fw
aintermediary.ip
. - Se asignó
msg1
asecurity_result.summary
. - Se asignó
desc
ametadata.description
.
2024-10-24
Mejora:
- Se agregó un nuevo patrón de Grok para analizar registros en el nuevo formato SYSLOG+KV.
- Se asignó
local_ip
aprincipal.ip
yprincipal.assest.ip
. - Se asignó
remote_ip
atarget.ip
ytarget.asset.ip
.
2024-10-11
Mejora:
- Se asignó
hostn
aprincipal.hostname
. - Se asignó
app
aprincipal.application
. - Se asignó
pid
aprincipal.process.pid
. - Se asignó
event_title
ametadata.product_event_type
. - Se asignó
event_message
ametadata.description
. - Se asignó
Local-ip
aprincipal.ip
yprincipal.asset.ip
. - Se asignaron
Gateway_Name
,vpn
,tunnel_id
,tunnel_if
,Local_IKE_ID
,Remote_IKE_ID
,AAA_username
,VR_id
,Traffic_selector
,Traffic_selector_Remote_ID
,Traffic_selector_local_ID
,SA_Type
,Reason
,threshold
,time-period
yerror-message_data
aobserver.resource.attribute.labels
. - Se asignó
target_ip
atarget.ip
ytarget.asset.ip
. - Se asignó
data
atarget.ip
ytarget.asset.ip
.
2024-06-28
Mejora:
- Se modificaron los patrones de Grok para analizar registros sin analizar.
- Se agregaron patrones de Grok en el campo
msg_data
para extraer los camposuser_id
,principal_host
,file_path
,pid_2
yserver_ip
. - Se asignó
principal_host
aprincipal.hostname
. - Se asignó
user_id
atarget.user.userid
. - Se asignó
file_path
atarget.file.full_path
. - Se asignó
pid_2
atarget.process.pid
. - Se asignó
server_ip
atarget.ip
. - Se asignó
event_time
ametadata.event_timestamp
correctamente quitandorebase
si el año está presente.
2024-01-22
Corrección de errores:
- Se agregaron nuevos patrones de Grok para analizar el campo
message
con datos de par clave-valor. - Se asignó
ACTION
asecurity_result.action_details
. - Se asignó
SESSION_ID
anetwork.session_id
. - Se asignó
APPLICATION
aprincipal.application
. - Se asignaron
pingCtlOwnerIndex
,pingCtlTestName
,usp_lsys_max_num_rpd
,usp_lsys_max_num
,urlcategory_risk
,application_sub_category
,source-zone
,destination-zone
,NESTED-APPLICATION
,CATEGORY
,REASON
,PROFILE
,source_rule
,retrans_timer
yarp_unicast_mode
aadditional.fields
. - Se asignó
time
ametadata.event_timestamp
.
2023-12-31
Corrección de errores:
- Se agregó compatibilidad con un nuevo patrón de registros JSON.
- Se asignó
time
ametadata.event_timestamp
. - Se asignó
host
aprincipal.hostname
. - Se asignó
ident
atarget.application
. - Se asignó
pid
atarget.process.pid
. - Se agregaron patrones de Grok para analizar el campo
message
.
2023-12-15
Mejora:
- Se asignó
internal-protocol
anetwork.ip_protocol
. - Se asignó
state
asecurity_result.detection_fields
. - Se asignó
internal-ip
aprincipal.ip
. - Se asignó
reflexive-ip
atarget.ip
. - Se asignó
internal-port
aprinciple.port
. - Se asignó
reflexive-port
atarget.port
. - Se asignó
local-address
aprincipal.ip
. - Se asignó
remote-address
atarget.ip
. - Se agregó el filtro KV con la fuente como
task_summary
. - Se asignó
dns-server-address
aprincipal.ip
. - Se asignó
domain-name
aprincipal.administrative_domain
. - Se asignó
argument1
anetwork.direction
. - Se asignó
state
asecurity_result.detection_fields
. - Se asignó
test-owner
aadditional.fields
. - Se asignó
local-initiator
aadditional.fields
. - Se asignó
test-name
aadditional.fields
. - Se asignó
SPI
aadditional.fields
. - Se asignó
AUX-SPI
aadditional.fields
. - Se asignó
Type
aadditional.fields
. - Se asignó
error-message
asecurity_result.summary
.
2023-11-02
Mejora:
- Se agregó un nuevo patrón de Grok para analizar registros del nuevo formato
SYSLOG+KV
.
2023-08-24
Mejora:
- Se agregó la función gsub para quitar caracteres especiales.
2023-08-02
Mejora:
- Se modificó el patrón de Grok para admitir nuevos formatos de registro para el tipo NetScreen.
- Se agregó compatibilidad con los tipos
RT_FLOW_SESSION_CREATE_LS
,RT_FLOW_SESSION_CLOSE_LS
yRT_FLOW_SESSION_DENY_LS
. - Se asignó
sent
anetwork.sent_bytes
. - Se asignó
rcvd
anetwork.received_bytes
.
2023-05-05
Mejora:
- Se asignó
rule-name
asecurity_result.rule_id
. - Se asignó
rulebase-name
asecurity_result.detection_fields
. - Se asignó
export-id
asecurity_result.detection_fields
. - Se asignó
repeat-count
asecurity_result.detection_fields
. - Se asignó
packet-log-id
asecurity_result.detection_fields
. - Se asignó
alert
ais_alert
cuando el valor esyes
. - Se asignó
outbound-packets
anetwork.sent_packets
. - Se asignó
inbound-packets
anetwork.received_packets
. - Se asignó
outbound-bytes
anetwork.sent_bytes
. - Se asignó
inbound-bytes
anetwork.received_bytes
.
2023-03-08
Mejora:
- Se asignó
application
atarget.application
. - Se asignó
reason
asecurity_result.description
. - Se asignó
application-characteristics
asecurity_result.summary
. - Se asignó
application-risk
asecurity_result.severity_details
. - Se asignó
application-category
asecurity_result.detection_fields
. - Se asignó
application-sub-category
asecurity_result.detection_fields
. - Se asignó
dst-nat-rule-name
asecurity_result.detection_fields
. - Se asignó
dst-nat-rule-type
asecurity_result.detection_fields
. - Se asignó
src-nat-rule-name
asecurity_result.detection_fields
. - Se asignó
src-nat-rule-type
asecurity_result.detection_fields
. - Se asignó
encrypted
asecurity_result.detection_fields
. - Se asignó
nested-application
asecurity_result.detection_fields
. - Se asignó
packet-incoming-interface
asecurity_result.detection_fields
. - Se asignó
session-id-32
anetwork.session_id
. - Se asignó
packets-from-client
anetwork.sent_packets
. - Se asignó
packets-from-server
anetwork.received_packets
. - Se asignó
bytes-from-client
anetwork.sent_bytes
. - Se asignó
bytes-from-server
anetwork.received_bytes
. - Se asignó
elapsed-time
anetwork.session_duration.seconds
. - Se asignó
nat-destination-address
atarget.nat_ip
. - Se asignó
nat-destination-port
atarget.nat_port
. - Se asignó
source-destination-address
aprincipal.nat_ip
. - Se asignó
source-destination-port
aprincipal.nat_port
.
2023-01-18
Corrección de errores:
- Se hizo que la condición no distinga mayúsculas de minúsculas para asignar
BLOCK
asecurity_result.action
, cuandoaction
esdrop/DROP
. - Se asignó
msg_data
asecurity_result.description
cuandono_app_name
es falso. - Se asignó
threat-severity
asecurity_result.severity
. - Se asignó el campo
message
ametadata.description
. - Se asignó
app_name
atarget.application
. - Se asignó
pid
atarget.process.pid
. - Se asignó
desc
ametadata.description
. - Se asignó
username
aprincipal.user.userid
. - Se asignó
command
atarget.process.command_line
. - Se asignó
action
asecurity_result.action_details
. - Se asignó
sec_description
asecurity_result.description
. - Se asignó
application-name
anetwork.application_protocol
.
2023-01-15
Mejora:
- Se modificó el patrón Grok para admitir registros sin analizar que contienen el 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
yUI_DBASE_LOGIN_EVENT
.
2022-11-07
Mejora:
- Se asignó
subtype
ametadata.product_event_type
. - Se asignó
attack-name
asecurity_result.threat_name
. - Se asignó
policy-name
asecurity_result.rule_name
. - Se asignó
action
asecurity_result.action
, donde el valordrop
se asignó a BLOQUEAR y los demás a PERMITIR. - Se asignó
source-interface-name
asecurity_result.detection_fields
. - Se asignó
destination-interface-name
asecurity_result.detection_fields
. - Se asignó
source-zone-name
asecurity_result.detection_fields
. - Se asignó
destination-zone-name
asecurity_result.detection_fields
. - Se asignó
service-name
asecurity_result.detection_fields
. - Se asignó
application-name
asecurity_result.detection_fields
. metadata.product_name
asignadometadata.vendor_name
asignado
2022-10-04
Mejora:
- Se asignó attack-name a security_result.rule_name.
- Asignaciones de SDM convertidas a los siguientes campos del UDM:
- Se asignó
source-address
aprincipal.ip
. - Se asignó
destination-address
atarget.ip
. - Se asignó
source-port
aprincipal.port
. - Se asignó
host
aprincipal.hostname
. - Se asignó
bytes-from-server
anetwork.received_bytes
. - Se asignó
policy-name
asecurity_result.rule_name
. - Se asignó
protocol-id
anetwork.ip_protocol
.
¿Necesitas más ayuda? Obtén respuestas de miembros de la comunidad y profesionales de Google SecOps.