Recopilar registros de WAF de FortiWeb

Disponible en:

En este documento se describe cómo puede recoger los registros del cortafuegos de aplicaciones web (WAF) de FortiWeb mediante un reenviador de Google Security Operations.

Para obtener más información, consulta el artículo Información general sobre la ingestión de datos en Google Security Operations.

Una etiqueta de ingestión identifica el analizador que normaliza los datos de registro sin procesar en formato UDM estructurado. La información de este documento se aplica al analizador con la etiqueta de ingestión FORTINET_FORTIWEB.

Configurar los registros de WAF de FortiWeb

Para configurar el WAF de FortiWeb de forma que envíe registros a un reenviador de Google Security Operations, haz lo siguiente:

Crear una política de syslog

  1. Inicia sesión en la consola Fortinet FortiWeb.
  2. En la consola Fortinet FortiWeb, selecciona Log & report > Log policy > Syslog policy.
  3. Haz clic en Crear.
  4. En la ventana Nueva política de syslog que aparece, haga lo siguiente:

    • En el campo Nombre de la política, especifica el nombre de la política que quieras usar en la configuración.
    • En el campo Dirección IP, especifica la dirección IP o el nombre de host del servidor syslog remoto.
    • En el campo Puerto, especifica el puerto del servidor syslog.
    • Desmarca la casilla Habilitar formato CSV, si está marcada.
  5. Haz clic en Aceptar.

Habilita los tipos de syslog y el nivel de registro.

  1. En la consola Fortinet FortiWeb, selecciona Registro e informe > Configuración de registro > Configuración de registro global.
  2. En la ventana Configuración global de registro que aparece, selecciona la casilla Syslog y haz lo siguiente:

    • En la lista Política de Syslog, selecciona la política de Syslog que has creado anteriormente.
    • En la lista Nivel de registro, elige el nivel de gravedad mínimo de los registros que quieras recoger.
    • En la lista Facility (Instalación), selecciona la instalación de registro.
  3. Haz clic en Aplicar.

Crear activador

  1. En la consola Fortinet FortiWeb, selecciona Log & report > Log policy > Trigger policy.
  2. Haz clic en Crear.
  3. En la ventana Nueva política de activación que aparece, haz lo siguiente:

    • En el campo Nombre de la política, especifica el nombre de la política que quieras usar en la configuración.
    • En la lista Política de Syslog, selecciona la política de Syslog que has creado anteriormente.
  4. Haz clic en Aceptar.

    Actualiza tu política de syslog con el activador que acabas de crear para asegurarte de que todos los eventos necesarios se registren en el reenviador de syslog de Google Security Operations.

Configurar el reenviador de Google Security Operations para ingerir registros de FortiWeb WAF

  1. Ve a Configuración de SIEM > Reenviadores.
  2. Haz clic en Añadir nuevo remitente.
  3. En el campo Nombre del reenviador, introduce un nombre único para el reenviador.
  4. Haz clic en Enviar. Se añade el reenviador y se muestra la ventana Añadir configuración de recopilador.
  5. En el campo Nombre del recolector, escribe un nombre.
  6. Selecciona Fortinet Web Application Firewall como Tipo de registro.
  7. Seleccione Syslog como Tipo de recogida.
  8. Configure los siguientes parámetros de entrada obligatorios:
    • Protocol: especifica el protocolo de conexión que usa el recopilador para escuchar los datos de syslog.
    • Dirección: especifica la dirección IP o el nombre de host de destino donde reside el recopilador y escucha los datos de syslog.
    • Puerto: especifica el puerto de destino en el que reside el recopilador y escucha los datos de syslog.
  9. Haz clic en Enviar.

Para obtener más información sobre los reenviadores de Google Security Operations, consulta Gestionar configuraciones de reenviadores a través de la interfaz de usuario de Google Security Operations.

Si tienes problemas al crear reenviadores, ponte en contacto con el equipo de Asistencia de Google Security Operations.

Referencia de asignación de campos

Este analizador gestiona los registros de FORTINET FORTIWEB en formato de clave-valor (KV) y los transforma en UDM. Procesa los registros con formato CEF y sin formato CEF, extrae campos, normaliza valores y los asigna a los campos de UDM correspondientes en función del formato del registro.

Tabla de asignación de UDM

