Recoger registros de Brocade ServerIron
Este analizador extrae campos de mensajes syslog de Brocade ServerIron mediante la correlación de expresiones regulares y los asigna al modelo de datos unificado (UDM). Gestiona varios formatos de registro, como el estado de la red, la autenticación de usuarios y los eventos de seguridad. El analizador sintáctico realiza conversiones de tipos de datos y enriquecimiento cuando es necesario.
Antes de empezar
- Asegúrate de que tienes una instancia de Google Security Operations.
- Asegúrate de que usas Windows 2016 o una versión posterior, o un host Linux con systemd.
- Si se ejecuta a través de un proxy, asegúrate de que los puertos del cortafuegos estén abiertos.
- Asegúrate de que tienes acceso con privilegios a la instancia de Brocade ServerIron.
Obtener el archivo de autenticación de ingestión de Google SecOps
- Inicia sesión en la consola de Google SecOps.
- Ve a Configuración de SIEM > Agentes de recogida.
- Descarga el archivo de autenticación de ingestión.
Obtener el ID de cliente de Google SecOps
- Inicia sesión en 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.
Instalar el agente de Bindplane
- Para instalar en Windows, ejecuta la siguiente secuencia de comandos:
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
- Para instalar 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 consultar otras opciones de instalación en esta guía de instalación.
Configurar el agente de Bindplane para ingerir Syslog y enviarlo a Google SecOps
- Accede al equipo en el 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
Configurar la exportación de Syslog desde Brocade ServerIron ADX
Inicia sesión en el dispositivo ADX y entra en el 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 syslog, incluido el protocolo que quieras (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: define la instalación Syslog (de local0 a local7):
logging facility local0
Define el nivel mínimo de gravedad de los registros que se enviarán al servidor 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 rellenar el campo security_result.description. Se puede concatenar con otros campos en función del 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 "HTTP Port". |
%{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 "Telnet Port". |
%{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 mediante un patrón grok y se convierte en un objeto de marca de tiempo. |
extensions.auth.type | El valor es "MACHINE" si el campo proto no está vacío y el campo auth_action es "logout" o "login". | |
metadata.description | El campo se rellena con el valor del campo "metadata_description" si no está vacío. | |
metadata.event_type | El campo se rellena en función de los valores de otros campos mediante lógica condicional: - STATUS_STARTUP: si target_port_status es "up". - STATUS_SHUTDOWN: si target_port_status es "down". - USER_LOGOUT: si el 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 se ha codificado como "BROCADE_SERVERIRON". | |
metadata.product_name | El valor se ha codificado como "ServerIron". | |
metadata.vendor_name | El valor se ha codificado como "Brocade". | |
security_result.action | El valor se asigna a "BLOCK" si el campo desc contiene "fail" o si el campo auth_result contiene "fail" o "rejected". |
¿Necesitas más ayuda? Recibe respuestas de los miembros de la comunidad y de los profesionales de Google SecOps.