Cloud Intelligence™Cloud Intelligence™

Cloud Intelligence™

Consulta tus VPC Flow Logs con AWS Athena usando CloudFormation

By Piyush PatilJan 12, 20245 min read

Esta página también está disponible en English, Deutsch, Français, Italiano, 日本語 y Português.

VPC Flow Logs es una funcionalidad que ofrecen servicios en la nube como Amazon Web Services (AWS) para capturar información sobre el tráfico IP que entra y sale de las interfaces de red de una Virtual Private Cloud (VPC). Estos logs sirven para monitorear la red, analizar la seguridad y resolver problemas. Al habilitarlos, se obtienen datos como el origen, el destino y el protocolo del tráfico, además de la cantidad de bytes transferidos. Esta información es clave para entender la actividad de red dentro de una VPC y suele usarse para detectar patrones de tráfico anómalos o posibles amenazas de seguridad.

VPC Flow Logs es una funcionalidad de AWS que captura información sobre el tráfico IP. Al analizar estos logs, los administradores pueden identificar actividades maliciosas como reconocimiento de red, exfiltración de datos no autorizada o patrones de tráfico inesperados. También ayudan a garantizar el cumplimiento de las políticas y normativas de red. Por ejemplo, las organizaciones pueden recurrir a los flow logs para verificar que sus configuraciones de red se ajusten a sus estándares de seguridad y requisitos regulatorios. Además, estos logs resultan muy valiosos para el análisis de rendimiento, ya que permiten optimizar el tráfico de red y la asignación de recursos dentro de la VPC.

Existen varios servicios de AWS que se pueden usar para consultar los VPC Flow Logs, como Amazon Athena, Amazon CloudWatch Logs, AWS ElasticSearch Service, Amazon QuickSight, AWS Glue y Amazon Redshift. En este blog te voy a explicar cómo configurar la integración entre Athena y S3 usando AWS CloudFormation.

AWS Athena es un servicio de consultas interactivas que te permite analizar datos directamente en Amazon S3 con SQL estándar. Puedes usar Athena para consultar los VPC Flow Logs almacenados en buckets de S3. Resulta muy útil para consultas complejas y análisis ad-hoc, ya que Athena es serverless y no requiere que montes ninguna infraestructura.

Antes, configurar Athena era bastante complejo y había que dar de alta S3 como fuente de datos manualmente. Además, al consultar los logs tenías que escribir las queries por tu cuenta para obtener los datos correctos. AWS simplificó este proceso al ofrecer una forma de generar una plantilla de CloudFormation junto con varias consultas predefinidas que aportan insights bastante detallados sobre el flujo de tráfico.

Así se configura:

Paso 1: Habilitar VPC Flow Logs

A continuación se muestran todas las opciones que necesitas marcar para habilitar VPC Flow Logs. Una vez habilitado, ve al bucket de S3 que seleccionaste y verifica que los logs estén llegando.

Habilitar VPC Flow Logs

Paso 2: Generar la plantilla de CloudFormation desde la consola

Ve a tu VPC y, en la pestaña Flow logs, selecciona un flow log que publique en Amazon S3; luego elige Actions y Generate Athena integration.

Generate Athena Integration

Después de hacer clic en Generate Athena Integration, en la siguiente sección completa los detalles correspondientes. Yo usé el mismo bucket de S3 para la plantilla de CloudFormation y para los Query Results, pero también puedes usar buckets distintos.

Selección del bucket de S3 para Generate Athena Integration

Paso 2: Crear el stack de CloudFormation

Después de hacer clic en "Generate Athena Integration", en la siguiente página podrás crear el stack de CloudFormation con el botón "Create CloudFormation stack" en la esquina superior derecha. Ojo: no cierres ese popup verde, porque tendrías que repetir todo el proceso anterior.

Crear CloudFormation Stack 1

Al hacer clic en "Create CloudFormation Stack" se abrirá la página de AWS CloudFormation.

Solo haz clic en Next.

