Geräteseitige Metriken - AWS IoT Device Defender

Geräteseitige Metriken

Bei der Erstellung eines Sicherheitsprofils können Sie das erwartete Verhalten Ihres IoT-Geräts festlegen, indem Sie Verhalten und Schwellenwerte für von IoT-Geräten generierte Metriken konfigurieren. Bei den folgenden Kennzahlen handelt es sich um geräteseitige Metriken, bei denen es sich um Messwerte von Agenten handelt, die Sie auf Ihren Geräten installieren.

Ausgehende Bytes (aws:all-bytes-out)

Die Anzahl der ausgehenden Bytes von einem Gerät während eines bestimmten Zeitraums.

Mit dieser Metrik geben Sie die maximale oder minimale Menge des ausgehenden Datenverkehrs an, die ein Gerät in einem bestimmten Zeitraum senden soll, gemessen in Byte.

Kompatibel mit: Rules Detect | ML Detect

Operatoren: less-than | less-than-equals | greater-than | greater-than-equals

Wert: eine nicht negative Ganzzahl

Einheiten: Byte

Dauer: eine nicht negative Ganzzahl. Gültige Werte sind 300, 600, 900, 1800 oder 3600 Sekunden.

Beispiel
{ "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 }
Beispiel für die Nutzung von 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 }
Beispiel mit ML Detect
{ "name": "Outbound traffic ML behavior", "metric": "aws:all-bytes-out", "criteria": { "consecutiveDatapointsToAlarm": 1, "consecutiveDatapointsToClear": 1, "mlDetectionConfig": { "confidenceLevel": "HIGH" } }, "suppressAlerts": true }

Bytes in (aws:all-bytes-in)

Die Anzahl der eingehenden Bytes zu einem Gerät während eines bestimmten Zeitraums.

Mit dieser Metrik geben Sie die maximale oder minimale Menge an eingehendem Datenverkehr an, die ein Gerät in einem bestimmten Zeitraum empfangen soll, gemessen in Byte.

Kompatibel mit: Rules Detect | ML Detect

Operatoren: less-than | less-than-equals | greater-than | greater-than-equals

Wert: eine nicht negative Ganzzahl

Einheiten: Byte

Dauer: eine nicht negative Ganzzahl. Gültige Werte sind 300, 600, 900, 1800 oder 3600 Sekunden.

Beispiel
{ "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 }
Beispiel für die Nutzung von 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 }
Beispiel mit ML Detect
{ "name": "Inbound traffic ML behavior", "metric": "aws:all-bytes-in", "criteria": { "consecutiveDatapointsToAlarm": 1, "consecutiveDatapointsToClear": 1, "mlDetectionConfig": { "confidenceLevel": "HIGH" } }, "suppressAlerts": true }

Überwachen der Anzahl an TCP-Ports (aws:num-listening-tcp-ports)

Die Anzahl der TCP-Ports, die das Gerät überwacht.

Mit diesem Parameter geben Sie die maximale oder minimale Anzahl von TCP-Ports an, die jedes Gerät überwachen soll.

Kompatibel mit: Rules Detect | ML Detect

Einheit: Fehler

Operatoren: less-than | less-than-equals | greater-than | greater-than-equals

Wert: eine nicht negative Ganzzahl

Einheit: Fehler

Dauer: eine nicht negative Ganzzahl. Gültige Werte sind 300, 600, 900, 1800 oder 3600 Sekunden.

Beispiel
{ "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 }
Beispiel für die Nutzung von 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 }
Beispiel mit ML Detect
{ "name": "Max TCP Port ML behavior", "metric": "aws:num-listening-tcp-ports", "criteria": { "consecutiveDatapointsToAlarm": 1, "consecutiveDatapointsToClear": 1, "mlDetectionConfig": { "confidenceLevel": "HIGH" } }, "suppressAlerts": true }

Überwachen der Anzahl an UDP-Ports (aws:num-listening-udp-ports)

Die Anzahl der UDP-Ports, die das Gerät überwacht.

