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
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 |
|
custom_metrics |
cmet |
Y |
Objeto |
Un informe puede tener ambos o al menos un parámetro |
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:
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 |
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 |
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 |
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 Githubdevice-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.