Métriques côté appareil - AWS IoT Device Defender

Métriques côté appareil

Lors de la création d'un profil de sécurité, vous pouvez spécifier le comportement attendu de votre appareil IoT en configurant les comportements et les seuils pour les métriques générées par les appareils IoT. Voici les métriques côté appareil, qui sont des métriques provenant des agents que vous installez sur vos appareils.

Octets en sortie (aws:all-bytes-out)

Le nombre d'octets sortants d'un appareil au cours d'une période donnée.

Utilisez cette métrique pour spécifier la quantité maximale ou minimale de trafic sortant qu'un appareil doit envoyer, mesurée en octets, sur une période de temps donnée.

Compatible avec : Rules Detect | ML Detect

Opérateurs : less-than | less-than-equals | greater-than | greater-than-equals

Valeur : Nombre entier non négatif.

Unité : Octets

Durée : Nombre entier non négatif. Les valeurs valides sont 300, 600, 900, 1 800 ou 3 600 secondes.

Exemple
{ "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 }
Exemple d’utilisation de 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 }
Exemple d'utilisation de ML Detect
{ "name": "Outbound traffic ML behavior", "metric": "aws:all-bytes-out", "criteria": { "consecutiveDatapointsToAlarm": 1, "consecutiveDatapointsToClear": 1, "mlDetectionConfig": { "confidenceLevel": "HIGH" } }, "suppressAlerts": true }

Octets entrants (aws:all-bytes-in)

Le nombre d'octets entrants d'un appareil au cours d'une période donnée.

Utilisez cette métrique pour spécifier la quantité maximale ou minimale de trafic entrant qu'un appareil doit recevoir, mesurée en octets, sur une période de temps donnée.

Compatible avec : Rules Detect | ML Detect

Opérateurs : less-than | less-than-equals | greater-than | greater-than-equals

Valeur : Nombre entier non négatif.

Unité : Octets

Durée : Nombre entier non négatif. Les valeurs valides sont 300, 600, 900, 1 800 ou 3 600 secondes.

Exemple
{ "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 }
Exemple d’utilisation de 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 }
Exemple d'utilisation de ML Detect
{ "name": "Inbound traffic ML behavior", "metric": "aws:all-bytes-in", "criteria": { "consecutiveDatapointsToAlarm": 1, "consecutiveDatapointsToClear": 1, "mlDetectionConfig": { "confidenceLevel": "HIGH" } }, "suppressAlerts": true }

Nombre de ports TCP d'écoute (aws:num-listening-tcp-ports)

Le nombre de ports TCP que l'appareil écoute.

Utilisez cette métrique pour spécifier le nombre maximum de ports TCP que chaque appareil doit surveiller.

Compatible avec : Rules Detect | ML Detect

Unités : Échecs

Opérateurs : less-than | less-than-equals | greater-than | greater-than-equals

Valeur : Nombre entier non négatif.

Unités : Échecs

Durée : Nombre entier non négatif. Les valeurs valides sont 300, 600, 900, 1 800 ou 3 600 secondes.

Exemple
{ "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 }
Exemple d’utilisation de 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 }
Exemple d'utilisation 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 }

Nombre de ports UDP d'écoute (aws:num-listening-udp-ports)

Le nombre de ports UDP que l'appareil écoute.

Utilisez cette métrique pour spécifier le nombre maximum de ports UDP que chaque appareil doit surveiller.

Compatible avec : Rules Detect | ML Detect

Unités : Échecs

Opérateurs : less-than | less-than-equals | greater-than | greater-than-equals

Valeur : Nombre entier non négatif.

Unités : Échecs

Durée : Nombre entier non négatif. Les valeurs valides sont 300, 600, 900, 1 800 ou 3 600 secondes.

Exemple
{ "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 }
Exemple d’utilisation de 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 }
Exemple d'utilisation 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 }

Paquets sortis (aws:all-packets-out)

Le nombre de paquets sortants d'un appareil au cours d'une période donnée.

Utilisez cette métrique pour spécifier la quantité maximum ou minimum de trafic total sortant qu'un appareil doit envoyer au cours d'une période donnée.

Compatible avec : Rules Detect | ML Detect

Opérateurs : less-than | less-than-equals | greater-than | greater-than-equals

Valeur : Nombre entier non négatif.

Unités : Paquets

Durée : Nombre entier non négatif. Les valeurs valides sont 300, 600, 900, 1 800 ou 3 600 secondes.

