Descargando logs de CloudTrail con AWS CLI

iaasgeek

Guillermo Ruiz

Posted on September 7, 2023

Descargando logs de CloudTrail con AWS CLI

En este blog vamos a ver cómo podemos descargar los logs de AWS CloudTrail utilizando la línea de comandos (CLI) . Aunque existen otras fuentes donde obtener logs en AWS (ej: directamente de los servicios específicos), CloudTrail es una de las fuentes más valiosas que podrás encontrar.

¿Qué hace a CloudTrail tan especial?

Este servicio registra la actividad de las llamadas API en tu cuenta y te ofrece un historial completo de las llamadas, incluyendo quién hizo la llamada, la fuente de la IP, cuándo se hizo la llamada, etc. Para que te hagas una idea, en estos logs podemos observar varios tipos de eventos, como la creación, modificación o eliminación de un recurso EC2 (máquina virtual), la eliminación de un bucket S3, cambios en IAM, invocaciones de funciones lambdas, eventos de gestión en servicios AWS, o eventos de acceso a datos entre otros muchos.

CloudTrail está activado por defecto y almacenará registros durante 90 días. Para extender la retención de los registros más allá de 90 días, necesitas configurar CloudTrail para que entregue los registros a un bucket S3. Esto está fuera del alcance de este blog, pero haremos un blog adicional para ver cómo hacerlo. Si tenéis interés y no podéis esperar, podéis encontrar toda la info en la documentación de AWS CloudTrail.

El servicio soporta múltiples trails, lo que ayuda a que diferentes equipos/roles en la empresa puedan crear y gestionar sus propios rastreos según sus necesidades. Por ejemplo:

  1. Un administrador de seguridad podría crear un trail que se aplique a todas las regiones y cifrar los archivos de registro con una clave KMS.
  2. Un desarrollador puede crear un trail que se aplique a una sola región, por ejemplo eu-south-2 (España), y configurar alarmas CloudWatch para recibir notificaciones sobre actividad específica de API.
  3. Un auditor de TI puede crear un rastreo que se aplique a una región, digamos eu-central-1 (Fráncfort), para validar la integridad del archivo de registro y poder afirmar que los archivos de registro no han cambiado desde que CloudTrail entregó los archivos de registro a un bucket de S3.

A tener en cuenta

Como con cualquier servicio, CloudTrail tiene sus particularidades y limitaciones. Aquí algunas cosas a tener en cuenta cuando utilizéis el servicio:

  1. Coste : Aunque hay una versión gratuita de CloudTrail que ofrece un registro básico de eventos de gestión, las funciones más avanzadas y el registro de todos los eventos pueden incurrir en gastos adicionales. Además, almacenar logs en S3 o archivarlos en Glacier también tiene su coste. Podéis utilizar la calculadora de AWS para hacer estimaciones.
  2. Limitaciones de eventos de datos : Por defecto, CloudTrail registra solo eventos de gestión (llamadas API que crean/eliminan/inician o detienen un servicio o realizan una llamada a un servicio existente que está en funcionamiento). Si deseas registrar eventos de datos, como llamadas API para recuperar/almacenar/consultar datos S3, llamadas a funciones Lambda y llamadas API de base de datos, debes configurarlo explícitamente y esto puede incurrir en costes adicionales.
  3. Tamaño y formato de los archivos de registro : Los eventos registrados por CloudTrail se entregan en archivos JSON, que pueden ser grandes dependiendo de la actividad de la cuenta. Un tamaño grande en JSON puede dificultar la rápida lectura y análisis de los datos, además de consumir más almacenamiento. El formato JSON, aunque estructurado, puede no ser ideal para todas las herramientas de análisis.
  4. Sensibilidad de los datos : Los registros de CloudTrail pueden contener información sensible. Es crucial configurar adecuadamente los permisos en el bucket S3 donde se almacenan los registros y considerar cifrarlos en reposo. Recordad que el identificador del bucket S3 es único y global. En esta otra entrada de blog os contamos cómo los atacantes se pueden hacer con vuestros buckets.
  5. Integridad de los registros : CloudTrail utiliza la firma digital para garantizar la integridad de los registros. Es importante validar regularmente estas firmas para asegurarse de que los registros no hayan sido manipulados.
  6. Limitación geográfica : Aunque hay una opción para habilitarlo globalmente, es fundamental recordar que los registros se mantienen por región.
  7. Limitaciones en la búsqueda y visualización : Si bien la consola de CloudTrail permite algunas capacidades básicas de búsqueda y visualización, las operaciones más avanzadas a menudo requieren herramientas adicionales o servicios de terceros.
  8. Límites de API : el servicio está limitado en la cantidad de llamadas API que puedes hacer durante un período de tiempo específico. Si superas estos límites, puedes experimentar errores o delays.
  9. Límites de configuraciones de rastreo (trails): Existe un límite en el número de configuraciones de “trails” que puedes crear por región en tu cuenta AWS.

