Recopila registros del firewall Juniper NetScreen

Compatible con:

En este documento, se explica cómo configurar los registros del firewall de 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 al UDM y categoriza 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 a tu 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 SIEM Settings > Collection Agents.
  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 SIEM Settings > Profile.
  3. Copia y guarda el ID de cliente de la sección Detalles de la organización.

Instala el agente de BindPlane

Instalación en 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 en 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 Cómo obtener el archivo de autenticación de la transferencia de datos 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 de Servicios o ingresar el siguiente comando:

    net stop BindPlaneAgent && net start BindPlaneAgent
    

Configura el firewall de Juniper Networks NetScreen

  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 Servidores Syslog, selecciona la casilla de verificación Habilitar y proporciona la siguiente información:
    1. IP/Hostname: Ingresa la dirección IP Bindplane.
    2. Puerto: Ingresa el número de puerto Bindplane.
    3. Instalación de MDR: Selecciona el nivel de instalación Local0.
    4. Facility: Selecciona el nivel de 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 asigna directamente desde el campo ACTION que se extrae a través de los filtros de GROK y KV.
APPLICATION principal.application Se asigna directamente desde el campo APPLICATION que se extrae a través de los filtros de GROK y KV.
application target.application Se asigna directamente desde el campo application que se extrae a través de GROK.
attack-name security_result.threat_name Se asigna directamente desde el campo attack-name que se extrae a través de GROK.
bytes-from-client network.sent_bytes Se asigna directamente desde el campo bytes-from-client que se extrae a través de GROK.
bytes-from-server network.received_bytes Se asigna directamente desde el campo bytes-from-server que se extrae a través de GROK.
command target.process.command_line Se asigna directamente desde el campo command que se extrae a través de GROK.
destination-address target.ip Se asigna directamente desde el campo destination-address que se extrae a través de GROK.
destination-port target.port Se asigna directamente desde el campo destination-port que se extrae a través de GROK.
destination-zone additional.fields[].value.string_value Se asigna directamente desde el campo destination-zone que se extrae a través de los filtros de GROK y KV. key se configura como destination-zone.
destination_zone-name security_result.detection_fields[].value Se asigna directamente desde el campo destination_zone-name que se extrae a través de GROK. key se configura como dstzone.
dst-nat-rule-name security_result.detection_fields[].value Se asigna directamente desde el campo dst-nat-rule-name que se extrae a través de GROK. key se configura como dst-nat-rule-name.
dst-nat-rule-type security_result.detection_fields[].value Se asigna directamente desde el campo dst-nat-rule-type que se extrae a través de GROK. key se configura como dst-nat-rule-type.
elapsed-time network.session_duration.seconds Se asigna directamente desde el campo elapsed-time que se extrae a través de GROK.
encrypted security_result.detection_fields[].value Se asigna directamente desde el campo encrypted que se extrae 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, priorizando event_time, luego TIMESTAMP_ISO8601 y, por último, 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 asigna directamente desde el campo host_ip que se extrae a través de GROK.
icmp-type network.icmp_type Se asigna directamente desde el campo icmp-type que se extrae a través de GROK.
ident target.application Se asigna directamente desde el campo ident que se extrae a través de los filtros GROK y JSON.
inbound-bytes network.received_bytes Se asigna directamente desde el campo inbound-bytes que se extrae a través de GROK.
inbound-packets network.received_packets Se asigna directamente desde el campo inbound-packets que se extrae 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 está presente el campo log_message_data, se usa el campo message como descripción.
msg_data security_result.summary Se asigna directamente desde el campo msg_data que se extrae a través de GROK.
nat-destination-address target.nat_ip Se asigna directamente desde el campo nat-destination-address que se extrae a través de GROK.
nat-destination-port target.nat_port Se asigna directamente desde el campo nat-destination-port que se extrae a través de GROK.
nat-source-address principal.nat_ip Se asigna directamente desde el campo nat-source-address que se extrae a través de GROK.
nat-source-port principal.nat_port Se asigna directamente desde el campo nat-source-port que se extrae a través de GROK.
outbound-bytes network.sent_bytes Se asigna directamente desde el campo outbound-bytes que se extrae a través de GROK.
outbound-packets network.sent_packets Se asigna directamente desde el campo outbound-packets que se extrae a través de GROK.
packets-from-client network.sent_packets Se asigna directamente desde el campo packets-from-client que se extrae a través de GROK.
packets-from-server network.received_packets Se asigna directamente desde el campo packets-from-server que se extrae a través de GROK.
packet-incoming-interface security_result.detection_fields[].value Se asigna directamente desde el campo packet-incoming-interface que se extrae a través de GROK. key se configura como packet-incoming-interface.
pid target.process.pid Se asigna directamente desde el campo pid que se extrae a través de los filtros GROK y JSON.
policy-name security_result.rule_name Se asigna directamente desde el campo policy-name que se extrae a través de GROK.
PROFILE additional.fields[].value.string_value Se asigna directamente desde el campo PROFILE que se extrae a través de los filtros de 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 que se extrae a través de GROK. El valor se convierte en la enumeración del protocolo IP correspondiente.
REASON additional.fields[].value.string_value Se asigna directamente desde el campo REASON que se extrae a través de los filtros de GROK y KV. key se configura como REASON.
reason security_result.description Se asigna directamente desde el campo reason que se extrae a través de GROK.
rule-name security_result.rule_name Se asigna directamente desde el campo rule-name que se extrae a través de GROK.
SESSION_ID network.session_id Se asigna directamente desde el campo SESSION_ID que se extrae a través de los filtros de GROK y KV.
service-name security_result.detection_fields[].value Se asigna directamente desde el campo service-name que se extrae a través de GROK. key se configura como srvname.
source-address principal.ip Se asigna directamente desde el campo source-address que se extrae a través de GROK.
source-port principal.port Se asigna directamente desde el campo source-port que se extrae a través de GROK.
source-zone additional.fields[].value.string_value Se asigna directamente desde el campo source-zone que se extrae a través de los filtros de GROK y KV. key se configura como source-zone.
source_zone-name security_result.detection_fields[].value Se asigna directamente desde el campo source_zone-name que se extrae a través de GROK. key se configura como srczone.
src-nat-rule-name security_result.detection_fields[].value Se asigna directamente desde el campo src-nat-rule-name que se extrae a través de GROK. key se configura como src-nat-rule-name.
src-nat-rule-type security_result.detection_fields[].value Se asigna directamente desde el campo src-nat-rule-type que se extrae a través de GROK. key se configura como src-nat-rule-type.
subtype metadata.product_event_type Se asigna directamente desde el campo subtype que se extrae a través de GROK.
threat-severity security_result.severity_details Se asigna directamente desde el campo threat-severity que se extrae a través de GROK.
time metadata.event_timestamp Se asigna directamente desde el campo time que se extrae a través de los filtros GROK y JSON. Se convierte en un objeto de marca de tiempo.
username target.user.userid Se asigna directamente desde el campo username que se extrae a través de GROK.
metadata.log_type Se codificó como JUNIPER_FIREWALL. Se codifica como JUNIPER_FIREWALL o NetScreen según el campo type. Se codificó como JUNIPER_FIREWALL. Se establece en ALLOW o BLOCK según la lógica del analizador. Se establece en LOW, MEDIUM, HIGH, INFORMATIONAL o CRITICAL según los campos subtype y severity_details.

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