Campo de registro Asignación de UDM Lógica
action additional.fields[].value.string_value El valor se asigna directamente.
action security_result.action_details Si action es "Permitir" o "Aceptar", security_result.action_details se define como "ALLOW". Si action es "Denied", "deny", "block" o "Block", security_result.action_details se define como "BLOCK".
app network.application_protocol El valor se asigna directamente después de convertirse a mayúsculas. Solo si el valor es HTTPS, HTTP, DNS, DHCP o SMB.
app_name additional.fields[].key La clave es "appName".
app_name additional.fields[].value.string_value El valor se asigna directamente.
backend_service additional.fields[].key La clave es "backend_service".
backend_service additional.fields[].value.string_value El valor se asigna directamente.
cat security_result.category_details El valor se asigna directamente.
client_level security_result.category Si client_level es "Malicious", security_result.category se asigna a "NETWORK_MALICIOUS".
cn1 additional.fields[].value.string_value Asignado al campo threatWeight.
cn1Label additional.fields[].key La clave se define con el valor de cn1Label.
cn2 additional.fields[].value.string_value Asignado al campo de longitud.
cn2Label additional.fields[].key La clave se define como el valor de cn2Label.
cn3 additional.fields[].value.string_value Se asigna al campo signatureID.
cn3Label additional.fields[].key La clave se define como el valor de cn3Label.
cs1 additional.fields[].value.string_value El valor se asigna directamente.
cs1Label additional.fields[].key La clave se define con el valor de cs1Label.
cs1 principal.user.product_object_id El valor se asigna directamente cuando cs1Label coincide con "userID" (sin distinguir entre mayúsculas y minúsculas).
cs2 additional.fields[].value.string_value El valor se asigna directamente.
cs2Label additional.fields[].key La clave se define con el valor de cs2Label.
cs2 principal.user.userid El valor se asigna directamente cuando cs2Label coincide con "userName" (sin distinguir entre mayúsculas y minúsculas) y suid está vacío.
cs3 additional.fields[].value.string_value El valor se asigna directamente.
cs3Label additional.fields[].key La clave se define con el valor de cs3Label.
cs3 metadata.severity El valor se asigna directamente cuando cs3Label es "level" y cs3 no está vacío.
cs4 additional.fields[].value.string_value Se asigna al campo subType.
cs4Label additional.fields[].key La clave se define con el valor de cs4Label.
cs5 additional.fields[].value.string_value Asignado al campo threatLevel.
cs5Label additional.fields[].key La clave se define con el valor de cs5Label.
cs6 additional.fields[].value.string_value Asignado al campo owaspTop10.
cs6Label additional.fields[].key La clave se define con el valor de cs6Label.
date metadata.event_timestamp.seconds Se combina con time y se analiza para generar segundos de época.
dev_id principal.resource.id El valor se asigna directamente.
devname principal.resource.name El valor se asigna directamente.
device_event_class_id metadata.product_event_type Se usa en el análisis de CEF.
device_product metadata.product_name Se usa en el análisis de CEF.
device_vendor metadata.vendor_name Se usa en el análisis de CEF.
device_version metadata.product_version Se usa en el análisis de CEF.
dhost target.hostname El valor se asigna directamente.
dpt target.port El valor se asigna directamente y se convierte en un número entero.
dst target.ip El valor se asigna directamente.
dst_port target.port El valor se asigna directamente y se convierte en un número entero.
dstepid target.process.pid El valor se asigna directamente.
dsteuid target.user.userid El valor se asigna directamente.
event_name metadata.product_event_type Se usa en el análisis de CEF.
http_agent network.http.parsed_user_agent El valor se analiza como una cadena user-agent.
http_method network.http.method El valor se asigna directamente.
http_refer network.http.referral_url El valor se asigna directamente.
http_session_id network.session_id El valor se asigna directamente.
http_url target.url El valor se asigna directamente.
http_version metadata.product_version El valor se asigna directamente.
length additional.fields[].key La clave se ha definido como "length".
length additional.fields[].value.string_value El valor se asigna directamente.
log_type metadata.log_type Codificado como "FORTINET_FORTIWEB".
main_type additional.fields[].key La clave es "mainType".
main_type additional.fields[].value.string_value El valor se asigna directamente.
message Varios campos Se ha analizado con los filtros grok y kv para extraer diferentes campos.
ml_allow_method additional.fields[].key La clave es "ml_allow_method".
ml_allow_method additional.fields[].value.string_value El valor se asigna directamente.
ml_arg_dbid additional.fields[].key La clave es "ml_arg_dbid".
ml_arg_dbid additional.fields[].value.string_value El valor se asigna directamente.
ml_domain_index additional.fields[].key La clave es "ml_domain_index".
ml_domain_index additional.fields[].value.string_value El valor se asigna directamente.
ml_log_arglen additional.fields[].key La clave es "ml_log_arglen".
ml_log_arglen additional.fields[].value.string_value El valor se asigna directamente.
ml_log_hmm_probability additional.fields[].key La clave es "ml_log_hmm_probability".
ml_log_hmm_probability additional.fields[].value.string_value El valor se asigna directamente.
ml_log_sample_arglen_mean additional.fields[].key La clave es "ml_log_sample_arglen_mean".
ml_log_sample_arglen_mean additional.fields[].value.string_value El valor se asigna directamente.
ml_log_sample_prob_mean additional.fields[].key La clave es "ml_log_sample_prob_mean".
ml_log_sample_prob_mean additional.fields[].value.string_value El valor se asigna directamente.
ml_svm_accuracy additional.fields[].key La clave es "ml_svm_accuracy".
ml_svm_accuracy additional.fields[].value.string_value El valor se asigna directamente.
ml_svm_log_main_types additional.fields[].key La clave es "ml_svm_log_main_types".
ml_svm_log_main_types additional.fields[].value.string_value El valor se asigna directamente.
ml_svm_log_match_types additional.fields[].key La clave es "ml_svm_log_match_types".
ml_svm_log_match_types additional.fields[].value.string_value El valor se asigna directamente.
ml_url_dbid additional.fields[].key La clave es "ml_url_dbid".
ml_url_dbid additional.fields[].value.string_value El valor se asigna directamente.
monitor_status additional.fields[].key La clave es "monitor_status".
monitor_status additional.fields[].value.string_value El valor se asigna directamente.
msg metadata.description El valor se asigna directamente.
owasp_top10 additional.fields[].key La clave es "owaspTop10".
owasp_top10 additional.fields[].value.string_value El valor se asigna directamente.
principal_app principal.application El valor se asigna directamente.
principal_host principal.hostname El valor se asigna directamente.
proto network.ip_protocol El valor se asigna directamente después de convertirse a mayúsculas.
request target.url El valor se asigna directamente.
requestMethod network.http.method El valor se asigna directamente.
rt metadata.event_timestamp.seconds Se analiza como milisegundos desde el inicio del registro de tiempo y se convierte en segundos.
security_result.severity security_result.severity Derivado de severity_level. Se asigna a diferentes valores de gravedad de UDM en función del valor del registro sin procesar. El valor predeterminado es UNKNOWN_SEVERITY si no se encuentra ninguna coincidencia.
server_pool_name additional.fields[].key La clave es "server_pool_name".
server_pool_name additional.fields[].value.string_value El valor se asigna directamente.
service network.application_protocol El valor se asigna directamente después de convertirse a mayúsculas.
service target.application El valor se asigna directamente después de convertirse a mayúsculas si no es HTTPS, HTTP, DNS, DHCP o SMB.
severity security_result.severity Si severity está vacío y cs3Label es "level", se usa el valor de cs3. Después, se asigna a un valor de gravedad de UDM (BAJO, ALTO, etc.).
signature_id security_result.rule_id El valor se asigna directamente.
signature_subclass security_result.detection_fields[].key La clave se ha definido como "signature_subclass".
signature_subclass security_result.detection_fields[].value El valor se asigna directamente.
src principal.ip El valor se asigna directamente.
src_country principal.location.country_or_region El valor se asigna directamente.
src_ip principal.ip El valor se asigna directamente.
src_port principal.port El valor se asigna directamente y se convierte en un número entero.
srccountry principal.location.country_or_region El valor se asigna directamente.
sub_type additional.fields[].key La clave es "subType".
sub_type additional.fields[].value.string_value El valor se asigna directamente.
subtype target.resource.resource_subtype El valor se asigna directamente.
suid principal.user.userid El valor se asigna directamente.
threat_level additional.fields[].key La clave es "threatLevel".
threat_level additional.fields[].value.string_value El valor se asigna directamente.
threat_weight security_result.detection_fields[].key La clave es "threat_weight".
threat_weight security_result.detection_fields[].value El valor se asigna directamente.
time metadata.event_timestamp.seconds Se combina con date y se analiza para generar segundos de época.
user_id principal.user.product_object_id El valor se asigna directamente.
user_name additional.fields[].key La clave se ha definido como "userName".
user_name additional.fields[].value.string_value El valor se asigna directamente.
user_name principal.user.userid El valor se asigna directamente.
N/A metadata.event_type Se establece en "NETWORK_CONNECTION" si se incluyen principal.ip y target.ip. Se asigna el valor "USER_UNCATEGORIZED" si se incluyen principal.ip y principal.user. Asigna el valor "STATUS_UPDATE" si solo está presente principal.ip. De lo contrario, se asigna el valor "GENERIC_EVENT".
N/A metadata.log_type Codificado como "FORTINET_FORTIWEB".
N/A metadata.product_name Codificado como "FORTINET FORTIWEB" o "FortiWEB Cloud" en función del formato del registro.
N/A metadata.vendor_name Codificado como "FORTINET" o "Fortinet" en función del formato del registro.
N/A principal.resource.resource_type Se codifica como "DEVICE" si dev_id está presente.

¿Necesitas más ayuda? Recibe respuestas de los miembros de la comunidad y de los profesionales de Google SecOps.