Métricas del lado del dispositivo - AWS IoT Device Defender

Métricas del lado del dispositivo

Al crear un perfil de seguridad, puede especificar el comportamiento esperado de su dispositivo IoT configurando comportamientos y umbrales para las métricas generadas por los dispositivos IoT. Las siguientes son métricas del dispositivo, que son métricas de los agentes que se instalan en los dispositivos.

Bytes salientes (aws:all-bytes-out)

El número de bytes salientes de un dispositivo durante un período de tiempo determinado.

Utilice esta métrica para especificar la cantidad máxima o mínima de tráfico saliente que un dispositivo debe enviar, medido en bytes, en un período de tiempo determinado.

Compatible con: Rules Detect | ML Detect

Operadores: less-than | less-than-equals | greater-than | greater-than-equals

Valor: un entero no negativo

Unidades: bytes

Duración: un entero no negativo. Los valores válidos son 300, 600, 900, 1800 o 3600 segundos.

ejemplo
{ "name": "TCP outbound traffic", "metric": "aws:all-bytes-out", "criteria": { "comparisonOperator": "less-than-equals", "value": { "count": 4096 }, "durationSeconds": 300, "consecutiveDatapointsToAlarm": 1, "consecutiveDatapointsToClear": 1 }, "suppressAlerts": true }
ejemplo Ejemplo en el que se utiliza statisticalThreshold:
{ "name": "TCP outbound traffic", "metric": "aws:all-bytes-out", "criteria": { "comparisonOperator": "less-than-equals", "statisticalThreshold": { "statistic": "p50" }, "durationSeconds": 900, "consecutiveDatapointsToAlarm": 1, "consecutiveDatapointsToClear": 1 }, "suppressAlerts": true }
ejemplo Ejemplo de uso de ML Detect
{ "name": "Outbound traffic ML behavior", "metric": "aws:all-bytes-out", "criteria": { "consecutiveDatapointsToAlarm": 1, "consecutiveDatapointsToClear": 1, "mlDetectionConfig": { "confidenceLevel": "HIGH" } }, "suppressAlerts": true }

Bytes entrantes (aws:all-bytes-in)

El número de bytes entrantes en un dispositivo durante un período de tiempo determinado.

Utilice esta métrica para especificar la cantidad máxima o mínima de tráfico entrante que un dispositivo debe recibir, medido en bytes, en un período de tiempo determinado.

Compatible con: Rules Detect | ML Detect

Operadores: less-than | less-than-equals | greater-than | greater-than-equals

Valor: un entero no negativo

Unidades: bytes

Duración: un entero no negativo. Los valores válidos son 300, 600, 900, 1800 o 3600 segundos.

ejemplo
{ "name": "TCP inbound traffic", "metric": "aws:all-bytes-in", "criteria": { "comparisonOperator": "less-than-equals", "value": { "count": 4096 }, "durationSeconds": 300, "consecutiveDatapointsToAlarm": 1, "consecutiveDatapointsToClear": 1 }, "suppressAlerts": true }
ejemplo Ejemplo en el que se utiliza statisticalThreshold:
{ "name": "TCP inbound traffic", "metric": "aws:all-bytes-in", "criteria": { "comparisonOperator": "less-than-equals", "statisticalThreshold": { "statistic": "p90" }, "durationSeconds": 300, "consecutiveDatapointsToAlarm": 1, "consecutiveDatapointsToClear": 1 }, "suppressAlerts": true }
ejemplo Ejemplo de uso de ML Detect
{ "name": "Inbound traffic ML behavior", "metric": "aws:all-bytes-in", "criteria": { "consecutiveDatapointsToAlarm": 1, "consecutiveDatapointsToClear": 1, "mlDetectionConfig": { "confidenceLevel": "HIGH" } }, "suppressAlerts": true }

Recuento de puertos TCP de escucha (aws:num-listening-tcp-ports)

El número de puertos TCP en los que escucha el dispositivo.

Utilice esta métrica para especificar el número máximo de puertos TCP que cada dispositivo debe monitorizar.

Compatible con: Rules Detect | ML Detect

Unidad: errores

Operadores: less-than | less-than-equals | greater-than | greater-than-equals

Valor: un entero no negativo

Unidades: errores

Duración: un entero no negativo. Los valores válidos son 300, 600, 900, 1800 o 3600 segundos.