Mit diesem Parameter geben Sie die maximale Anzahl an UDP-Ports an, die jedes Gerät überwachen soll.

Kompatibel mit: Rules Detect | ML Detect

Einheit: Fehler

Operatoren: less-than | less-than-equals | greater-than | greater-than-equals

Wert: eine nicht negative Ganzzahl

Einheit: Fehler

Dauer: eine nicht negative Ganzzahl. Gültige Werte sind 300, 600, 900, 1800 oder 3600 Sekunden.

Beispiel
{ "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 }
Beispiel für die Nutzung von 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 }
Beispiel mit ML Detect
{ "name": "Max UPD Port ML behavior", "metric": "aws:num-listening-tcp-ports", "criteria": { "consecutiveDatapointsToAlarm": 1, "consecutiveDatapointsToClear": 1, "mlDetectionConfig": { "confidenceLevel": "HIGH" } }, "suppressAlerts": true }

Ausgehende Pakete (aws:all-packets-out)

Die Anzahl der ausgehenden Pakete von einem Gerät während eines bestimmten Zeitraums.

Mit dieser Metrik geben Sie die maximale oder minimale Menge an gesamtem ausgehendem Datenverkehr an, die ein Gerät in einem bestimmten Zeitraum senden soll.

Kompatibel mit: Rules Detect | ML Detect

Operatoren: less-than | less-than-equals | greater-than | greater-than-equals

Wert: eine nicht negative Ganzzahl

Einheiten: Pakete

Dauer: eine nicht negative Ganzzahl. Gültige Werte sind 300, 600, 900, 1800 oder 3600 Sekunden.

Beispiel
{ "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 }
Beispiel für die Nutzung von 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 }
Beispiel mit ML Detect
{ "name": "Outbound sent ML behavior", "metric": "aws:all-packets-out", "criteria": { "consecutiveDatapointsToAlarm": 1, "consecutiveDatapointsToClear": 1, "mlDetectionConfig": { "confidenceLevel": "HIGH" } }, "suppressAlerts": true }

Pakete in (aws:all-packets-in)

Die Anzahl der eingehenden Pakete zu einem Gerät während eines bestimmten Zeitraums.

Mit dieser Metrik geben Sie die maximale oder minimale Menge an insgesamt eingehendem Datenverkehr an, die ein Gerät in einem bestimmten Zeitraum empfangen soll.

Kompatibel mit: Rule Detect | ML Detect

Operatoren: less-than | less-than-equals | greater-than | greater-than-equals

Wert: eine nicht negative Ganzzahl

Einheiten: Pakete

Dauer: eine nicht negative Ganzzahl. Gültige Werte sind 300, 600, 900, 1800 oder 3600 Sekunden.

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

Beispiel für die Nutzung von 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 }
Beispiel mit ML Detect
{ "name": "Inbound sent ML behavior", "metric": "aws:all-packets-in", "criteria": { "consecutiveDatapointsToAlarm": 1, "consecutiveDatapointsToClear": 1, "mlDetectionConfig": { "confidenceLevel": "HIGH" } }, "suppressAlerts": true }

Ziel-IPs (aws:destination-ip-addresses)

Ein Satz von IP-Zieladressen.

Mit dieser Metrik geben Sie einen Satz von zugelassenen (vormals als auf einer Whitelist stehend bezeichnet) bzw. verbotenen (vormals als auf einer Blacklist stehend bezeichnet) Classless Inter-Domain Routings (CIDR) an, von denen jedes Gerät eine Verbindung mit AWS IoT herstellen darf bzw. keine Verbindung herstellen darf.

Kompatibel mit: Rules Detect

Operatoren: in-cidr-set | not-in-cidr-set

Werte: eine Liste von CIDRs

Einheiten: –

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

Überwachen von TCP-Ports (aws:listening-tcp-ports)

Die TCP-Ports, die das Gerät überwacht.

Mit dieser Metrik geben Sie einen Satz von zugelassenen (vormals als auf einer Whitelist stehend bezeichnet) bzw. verbotenen (vormals als auf einer Blacklist stehend bezeichnet) TCP-Ports an, auf denen jedes Gerät horchen darf bzw. nicht horchen darf.