Exemple
{ "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 }
Exemple d’utilisation de 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 }
Exemple d'utilisation de ML Detect
{ "name": "Outbound sent ML behavior", "metric": "aws:all-packets-out", "criteria": { "consecutiveDatapointsToAlarm": 1, "consecutiveDatapointsToClear": 1, "mlDetectionConfig": { "confidenceLevel": "HIGH" } }, "suppressAlerts": true }

Paquets entrants (aws:all-packets-in)

Le nombre de paquets entrants d'un appareil au cours d'une période donnée.

Utilisez cette métrique pour spécifier la quantité maximum ou minimum de trafic total entrant qu'un appareil doit recevoir au cours d'une période donnée.

Compatible avec : Rules Detect | ML Detect

Opérateurs : less-than | less-than-equals | greater-than | greater-than-equals

Valeur : Nombre entier non négatif.

Unités : Paquets

Durée : Nombre entier non négatif. Les valeurs valides sont 300, 600, 900, 1 800 ou 3 600 secondes.

Exemple
{ "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 }

Exemple d’utilisation de 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 }
Exemple d'utilisation 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 destination (aws:destination-ip-addresses)

Un ensemble de destinations IP.

Utilisez cette métrique pour spécifier un ensemble de routages inter-domaines sans classe (CIDR) autorisés (anciennement appelés liste blanche) ou refusés (anciennement appelés liste noire) à partir desquels chaque appareil doit ou ne doit pas se connecter à AWS IoT.

Compatible avec : Rules Detect

Opérateurs : in-cidr-set | not-in-cidr-set

Valeurs : une liste de CIDR

Unités : N/A

Exemple
{ "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 }

Ports TCP d’écoute (aws:listening-tcp-ports)

Les ports TCP que l'appareil écoute.

Utilisez cette métrique pour spécifier un ensemble de ports TCP autorisés (anciennement appelés liste blanche) ou refusés (anciennement appelés liste noire) sur lesquels chaque appareil doit ou ne doit pas écouter.

Compatible avec : Rules Detect

Opérateurs : in-port-set | not-in-port-set

Valeurs : une liste de ports

Unités : N/A

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

Ports UDP d’écoute (aws:listening-udp-ports)

Les ports UDP que l'appareil écoute.

Utilisez cette métrique pour spécifier un ensemble de ports UDP autorisés (anciennement appelés liste blanche) ou refusés (anciennement appelés liste noire) sur lesquels chaque appareil doit ou ne doit pas écouter.

Compatible avec : Rules Detect

Opérateurs : in-port-set | not-in-port-set

Valeurs : une liste de ports

Unités : N/A

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

Nombre de connexions TCP établies (aws:num-established-tcp-connections)

Le nombre de connexions TCP pour un appareil.

Utilisez cette métrique pour spécifier le nombre maximum ou minimum de connexions TCP actives que chaque appareil doit avoir (tous les états TCP).

Compatible avec : Rules Detect | ML Detect

Opérateurs : less-than | less-than-equals | greater-than | greater-than-equals

Valeur : Nombre entier non négatif.

Unités : Connexions

Exemple
{ "name": "TCP Connection Count", "metric": "aws:num-established-tcp-connections", "criteria": { "comparisonOperator": "less-than-equals", "value": { "count": 3 }, "consecutiveDatapointsToAlarm": 1, "consecutiveDatapointsToClear": 1 }, "suppressAlerts": true }
Exemple d’utilisation de 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 }
Exemple d'utilisation de ML Detect
{ "name": "Connection count ML behavior", "metric": "aws:num-established-tcp-connections", "criteria": { "consecutiveDatapointsToAlarm": 1, "consecutiveDatapointsToClear": 1, "mlDetectionConfig": { "confidenceLevel": "HIGH" } }, "suppressAlerts": true }

Spécifications des métriques d'appareil

Structure globale

Nom long

Nom court

Obligatoire

Type

Constraints

Remarques

header

hed

Y

Objet

Bloc complet requis pour rapport correct

metrics

met

Y

Objet

Un rapport peut contenir les deux ou au moins un metrics ou un custom_metrics bloc.

métriques personnalisées

cmet

Y

Objet

Un rapport peut contenir les deux ou au moins un metrics ou un custom_metrics bloc.

Bloc d'en-tête

Nom long

Nom court

Obligatoire

Type

Constraints

Remarques

report_id

rid

Y

Entier

Valeur augmentant de façon monotone. Horodatage epoch conseillé.

version

v

Y