ejemplo
{ "name": "Max TCP Ports", "metric": "aws:num-listening-tcp-ports", "criteria": { "comparisonOperator": "less-than-equals", "value": { "count": 5 }, "durationSeconds": 300, "consecutiveDatapointsToAlarm": 1, "consecutiveDatapointsToClear": 1 }, "suppressAlerts": true }
ejemplo Ejemplo en el que se utiliza statisticalThreshold:
{ "name": "Max TCP Ports", "metric": "aws:num-listening-tcp-ports", "criteria": { "comparisonOperator": "less-than-equals", "statisticalThreshold": { "statistic": "p50" }, "durationSeconds": 300, "consecutiveDatapointsToAlarm": 1, "consecutiveDatapointsToClear": 1 }, "suppressAlerts": true }
ejemplo Ejemplo de uso de ML Detect
{ "name": "Max TCP Port ML behavior", "metric": "aws:num-listening-tcp-ports", "criteria": { "consecutiveDatapointsToAlarm": 1, "consecutiveDatapointsToClear": 1, "mlDetectionConfig": { "confidenceLevel": "HIGH" } }, "suppressAlerts": true }

Recuento de puertos UDP de escucha (aws:num-listening-udp-ports)

El número de puertos UDP en los que escucha el dispositivo.

Utilice esta métrica para especificar el número máximo de puertos UDP que cada dispositivo debe monitorizar.

Compatible con: Rules Detect | ML Detect

Unidad: errores

Operadores: less-than | less-than-equals | greater-than | greater-than-equals

Valor: un entero no negativo

Unidades: errores

Duración: un entero no negativo. Los valores válidos son 300, 600, 900, 1800 o 3600 segundos.

ejemplo
{ "name": "Max UDP Ports", "metric": "aws:num-listening-udp-ports", "criteria": { "comparisonOperator": "less-than-equals", "value": { "count": 5 }, "durationSeconds": 300, "consecutiveDatapointsToAlarm": 1, "consecutiveDatapointsToClear": 1 }, "suppressAlerts": true }
ejemplo Ejemplo en el que se utiliza statisticalThreshold:
{ "name": "Max UDP Ports", "metric": "aws:num-listening-udp-ports", "criteria": { "comparisonOperator": "less-than-equals", "statisticalThreshold": { "statistic": "p50" }, "durationSeconds": 300, "consecutiveDatapointsToAlarm": 1, "consecutiveDatapointsToClear": 1 }, "suppressAlerts": true }
ejemplo Ejemplo de uso de ML Detect
{ "name": "Max UPD Port ML behavior", "metric": "aws:num-listening-tcp-ports", "criteria": { "consecutiveDatapointsToAlarm": 1, "consecutiveDatapointsToClear": 1, "mlDetectionConfig": { "confidenceLevel": "HIGH" } }, "suppressAlerts": true }

Paquetes salientes (aws:all-packets-out)

El número de paquetes salientes de un dispositivo durante un período de tiempo determinado.

Utilice esta métrica para especificar la cantidad máxima o mínima de tráfico saliente total que un dispositivo debe enviar en un período de tiempo determinado.

Compatible con: Rules Detect | ML Detect

Operadores: less-than | less-than-equals | greater-than | greater-than-equals

Valor: un entero no negativo

Unidades: paquetes

Duración: un entero no negativo. Los valores válidos son 300, 600, 900, 1800 o 3600 segundos.

ejemplo
{ "name": "TCP outbound traffic", "metric": "aws:all-packets-out", "criteria": { "comparisonOperator": "less-than-equals", "value": { "count": 100 }, "durationSeconds": 300, "consecutiveDatapointsToAlarm": 1, "consecutiveDatapointsToClear": 1 }, "suppressAlerts": true }
ejemplo Ejemplo en el que se utiliza statisticalThreshold:
{ "name": "TCP outbound traffic", "metric": "aws:all-packets-out", "criteria": { "comparisonOperator": "less-than-equals", "statisticalThreshold": { "statistic": "p90" }, "durationSeconds": 300, "consecutiveDatapointsToAlarm": 1, "consecutiveDatapointsToClear": 1 }, "suppressAlerts": true }
ejemplo Ejemplo de uso de ML Detect
{ "name": "Outbound sent ML behavior", "metric": "aws:all-packets-out", "criteria": { "consecutiveDatapointsToAlarm": 1, "consecutiveDatapointsToClear": 1, "mlDetectionConfig": { "confidenceLevel": "HIGH" } }, "suppressAlerts": true }

