Device-side metrics
Quando si crea un profilo di sicurezza, è possibile specificare il comportamento previsto del dispositivo IoT configurando comportamenti e soglie per i parametri generati dai dispositivi IoT. Di seguito sono riportati i parametri sul lato dispositivo, ovvero i parametri degli agenti installati sui dispositivi.
Byte in uscita (aws:all-bytes-out
)
Numero di byte in uscita da un dispositivo durante un determinato periodo di tempo.
Usa questo parametro per specificare la quantità massima o minima di traffico in uscita che un dispositivo può inviare, misurata in byte, in un determinato periodo di tempo.
Compatibile con: Rule Detect | ML Detect
Operatori: less-than | less-than-equals | greater-than | greater-than-equals
Valore: intero non negativo
Unità: byte
Durata: un numero intero non negativo. I valori validi sono 300, 600, 900, 1800 o 3.600 secondi.
Esempio
{ "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 }
Esempio utilizzando un 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 }
Esempio con ML Detect
{ "name": "Outbound traffic ML behavior", "metric": "aws:all-bytes-out", "criteria": { "consecutiveDatapointsToAlarm": 1, "consecutiveDatapointsToClear": 1, "mlDetectionConfig": { "confidenceLevel": "HIGH" } }, "suppressAlerts": true }
Byte in entrata (aws:all-bytes-in
)
Numero di byte in entrata in un dispositivo durante un determinato periodo di tempo.
Usa questo parametro per specificare la quantità massima o minima di traffico in entrata che un dispositivo può ricevere, misurata in byte, in un determinato periodo di tempo.
Compatibile con: Rule Detect | ML Detect
Operatori: less-than | less-than-equals | greater-than | greater-than-equals
Valore: intero non negativo
Unità: byte
Durata: un numero intero non negativo. I valori validi sono 300, 600, 900, 1800 o 3.600 secondi.
Esempio
{ "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 }
Esempio utilizzando un 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 }
Esempio con ML Detect
{ "name": "Inbound traffic ML behavior", "metric": "aws:all-bytes-in", "criteria": { "consecutiveDatapointsToAlarm": 1, "consecutiveDatapointsToClear": 1, "mlDetectionConfig": { "confidenceLevel": "HIGH" } }, "suppressAlerts": true }
Conteggio di porte TCP in ascolto (aws:num-listening-tcp-ports
)
Numero delle porte TCP su cui il dispositivo è in ascolto.
Usa questo parametro per specificare il numero massimo o minimo di porte TCP che ogni dispositivo dovrebbe monitorare.
Compatibile con: Rule Detect | ML Detect
Unità: errori
Operatori: less-than | less-than-equals | greater-than | greater-than-equals
Valore: intero non negativo
Unità: errori
Durata: un numero intero non negativo. I valori validi sono 300, 600, 900, 1800 o 3.600 secondi.
Esempio
{ "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 }
Esempio utilizzando un 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 }
Esempio di utilizzo di ML Detect
{ "name": "Max TCP Port ML behavior", "metric": "aws:num-listening-tcp-ports", "criteria": { "consecutiveDatapointsToAlarm": 1, "consecutiveDatapointsToClear": 1, "mlDetectionConfig": { "confidenceLevel": "HIGH" } }, "suppressAlerts": true }
Conteggio porte UDP in ascolto (aws:num-listening-udp-ports
)
Numero delle porte UDP su cui il dispositivo è in ascolto.
Usa questo parametro per specificare il numero massimo o minimo di porte UDP che ogni dispositivo dovrebbe monitorare.
Compatibile con: Rule Detect | ML Detect
Unità: errori
Operatori: less-than | less-than-equals | greater-than | greater-than-equals
Valore: intero non negativo
Unità: errori
Durata: un numero intero non negativo. I valori validi sono 300, 600, 900, 1800 o 3.600 secondi.
Esempio
{ "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 }
Esempio utilizzando un 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 }
Esempio con ML Detect
{ "name": "Max UPD Port ML behavior", "metric": "aws:num-listening-tcp-ports", "criteria": { "consecutiveDatapointsToAlarm": 1, "consecutiveDatapointsToClear": 1, "mlDetectionConfig": { "confidenceLevel": "HIGH" } }, "suppressAlerts": true }
Pacchetti in uscita (aws:all-packets-out
)
Numero di pacchetti in uscita da un dispositivo durante un determinato periodo di tempo.
Usa questo parametro per specificare la quantità massima o minima di traffico in uscita totale che un dispositivo può inviare in un determinato periodo di tempo.
Compatibile con: Rule Detect | ML Detect
Operatori: less-than | less-than-equals | greater-than | greater-than-equals
Valore: intero non negativo
Unità: pacchetti
Durata: un numero intero non negativo. I valori validi sono 300, 600, 900, 1800 o 3.600 secondi.
Esempio
{ "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 }
Esempio utilizzando un 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 }
Esempio con ML Detect
{ "name": "Outbound sent ML behavior", "metric": "aws:all-packets-out", "criteria": { "consecutiveDatapointsToAlarm": 1, "consecutiveDatapointsToClear": 1, "mlDetectionConfig": { "confidenceLevel": "HIGH" } }, "suppressAlerts": true }
Pacchetti in entrata (aws:all-packets-in
)
Numero di pacchetti in entrata in un dispositivo durante un determinato periodo di tempo.
Usa questo parametro per specificare la quantità massima o minima di traffico in entrata totale che un dispositivo può ricevere in un determinato periodo di tempo.
Compatibile con: Rule Detect | ML Detect
Operatori: less-than | less-than-equals | greater-than | greater-than-equals
Valore: intero non negativo
Unità: pacchetti
Durata: un numero intero non negativo. I valori validi sono 300, 600, 900, 1800 o 3.600 secondi.
Esempio
{ "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 }
Esempio utilizzando un 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 }
Esempio con ML Detect
{ "name": "Inbound sent ML behavior", "metric": "aws:all-packets-in", "criteria": { "consecutiveDatapointsToAlarm": 1, "consecutiveDatapointsToClear": 1, "mlDetectionConfig": { "confidenceLevel": "HIGH" } }, "suppressAlerts": true }
IP di destinazione (aws:destination-ip-addresses
)
Set di destinazioni IP.
Usa questo parametro per specificare un set di CIDR (Classless Inter-Domain Routings) consentiti (precedentemente chiamati whitelist) o non consentiti (precedentemente chiamati blacklist) da cui ciascun dispositivo deve o non deve connettersi a AWS IoT.
Compatibile con: Rules Detect
Operatori: in-cidr-set | not-in-cidr-set
Valori: elenco di CIDR
Unità: n/d
Esempio
{ "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 }
Porte TCP in ascolto (aws:listening-tcp-ports
)
Porte TCP su cui il dispositivo è in ascolto.
Usa questo parametro per specificare un set di porte TCP consentite (precedentemente chiamate whitelist) o non consentite (precedentemente chiamate blacklist) su cui ciascun dispositivo deve o non deve restare in ascolto.
Compatibile con: Rules Detect
Operatori: in-port-set | not-in-port-set
Valori: elenco di porte
Unità: n/d
{ "name": "Listening TCP Ports", "metric": "aws:listening-tcp-ports", "criteria": { "comparisonOperator": "in-port-set", "value": { "ports": [ 443, 80 ] } }, "suppressAlerts": true }
Porte UDP in ascolto (aws:listening-udp-ports
)
Porte UDP su cui il dispositivo è in ascolto.
Usa questo parametro per specificare un set di porte UDP consentite (precedentemente chiamate whitelist) o non consentite (precedentemente chiamate blacklist) su cui ciascun dispositivo deve o non deve restare in ascolto.
Compatibile con: Rules Detect
Operatori: in-port-set | not-in-port-set
Valori: elenco di porte
Unità: n/d
{ "name": "Listening UDP Ports", "metric": "aws:listening-udp-ports", "criteria": { "comparisonOperator": "in-port-set", "value": { "ports": [ 1025, 2000 ] } } }
Conteggio delle connessioni TCP stabilite (aws:num-established-tcp-connections
)
Numero di connessioni TCP per un dispositivo.
Usa questo parametro per specificare il numero massimo o minimo di connessioni TCP attive che ciascun dispositivo può avere (Tutte le TCP con stati).
Compatibile con: Rule Detect | ML Detect
Operatori: less-than | less-than-equals | greater-than | greater-than-equals
Valore: intero non negativo
Unità: connessioni
Esempio
{ "name": "TCP Connection Count", "metric": "aws:num-established-tcp-connections", "criteria": { "comparisonOperator": "less-than-equals", "value": { "count": 3 }, "consecutiveDatapointsToAlarm": 1, "consecutiveDatapointsToClear": 1 }, "suppressAlerts": true }
Esempio utilizzando un 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 }
Esempio con ML Detect
{ "name": "Connection count ML behavior", "metric": "aws:num-established-tcp-connections", "criteria": { "consecutiveDatapointsToAlarm": 1, "consecutiveDatapointsToClear": 1, "mlDetectionConfig": { "confidenceLevel": "HIGH" } }, "suppressAlerts": true }
Specifica del documento di parametri dei dispositivi
Nome lungo |
Nome breve |
Richiesto |
Type |
Vincoli |
Note |
---|---|---|---|---|---|
header |
hed |
Y |
Oggetto |
Blocco completo necessario per un report in formato corretto. |
|
parametri |
met |
Y |
Oggetto |
Un report può avere entrambi o almeno un |
|
custom_metrics |
cmet |
Y |
Oggetto |
Un report può avere entrambi o almeno un |
Nome lungo |
Nome breve |
Richiesto |
Type |
Vincoli |
Note |
---|---|---|---|---|---|
report_id |
rid |
Y |
Numero intero |
Valore crescente in maniera monotona. Timestamp epoch consigliato. |
|
version |
v |
Y |
Stringa |
Major.Minor |
Incrementi minori con aggiunta di campo. Incrementi maggiori se i parametri vengono rimossi. |
Blocco dei parametri:
Nome lungo |
Nome breve |
Elemento padre |
Richiesto |
Type |
Vincoli |
Note |
---|---|---|---|---|---|---|
tcp_connections |
tc |
parametri |
N |
Oggetto |
||
established_connections |
ec |
tcp_connections |
N |
Oggetto |
Stato connessione TCP stabilita |
|
connections |
cs |
established_connections |
N |
Elenco<Oggetto> |
||
remote_addr |
rad |
connections |
Y |
Numero |
ip:porta |
IP può essere ipv6 o ipv4 |
local_port |
lp |
connections |
N |
Numero |
>= 0 |
|
local_interface |
li |
connections |
N |
Stringa |
Nome interfaccia |
|
total |
t |
established_connections |
N |
Numero |
>= 0 |
Numero di connessioni stabilite. |
Nome lungo |
Nome breve |
Elemento padre |
Richiesto |
Type |
Vincoli |
Note |
---|---|---|---|---|---|---|
listening_tcp_ports |
tp |
parametri |
N |
Oggetto |
||
ports |
pts |
listening_tcp_ports |
N |
Elenco<Oggetto> |
> 0 |
|
port |
pt |
ports |
N |
Numero |
> 0 |
I numeri di porta devono essere maggiori di 0 |
interface |
if |
ports |
N |
Stringa |
Nome interfaccia |
|
total |
t |
listening_tcp_ports |
N |
Numero |
>= 0 |
Nome lungo |
Nome breve |
Elemento padre |
Richiesto |
Type |
Vincoli |
Note |
---|---|---|---|---|---|---|
listening_udp_ports |
up |
parametri |
N |
Oggetto |
||
ports |
pts |
listening_udp_ports |
N |
Elenco<Porta> |
> 0 |
|
port |
pt |
ports |
N |
Numero |
> 0 |
I numeri di porta devono essere maggiori di 0 |
interface |
if |
ports |
N |
Stringa |
Nome interfaccia |
|
total |
t |
listening_udp_ports |
N |
Numero |
>= 0 |
Nome lungo |
Nome breve |
Elemento padre |
Richiesto |
Type |
Vincoli |
Note |
---|---|---|---|---|---|---|
network_stats |
ns |
metrics |
N |
Oggetto |
||
bytes_in |
bi |
network_stats |
N |
Numero |
Parametro delta, >= 0 |
|
bytes_out |
bo |
network_stats |
N |
Numero |
Parametro delta, >= 0 |
|
packets_in |
pi |
network_stats |
N |
Numero |
Parametro delta, >= 0 |
|
packets_out |
po |
network_stats |
N |
Numero |
Parametro delta, >= 0 |
Esempio
La seguente struttura JSON utilizza nomi lunghi.
{ "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" ] } ] } }
Esempio di struttura JSON con nomi brevi
{ "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" ] } ] } }
Invio di parametri dai dispositivi
AWS IoT Device Defender Detect permette di raccogliere, aggregare e monitorare i dati dei parametri generati dai dispositivi AWS IoT per identificare i dispositivi che presentano un comportamento anomalo. In questa sezione viene illustrato come inviare parametri da un dispositivo a AWS IoT Device Defender.
È necessario distribuire in modo sicuro AWS IoT SDK versione due sui dispositivi AWS IoT connessi o nei gateway dei dispositivi per raccogliere i parametri lato dispositivo. Vedi l'elenco completo degli SDK qui.
Puoi utilizzare AWS IoT Device Client per pubblicare parametri perché fornisce un singolo agente che copre le funzionalità presenti in AWS IoT Device Defender e in AWS IoT Device Management. Queste caratteristiche includono processi, tunneling sicuro, pubblicazione di parametri AWS IoT Device Defender e altro ancora.
Pubblichi i parametri lato dispositivo sull'argomento riservato in AWS IoT per la raccolta e la valutazione di AWS IoT Device Defender.
Utilizzo di AWS IoT Device Client per la pubblicazione di parametri
Per installare AWS IoT Device Client, puoi scaricarlo da Githubdevice-defender
:
"device-defender": { "enabled": true, "interval-in-seconds": 300 }
avvertimento
È necessario impostare l'intervallo di tempo su un minimo di 300 secondi. Se si imposta l'intervallo di tempo su un valore inferiore a 300 secondi, i dati dei parametri potrebbero essere limitati.
Dopo aver aggiornato la configurazione, è possibile creare profili e comportamenti di sicurezza nell’AWS IoT Device Defender console per monitorare i parametri che i dispositivi pubblicano sul cloud. Puoi trovare i parametri pubblicati nell’AWS IoT Core console scegliendo Defend (Protezione), Detect (Rileva) e quindi Metrics (Parametri).