En este documento se explica cómo ingerir registros de FileZilla en Google Security Operations mediante Bindplane. El código del analizador de Logstash extrae campos relevantes, como marcas de tiempo, nombres de host, IDs de usuario y descripciones de los registros del servidor FTP de FileZilla.
A continuación, estructura estos campos extraídos en un modelo de datos unificado (UDM) para realizar análisis de seguridad y correlaciones de forma coherente.
Antes de empezar
Asegúrate de que cumples los siguientes requisitos previos:
Instancia de Google SecOps
Windows 2016 o versiones posteriores, o un host Linux con systemd
Si se ejecuta a través de un proxy, los puertos del cortafuegos están abiertos
Acceso privilegiado a una instancia de FileZilla Server
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. Guarda el archivo de forma segura en el sistema en el que se instalará Bindplane.
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 en la instancia de FileZilla Server
Instala el agente de Bindplane en tu sistema operativo Windows o Linux siguiendo las instrucciones que se indican a continuación.
Instalación de ventanas
Abre el símbolo del sistema o PowerShell como administrador.
Configurar el agente de BindPlane para ingerir Syslog y enviarlo a Google SecOps
Accede al archivo de configuración:
Busca el archivo config.yaml. Normalmente, 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).
Edita el archivo config.yaml de la siguiente manera:
receivers:filelog:# Adjust the path to the log filefile_path:<PATH_TO>/filezilla-logs.loglog_type:'file'exporters:chronicle/chronicle_w_labels:compression:gzip# Adjust the path to the credentials file you downloaded in Step 1creds_file_path:'/path/to/ingestion-authentication-file.json'# Replace with your actual customer ID from Step 2customer_id:<customer_id>
endpoint:malachiteingestion-pa.googleapis.com# Add optional ingestion labels for better organizationingestion_labels:log_type:'FILEZILLA_FTP'raw_log_field:bodyservice:pipelines:logs/source0__chronicle_w_labels-0:receivers:-filelogexporters:-chronicle/chronicle_w_labels
Sustituye el puerto y la dirección IP según sea necesario en tu infraestructura.
Sustituye <customer_id> por el ID de cliente real.
Reinicia el agente de Bindplane para aplicar los cambios
Para reiniciar el agente de Bindplane en Linux, ejecuta el siguiente comando:
sudosystemctlrestartbindplane-agent
Para reiniciar el agente de Bindplane en Windows, puedes usar la consola Servicios
o introducir el siguiente comando:
net stop BindPlaneAgent && net start BindPlaneAgent
Configurar el registro en FileZilla
Inicia sesión en el servidor con FileZilla.
Abre el software FileZilla.
Ve a Editar > Configuración.
Selecciona Registro en el menú.
Proporcione los siguientes detalles de configuración:
Marca la casilla Mostrar marcas de tiempo en el cuadro de mensaje.
Marca la casilla Registrar en archivo.
Nombre de archivo: introduce un nombre de archivo y selecciona la ruta de almacenamiento (por ejemplo, filezilla-logs).
Opcional: Limitar el tamaño del archivo de registro: selecciona esta casilla para limitar la cantidad de espacio que puede usar un archivo de registro.
Opcional: Límite: puedes introducir el tamaño máximo del archivo de registro en megabytes.
Haz clic en Aceptar.
Reinicia FileZilla.
Tabla de asignación de UDM
Campo de registro
Asignación de UDM
Lógica
datos
read_only_udm.metadata.description
El contenido del campo data del registro sin procesar.
datos
read_only_udm.metadata.event_timestamp.seconds
Se extrae del campo data mediante un patrón grok y se convierte a segundos de época.
datos
read_only_udm.network.http.response_code
Se extrae del campo data mediante un patrón grok.
datos
read_only_udm.principal.hostname
Se extrae del campo data mediante un patrón grok.
datos
read_only_udm.principal.port
Se extrae del campo data mediante un patrón grok.
datos
read_only_udm.principal.user.userid
Se extrae del campo data mediante un patrón grok, solo si el valor no es not logged in.
datos
read_only_udm.target.ip
Se extrae del campo data mediante un patrón grok.
datos
read_only_udm.target.process.pid
Se extrae del campo data mediante un patrón grok.
read_only_udm.metadata.event_type
Se asigna el valor NETWORK_FTP si existe target.ip. De lo contrario, se asigna el valor GENERIC_EVENT.
[[["Es fácil de entender","easyToUnderstand","thumb-up"],["Me ofreció una solución al problema","solvedMyProblem","thumb-up"],["Otro","otherUp","thumb-up"]],[["Es difícil de entender","hardToUnderstand","thumb-down"],["La información o el código de muestra no son correctos","incorrectInformationOrSampleCode","thumb-down"],["Me faltan las muestras o la información que necesito","missingTheInformationSamplesINeed","thumb-down"],["Problema de traducción","translationIssue","thumb-down"],["Otro","otherDown","thumb-down"]],["Última actualización: 2025-09-10 (UTC)."],[],[],null,["Collect FileZilla FTP logs \nSupported in: \nGoogle secops [SIEM](/chronicle/docs/secops/google-secops-siem-toc)\n| **Note:** This feature is covered by [Pre-GA Offerings Terms](https://chronicle.security/legal/service-terms/) of the Google Security Operations Service Specific Terms. Pre-GA features might have limited support, and changes to pre-GA features might not be compatible with other pre-GA versions. For more information, see the [Google SecOps Technical Support Service guidelines](https://chronicle.security/legal/technical-support-services-guidelines/) and the [Google SecOps Service Specific Terms](https://chronicle.security/legal/service-terms/).\n\nThis document explains how to ingest FileZilla logs to Google Security Operations\nusing Bindplane. The Logstash parser code extracts relevant fields like\ntimestamps, hostnames, user IDs, and descriptions from FileZilla FTP server logs.\nIt then structures these extracted fields into a Unified Data Model (UDM) for\nconsistent security analysis and correlation.\n\nBefore you begin\n\nMake sure you have the following prerequisites:\n\n- Google SecOps instance\n- Windows 2016 or later, or a Linux host with `systemd`\n- If running behind a proxy, firewall [ports](/chronicle/docs/ingestion/use-bindplane-agent#verify_the_firewall_configuration) are open\n- Privileged access to an instance of FileZilla Server\n\nGet Google SecOps ingestion authentication file\n\n1. Sign in to the Google SecOps console.\n2. Go to **SIEM Settings \\\u003e Collection Agents**.\n3. Download the **Ingestion Authentication File**. Save the file securely on the system where Bindplane will be installed.\n\nGet Google SecOps customer ID\n\n1. Sign in to the Google SecOps console.\n2. Go to **SIEM Settings \\\u003e Profile**.\n3. Copy and save the **Customer ID** from the **Organization Details** section.\n\nInstall the Bindplane agent on FileZilla Server instance\n\nInstall the Bindplane agent on your Windows or Linux operating system according\nto the following instructions.\n\nWindows installation\n\n1. Open the **Command Prompt** or **PowerShell** as an administrator.\n2. Run the following command:\n\n msiexec /i \"https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi\" /quiet\n\nLinux installation\n\n1. Open a terminal with root or sudo privileges.\n2. Run the following command:\n\n sudo sh -c \"$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)\" install_unix.sh\n\nAdditional installation resources\n\nFor additional installation options, consult the [installation guide](/chronicle/docs/ingestion/use-bindplane-agent#install_the_bindplane_agent).\n\nConfigure the Bindplane agent to ingest Syslog and send to Google SecOps\n\n1. Access the configuration file:\n - Locate the `config.yaml` file. Typically, it's in the `/etc/bindplane-agent/` directory on Linux or in the installation directory on Windows.\n - Open the file using a text editor (for example, `nano`, `vi`, or Notepad).\n2. Edit the `config.yaml` file as follows:\n\n receivers:\n filelog:\n # Adjust the path to the log file\n file_path: \u003cPATH_TO\u003e/filezilla-logs.log\n log_type: 'file'\n\n exporters:\n chronicle/chronicle_w_labels:\n compression: gzip\n # Adjust the path to the credentials file you downloaded in Step 1\n creds_file_path: '/path/to/ingestion-authentication-file.json'\n # Replace with your actual customer ID from Step 2\n customer_id: \u003ccustomer_id\u003e\n endpoint: malachiteingestion-pa.googleapis.com\n # Add optional ingestion labels for better organization\n ingestion_labels:\n log_type: 'FILEZILLA_FTP'\n raw_log_field: body\n\n service:\n pipelines:\n logs/source0__chronicle_w_labels-0:\n receivers:\n - filelog\n exporters:\n - chronicle/chronicle_w_labels\n\n - Replace the port and IP address as required in your infrastructure.\n - Replace `\u003ccustomer_id\u003e` with the actual Customer ID.\n - Update `/path/to/ingestion-authentication-file.json` to the path where the authentication file was saved in the [Get Google SecOps ingestion authentication file](/chronicle/docs/ingestion/default-parsers/filezilla-ftp#get-auth-file) section.\n\nRestart the Bindplane agent to apply the changes\n\n- To restart the Bindplane agent in Linux, run the following command:\n\n sudo systemctl restart bindplane-agent\n\n- To restart the Bindplane agent in Windows, you can either use the **Services**\n console or enter the following command:\n\n net stop BindPlaneAgent && net start BindPlaneAgent\n\nConfigure logging in FileZilla\n\n1. Sign in to the server with **FileZilla**.\n2. Open the FileZilla software.\n3. Go to **Edit \\\u003e Settings**.\n4. Select **Logging** from the menu.\n5. Provide the following configuration details:\n - Select the checkbox **Show timestamps in messagebox**.\n - Select the checkbox **Log to file**.\n - **Filename** : Enter a filename and select the storage path (for example, `filezilla-logs`).\n - Optional: **Limit size of logfile**: Select this checkbox to limit the amount of space a log file can use.\n - Optional: **Limit**: You can enter a max file size for your log file here in Megabytes.\n6. Click **OK**.\n7. Restart FileZilla.\n\nUDM mapping table\n\n| Log field | UDM mapping | Logic |\n|-----------|------------------------------------------------|-------------------------------------------------------------------------------------------------|\n| data | read_only_udm.metadata.description | The raw log `data` field content. |\n| data | read_only_udm.metadata.event_timestamp.seconds | Extracted from the `data` field using a grok pattern and converted to epoch seconds. |\n| data | read_only_udm.network.http.response_code | Extracted from the `data` field using a grok pattern. |\n| data | read_only_udm.principal.hostname | Extracted from the `data` field using a grok pattern. |\n| data | read_only_udm.principal.port | Extracted from the `data` field using a grok pattern. |\n| data | read_only_udm.principal.user.userid | Extracted from the `data` field using a grok pattern, only if the value is not `not logged in`. |\n| data | read_only_udm.target.ip | Extracted from the `data` field using a grok pattern. |\n| data | read_only_udm.target.process.pid | Extracted from the `data` field using a grok pattern. |\n| | read_only_udm.metadata.event_type | Set to `NETWORK_FTP` if target.ip exists, otherwise set to `GENERIC_EVENT`. |\n| | read_only_udm.metadata.log_type | Set to `FILEZILLA_FTP`. |\n| | read_only_udm.metadata.product_name | Set to `FILEZILLA`. |\n| | read_only_udm.metadata.vendor_name | Set to `FILEZILLA`. |\n\n**Need more help?** [Get answers from Community members and Google SecOps professionals.](https://security.googlecloudcommunity.com/google-security-operations-2)"]]