Paquetes entrantes (aws:all-packets-in)

El número de paquetes entrantes en un dispositivo durante un período de tiempo determinado.

Utilice esta métrica para especificar la cantidad máxima o mínima de tráfico entrante total que un dispositivo debe recibir en un período de tiempo determinado.

Compatible con: Rules Detect | ML Detect

Operadores: less-than | less-than-equals | greater-than | greater-than-equals

Valor: un entero no negativo

Unidades: paquetes

Duración: un entero no negativo. Los valores válidos son 300, 600, 900, 1800 o 3600 segundos.

ejemplo
{ "name": "TCP inbound traffic", "metric": "aws:all-packets-in", "criteria": { "comparisonOperator": "less-than-equals", "value": { "count": 100 }, "durationSeconds": 300, "consecutiveDatapointsToAlarm": 1, "consecutiveDatapointsToClear": 1 }, "suppressAlerts": true }

Ejemplo en el que se utiliza statisticalThreshold:

{ "name": "TCP inbound traffic", "metric": "aws:all-packets-in", "criteria": { "comparisonOperator": "less-than-equals", "statisticalThreshold": { "statistic": "p90" }, "durationSeconds": 300, "consecutiveDatapointsToAlarm": 1, "consecutiveDatapointsToClear": 1 }, "suppressAlerts": true }
ejemplo Ejemplo de uso de ML Detect
{ "name": "Inbound sent ML behavior", "metric": "aws:all-packets-in", "criteria": { "consecutiveDatapointsToAlarm": 1, "consecutiveDatapointsToClear": 1, "mlDetectionConfig": { "confidenceLevel": "HIGH" } }, "suppressAlerts": true }

IP de destino (aws:destination-ip-addresses)

Un conjunto de destinos de IP.

Utilice esta métrica para especificar un conjunto de enrutamientos entre dominios sin clases (CIDR) permitidos (previamente denominado lista blanca) y denegados (previamente denominado lista negra) desde los que cada dispositivo debe o no conectarse a AWS IoT.

Compatible con: Rules Detect

Operadores: in-cidr-set | not-in-cidr-set

Valores: una lista de CIDR

Unidades: n/a

ejemplo
{ "name": "Denied source IPs", "metric": "aws:destination-ip-address", "criteria": { "comparisonOperator": "not-in-cidr-set", "value": { "cidrs": [ "12.8.0.0/16", "15.102.16.0/24" ] } }, "suppressAlerts": true }

Puertos TCP de escucha (aws:listening-tcp-ports)

Los puertos TCP en los que escucha el dispositivo.

Utilice esta métrica para especificar un conjunto de puertos TCP permitidos (previamente denominado lista blanca) y denegados (previamente denominado lista negra) en los que cada dispositivo debe o no escuchar.

Compatible con: Rules Detect

Operadores: in-port-set | not-in-port-set

Valores: una lista de puertos

Unidades: n/a

{ "name": "Listening TCP Ports", "metric": "aws:listening-tcp-ports", "criteria": { "comparisonOperator": "in-port-set", "value": { "ports": [ 443, 80 ] } }, "suppressAlerts": true }

Puertos UDP de escucha (aws:listening-udp-ports)

Los puertos UDP en los que escucha el dispositivo.

Utilice esta métrica para especificar un conjunto de puertos UDP permitidos (previamente denominado lista blanca) y denegados (previamente denominado lista negra) en los que cada dispositivo debe o no escuchar.

Compatible con: Rules Detect

Operadores: in-port-set | not-in-port-set

Valores: una lista de puertos

Unidades: n/a

{ "name": "Listening UDP Ports", "metric": "aws:listening-udp-ports", "criteria": { "comparisonOperator": "in-port-set", "value": { "ports": [ 1025, 2000 ] } } }

Recuento de conexiones TCP establecidas (aws:num-established-tcp-connections)

El número de conexiones TCP para un dispositivo.

Utilice esta métrica para especificar el número máximo o mínimo de conexiones TCP activas que cada dispositivo debe tener (todos los estados de TCP).

Compatible con: Rules Detect | ML Detect

Operadores: less-than | less-than-equals | greater-than | greater-than-equals

Valor: un entero no negativo

Unidades: conexiones