Extracción de Logs a través del CLI

Una vez que conocemos un poco más el servicio CloudTrail, vayamos a lo realmente interesante. AWS ofrece una interfaz CLI para interactuar con los recursos que tengas configurados en tu cuenta. En esta entrada de blog os contamos cómo configurar la AWS CLI. Una vez lo tengáis listo para usar, hay dos maneras para poder descargar los logs,

Por ejemplo, para copiar todos los archivos y subdirectorios de un directorio local llamado mi_directorio a un bucket de S3 llamado mi-bucket, podrías usar:

OPCIÓN 1. Utilizando el comando cp, copiaremos los archivos y directorios desde nuestro bucket de Amazon S3.

La opción --recursive nos permitirá copiar todos los archivos y subdirectorios dentro de un directorio especificado de manera recursiva. Si tenemos un directorio con varios niveles de subdirectorios y archivos dentro de ellos, usar --recursive copiará todo el contenido.:

aws s3 cp s3://<nombre del bucket de registros>/AWSLogs . --recursive
Enter fullscreen mode Exit fullscreen mode

Al ejecutar este comando, se mostrará un resultado en tu terminal similar a:

% aws s3 cp s3://awscharlastenicas/AWSLogs/ . --recursive
download s3://charlastecnicastrails/AWSLogs/2023-08-10-11:24:13 to 2023-08-10-11-
download s3://charlastecnicastrails/AWSLogs/2023-08-10-16:01:45 to 2023-08-10-16-
download s3://charlastecnicastrails/AWSLogs/2023-08-12-11:30:21 to 2023-08-12-11-
download s3://charlastecnicastrails/AWSLogs/2023-08-12-19:12:55 to 2023-08-12-19-
Enter fullscreen mode Exit fullscreen mode

Cada archivo dentro de la carpeta del bucket S3 se descargará y se guardará localmente en la carpeta de destino que hayáis especificado.

Aquí está un desglose de lo que significa cada parte de la línea de comando:

Comando/Parámetro Descripción
aws El nombre de la herramienta CLI de AWS.
s3 Especifica que la operación está asociada con un recurso S3.
cp Copia un archivo local o un objeto S3 a otra ubicación local o en S3.
s3://AWSLogs Origen del archivo, específicamente ruta al bucket S3 incluyendo el nombre del bucket y el nombre de la carpeta. Esta ruta variará según el nombre que le des a tu bucket al configurar el trail.
. El destino al que copiar los archivos. En este caso, “.” representa el directorio de trabajo actual, pero se podría usar cualquier carpeta local o ubicación S3.
–recursive Especifica copiar el contenido de todas las subcarpetas.

Utilizando este comando, puedes reemplazar los parámetros de origen y destino para adaptarlo a tu caso en concreto. Hay más opciones que podéis usar con el comando cp. Lo podéis encontrar en la documentación de AWS CLI.

OPCIÓN 2. Utilizando el comando sync. En el caso de que no hayas descargado previamente registros de ese bucket, el comando funcionará como cp. Si previamente descargaste registros de un bucket vía CLI, sync solo descargará archivos que hayan sido creados o actualizados desde que realizaste la última sincronización (lo que viene a ser el delta, el cambio entre estado anterior y estado actual); Además, sync actúa de forma recursiva por defecto, por lo que no requiere que especifiques la opción –recursive. Todo lo demás sobre el comando funciona de la misma manera:

aws s3 sync s3://awscharlastenicas/AWSLogs .
Enter fullscreen mode Exit fullscreen mode

Para parámetros más avanzados con el comando sync, consulta la documentación de sync AWS CLI.

Otras Herramientas

Si no quieres utilizar la línea de comando y prefieres herramientas más visuales, dispones de herramientas de software gratuitas que ofrecen interfaces basadas en GUI para explorar tus buckets S3. Proporcionando tus credenciales, estas herramientas usarán la API para mostrar las carpetas y archivos en tu bucket S3. Además, muchas de estas herramientas admiten descargas con múltiples hilos para una transferencia acelerada.

  1. CloudBerry
  2. CyberDuck
  3. S3 Browser
  4. DragonDisk
  5. Arq

Atención: Estas herramientas provienen de proveedores externos; úsalas bajo tu propia responsabilidad.

Conclusión

En esta entrada de blog hemos visto cómo capturar los registros AWS CloudTrail almacenados en buckets de Amazon S3 mediante la interfaz de línea de comandos (CLI).

Extraer estos registros a través de la CLI te facilitará un análisis más detallado y preciso de la actividad en tu infraestructura AWS.

¡Nos vemos en la siguiente!

💖 💪 🙅 🚩
iaasgeek
Guillermo Ruiz

Posted on September 7, 2023

Join Our Newsletter. No Spam, Only the good stuff.

Sign up to receive the latest update from our blog.

Related