Kompatibel mit: Rules Detect

Operatoren: in-port-set | not-in-port-set

Werte: eine Liste von Ports

Einheiten: –

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

Überwachen von UDP-Ports (aws:listening-udp-ports)

Die UDP-Ports, die das Gerät überwacht.

Mit dieser Metrik geben Sie einen Satz von zugelassenen (vormals als auf einer Whitelist stehend bezeichnet) bzw. verbotenen (vormals als auf einer Blacklist stehend bezeichnet) UDP-Ports an, auf denen jedes Gerät horchen darf bzw. nicht horchen darf.

Kompatibel mit: Rules Detect

Operatoren: in-port-set | not-in-port-set

Werte: eine Liste von Ports

Einheiten: –

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

Anzahl etablierter TCP-Verbindungen (aws:num-established-tcp-connections)

Die Anzahl der TCP-Verbindungen für ein Gerät.

Mit diesem Parameter geben Sie die maximale oder minimale Anzahl aktiver TCP-Verbindungen an, die jedes Gerät haben sollte (alle TCP-Status).

Kompatibel mit: Rules Detect | ML Detect

Operatoren: less-than | less-than-equals | greater-than | greater-than-equals

Wert: eine nicht negative Ganzzahl

Einheiten: Verbindungen

Beispiel
{ "name": "TCP Connection Count", "metric": "aws:num-established-tcp-connections", "criteria": { "comparisonOperator": "less-than-equals", "value": { "count": 3 }, "consecutiveDatapointsToAlarm": 1, "consecutiveDatapointsToClear": 1 }, "suppressAlerts": true }
Beispiel für die Nutzung von 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 }
Beispiel mit ML Detect
{ "name": "Connection count ML behavior", "metric": "aws:num-established-tcp-connections", "criteria": { "consecutiveDatapointsToAlarm": 1, "consecutiveDatapointsToClear": 1, "mlDetectionConfig": { "confidenceLevel": "HIGH" } }, "suppressAlerts": true }

Spezifikationen für Gerätemetriken

Gesamtstruktur

Langer Name

Kurzname

Erforderlich

Typ

Beschränkungen

Hinweise

header

hed

Y

Object

Vollständiger Block für gültiges Berichtsformat erforderlich.

Kennzahlen

met

Y

Object

Ein Bericht kann mindestens einen – metricsoder custom_metrics-Block oder beide enthalten.

custom_metrics

comet

Y

Object

Ein Bericht kann mindestens einen – metricsoder custom_metrics-Block oder beide enthalten.

Header-Block

Langer Name

Kurzname

Erforderlich

Typ

Beschränkungen

Hinweise

report_id

rid

Y

Ganzzahl

Der Wert wird monotonisch erhöht. Ein Epoche-Zeitstempel wird empfohlen.

version

V

Y

String

Major.Minor

Kleine Schritte mit dem Hinzufügen eines Feldes. Große Schritte, wenn Metriken entfernt werden.

Metriken-Block:

TCP-Verbindungen

Langer Name

Kurzname

Übergeordnetes Element

Erforderlich

Typ

Beschränkungen

Hinweise

tcp_connections

tc

Kennzahlen

N

Object

established_connections

ec

tcp_connections

N

Object

Eingerichtete TCP-Status-

Verbindungen

cs

established_connections

N

List<Object>

remote_addr

rad

Verbindungen

Y

Zahl

ip:port

IP kann IPv6 oder IPv4 sein

local_port

lp

Verbindungen

N

Zahl

>= 0

local_interface

li

Verbindungen

N

String

Schnittstellenname

total

t

established_connections

N

Zahl

>= 0

Anzahl der eingerichteten Verbindungen

Überwachen von TCP-Ports

Langer Name

Kurzname

Übergeordnetes Element

Erforderlich

Typ

Beschränkungen

Hinweise

listening_tcp_ports

tp

Kennzahlen

N

