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
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 |
|
métriques personnalisées |
cmet |
Y |
Objet |
Un rapport peut contenir les deux ou au moins un |
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 :
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 |
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 |
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 |
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 Githubdevice-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.