Crear CloudFormation Stack 2

Pon el nombre que prefieras para el stack y haz clic en Next.

Crear CloudFormation Stack 3

En la siguiente ventana deja todas las opciones tal como están y haz clic en Next.

Crear CloudFormation Stack 4

Revisa que todas tus selecciones estén correctas, marca la casilla de "I acknowledge" y haz clic en Submit.

Crear CloudFormation Stack 5

Espera a que el stack termine de crearse.

Crear CloudFormation Stack 6

Una vez creado el stack, entra a Athena y verás la base de datos VPC Flow Log lista para consultarse. Si aparece la advertencia sobre la ubicación de los resultados de las consultas, haz clic en "Edit Settings" y elige el bucket donde quieras guardarlos. Yo usé el mismo bucket de S3 que creé para los VPC Flow Logs.

Crear CloudFormation Stack 7

Paso 3: Ejecutar una consulta predefinida

En Athena, selecciona Query Editor en el menú de la izquierda y elige el workgroup que creó nuestra plantilla de CloudFormation.

Ejecutar una consulta predefinida 1

Ahora, al hacer clic en Saved queries, vas a encontrar varias consultas ya cargadas junto con la descripción de los insights que aportan.

Ejecutar una consulta predefinida 2

En la captura de arriba se ven pocas consultas porque estoy usando mi cuenta de sandbox, pero según los logs que recopilen tus VPC Flow Logs podrás ver muchas más. A continuación, el listado de las consultas disponibles.

  • VpcFlowLogsAcceptedTraffic — Las conexiones TCP permitidas según tus security groups y network ACLs.
  • VpcFlowLogsAdminPortTraffic — Las 10 direcciones IP con más tráfico, registradas por aplicaciones que atienden solicitudes en puertos administrativos.
  • VpcFlowLogsIPv4Traffic — El total de bytes de tráfico IPv4 registrados.
  • VpcFlowLogsIPv6Traffic — El total de bytes de tráfico IPv6 registrados.
  • VpcFlowLogsRejectedTCPTraffic — Las conexiones TCP rechazadas según tus security groups o network ACLs.
  • VpcFlowLogsRejectedTraffic — El tráfico rechazado según tus security groups o network ACLs.
  • VpcFlowLogsSshRdpTraffic — El tráfico SSH y RDP.
  • VpcFlowLogsTopTalkers — Las 50 direcciones IP con más tráfico registrado.
  • VpcFlowLogsTopTalkersPacketLevel — Las 50 direcciones IP a nivel de paquete con más tráfico registrado.
  • VpcFlowLogsTopTalkingInstances — Los IDs de las 50 instancias con más tráfico registrado.
  • VpcFlowLogsTopTalkingSubnets — Los IDs de las 50 subredes con más tráfico registrado.
  • VpcFlowLogsTopTCPTraffic — Todo el tráfico TCP registrado para una dirección IP de origen.
  • VpcFlowLogsTotalBytesTransferred — Los 50 pares de direcciones IP de origen y destino con más bytes registrados.
  • VpcFlowLogsTotalBytesTransferredPacketLevel — Los 50 pares de direcciones IP de origen y destino a nivel de paquete con más bytes registrados.
  • VpcFlowLogsTrafficFrmSrcAddr — El tráfico registrado para una dirección IP de origen específica.
  • VpcFlowLogsTrafficToDstAddr — El tráfico registrado para una dirección IP de destino específica.

Vamos a correr una consulta de ejemplo para hacernos una idea de los insights que ofrecen. Yo usé la consulta VpcFlowLogsTopTalkers, que muestra las 50 direcciones IP con la mayor cantidad de bytes transferidos.

Y listo. Ya tienes un mecanismo de consulta para hacer troubleshooting o sacar insights sobre los problemas de tu red.

¡Feliz troubleshooting!

Referencia:

[1] https://docs.aws.amazon.com/vpc/latest/userguide/flow-logs-athena.html