AWS - CloudWatch Enum
CloudWatch
CloudWatch recopila datos de monitoreo y operativos en forma de registros/métricas/eventos proporcionando una vista unificada de los recursos de AWS, aplicaciones y servicios. Los eventos de registro de CloudWatch tienen una limitación de tamaño de 256KB en cada línea de registro. Puede configurar alarmas de alta resolución, visualizar registros y métricas lado a lado, tomar acciones automatizadas, solucionar problemas y descubrir información para optimizar aplicaciones.
Puede monitorear, por ejemplo, registros de CloudTrail. Eventos que se monitorean:
Cambios en Grupos de Seguridad y NACLs
Inicio, detención, reinicio y terminación de instancias EC2
Cambios en Políticas de Seguridad dentro de IAM y S3
Intentos de inicio de sesión fallidos en la Consola de Administración de AWS
Llamadas a la API que resultaron en autorización fallida
Filtros para buscar en CloudWatch: https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/FilterAndPatternSyntax.html
Conceptos clave
Espacios de nombres
Un espacio de nombres es un contenedor para métricas de CloudWatch. Ayuda a categorizar y aislar métricas, facilitando su gestión y análisis.
Ejemplos: AWS/EC2 para métricas relacionadas con EC2, AWS/RDS para métricas de RDS.
Métricas
Las métricas son puntos de datos recopilados con el tiempo que representan el rendimiento o la utilización de recursos de AWS. Las métricas pueden recopilarse de servicios de AWS, aplicaciones personalizadas o integraciones de terceros.
Ejemplo: CPUUtilization, NetworkIn, DiskReadOps.
Dimensiones
Las dimensiones son pares clave-valor que forman parte de las métricas. Ayudan a identificar de forma única una métrica y proporcionan contexto adicional, pudiendo asociarse hasta 30 dimensiones con una métrica. Las dimensiones también permiten filtrar y agregar métricas en función de atributos específicos.
Ejemplo: Para las instancias de EC2, las dimensiones pueden incluir InstanceId, InstanceType y AvailabilityZone.
Estadísticas
Las estadísticas son cálculos matemáticos realizados en datos de métricas para resumirlos con el tiempo. Las estadísticas comunes incluyen Promedio, Suma, Mínimo, Máximo y Recuento de muestras.
Ejemplo: Calcular la utilización promedio de la CPU durante un período de una hora.
Unidades
Las unidades son el tipo de medida asociado con una métrica. Las unidades ayudan a proporcionar contexto y significado a los datos de la métrica. Las unidades comunes incluyen Porcentaje, Bytes, Segundos, Cuenta.
Ejemplo: La CPUUtilization podría medirse en Porcentaje, mientras que NetworkIn podría medirse en Bytes.
Funcionalidades de CloudWatch
Tablero
Los Tableros de CloudWatch proporcionan vistas personalizables de las métricas de AWS CloudWatch. Es posible crear y configurar tableros para visualizar datos y monitorear recursos en una sola vista, combinando diferentes métricas de varios servicios de AWS.
Características clave:
Widgets: Bloques de construcción de los tableros, incluyendo gráficos, texto, alarmas y más.
Personalización: El diseño y el contenido pueden personalizarse para adaptarse a necesidades de monitoreo específicas.
Ejemplo de caso de uso:
Un único tablero que muestra métricas clave para todo su entorno de AWS, incluidas instancias EC2, bases de datos RDS y buckets S3.
Flujo de Métricas y Datos de Métricas
Los Flujos de Métricas en AWS CloudWatch te permiten transmitir continuamente métricas de CloudWatch a un destino de tu elección en tiempo casi real. Esto es particularmente útil para monitoreo avanzado, análisis y tableros personalizados utilizando herramientas fuera de AWS.
Los Datos de Métricas dentro de los Flujos de Métricas se refieren a las mediciones reales o puntos de datos que se están transmitiendo. Estos puntos de datos representan varias métricas como utilización de CPU, uso de memoria, etc., para recursos de AWS.
Ejemplo de caso de uso:
Enviar métricas en tiempo real a un servicio de monitoreo de terceros para un análisis avanzado.
Archivar métricas en un bucket de Amazon S3 para almacenamiento a largo plazo y cumplimiento.
Alarma
Las Alarmas de CloudWatch monitorean tus métricas y realizan acciones basadas en umbrales predefinidos. Cuando una métrica supera un umbral, la alarma puede realizar una o más acciones como enviar notificaciones a través de SNS, activar una política de escalado automático o ejecutar una función de AWS Lambda.
Componentes clave:
Umbral: El valor en el que se activa la alarma.
Períodos de evaluación: El número de períodos durante los cuales se evalúan los datos.
Puntos de datos para la alarma: El número de períodos con un umbral alcanzado necesario para activar la alarma.
Acciones: Lo que sucede cuando se activa un estado de alarma (por ejemplo, notificar a través de SNS).
Ejemplo de caso de uso:
Monitorear la utilización de la CPU de una instancia EC2 y enviar una notificación a través de SNS si supera el 80% durante 5 minutos consecutivos.
Detectores de Anomalías
Los Detectores de Anomalías utilizan aprendizaje automático para detectar automáticamente anomalías en tus métricas. Puedes aplicar la detección de anomalías a cualquier métrica de CloudWatch para identificar desviaciones de patrones normales que podrían indicar problemas.
Componentes clave:
Entrenamiento del Modelo: CloudWatch utiliza datos históricos para entrenar un modelo y establecer cómo se ve el comportamiento normal.
Banda de Detección de Anomalías: Una representación visual del rango esperado de valores para una métrica.
Ejemplo de caso de uso:
Detectar patrones inusuales de utilización de CPU en una instancia EC2 que podrían indicar una brecha de seguridad o un problema de aplicación.
Reglas de Insight y Reglas de Insight Administradas
Las Reglas de Insight te permiten identificar tendencias, detectar picos u otros patrones de interés en tus datos de métricas utilizando expresiones matemáticas potentes para definir las condiciones bajo las cuales se deben tomar acciones. Estas reglas pueden ayudarte a identificar anomalías o comportamientos inusuales en el rendimiento y la utilización de tus recursos.
Las Reglas de Insight Administradas son reglas de insight preconfiguradas proporcionadas por AWS. Están diseñadas para monitorear servicios específicos de AWS o casos de uso comunes y se pueden habilitar sin necesidad de una configuración detallada.
Ejemplo de caso de uso:
Monitoreo del rendimiento de RDS: Habilitar una regla de insight administrada para Amazon RDS que monitorea indicadores clave de rendimiento como la utilización de CPU, el uso de memoria y la E/S de disco. Si alguna de estas métricas supera los umbrales operativos seguros, la regla puede activar una alerta o una acción de mitigación automatizada.
Registros de CloudWatch
Permite agregar y monitorear registros de aplicaciones y sistemas de servicios de AWS (incluido CloudTrail) y de aplicaciones/sistemas (el Agente de CloudWatch se puede instalar en un host). Los registros pueden almacenarse indefinidamente (según la configuración del Grupo de Registros) y pueden exportarse.
Elementos:
Grupo de Registros | Una colección de secuencias de registros que comparten la misma configuración de retención, monitoreo y control de acceso |
Secuencia de Registros | Una secuencia de eventos de registro que comparten la misma fuente |
Filtros de Suscripción | Definen un patrón de filtro que coincide con eventos en un grupo de registros específico, los envían a un flujo de Kinesis Data Firehose, un flujo de Kinesis o una función de Lambda |
### Monitoreo y Eventos de CloudWatch |
CloudWatch básico agrega datos cada 5 min (el detallado lo hace cada 1 min). Después de la agregación, verifica los umbrales de las alarmas en caso de que necesite activar una. En ese caso, CloudWatch puede estar preparado para enviar un evento y realizar algunas acciones automáticas (funciones AWS Lambda, temas SNS, colas SQS, flujos de Kinesis)
Instalación del Agente
Puedes instalar agentes dentro de tus máquinas/contenedores para enviar automáticamente los registros de vuelta a CloudWatch.
Crear un rol y adjuntarlo a la instancia con permisos que permitan a CloudWatch recopilar datos de las instancias además de interactuar con el administrador de sistemas de AWS SSM (CloudWatchAgentAdminPolicy y AmazonEC2RoleforSSM)
Descargar e instalar el agente en la instancia EC2 (https://s3.amazonaws.com/amazoncloudwatch-agent/linux/amd64/latest/AmazonCloudWatchAgent.zip). Puedes descargarlo desde dentro de la EC2 o instalarlo automáticamente usando AWS System Manager seleccionando el paquete AWS-ConfigureAWSPackage
Configurar y iniciar el Agente de CloudWatch
Un grupo de registros tiene muchos flujos. Un flujo tiene muchos eventos. Y dentro de cada flujo, los eventos están garantizados de estar en orden.
Enumeración
Post-Explotación / Eludir
cloudwatch:DeleteAlarms
,cloudwatch:PutMetricAlarm
, cloudwatch:PutCompositeAlarm
cloudwatch:DeleteAlarms
,cloudwatch:PutMetricAlarm
, cloudwatch:PutCompositeAlarm
Un atacante con estos permisos podría socavar significativamente la infraestructura de monitoreo y alerta de una organización. Al eliminar alarmas existentes, un atacante podría desactivar alertas cruciales que notifican a los administradores sobre problemas críticos de rendimiento, violaciones de seguridad o fallas operativas. Además, al crear o modificar alarmas métricas, el atacante también podría confundir a los administradores con alertas falsas o silenciar alarmas legítimas, enmascarando efectivamente actividades maliciosas y evitando respuestas oportunas a incidentes reales.
Además, con el permiso cloudwatch:PutCompositeAlarm
, un atacante podría crear un bucle o ciclo de alarmas compuestas, donde la alarma compuesta A depende de la alarma compuesta B, y la alarma compuesta B también depende de la alarma compuesta A. En este escenario, no es posible eliminar ninguna alarma compuesta que sea parte del ciclo porque siempre hay una alarma compuesta que depende de esa alarma que se desea eliminar.
El siguiente ejemplo muestra cómo hacer que una alarma de métricas sea ineficaz:
Esta alarma de métricas monitorea la utilización promedio de la CPU de una instancia EC2 específica, evalúa la métrica cada 300 segundos y requiere 6 períodos de evaluación (30 minutos en total). Si la utilización promedio de la CPU supera el 60% durante al menos 4 de estos períodos, la alarma se activará y enviará una notificación al tema SNS especificado.
Al modificar el Umbral para que sea superior al 99%, establecer el Período en 10 segundos, los Períodos de Evaluación en 8640 (ya que 8640 períodos de 10 segundos equivalen a 1 día), y los Puntos de Datos a Alarmar también en 8640, sería necesario que la utilización de la CPU esté por encima del 99% cada 10 segundos durante todo el período de 24 horas para activar una alarma.
Impacto Potencial: Falta de notificaciones para eventos críticos, posibles problemas no detectados, alertas falsas, supresión de alertas genuinas y posiblemente detección perdida de incidentes reales.
cloudwatch:DeleteAlarmActions
, cloudwatch:EnableAlarmActions
, cloudwatch:SetAlarmState
cloudwatch:DeleteAlarmActions
, cloudwatch:EnableAlarmActions
, cloudwatch:SetAlarmState
Al eliminar acciones de alarma, el atacante podría evitar que se activen alertas críticas y respuestas automatizadas cuando se alcance un estado de alarma, como notificar a los administradores o activar actividades de escalado automático. Habilitar o volver a habilitar acciones de alarma de manera inapropiada también podría provocar comportamientos inesperados, ya sea reactivando acciones previamente deshabilitadas o modificando qué acciones se activan, lo que podría causar confusión y desorientación en la respuesta a incidentes.
Además, un atacante con los permisos adecuados podría manipular estados de alarma, pudiendo crear alarmas falsas para distraer y confundir a los administradores, o silenciar alarmas genuinas para ocultar actividades maliciosas en curso o fallas críticas del sistema.
Si utilizas
SetAlarmState
en una alarma compuesta, no se garantiza que la alarma compuesta vuelva a su estado real. Vuelve a su estado real solo una vez que alguna de sus alarmas secundarias cambie de estado. También se reevalúa si actualizas su configuración.
Impacto Potencial: Falta de notificaciones para eventos críticos, posibles problemas no detectados, alertas falsas, supresión de alertas genuinas y posiblemente detección perdida de incidentes reales.
cloudwatch:DeleteAnomalyDetector
, cloudwatch:PutAnomalyDetector
cloudwatch:DeleteAnomalyDetector
, cloudwatch:PutAnomalyDetector
Un atacante podría comprometer la capacidad de detección y respuesta a patrones inusuales o anomalías en los datos métricos. Al eliminar detectores de anomalías existentes, un atacante podría deshabilitar mecanismos críticos de alerta; y al crear o modificarlos, podría mal configurarlos o crear falsos positivos para distraer o abrumar el monitoreo.
El siguiente ejemplo muestra cómo hacer que un detector de anomalías de métricas sea ineficaz. Este detector de anomalías de métricas monitorea la utilización promedio de la CPU de una instancia EC2 específica, y simplemente agregando el parámetro "ExcludedTimeRanges" con el rango de tiempo deseado, sería suficiente para asegurar que el detector de anomalías no analice ni alerte sobre ningún dato relevante durante ese período.
Impacto Potencial: Efecto directo en la detección de patrones inusuales o amenazas de seguridad.
cloudwatch:DeleteDashboards
, cloudwatch:PutDashboard
cloudwatch:DeleteDashboards
, cloudwatch:PutDashboard
Un atacante podría comprometer las capacidades de monitoreo y visualización de una organización al crear, modificar o eliminar sus paneles de control. Estos permisos podrían ser aprovechados para eliminar la visibilidad crítica sobre el rendimiento y la salud de los sistemas, alterar los paneles de control para mostrar datos incorrectos u ocultar actividades maliciosas.
Impacto potencial: Pérdida de visibilidad de monitoreo e información engañosa.
cloudwatch:DeleteInsightRules
, cloudwatch:PutInsightRule
,cloudwatch:PutManagedInsightRule
cloudwatch:DeleteInsightRules
, cloudwatch:PutInsightRule
,cloudwatch:PutManagedInsightRule
Las reglas de Insight se utilizan para detectar anomalías, optimizar el rendimiento y gestionar recursos de manera efectiva. Al eliminar reglas de Insight existentes, un atacante podría eliminar capacidades críticas de monitoreo, dejando el sistema ciego ante problemas de rendimiento y amenazas de seguridad. Además, un atacante podría crear o modificar reglas de Insight para generar datos engañosos u ocultar actividades maliciosas, lo que llevaría a diagnósticos incorrectos y respuestas inapropiadas por parte del equipo de operaciones.
Impacto Potencial: Dificultad para detectar y responder a problemas de rendimiento y anomalías, toma de decisiones errónea y posiblemente ocultar actividades maliciosas o fallos del sistema.
cloudwatch:DisableInsightRules
, cloudwatch:EnableInsightRules
cloudwatch:DisableInsightRules
, cloudwatch:EnableInsightRules
Al deshabilitar reglas críticas de insight, un atacante podría dejar ciega a la organización respecto a métricas clave de rendimiento y seguridad. Por otro lado, al habilitar o configurar reglas engañosas, podría ser posible generar datos falsos, crear ruido u ocultar actividades maliciosas.
Impacto Potencial: Confusión entre el equipo de operaciones, lo que lleva a respuestas tardías a problemas reales y acciones innecesarias basadas en alertas falsas.
cloudwatch:DeleteMetricStream
, cloudwatch:PutMetricStream
, cloudwatch:PutMetricData
cloudwatch:DeleteMetricStream
, cloudwatch:PutMetricStream
, cloudwatch:PutMetricData
Un atacante con los permisos cloudwatch:DeleteMetricStream
, cloudwatch:PutMetricStream
sería capaz de crear y eliminar flujos de datos métricos, comprometiendo la seguridad, monitorización e integridad de los datos:
Crear flujos maliciosos: Crear flujos métricos para enviar datos sensibles a destinos no autorizados.
Manipulación de recursos: La creación de nuevos flujos métricos con datos excesivos podría generar mucho ruido, causando alertas incorrectas y enmascarando problemas reales.
Disrupción de la monitorización: Al eliminar flujos métricos, los atacantes interrumpirían el flujo continuo de datos de monitorización. De esta manera, sus actividades maliciosas estarían efectivamente ocultas.
De manera similar, con el permiso cloudwatch:PutMetricData
, sería posible agregar datos a un flujo métrico. Esto podría llevar a un DoS debido a la cantidad de datos incorrectos agregados, volviéndolo completamente inútil.
Ejemplo de agregar datos correspondientes a un 70% de utilización de CPU en una instancia EC2 dada:
Impacto Potencial: Disrupción en el flujo de datos de monitoreo, afectando la detección de anomalías e incidentes, manipulación de recursos y aumento de costos debido a la creación de flujos métricos excesivos.
cloudwatch:StopMetricStreams
, cloudwatch:StartMetricStreams
cloudwatch:StopMetricStreams
, cloudwatch:StartMetricStreams
Un atacante podría controlar el flujo de los flujos de datos métricos afectados (cada flujo de datos si no hay restricción de recursos). Con el permiso cloudwatch:StopMetricStreams
, los atacantes podrían ocultar sus actividades maliciosas deteniendo flujos métricos críticos.
Impacto Potencial: Interrupción en el flujo de datos de monitoreo, afectando la detección de anomalías e incidentes.
cloudwatch:TagResource
, cloudwatch:UntagResource
cloudwatch:TagResource
, cloudwatch:UntagResource
Un atacante podría agregar, modificar o eliminar etiquetas de los recursos de CloudWatch (actualmente solo alarmas y reglas de Contributor Insights). Esto podría interrumpir las políticas de control de acceso de su organización basadas en etiquetas.
Impacto Potencial: Disrupción de políticas de control de acceso basadas en etiquetas.
Referencias
Last updated