Recopila registros del firewall Juniper NetScreen

Compatible con:

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

  1. Accede a la consola de Google SecOps.
  2. Ve a Configuración de SIEM > Agentes de recopilación.
  3. 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

  1. Accede a la consola de Google SecOps.
  2. Ve a Configuración de SIEM > Perfil.
  3. 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

  1. Abre el símbolo del sistema o PowerShell como administrador.
  2. Ejecuta el siguiente comando:

    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
    

Instalación de Linux

  1. Abre una terminal con privilegios de raíz o sudo.
  2. 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

Configura el agente de Bindplane para transferir Syslog y enviarlo a Google SecOps

  1. Accede al archivo de configuración:

    1. 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.
    2. Abre el archivo con un editor de texto (por ejemplo, nano, vi o Bloc de notas).
  2. 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
    
    
  3. Reemplaza el puerto y la dirección IP según sea necesario en tu infraestructura.

  4. Reemplaza <customer_id> por el ID de cliente real.

  5. 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

  1. Accede a la interfaz web de Juniper NetScreen.
  2. Selecciona Configuración > Configuración de informes > Configuración de registros.
  3. Selecciona todas las casillas de verificación de Gravedad del evento.
  4. Haz clic en Aplicar.
  5. Selecciona Configuración > Configuración de informes > Syslog.
  6. Selecciona la casilla de verificación Habilitar mensajes de Syslog.
  7. En la lista Interfaz de origen, selecciona la interfaz NetScreen desde la que se deben enviar los paquetes de syslog.
  8. En la sección Syslog servers, selecciona la casilla de verificación Enable y proporciona la siguiente información:
    1. IP/Nombre de host: Ingresa la dirección IP Bindplane.
    2. Puerto: Ingresa el número de puerto Bindplane.
    3. Instalación de MDR: Selecciona el nivel de la instalación Local0.
    4. Facility: Selecciona el nivel de la instalación Local0.
  9. 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 a additional.fields cuando user_value comienza con RT_FLOW.

2025-02-06

Mejora:

  • Si user_value es UI_LOGIN_EVENT, asócialo a additional.fields.

2025-01-15

Mejora:

  • Si user_name tiene RT_FLOW_SESSION_DENY, asócialo a security_result.action como BLOCK. De lo contrario, cambia la asignación de user_name de target.user.userid a security_result.summary.
  • Se asignó sec_desc a security_result.description.

2024-10-31

Mejora:

  • Se agregó un nuevo patrón de Grok para analizar registros sin analizar.
  • Se asignó processid a target.process.id
  • Se asignaron TSr y TSi a additional.fields.
  • Se agregó la función gsub para asignar Remote-IP a target.ip.
  • Se agregó la función gsub para asignar TSi y Local_IKE_ID a additional.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 a intermediary.ip.
  • Se asignó msg1 a security_result.summary.
  • Se asignó desc a metadata.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 a principal.ip y principal.assest.ip.
  • Se asignó remote_ip a target.ip y target.asset.ip.

2024-10-11

Mejora:

  • Se asignó hostn a principal.hostname.
  • Se asignó app a principal.application.
  • Se asignó pid a principal.process.pid.
  • Se asignó event_title a metadata.product_event_type.
  • Se asignó event_message a metadata.description.
  • Se asignó Local-ip a principal.ip y principal.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 y error-message_data a observer.resource.attribute.labels.
  • Se asignó target_ip a target.ip y target.asset.ip.
  • Se asignó data a target.ip y target.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 campos user_id, principal_host, file_path, pid_2 y server_ip.
  • Se asignó principal_host a principal.hostname.
  • Se asignó user_id a target.user.userid.
  • Se asignó file_path a target.file.full_path.
  • Se asignó pid_2 a target.process.pid.
  • Se asignó server_ip a target.ip.
  • Se asignó event_time a metadata.event_timestamp correctamente quitando rebase 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 a security_result.action_details.
  • Se asignó SESSION_ID a network.session_id.
  • Se asignó APPLICATION a principal.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 y arp_unicast_mode a additional.fields.
  • Se asignó time a metadata.event_timestamp.

2023-12-31

Corrección de errores:

  • Se agregó compatibilidad con un nuevo patrón de registros JSON.
  • Se asignó time a metadata.event_timestamp.
  • Se asignó host a principal.hostname.
  • Se asignó ident a target.application.
  • Se asignó pid a target.process.pid.
  • Se agregaron patrones de Grok para analizar el campo message.

2023-12-15