ejemplo
{ "name": "TCP Connection Count", "metric": "aws:num-established-tcp-connections", "criteria": { "comparisonOperator": "less-than-equals", "value": { "count": 3 }, "consecutiveDatapointsToAlarm": 1, "consecutiveDatapointsToClear": 1 }, "suppressAlerts": true }
ejemplo Ejemplo en el que se utiliza statisticalThreshold:
{ "name": "TCP Connection Count", "metric": "aws:num-established-tcp-connections", "criteria": { "comparisonOperator": "less-than-equals", "statisticalThreshold": { "statistic": "p90" }, "durationSeconds": 900, "consecutiveDatapointsToAlarm": 1, "consecutiveDatapointsToClear": 1 }, "suppressAlerts": true }
ejemplo Ejemplo de uso de ML Detect
{ "name": "Connection count ML behavior", "metric": "aws:num-established-tcp-connections", "criteria": { "consecutiveDatapointsToAlarm": 1, "consecutiveDatapointsToClear": 1, "mlDetectionConfig": { "confidenceLevel": "HIGH" } }, "suppressAlerts": true }

Especificación de documentos de métricas de dispositivos

Estructura general

Nombre largo

Nombre corto

Obligatoria

Tipo

Restricciones

Notas

header

hed

Y

Objeto

Bloque completo obligatorio para componer un informe correcto.

métricas

met

Y

Objeto

Un informe puede tener ambos o al menos un parámetro metrics o un bloque custom_metrics.

custom_metrics

cmet

Y

Objeto

Un informe puede tener ambos o al menos un parámetro metrics o un bloque custom_metrics.

Bloque de encabezado

Nombre largo

Nombre corto

Obligatoria

Tipo

Restricciones

Notas

report_id

rid

Y

Entero

Valor monotónico en aumento. Se recomienda una marca temporal Epoch.

versión

v

Y

Cadena

Major.Minor

Incrementos de versiones secundarias con suma de campo. Incrementos de versiones principales si se eliminan las métricas.

Bloque de métricas:

Conexiones de TCP

Nombre largo

Nombre corto

Elemento principal

Obligatoria

Tipo

Restricciones

Notas

tcp_connections

tc

métricas

N

Objeto

established_connections

ec

tcp_connections

N

Objeto

Estado de TCP establecido

connections

cs

established_connections

N

Lista<Objeto>

remote_addr

rad

connections

Y

Número

ip:port

La IP puede ser IPv6 o IPv4

local_port

lp

connections

N

Número

>= 0

local_interface

li

connections

N

Cadena

Nombre de la interfaz

total

t

established_connections

N

Número

>= 0

Número de conexiones establecidas

Puertos TCP de escucha

Nombre largo

Nombre corto

Elemento principal

Obligatoria

Tipo

Restricciones

Notas

listening_tcp_ports

tp

métricas

N

Objeto

ports

pts

listening_tcp_ports

N

Lista<Objeto>

> 0

port

pt

ports

N

Número

> 0

Los puertos deben ser números mayores que 0

interface

if

ports

N

Cadena

Nombre de la interfaz

total

t

listening_tcp_ports

N

Número

>= 0

Puertos UDP de escucha

Nombre largo

Nombre corto

Elemento principal

Obligatoria

Tipo

Restricciones

Notas

listening_udp_ports

up

métricas

N

Objeto

ports

pts

listening_udp_ports

N

Lista<Puerto>

> 0

port

pt

ports

N

Número

> 0

Los puertos deben ser números mayores que 0

interface

if

ports

N

Cadena

Nombre de la interfaz

total

t

listening_udp_ports

N

Número

>= 0

Estadísticas de la red

Nombre largo

Nombre corto

Elemento principal

Obligatoria

Tipo

Restricciones

Notas

network_stats

ns

métricas

N

Objeto

bytes_in

bi

network_stats

N

Número

Delta Metric, >= 0

bytes_out

bo

network_stats

N

Número

Delta Metric, >= 0

packets_in

pi

network_stats

N

Número

Delta Metric, >= 0

packets_out

po

network_stats

N

Número

Delta Metric, >= 0

ejemplo

La siguiente estructura JSON utiliza nombres largos.

