Automatizar el análisis de malware de los archivos subidos a Cloud Storage

Last reviewed 2024-07-16 UTC

Esta arquitectura de referencia muestra cómo crear una canalización basada en eventos que puede ayudarte a automatizar la evaluación de archivos en busca de malware, como troyanos, virus y otro código malicioso. Evaluar manualmente la gran cantidad de archivos que se suben a Cloud Storage lleva demasiado tiempo en la mayoría de las aplicaciones. Automatizar el proceso puede ayudarte a ahorrar tiempo y mejorar la eficiencia.

La canalización de esta arquitectura usa Google Cloud productos junto con el motor antivirus de código abierto ClamAV. También puedes usar cualquier otro motor antimalware que realice análisis bajo demanda en contenedores Linux. En esta arquitectura, ClamAV se ejecuta en un contenedor de Docker alojado en Cloud Run. El flujo de procesamiento también escribe entradas de registro en Cloud Logging y registra métricas en Cloud Monitoring.

Arquitectura

En el siguiente diagrama se muestra un resumen de la arquitectura:

Arquitectura de la canalización de análisis de malware.

La arquitectura muestra las siguientes canalizaciones:

  • Pipeline de análisis de archivos subidos por usuarios, que comprueba si un archivo subido contiene malware.
  • Pipeline de actualización de réplica de la base de datos de malware de ClamAV, que mantiene una réplica actualizada de la base de datos de malware que usa ClamAV.

Las canalizaciones se describen con más detalle en las secciones siguientes.

Pipeline de análisis de archivos subidos por usuarios

El flujo de procesamiento de análisis de archivos funciona de la siguiente manera:

  1. Los usuarios finales suben sus archivos al depósito de Cloud Storage sin analizar.
  2. El servicio Eventarc detecta este evento de subida y le informa al servicio de Cloud Run sobre este nuevo archivo.
  3. El servicio de Cloud Run descarga el nuevo archivo del segmento de Cloud Storage sin analizar y lo envía al analizador de malware ClamAV.
  4. En función del resultado del análisis de malware, el servicio realiza una de las siguientes acciones:
    • Si ClamAV declara que el archivo está limpio, se mueve del segmento de Cloud Storage no analizado al segmento de Cloud Storage limpio.
    • Si ClamAV declara que el archivo contiene malware, se moverá del segmento de Cloud Storage no analizado al segmento de Cloud Storage en cuarentena.
  5. El servicio informa del resultado de estas acciones a Logging y Monitoring para que los administradores puedan tomar medidas.

Pipeline de actualización de réplica de la base de datos de malware de ClamAV

La canalización de actualización del mirror de la base de datos de malware de ClamAV mantiene un mirror local privado actualizado de la base de datos en Cloud Storage. De esta forma, solo se accede a la base de datos pública de ClamAV una vez por actualización para descargar los archivos de actualizaciones diferenciales más pequeños, y no a la base de datos completa, lo que evita cualquier limitación de frecuencia.

Este flujo de trabajo funciona de la siguiente manera:

  1. Una tarea de Cloud Scheduler está configurada para activarse cada dos horas, que es el mismo intervalo de comprobación de actualizaciones predeterminado que utiliza el servicio freshclam de ClamAV. Este trabajo hace una solicitud HTTP POST al servicio de Cloud Run para indicarle que actualice la réplica de la base de datos de malware.
  2. La instancia de Cloud Run copia la réplica de la base de datos de malware del segmento de Cloud Storage al sistema de archivos local.
  3. A continuación, la instancia ejecuta la herramienta ClamAV CVDUpdate, que descarga las actualizaciones diferenciales disponibles y las aplica a la réplica de la base de datos.
  4. A continuación, copia la réplica actualizada de la base de datos de malware en el segmento de Cloud Storage.

Al iniciarse, el servicio ClamAV freshclam que se ejecuta en la instancia de Cloud Run descarga la base de datos de malware de Cloud Storage. Durante el tiempo de ejecución, el servicio también comprueba periódicamente si hay actualizaciones de la base de datos disponibles y las descarga del segmento de Cloud Storage.

Factores del diseño

Las siguientes directrices pueden ayudarte a desarrollar una arquitectura que cumpla los requisitos de fiabilidad, coste y eficiencia operativa de tu organización.

Fiabilidad

Para analizar de forma eficaz, el escáner de malware ClamAV necesita mantener una base de datos actualizada de firmas de malware. El servicio ClamAV se ejecuta con Cloud Run, que es un servicio sin estado. Al iniciar una instancia del servicio, ClamAV siempre debe descargar la base de datos de malware completa más reciente, que tiene un tamaño de varios cientos de megabytes.

La base de datos pública de malware de ClamAV se aloja en una red de distribución de contenido (CDN), que limita la velocidad de estas descargas. Si se inician varias instancias e intentan descargar la base de datos completa, se puede activar la limitación de la frecuencia. Esto provoca que la dirección IP externa que usa Cloud Run se bloquee durante 24 horas. De esta forma, se evita que se inicie el servicio ClamAV y que se descarguen actualizaciones de la base de datos de malware.

Además, Cloud Run usa un grupo compartido de direcciones IP externas. Por lo tanto, la CDN considera que las descargas de las instancias de análisis de malware de diferentes proyectos proceden de una sola dirección, lo que también activa el bloqueo.

Optimización de costes

Esta arquitectura usa los siguientes componentes facturables de Google Cloud:

Para generar una estimación de costes basada en el uso previsto, utiliza la calculadora de precios.

Eficiencia operativa

Para activar alertas basadas en registros de archivos infectados, puedes usar entradas de registro de Logging. Sin embargo, la configuración de estas alertas no se incluye en esta arquitectura.

Implementación

Para desplegar esta arquitectura, consulta Desplegar análisis de malware automatizado para archivos subidos a Cloud Storage.

Siguientes pasos