Chaîne

Major.Minor

Incréments mineurs avec ajout de champ. Incréments majeurs si métriques supprimées.

Bloc de métriques :

Connexions TCP

Nom long

Nom court

Élément parent

Obligatoire

Type

Constraints

Remarques

tcp_connections

tc

metrics

N

Objet

established_connections

ec

tcp_connections

N

Objet

État TCP établie

connexions

cs

established_connections

N

List<Object>

remote_addr

rad

connexions

Y

Nombre

ip:port

IP peut être IPv6 ou IPv4

local_port

lp

connexions

N

Nombre

>= 0

local_interface

li

connexions

N

Chaîne

Nom d'interface

total

t

established_connections

N

Nombre

>= 0

Nombre de connexions établies

Ports TCP d’écoute)

Nom long

Nom court

Élément parent

Obligatoire

Type

Constraints

Remarques

listening_tcp_ports

tp

metrics

N

Objet

ports

pts

listening_tcp_ports

N

List<Object>

> 0

port

pt

ports

N

Nombre

> 0

les ports doivent être des nombres supérieurs à 0

interface

if

ports

N

Chaîne

Nom d'interface

total

t

listening_tcp_ports

N

Nombre

>= 0

Ports UDP d’écoute

Nom long

Nom court

Élément parent

Obligatoire

Type

Constraints

Remarques

listening_udp_ports

up

metrics

N

Objet

ports

pts

listening_udp_ports

N

List<Port>

> 0

port

pt

ports

N

Nombre

> 0

Les ports doivent être des nombres supérieurs à 0

interface

if

ports

N

Chaîne

Nom d'interface

total

t

listening_udp_ports

N

Nombre

>= 0

Statistiques réseau

Nom long

Nom court

Élément parent

Obligatoire

Type

Constraints

Remarques

network_stats

ns

metrics

N

Objet

bytes_in

bi

network_stats

N

Nombre

Delta Metric, >= 0

bytes_out

bo

network_stats

N

Nombre

Delta Metric, >= 0

packets_in

pi

network_stats

N

Nombre

Delta Metric, >= 0

packets_out

po

network_stats

N

Nombre

Delta Metric, >= 0

Exemple

La structure JSON suivante utilise des noms longs.

{ "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" ] } ] } }
Exemple de structure JSON avec des noms courts :
{ "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" ] } ] } }

Envoi de métriques à partir d'appareils

AWS IoT Device Defender Detect peut collecter, regrouper et surveiller les données de métriques générées par les appareils AWS IoT, pour identifier les appareils qui présentent un comportement anormal. Cette section vous explique comment envoyer des métriques d’un appareil vers AWS IoT Device Defender.

Vous devez déployer AWS IoT en toute sécurité la version deux du SDK sur vos appareils AWS IoT connectés ou passerelles d'appareils pour collecter des métriques côté appareil. Consultez la liste complète des SDK ici.

Vous pouvez utiliser AWS IoT Device Client pour publier des métriques, car il fournit un agent unique qui couvre les fonctionnalités présentes à la fois dans AWS IoT Device Defender et dans AWS IoT Device Management. (Gestion d'appareils) Ces fonctionnalités incluent les tâches, le tunneling sécurisé, la publication de métriques AWS IoT Device Defender, etc.

Vous publiez les statistiques relatives aux métriques côté appareil dans la reserved topic (rubrique réservée) dans AWS IoT pour AWS IoT Device Defender afin de les collecter et les évaluer.

Utilisation du AWS IoT Device Client pour publier des métriques

Pour installer AWS IoT Device Client, vous pouvez le télécharger depuis Github. Après avoir installé le AWS IoT Device Client sur l'appareil pour lequel vous souhaitez collecter des données côté appareil, vous devez le configurer pour envoyer des métriques côté appareil à AWS IoT Device Defender. Vérifiez que le configuration file (fichier de configuration) du AWS IoT Device Client contient les paramètres suivants définis dans la section device-defender ::

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

Vous devez définir l'intervalle de temps sur un minimum de 300 secondes. Si vous définissez un intervalle de temps inférieur à 300 secondes, vos données métriques peuvent être limitées.

Après avoir mis à jour votre configuration, vous pouvez créer des profils et des comportements de sécurité dans la console AWS IoT Device Defender afin de surveiller les indicateurs publiés par vos appareils dans le cloud. Vous pouvez trouver les métriques publiées dans la console AWS IoT Core en choisissant Defend, Detect, puis Metrics.