Recopila registros de LTM de BIG-IP de F5
En este documento, se describe cómo recopilar registros de F5 BIG-IP Local Traffic Manager (LTM) con un agente de reenvío de Google Security Operations.
Para obtener más información, consulta Transferencia de datos a Google Security Operations.
Una etiqueta de transferencia identifica el analizador que normaliza los datos de registro sin procesar al formato UDM estructurado. La información de este documento se aplica al analizador con la etiqueta de transferencia F5_BIGIP_LTM
.
Configura LTM de BIG-IP de F5
- Accede a SSH con las credenciales de raíz.
Accede a Traffic Management Shell (tmsh) con el siguiente comando:
tmsh
Envía mensajes de registro filtrados a servidores syslog remotos con el siguiente comando:
modify /sys syslog remote-servers none
Quita la sentencia remote-servers y, luego, agrega una sentencia syslog
include
que defina una regla de filtro y el servidor remoto.Para definir el filtro de syslog requerido que hace referencia al servidor remoto, usa el siguiente comando:
edit /sys syslog all-properties
Reemplaza el comando
include none
por el siguiente filtro y agrega la dirección IP y el número de puerto.include " filter f_remote_loghost { level(debug..emerg); }; filter f_ssl_acc { not match(\"ssl_acc\"); }; filter f_ssl_req { not match(\"ssl_req\"); }; destination d_remote_loghost { udp(IP_ADDRESS PORT); }; log { source(s_syslog_pipe); filter(f_remote_loghost); filter(f_ssl_acc); filter(f_ssl_req); destination(d_remote_loghost); }; "
Reemplaza IP_ADDRESS por la dirección IP del reenvío de Google Security Operations y port por el número de puerto alto.
Para salir del editor de texto, presiona Esc y, luego, ingresa wq!.
Guarda la configuración con el siguiente comando:
save /sys config
Configura el reenvío de Google Security Operations y Syslog para transferir registros de LTM de F5 BIG-IP
- Ve a Configuración del SIEM > Reenviadores.
- Haz clic en Agregar un nuevo reenvío.
- En el campo Nombre del reenviador, ingresa un nombre único para el reenviador.
- Haz clic en Enviar. Se agregará el reenvío y aparecerá la ventana Add collector configuration.
- En el campo Nombre del recopilador, escribe un nombre.
- Selecciona F5 BIGIP LTM como el Tipo de registro.
- Selecciona Syslog como el Tipo de recopilador.
- Configura los siguientes parámetros de entrada obligatorios:
- Protocolo: Especifica el protocolo.
- Dirección: Especifica la dirección IP del reenviador de Google Security Operations.
- Puerto: Especifica el puerto.
- Haz clic en Enviar.
Para obtener más información sobre los retransmisores de Google Security Operations, consulta la documentación de los retransmisores de Google Security Operations. Para obtener información sobre los requisitos de cada tipo de reenvío, consulta Configuración del reenvío por tipo.
Si tienes problemas para crear reenvíos, comunícate con el equipo de asistencia de Operaciones de seguridad de Google.
Referencia de la asignación de campos
Este analizador normaliza los registros de F5 BIG-IP Local Traffic Manager (LTM) y controla los formatos de syslog y de clave-valor. Extrae campos como direcciones IP, nombres de usuario, acciones y descripciones, los asigna al UDM y categoriza los eventos según el contenido del registro y los campos extraídos, incluidas las conexiones de red, los accesos y cierres de sesión de los usuarios, y los eventos genéricos.
Tabla de asignación de UDM
Campo de registro | Asignación de UDM | Lógica |
---|---|---|
Access_Profile |
event.idm.read_only_udm.additional.fields[].key:"Access_Profile", event.idm.read_only_udm.additional.fields[].value.string_value |
Se asigna directamente desde la clave Access_Profile en los pares clave-valor analizados. |
Client_IP |
event.idm.read_only_udm.principal.ip[], event.idm.read_only_udm.principal.asset.ip[] |
Se asigna directamente desde la clave Client_IP en los pares clave-valor analizados. También se usa para completar la IP del activo principal. Establece has_principal como verdadero. |
Country |
event.idm.read_only_udm.principal.location.country_or_region |
Se asigna directamente desde la clave Country en los pares clave-valor analizados. |
Listener |
event.idm.read_only_udm.additional.fields[].key:"Listener", event.idm.read_only_udm.additional.fields[].value.string_value |
Se asigna directamente desde la clave Listener en los pares clave-valor analizados. |
Session_ID |
event.idm.read_only_udm.network.session_id |
Se asigna directamente desde la clave Session_ID en los pares clave-valor analizados. |
State |
event.idm.read_only_udm.principal.location.state |
Se asigna directamente desde la clave State en los pares clave-valor analizados. |
Virtual_IP |
event.idm.read_only_udm.target.ip[], event.idm.read_only_udm.target.asset.ip[] |
Se asigna directamente desde la clave Virtual_IP en los pares clave-valor analizados. También se usa para propagar la IP del activo de destino. Establece has_target como verdadero. |
about |
event.idm.read_only_udm.about |
Se completa con varios campos, como snat , vs_name , path , query , node , pool_member , vs , client , blade y device , si están presentes en el registro sin procesar y se analizaron correctamente. |
action_data |
event.idm.read_only_udm.target.process.command_line |
Se asigna directamente a los registros de procesos de scriptd . |
attack_type |
event.idm.read_only_udm.security_result.category_details[] |
Se asigna directamente. |
blade |
event.idm.read_only_udm.about.resource.attribute.labels[].key:"blade", event.idm.read_only_udm.about.resource.attribute.labels[].value |
Se asigna directamente desde la clave blade en los pares clave-valor analizados. |
bytes_in |
event.idm.read_only_udm.network.received_bytes |
Se asigna directamente y se convierte en un número entero sin signo. |
bytes_out |
event.idm.read_only_udm.network.sent_bytes |
Se asigna directamente y se convierte en un número entero sin signo. |
captcha_result |
event.idm.read_only_udm.additional.fields[].key:"captcha_result", event.idm.read_only_udm.additional.fields[].value.string_value |
Se asigna directamente. |
client |
event.idm.read_only_udm.about.resource.attribute.labels[].key:"client", event.idm.read_only_udm.about.resource.attribute.labels[].value |
Se asigna directamente desde la clave client en los pares clave-valor analizados. |
client_ip |
event.idm.read_only_udm.principal.ip[], event.idm.read_only_udm.principal.asset.ip[] |
Se asigna directamente. También se usa para completar la IP del activo principal. Establece has_principal como verdadero. |
client_port |
event.idm.read_only_udm.principal.port |
Se asigna directamente y se convierte en un número entero. |
collection_time |
event.timestamp |
La marca de tiempo de la entrada de registro se usa como marca de tiempo del evento. |
command_line |
event.idm.read_only_udm.target.process.command_line |
Se asignan directamente a los registros de procesos de CROND y a algunos registros de logger . |
data |
message |
Es el mensaje de registro sin procesar. Se analiza y se usa para completar varios campos de UDM. |
dgl_count |
event.idm.read_only_udm.principal.resource.attribute.labels[].key:"DataGroup_Value", event.idm.read_only_udm.principal.resource.attribute.labels[].value |
Se asigna directamente. |
dgl_value |
event.idm.read_only_udm.principal.resource.attribute.labels[].key:"DataGroup_List", event.idm.read_only_udm.principal.resource.attribute.labels[].value |
Se asigna directamente. |
description |
event.idm.read_only_udm.metadata.description , event.idm.read_only_udm.security_result.description |
Se asigna directamente a algunos tipos de registros o se usa como parte de la descripción del resultado de seguridad. |
device |
event.idm.read_only_udm.principal.hostname, event.idm.read_only_udm.principal.asset.hostname, event.idm.read_only_udm.about.resource.attribute.labels[].key:"device", event.idm.read_only_udm.about.resource.attribute.labels[].value |
Se asigna directamente. También se usa para completar el nombre de host del activo principal. Establece has_principal como verdadero. |
dest_ip |
event.idm.read_only_udm.target.ip, event.idm.read_only_udm.target.asset.ip |
Se asigna directamente. También se usa para propagar la IP del activo de destino. Establece has_principal como verdadero. |
dest_port |
event.idm.read_only_udm.target.port |
Se asigna directamente. |
dvc |
event.idm.read_only_udm.principal.hostname, event.idm.read_only_udm.principal.asset.hostname, event.idm.read_only_udm.intermediary.hostname |
Se analizó para extraer el nombre de host o la IP. Se usa para completar el nombre de host principal o el nombre de host intermedio. |
errdefs_msgno |
event.idm.read_only_udm.additional.fields[].key:"errdefs_msgno", event.idm.read_only_udm.additional.fields[].value.string_value |
Se asigna directamente desde la clave errdefs_msgno en los pares clave-valor analizados. |
error_reason |
event.idm.read_only_udm.principal.resource.attribute.labels[].key:"error_reason", event.idm.read_only_udm.principal.resource.attribute.labels[].value |
Se asigna directamente. |
false_positive |
event.idm.read_only_udm.additional.fields[].key:"false_positive", event.idm.read_only_udm.additional.fields[].value.string_value |
Se asigna directamente. |
function_id |
event.idm.read_only_udm.principal.resource.attribute.labels[].key:"function_id", event.idm.read_only_udm.principal.resource.attribute.labels[].value |
Se asigna directamente. |
geoContinent |
event.idm.read_only_udm.principal.location.continent |
No se asigna en el ejemplo proporcionado, pero se asignaría al continente si estuviera disponible. |
geoCountry |
event.idm.read_only_udm.principal.location.country_or_region |
Se asigna directamente. |
geoState |
event.idm.read_only_udm.principal.location.state |
Se asigna directamente. |
header.Referer |
event.idm.read_only_udm.network.http.referral_url |
Se asigna directamente. |
header.User-Agent |
event.idm.read_only_udm.network.http.user_agent, event.idm.read_only_udm.network.http.parsed_user_agent |
Se asigna directamente. También se convirtió en un usuario-agente analizado. |
header.X-Forwarded-For |
event.idm.read_only_udm.principal.ip[], event.idm.read_only_udm.principal.asset.ip[] |
Se analizan para extraer las IPs y combinarlas en la IP principal y la IP del activo principal. |
host |
event.idm.read_only_udm.target.hostname, event.idm.read_only_udm.target.asset.hostname |
Se asigna directamente. También se usa para completar el nombre de host del recurso de destino. Establece has_target como verdadero. |
http_host |
event.idm.read_only_udm.target.hostname, event.idm.read_only_udm.target.asset.hostname |
Se asigna directamente. También se usa para completar el nombre de host del recurso de destino. Establece has_target como verdadero. |
http_method |
event.idm.read_only_udm.network.http.method |
Se asigna directamente. Establece event_type en NETWORK_HTTP si está presente. |
ip_client |
event.idm.read_only_udm.principal.ip[], event.idm.read_only_udm.principal.asset.ip[] |
Se asigna directamente. También se usa para completar la IP del activo principal. Establece has_principal como verdadero. |
kv_msg |
Varios campos | Se analizan como pares clave-valor y se usan para completar varios campos de UDM. |
Level |
event.idm.read_only_udm.security_result.severity |
Se asigna a la gravedad si el campo severity no está presente. Se convirtió a valores de gravedad del UDM (p.ej., "Info" -> "INFORMATIONAL"). |
Listener |
event.idm.read_only_udm.additional.fields[].key:"Listener", event.idm.read_only_udm.additional.fields[].value.string_value |
Se asigna directamente. |
log_message |
event.idm.read_only_udm.principal.resource.attribute.labels[].value, event.idm.read_only_udm.security_result.description |
Se analiza aún más para extraer request_uri o description . |
log_type |
event.idm.read_only_udm.metadata.log_type |
Se asigna directamente desde el campo log_type del registro sin procesar. |
loglevel |
event.idm.read_only_udm.security_result.severity |
Se asigna a la gravedad. Se convirtió a valores de gravedad del UDM (p.ej., "warning" -> "MEDIUM", "err" -> "HIGH"). También se usa para la lógica de alertas y eventos significativos. |
manage_ip_addr |
event.idm.read_only_udm.principal.ip[], event.idm.read_only_udm.principal.asset.ip[] |
Se asigna directamente. También se usa para completar la IP del activo principal. Establece has_principal como verdadero. |
method |
event.idm.read_only_udm.network.http.method |
Se asigna directamente. Establece event_type en NETWORK_HTTP . |
method_req |
event.idm.read_only_udm.network.http.method |
Se asigna directamente. |
msg1 |
event.idm.read_only_udm.security_result.description |
Se usa como la descripción del resultado de seguridad si no se analiza más. |
node |
event.idm.read_only_udm.about.resource.attribute.labels[].key:"node", event.idm.read_only_udm.about.resource.attribute.labels[].value |
Se asigna directamente desde la clave node en los pares clave-valor analizados. |
partition_name |
event.idm.read_only_udm.additional.fields[].key:"partition_name", event.idm.read_only_udm.additional.fields[].value.string_value |
Se asigna directamente. |
path |
event.idm.read_only_udm.target.url, event.idm.read_only_udm.about.resource.attribute.labels[].key:"path", event.idm.read_only_udm.about.resource.attribute.labels[].value |
Se asigna directamente. |
policy_name |
event.idm.read_only_udm.security_result.detection_fields[].key:"policy_name", event.idm.read_only_udm.security_result.detection_fields[].value |
Se asigna directamente. |
pool_member |
event.idm.read_only_udm.about.resource.attribute.labels[].key:"pool_member", event.idm.read_only_udm.about.resource.attribute.labels[].value |
Se asigna directamente desde la clave pool_member en los pares clave-valor analizados. |
principalHost |
event.idm.read_only_udm.principal.hostname, event.idm.read_only_udm.principal.asset.hostname |
Se asigna directamente. También se usa para completar el nombre de host del activo principal. Establece has_principal como verdadero. |
principalIp |
event.idm.read_only_udm.principal.ip[], event.idm.read_only_udm.principal.asset.ip[], event.idm.read_only_udm.observer.ip |
Se asigna directamente. También se usa para completar la IP del activo principal y la IP del observador. Establece has_principal como verdadero. |
principalPort |
event.idm.read_only_udm.principal.port |
Se asigna directamente y se convierte en un número entero. |
process |
event.idm.read_only_udm.target.application |
Se asigna directamente. |
product_event_type |
event.idm.read_only_udm.metadata.product_event_type |
Se asigna directamente. |
proto |
event.idm.read_only_udm.network.ip_protocol |
Se asigna al protocolo IP después de convertir el número de protocolo en el nombre del protocolo con una búsqueda. |
query |
event.idm.read_only_udm.about.resource.attribute.labels[].key:"query", event.idm.read_only_udm.about.resource.attribute.labels[].value |
Se asigna directamente desde la clave query en los pares clave-valor analizados. |
query_string |
event.idm.read_only_udm.additional.fields[].key:"query_string", event.idm.read_only_udm.additional.fields[].value.string_value |
Se asigna directamente. |
reason |
event.idm.read_only_udm.security_result.description |
Se asigna directamente a los registros del proceso apmd con el nivel de registro de advertencia o error. |
reason_code |
event.idm.read_only_udm.principal.resource.attribute.labels[].key:"reason_code", event.idm.read_only_udm.principal.resource.attribute.labels[].value |
Se asigna directamente. |
req_status |
event.idm.read_only_udm.security_result.detection_fields[].key:"req_status", event.idm.read_only_udm.security_result.detection_fields[].value |
Se asigna directamente. |
request |
event.idm.read_only_udm.principal.resource.attribute.labels[].key:"request_type", event.idm.read_only_udm.principal.resource.attribute.labels[].value, event.idm.read_only_udm.network.application_protocol |
Se usa para determinar el protocolo de la aplicación (HTTP) y se asigna como etiqueta. |
request_status |
event.idm.read_only_udm.additional.fields[].key:"request_status", event.idm.read_only_udm.additional.fields[].value.string_value |
Se asigna directamente. |
request_uri |
event.idm.read_only_udm.target.url |
Se asigna directamente. |
resp_code |
event.idm.read_only_udm.network.http.response_code |
Se asigna directamente y se convierte en un número entero. |
response_code |
event.idm.read_only_udm.network.http.response_code |
Se asigna directamente y se convierte en un número entero. |
rule_name |
event.idm.read_only_udm.security_result.rule_name |
Se asigna directamente. |
sec_action |
event.idm.read_only_udm.security_result.action[] |
Se asignó a la acción. "Continue" se convierte en "ALLOW". Los demás valores se convierten en "BLOCK". |
security_result |
event.idm.read_only_udm.security_result |
Se combinó en el objeto security_result. |
session_id |
event.idm.read_only_udm.network.session_id |
Se asigna directamente. |
severity |
event.idm.read_only_udm.security_result.severity |
Se asigna a la gravedad. Se convirtió a valores de gravedad del UDM (p.ej., "Error" -> "ERROR", "Informativo" -> "INFORMATIONAL"). |
sig_ids |
event.idm.read_only_udm.additional.fields[].key:"sig_ids", event.idm.read_only_udm.additional.fields[].value.string_value |
Se asigna directamente. |
sig_names |
event.idm.read_only_udm.additional.fields[].key:"sig_names", event.idm.read_only_udm.additional.fields[].value.string_value |
Se asigna directamente. |
sni_host |
event.idm.read_only_udm.network.tls.client.server_name |
Se asigna directamente. |
snat |
event.idm.read_only_udm.about.resource.attribute.labels[].key:"snat", event.idm.read_only_udm.about.resource.attribute.labels[].value |
Se asigna directamente desde la clave snat en los pares clave-valor analizados. |
snat_ip |
event.idm.read_only_udm.principal.nat_ip[] |
Se asigna directamente. |
snat_port |
event.idm.read_only_udm.principal.nat_port |
Se asigna directamente y se convierte en un número entero. |
src_ip |
event.idm.read_only_udm.principal.ip[], event.idm.read_only_udm.principal.asset.ip[] |
Se asigna directamente. También se usa para completar la IP del activo principal. |
src_port |
event.idm.read_only_udm.principal.port |
Se asigna directamente. |
ssl_cipher |
event.idm.read_only_udm.network.tls.cipher |
Se asigna directamente. |
ssl_function |
event.idm.read_only_udm.principal.resource.attribute.labels[].key:"ssl_function", event.idm.read_only_udm.principal.resource.attribute.labels[].value |
Se asigna directamente. |
ssl_version |
event.idm.read_only_udm.network.tls.version_protocol |
Se asigna directamente. |
staged_sig_ids |
event.idm.read_only_udm.additional.fields[].key:"staged_sig_ids", event.idm.read_only_udm.additional.fields[].value.string_value |
Se asigna directamente. |
staged_sig_names |
event.idm.read_only_udm.additional.fields[].key:"staged_sig_names", event.idm.read_only_udm.additional.fields[].value.string_value |
Se asigna directamente. |
staged_sig_set_names |
event.idm.read_only_udm.additional.fields[].key:"staged_sig_set_names", event.idm.read_only_udm.additional.fields[].value.string_value |
Se asigna directamente. |
staged_threat_campaign_names |
event.idm.read_only_udm.additional.fields[].key:"staged_threat_campaign_names", event.idm.read_only_udm.additional.fields[].value.string_value |
Se asigna directamente. |
status |
event.idm.read_only_udm.security_result.summary |
Se asigna directamente a los registros de procesos de scriptd . |
summary |
event.idm.read_only_udm.security_result.summary |
Se asigna directamente para algunos tipos de registros. |
support_id |
event.idm.read_only_udm.additional.fields[].key:"Support_Id", event.idm.read_only_udm.additional.fields[].value.string_value |
Se asigna directamente. |
systems |
event.idm.read_only_udm.principal.asset.attribute.labels[].key, event.idm.read_only_udm.principal.asset.attribute.labels[].value |
Se analiza para extraer información del sistema y asignarla como etiquetas al activo principal. |
targetFile |
event.idm.read_only_udm.target.file.full_path |
Se asigna directamente a los registros de procesos de scriptd . |
targetIp |
event.idm.read_only_udm.target.ip, event.idm.read_only_udm.target.asset.ip |
Se asigna directamente. También se usa para propagar la IP del activo de destino. Establece has_target como verdadero. |
targetPort |
event.idm.read_only_udm.target.port |
Se asigna directamente y se convierte en un número entero. |
threat_campaign_names |
event.idm.read_only_udm.additional.fields[].key:"threat_campaign_names", event.idm.read_only_udm.additional.fields[].value.string_value |
Se asigna directamente. |
timestamp |
event.timestamp |
Se asigna directamente después del análisis y la rebase. |
tls_version |
event.idm.read_only_udm.network.tls.version |
Se asigna directamente. |
tlsproto |
event.idm.read_only_udm.network.tls.version_protocol |
Se asigna directamente. Si el valor es HTTP/1.1, se asigna "HTTP". |
unit_host |
event.idm.read_only_udm.principal.hostname, event.idm.read_only_udm.principal.asset.hostname |
Se asigna directamente. También se usa para completar el nombre de host del activo principal. Establece has_principal como verdadero. |
uri |
event.idm.read_only_udm.target.url |
Se asigna directamente. |
uri_path |
event.idm.read_only_udm.target.url |
Se asigna directamente y se concatena con uri_query si está presente. |
url |
event.idm.read_only_udm.principal.url |
Se asigna directamente. |
url_string |
event.idm.read_only_udm.network.http.referral_url |
Se asigna directamente. |
user_agent |
event.idm.read_only_udm.network.http.user_agent |
Se asigna directamente. |
userId |
event.idm.read_only_udm.principal.user.userid, event.idm.read_only_udm.target.user.userid |
Se asigna directamente. También se usa para completar el ID del usuario objetivo. Establece has_principal_user como verdadero. |
vendor_name |
event.idm.read_only_udm.metadata.vendor_name |
Está codificado como "F5". |
violations |
event.idm.read_only_udm.security_result.detection_fields[].key:"violations", event.idm.read_only_udm.security_result.detection_fields[].value |
Se asigna directamente. |
vs |
event.idm.read_only_udm.about.resource.attribute.labels[].key:"vs", event.idm.read_only_udm.about.resource.attribute.labels[].value |
Se asigna directamente desde la clave vs en los pares clave-valor analizados. |
vs_name |
event.idm.read_only_udm.about.resource.attribute.labels[].key:"vs_name", event.idm.read_only_udm.about.resource.attribute.labels[].value |
Se asigna directamente desde la clave vs_name en los pares clave-valor analizados. |
N/A | event.idm.read_only_udm.metadata.event_type |
La lógica del analizador determina este valor según la presencia de ciertos campos. La configuración predeterminada es GENERIC_EVENT . Puede ser NETWORK_CONNECTION , USER_LOGIN , USER_LOGOUT , USER_UNCATEGORIZED , STATUS_UPDATE o NETWORK_HTTP . |
N/A | event.idm.read_only_udm.metadata.product_name |
Se codifica como "BIG-IP Local Traffic Manager (LTM)". |
N/A | event.idm.read_only_udm.metadata.vendor_name |
Está codificado como "F5". |
N/A | event.idm.read_only_udm.metadata.event_timestamp |
Se copió del event.timestamp de nivel superior. |
N/A | event.idm.read_only_udm.security_result.severity |
La lógica del analizador determina este valor en función de los campos severity o Level , si están presentes. La configuración predeterminada es UNKNOWN_SEVERITY . Puede ser INFORMATIONAL , LOW , MEDIUM , HIGH o CRITICAL . |
N/A | event.idm.read_only_udm.security_result.summary |
Se establece en "Falla de autenticación" para registros de apmd específicos. |
N/A | event.idm.read_only_udm.extensions.auth.type |
Se establece en "VPN" para los registros de apmd y sshd específicos. De lo contrario, se establece en AUTHTYPE_UNSPECIFIED para los eventos USER_LOGIN y USER_LOGOUT . |
N/A | event.idm.read_only_udm.network.ip_protocol |
El valor predeterminado es "TCP" si proto no está presente. De lo contrario, se determina según el campo proto . |
¿Necesitas más ayuda? Obtén respuestas de miembros de la comunidad y profesionales de Google SecOps.