{ "header": { "report_id": 1530304554, "version": "1.0" }, "metrics": { "listening_tcp_ports": { "ports": [ { "interface": "eth0", "port": 24800 }, { "interface": "eth0", "port": 22 }, { "interface": "eth0", "port": 53 } ], "total": 3 }, "listening_udp_ports": { "ports": [ { "interface": "eth0", "port": 5353 }, { "interface": "eth0", "port": 67 } ], "total": 2 }, "network_stats": { "bytes_in": 29358693495, "bytes_out": 26485035, "packets_in": 10013573555, "packets_out": 11382615 }, "tcp_connections": { "established_connections": { "connections": [ { "local_interface": "eth0", "local_port": 80, "remote_addr": "192.168.0.1:8000" }, { "local_interface": "eth0", "local_port": 80, "remote_addr": "192.168.0.1:8000" } ], "total": 2 } } }, "custom_metrics": { "MyMetricOfType_Number": [ { "number": 1 } ], "MyMetricOfType_NumberList": [ { "number_list": [ 1, 2, 3 ] } ], "MyMetricOfType_StringList": [ { "string_list": [ "value_1", "value_2" ] } ], "MyMetricOfType_IpList": [ { "ip_list": [ "172.0.0.0", "172.0.0.10" ] } ] } }
ejemplo Ejemplo de una estructura JSON con nombres cortos
{ "hed": { "rid": 1530305228, "v": "1.0" }, "met": { "tp": { "pts": [ { "if": "eth0", "pt": 24800 }, { "if": "eth0", "pt": 22 }, { "if": "eth0", "pt": 53 } ], "t": 3 }, "up": { "pts": [ { "if": "eth0", "pt": 5353 }, { "if": "eth0", "pt": 67 } ], "t": 2 }, "ns": { "bi": 29359307173, "bo": 26490711, "pi": 10014614051, "po": 11387620 }, "tc": { "ec": { "cs": [ { "li": "eth0", "lp": 80, "rad": "192.168.0.1:8000" }, { "li": "eth0", "lp": 80, "rad": "192.168.0.1:8000" } ], "t": 2 } } }, "cmet": { "MyMetricOfType_Number": [ { "number": 1 } ], "MyMetricOfType_NumberList": [ { "number_list": [ 1, 2, 3 ] } ], "MyMetricOfType_StringList": [ { "string_list": [ "value_1", "value_2" ] } ], "MyMetricOfType_IpList": [ { "ip_list": [ "172.0.0.0", "172.0.0.10" ] } ] } }

Envío de métricas desde dispositivos

AWS IoT Device Defender Detect puede recopilar, agregar y monitorizar los datos de métricas generados por los dispositivos de AWS IoT para identificar aquellos dispositivos que muestran un comportamiento anómalo. En esta sección, se explica cómo enviar métricas desde un dispositivo a AWS IoT Device Defender.

Debe implementar de forma segura la versión 2 del SDK de AWS IoT en sus dispositivos conectados o puertas de enlace de dispositivo de AWS IoT para recopilar métricas del lado del dispositivo. Consulte la lista completa de SDK aquí.

Puede usar AWS IoT Device Client para publicar métricas, ya que proporciona un agente único que cubre las funciones presentes tanto en AWS IoT Device Defender como en Device Management AWS IoT. Estas funciones incluyen trabajos, tunelización segura, publicación de métricas de AWS IoT Device Defender y mucho más.

Las métricas del dispositivo se publican en el tema reservado para recopilarlas y AWS IoT evaluarlasAWS IoT Device Defender.

Uso de AWS IoT Device Client para publicar métricas

Para instalar AWS IoT Device Client, puede descargarlo de Github. Una vez que haya instalado AWS IoT Device Client en el dispositivo para el que quiera recopilar datos del lado del dispositivo, debe configurarlo para que envíe las métricas del lado del dispositivo a AWS IoT Device Defender. Compruebe que el archivo de configuración de AWS IoT Device Client tenga los siguientes parámetros establecidos en la sección device-defender.

"device-defender": { "enabled": true, "interval-in-seconds": 300 }
aviso

Debe establecer el intervalo de tiempo en un mínimo de 300 segundos. Si establece el intervalo de tiempo en un valor inferior a 300 segundos, es posible que los datos de su métrica estén restringidos.

Tras actualizar la configuración, puede crear perfiles y comportamientos de seguridad en la consola de AWS IoT Device Defender para monitorizar las métricas que sus dispositivos publican en la nube. Para buscar las métricas publicadas en la consola de AWS IoT Core, seleccione Defender, Detectar y, a continuación, Métricas.