Recopila registros de Brocade ServerIron
Este analizador extrae campos de los mensajes de syslog de Brocade ServerIron mediante la coincidencia de expresiones regulares y los asigna al modelo de datos unificado (UDM). Controla varios formatos de registro, como el estado de la red, la autenticación del usuario y los eventos de seguridad. El analizador realiza conversiones de tipos de datos y enriquecimiento cuando es necesario.
Antes de comenzar
- Asegúrate de tener una instancia de Google Security Operations.
- Asegúrate de usar Windows 2016 o una versión posterior, o un host de Linux con systemd.
- Si se ejecuta detrás de un proxy, asegúrate de que los puertos del firewall estén abiertos.
- Asegúrate de tener acceso con privilegios a la instancia de Brocade ServerIron.
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.
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
- Para la instalación de Windows, ejecuta la siguiente secuencia de comandos:
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
- Para la instalación de Linux, ejecuta la siguiente secuencia de comandos:
sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
- Puedes encontrar opciones de instalación adicionales en esta guía de instalación.
Configura el agente de BindPlane para transferir Syslog y enviarlo a Google SecOps
- Accede a la máquina en la que está instalado BindPlane.
Edita el archivo
config.yaml
de la siguiente manera:receivers: tcplog: # Replace the below port <54525> and IP <0.0.0.0> with your specific values listen_address: "0.0.0.0:54525" exporters: chronicle/chronicle_w_labels: compression: gzip # Adjust the creds location below according the placement of the credentials file you downloaded creds: '{ json file for creds }' # Replace <customer_id> below with your actual ID that you copied customer_id: <customer_id> endpoint: malachiteingestion-pa.googleapis.com # You can apply ingestion labels below as preferred ingestion_labels: log_type: SYSLOG namespace: Brocade_ServerIron raw_log_field: body service: pipelines: logs/source0__chronicle_w_labels-0: receivers: - tcplog exporters: - chronicle/chronicle_w_labels
Reinicia el agente de BindPlane para aplicar los cambios:
sudo systemctl restart bindplane
Configura la exportación de Syslog desde el ADX de Brocade ServerIron
Accede al dispositivo ADX y entra al modo de configuración global:
enable configure terminal
Habilita el registro de Syslog:
logging on
Especifica la dirección IP o el nombre de host y el puerto del servidor de syslog, incluido el protocolo deseado (Bindplane):
logging host <syslog-server-ip> [udp | tcp] port <port-number>
Ejemplo de TCP en el puerto 54525:
logging host 10.10.10.10 tcp port 54525
Opcional: Establece el servicio de Syslog (de local0 a local7):
logging facility local0
Define el nivel de gravedad mínimo de los registros que se enviarán al servidor de syslog:
logging trap <severity-level>
Guarda la configuración:
write memory
Tabla de asignación de UDM
Campo de registro | Asignación de UDM | Lógica |
---|---|---|
%{GREEDYDATA} | metadata.description | El campo %{GREEDYDATA} se asigna a metadata.description cuando coincide con el patrón "-- %{GREEDYDATA} --". |
%{GREEDYDATA:auth_result} | security_result.description | El campo %{GREEDYDATA:auth_result} se concatena con el campo %{GREEDYDATA:desc} para formar security_result.description cuando %{GREEDYDATA:desc} está presente. |
%{GREEDYDATA:desc} | security_result.description | El campo %{GREEDYDATA:desc} se usa para propagar el campo security_result.description. Se puede concatenar con otros campos según el formato de registro sin procesar. |
%{GREEDYDATA:login_to} | security_result.description | El campo %{GREEDYDATA:login_to} se concatena con el campo %{GREEDYDATA:desc} para formar security_result.description cuando %{GREEDYDATA:desc} está presente. |
%{GREEDYDATA:user} | target.user.userid | El campo %{GREEDYDATA:user} se asigna a target.user.userid. |
%{HOST:principal_host} | principal.hostname | El campo %{HOST:principal_host} se asigna a principal.hostname. |
%{HOST:target_host} | target.hostname | El campo %{HOST:target_host} se asigna a target.hostname. |
%{INT:http_port} | additional.fields.value.string_value | El campo %{INT:http_port} se asigna a additional.fields.value.string_value con la clave "Puerto HTTP". |
%{INT:target_port} | target.port | El campo %{INT:target_port} se asigna a target.port y se convierte en un número entero. |
%{INT:telnet_port} | additional.fields.value.string_value | El campo %{INT:telnet_port} se asigna a additional.fields.value.string_value con la clave "Puerto Telnet". |
%{INT:tftp_port} | additional.fields.value.string_value | El campo %{INT:tftp_port} se asigna a additional.fields.value.string_value con la clave "TFTP Port". |
%{IP:principal_ip} | principal.ip | El campo %{IP:principal_ip} se asigna a principal.ip. |
%{IP:target_ip} | target.ip | El campo %{IP:target_ip} se asigna a target.ip. |
%{IPV4:principal_ip} | principal.ip | El campo %{IPV4:principal_ip} se asigna a principal.ip. |
%{IPV4:target_ip} | target.ip | El campo %{IPV4:target_ip} se asigna a target.ip. |
%{MAC:principal_mac} | principal.mac | El campo %{MAC:principal_mac} se asigna a principal.mac después de convertirlo al formato [0-9a-f]{2}:[0-9a-f]{2}:[0-9a-f]{2}:[0-9a-f]{2}:[0-9a-f]{2}:[0-9a-f]{2}. |
%{USERNAME:target_host} | target.hostname | El campo %{USERNAME:target_host} se asigna a target.hostname. |
%{USERNAME:user} | target.user.userid | El campo %{USERNAME:user} se asigna a target.user.userid. |
%{WORD:auth_result} | security_result.description | El campo %{WORD:auth_result} se concatena con el campo %{GREEDYDATA:desc} para formar security_result.description cuando %{GREEDYDATA:desc} está presente. |
%{WORD:proto} | network.application_protocol | El campo %{WORD:proto} se asigna a network.application_protocol cuando su valor es "SSH". |
timestamp | metadata.event_timestamp | El campo de marca de tiempo se analiza a partir de los datos de registro sin procesar con un patrón de Grok y se convierte en un objeto de marca de tiempo. |
extensions.auth.type | El valor se establece en "MACHINE" si el campo proto no está vacío y el campo auth_action es "logout" o "login". | |
metadata.description | El campo se propaga con el valor del campo "metadata_description" si no está vacío. | |
metadata.event_type | El campo se propaga en función de los valores de otros campos con lógica condicional: : STATUS_STARTUP: si target_port_status es "up". : STATUS_SHUTDOWN: Si target_port_status es "down". : USER_LOGOUT: Si proto no está vacío y auth_action es "logout". : USER_LOGIN: Si proto no está vacío y auth_action es "login". : STATUS_UPDATE: Si metadata_description coincide con "state changed". : GENERIC_EVENT si no se cumple ninguna de las condiciones anteriores. |
|
metadata.log_type | El valor está codificado en “BROCADE_SERVERIRON”. | |
metadata.product_name | El valor está codificado en "ServerIron". | |
metadata.vendor_name | El valor está codificado como “Brocade”. | |
security_result.action | El valor se establece en "BLOCK" si el campo desc contiene "fail" o si el campo auth_result contiene "fail" o "rejected". |
Cambios
2022-01-13
- Se agregó un nuevo analizador.