Recopila registros del firewall Juniper NetScreen
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
- Accede a la consola de Google SecOps.
- Ve a SIEM Settings > Collection Agents.
- 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 SIEM Settings > Profile.
- 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
- 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 en 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 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
- 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 Servidores Syslog, selecciona la casilla de verificación Habilitar y proporciona la siguiente información:
- IP/Hostname: Ingresa la dirección IP
Bindplane
. - Puerto: Ingresa el número de puerto
Bindplane
. - Instalación de MDR: Selecciona el nivel de instalación Local0.
- Facility: Selecciona el nivel de instalación Local0.
- IP/Hostname: 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 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.