Object

ports

pts

listening_tcp_ports

N

List<Object>

> 0

port

pt

ports

N

Zahl

> 0

Ports sollten Zahlen größer 0 sein

interface

if

ports

N

String

Schnittstellenname

total

t

listening_tcp_ports

N

Zahl

>= 0

Überwachen von UDP-Ports

Langer Name

Kurzname

Übergeordnetes Element

Erforderlich

Typ

Beschränkungen

Hinweise

listening_udp_ports

up

Kennzahlen

N

Object

ports

pts

listening_udp_ports

N

Liste<Port>

> 0

port

pt

ports

N

Zahl

> 0

Ports sollten Zahlen größer 0 sein

interface

if

ports

N

String

Schnittstellenname

total

t

listening_udp_ports

N

Zahl

>= 0

Netzwerkstatistik

Langer Name

Kurzname

Übergeordnetes Element

Erforderlich

Typ

Beschränkungen

Hinweise

network_stats

ns

Kennzahlen

N

Object

bytes_in

bi

network_stats

N

Zahl

Delta Metric, >= 0

bytes_out

bo

network_stats

N

Zahl

Delta Metric, >= 0

packets_in

pi

network_stats

N

Zahl

Delta Metric, >= 0

packets_out

po

network_stats

N

Zahl

Delta Metric, >= 0

Beispiel

Die folgende JSON-Struktur verwendet lange Namen.

{ "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" ] } ] } }
Beispiel für eine JSON-Struktur mit kurzen Namen
{ "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" ] } ] } }

Senden von Metriken von Geräten

AWS IoT Device Defender Detect kann von AWS IoT-Geräten generierte Metrikdaten sammeln, aggregieren und überwachen, um Geräte zu identifizieren, die ein ungewöhnliches Verhalten zeigen. In diesem Abschnitt erfahren Sie, wie Sie Metriken von einem Gerät an AWS IoT Device Defender senden.

Sie müssen auf Ihren über AWS IoT verbundenen Geräten oder Geräte-Gateways auf sichere Weise die AWS IoT SDK Version 2 zum Erfassen von geräteseitigen Metriken bereitstellen. Die vollständige Liste der SDKs finden Sie hier.

Sie können den AWS IoT Geräteclient zum Veröffentlichen von Metriken verwenden, da er einen einzigen Agent bietet, der alle Funktionen des Gerätemanagements von AWS IoT Device Defender und AWS IoT abdeckt. Zu diesen Funktionen gehören Jobs, sicheres Tunneling, die Veröffentlichung von AWS IoT Device Defender Metriken uvm.

Sie veröffentlichen geräteseitige Metriken zum Erfassen und Evaluieren unter dem reservierten Thema in AWS IoT für AWS IoT Device Defender.

Verwenden des AWS IoT Geräteclients zum Veröffentlichen von Metriken

Um den AWS IoT Geräteclient zu installieren, können Sie ihn von Github herunterladen. Nachdem Sie den AWS IoT Geräteclient auf dem Gerät installiert haben, für das Sie geräteseitige Daten sammeln möchten, müssen Sie ihn so konfigurieren, dass er geräteseitige Messdaten an AWS IoT Device Defender sendet. Stellen Sie sicher, dass in der Konfigurationsdatei des AWS IoT Geräteclients die folgenden Parameter im Abschnitt device-defender festgelegt sind:

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

Sie sollten das Zeitintervall auf mindestens 300 Sekunden festlegen. Wenn Sie das Zeitintervall auf weniger als 300 Sekunden festlegen, werden Ihre Metrikdaten möglicherweise gedrosselt.

Nachdem Sie Ihre Konfiguration aktualisiert haben, können Sie auf der AWS IoT Device Defender Konsole Sicherheitsprofile und Sicherheitsverhalten erstellen, um die Messwerte zu überwachen, die Ihre Geräte in der Cloud veröffentlichen. Sie finden veröffentlichte Metriken auf der AWS IoT Core-Konsole, indem Sie Defend, Detect und dann Metrics auswählen.