Mejora:

  • Se asignó internal-protocol a network.ip_protocol .
  • Se asignó state a security_result.detection_fields.
  • Se asignó internal-ip a principal.ip.
  • Se asignó reflexive-ip a target.ip.
  • Se asignó internal-port a principle.port.
  • Se asignó reflexive-port a target.port.
  • Se asignó local-address a principal.ip.
  • Se asignó remote-address a target.ip.
  • Se agregó el filtro KV con la fuente como task_summary.
  • Se asignó dns-server-address a principal.ip.
  • Se asignó domain-name a principal.administrative_domain.
  • Se asignó argument1 a network.direction.
  • Se asignó state a security_result.detection_fields.
  • Se asignó test-owner a additional.fields.
  • Se asignó local-initiator a additional.fields.
  • Se asignó test-name a additional.fields.
  • Se asignó SPI a additional.fields.
  • Se asignó AUX-SPI a additional.fields.
  • Se asignó Type a additional.fields.
  • Se asignó error-message a security_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 y RT_FLOW_SESSION_DENY_LS.
  • Se asignó sent a network.sent_bytes.
  • Se asignó rcvd a network.received_bytes.

2023-05-05

Mejora:

  • Se asignó rule-name a security_result.rule_id.
  • Se asignó rulebase-name a security_result.detection_fields.
  • Se asignó export-id a security_result.detection_fields.
  • Se asignó repeat-count a security_result.detection_fields.
  • Se asignó packet-log-id a security_result.detection_fields.
  • Se asignó alert a is_alert cuando el valor es yes.
  • Se asignó outbound-packets a network.sent_packets.
  • Se asignó inbound-packets a network.received_packets.
  • Se asignó outbound-bytes a network.sent_bytes.
  • Se asignó inbound-bytes a network.received_bytes.

2023-03-08

Mejora:

  • Se asignó application a target.application.
  • Se asignó reason a security_result.description.
  • Se asignó application-characteristics a security_result.summary.
  • Se asignó application-risk a security_result.severity_details.
  • Se asignó application-category a security_result.detection_fields.
  • Se asignó application-sub-category a security_result.detection_fields.
  • Se asignó dst-nat-rule-name a security_result.detection_fields.
  • Se asignó dst-nat-rule-type a security_result.detection_fields.
  • Se asignó src-nat-rule-name a security_result.detection_fields.
  • Se asignó src-nat-rule-type a security_result.detection_fields.
  • Se asignó encrypted a security_result.detection_fields.
  • Se asignó nested-application a security_result.detection_fields.
  • Se asignó packet-incoming-interface a security_result.detection_fields.
  • Se asignó session-id-32 a network.session_id.
  • Se asignó packets-from-client a network.sent_packets.
  • Se asignó packets-from-server a network.received_packets.
  • Se asignó bytes-from-client a network.sent_bytes.
  • Se asignó bytes-from-server a network.received_bytes.
  • Se asignó elapsed-time a network.session_duration.seconds.
  • Se asignó nat-destination-address a target.nat_ip.
  • Se asignó nat-destination-port a target.nat_port.
  • Se asignó source-destination-address a principal.nat_ip.
  • Se asignó source-destination-port a principal.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 a security_result.action, cuando action es drop/DROP.
  • Se asignó msg_data a security_result.description cuando no_app_name es falso.
  • Se asignó threat-severity a security_result.severity.
  • Se asignó el campo message a metadata.description.
  • Se asignó app_name a target.application.
  • Se asignó pid a target.process.pid.
  • Se asignó desc a metadata.description.
  • Se asignó username a principal.user.userid.
  • Se asignó command a target.process.command_line.
  • Se asignó action a security_result.action_details.
  • Se asignó sec_description a security_result.description.
  • Se asignó application-name a network.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 y UI_DBASE_LOGIN_EVENT.

2022-11-07

Mejora:

  • Se asignó subtype a metadata.product_event_type.
  • Se asignó attack-name a security_result.threat_name.
  • Se asignó policy-name a security_result.rule_name.
  • Se asignó action a security_result.action, donde el valor drop se asignó a BLOQUEAR y los demás a PERMITIR.
  • Se asignó source-interface-name a security_result.detection_fields.
  • Se asignó destination-interface-name a security_result.detection_fields.
  • Se asignó source-zone-name a security_result.detection_fields.
  • Se asignó destination-zone-name a security_result.detection_fields.
  • Se asignó service-name a security_result.detection_fields.
  • Se asignó application-name a security_result.detection_fields.
  • metadata.product_name asignado
  • metadata.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 a principal.ip.
  • Se asignó destination-address a target.ip.
  • Se asignó source-port a principal.port.
  • Se asignó host a principal.hostname.
  • Se asignó bytes-from-server a network.received_bytes.
  • Se asignó policy-name a security_result.rule_name.
  • Se asignó protocol-id a network.ip_protocol.

¿Necesitas más ayuda? Obtén respuestas de miembros de la comunidad y profesionales de Google SecOps.