裝置端指標 - AWS IoT Device Defender

裝置端指標

建立安全性設定檔時,您可以針對 IoT 裝置產生的指標設定行為和閾值,來指定 IoT 裝置的預期行為。下列是裝置端的指標,這些指標來自您在裝置上安裝的代理程式。

位元組輸出 (aws:all-bytes-out)

在特定期間內從裝置傳出位元組的數量。

使用此指標,以指定裝置應該傳送的傳出流量的最大或最小數量,其在指定期間內以位元組為單位測量。

相容於:Rules Detect | ML Detect

運算子:less-than | less-than-equals | greater-than | greater-than-equals

值:是非負整數。

單位:位元組

持續時間:非負整數。有效值為 300、600、900、1800 或 3600 秒。

範例
{ "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 }
範例 使用 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 }
範例 使用 ML Detect 的範例
{ "name": "Outbound traffic ML behavior", "metric": "aws:all-bytes-out", "criteria": { "consecutiveDatapointsToAlarm": 1, "consecutiveDatapointsToClear": 1, "mlDetectionConfig": { "confidenceLevel": "HIGH" } }, "suppressAlerts": true }

位元組輸入 (aws:all-bytes-in)

在特定期間內傳入裝置的位元組數量。

使用此指標,以指定裝置應該接收的傳入流量的最大或最小數量,其在指定期間內以位元組為單位測量。

相容於:Rules Detect | ML Detect

運算子:less-than | less-than-equals | greater-than | greater-than-equals

值:是非負整數。

單位:位元組

持續時間:非負整數。有效值為 300、600、900、1800 或 3600 秒。

範例
{ "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 }
範例 使用 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 }
範例 使用 ML Detect 的範例
{ "name": "Inbound traffic ML behavior", "metric": "aws:all-bytes-in", "criteria": { "consecutiveDatapointsToAlarm": 1, "consecutiveDatapointsToClear": 1, "mlDetectionConfig": { "confidenceLevel": "HIGH" } }, "suppressAlerts": true }

接聽 TCP 連接埠計數 (aws:num-listening-tcp-ports)

裝置正在接聽的 TCP 連接埠數。

使用此指標,以指定每個裝置應該監控的最大數量的 TCP 連接埠數。

相容於:Rules Detect | ML Detect

單位:失敗數

運算子:less-than | less-than-equals | greater-than | greater-than-equals

值:是非負整數。

單位:失敗數

持續時間:非負整數。有效值為 300、600、900、1800 或 3600 秒。

範例
{ "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 }
範例 使用 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 }
範例 使用 ML Detect 的範例
{ "name": "Max TCP Port ML behavior", "metric": "aws:num-listening-tcp-ports", "criteria": { "consecutiveDatapointsToAlarm": 1, "consecutiveDatapointsToClear": 1, "mlDetectionConfig": { "confidenceLevel": "HIGH" } }, "suppressAlerts": true }

接聽 UDP 連接埠計數 (aws:num-listening-udp-ports)

裝置正在接聽的 UDP 連接埠數。

使用此指標,以指定每個裝置應該監控的最大數量的 UDP 連接埠數。

相容於:Rules Detect | ML Detect

單位:失敗數

運算子:less-than | less-than-equals | greater-than | greater-than-equals

值:是非負整數。

單位:失敗數

持續時間:非負整數。有效值為 300、600、900、1800 或 3600 秒。

範例
{ "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 }
範例 使用 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 }
範例 使用 ML Detect 的範例
{ "name": "Max UPD Port ML behavior", "metric": "aws:num-listening-tcp-ports", "criteria": { "consecutiveDatapointsToAlarm": 1, "consecutiveDatapointsToClear": 1, "mlDetectionConfig": { "confidenceLevel": "HIGH" } }, "suppressAlerts": true }

封包輸出 (aws:all-packets-out)

在特定期間內從裝置傳出封包的數量。

使用此指標,以指定裝置應該在指定期間內傳送的總傳出流量的最大或最小數量。

相容於:Rules Detect | ML Detect

運算子:less-than | less-than-equals | greater-than | greater-than-equals

值:是非負整數。

單位:封包數

持續時間:非負整數。有效值為 300、600、900、1800 或 3600 秒。

範例
{ "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 }
範例 使用 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 }
範例 使用 ML Detect 的範例
{ "name": "Outbound sent ML behavior", "metric": "aws:all-packets-out", "criteria": { "consecutiveDatapointsToAlarm": 1, "consecutiveDatapointsToClear": 1, "mlDetectionConfig": { "confidenceLevel": "HIGH" } }, "suppressAlerts": true }

封包輸入 (aws:all-packets-in)

在特定期間內傳入裝置的封包數量。

使用此指標,以指定裝置應該在指定期間內接收的總傳入流量的最大或最小數量。

相容於:Rule Detect | ML Detect

運算子:less-than | less-than-equals | greater-than | greater-than-equals

值:是非負整數。

單位:封包數

持續時間:非負整數。有效值為 300、600、900、1800 或 3600 秒。

範例
{ "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 }

使用 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 }
範例 使用 ML Detect 的範例
{ "name": "Inbound sent ML behavior", "metric": "aws:all-packets-in", "criteria": { "consecutiveDatapointsToAlarm": 1, "consecutiveDatapointsToClear": 1, "mlDetectionConfig": { "confidenceLevel": "HIGH" } }, "suppressAlerts": true }

目的地 IP (aws:destination-ip-addresses)

一組 IP 目的地。

使用此指標來指定一組允許 (之前稱為白名單) 或拒絕 (之前稱為黑名單) 的 Classless Inter-Domain Routings (CIDR),每個裝置必須或不得連接到 AWS IoT。

相容於:Rules Detect

運算子:in-cidr-set | not-in-cidr-set

值:CIDR 清單

單位:N/A

範例
{ "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 }

偵聽 TCP 連接埠 (aws:listening-tcp-ports)

裝置接聽的 TCP 連接埠。

使用此指標來指定一組允許 (之前稱為白名單) 或拒絕 (之前稱為黑名單) 的 TCP 連接埠,每個裝置必須或不得接聽這些 TCP 連接埠。

相容於:Rules Detect

運算子:in-port-set | not-in-port-set

值:一組連接埠

單位:N/A

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

偵聽 UDP 連接埠 (aws:listening-udp-ports)

裝置接聽的 UDP 連接埠。

使用此指標來指定一組允許 (之前稱為白名單) 或拒絕 (之前稱為黑名單) 的 UDP 連接埠,每個裝置必須或不得接聽這些 UDP 連接埠。

相容於:Rules Detect

運算子:in-port-set | not-in-port-set

值:一組連接埠

單位:N/A

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

已建立的 TCP 連線計數 (aws:num-established-tcp-connections)

適用於裝置的 TCP 連線數。

使用此指標,以指定每個裝置應該擁有的最大或最小數量的作用中 TCP 連線數 (所有 TCP 狀態)。

相容於:Rules Detect | ML Detect

運算子:less-than | less-than-equals | greater-than | greater-than-equals

值:是非負整數。

單位:連線數

範例
{ "name": "TCP Connection Count", "metric": "aws:num-established-tcp-connections", "criteria": { "comparisonOperator": "less-than-equals", "value": { "count": 3 }, "consecutiveDatapointsToAlarm": 1, "consecutiveDatapointsToClear": 1 }, "suppressAlerts": true }
範例 使用 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 }
範例 使用 ML Detect 的範例
{ "name": "Connection count ML behavior", "metric": "aws:num-established-tcp-connections", "criteria": { "consecutiveDatapointsToAlarm": 1, "consecutiveDatapointsToClear": 1, "mlDetectionConfig": { "confidenceLevel": "HIGH" } }, "suppressAlerts": true }

裝置指標文件規格

整體結構

長名稱

短名稱

必要

Type

限制

備註

標題

hed

Y

物件

正確格式的報告需要完整的區塊。

指標

met

Y

物件

報告可以同時具有 metricscustom_metrics 區塊或至少其中一個。

custom_metrics

cmet

Y

物件

報告可以同時具有 metricscustom_metrics 區塊或至少其中一個。

標題區塊

長名稱

短名稱

必要

Type

限制

備註

report_id

rid

Y

Integer

單調增加的值。建議使用 Epoch 時間戳記。

version

v

Y

字串

Major.Minor

新增欄位時的次要增量。移除指標後的主要增量。

指標區塊:

TCP 連線

長名稱

短名稱

父元素

必要

Type

限制

備註

tcp_connections

tc

指標

N

物件

established_connections

ec

tcp_connections

N

物件

ESTABLISHED TCP 狀態

連線

cs

established_connections

N

List<Object>

remote_addr

rad

連線

Y

數字

ip:port

IP 可為 IPv6 或 IPv4

local_port

lp

連線

N

數字

>= 0

local_interface

li

連線

N

字串

介面名稱

總計

t

established_connections

N

數字

>= 0

已建立連線數量

偵聽 TCP 連接埠

長名稱

短名稱

父元素

必要

Type

限制

備註

listening_tcp_ports

tp

指標

N

物件

連接埠

pts

listening_tcp_ports

N

List<Object>

> 0

port

pt

連接埠

N

數字

> 0

連線埠的數字應大於 0

interface

連接埠

N

字串

介面名稱

總計

t

listening_tcp_ports

N

數字

>= 0

偵聽 UDP 連接埠

長名稱

短名稱

父元素

必要

Type

限制

備註

listening_udp_ports

up

指標

N

物件

連接埠

pts

listening_udp_ports

N

List<Port>

> 0

port

pt

連接埠

N

數字

> 0

連線埠的數字應大於 0

interface

連接埠

N

字串

介面名稱

總計

t

listening_udp_ports

N

數字

>= 0

Network statistics (網路統計資料)

長名稱

短名稱

父元素

必要

Type

限制

備註

network_stats

ns

指標

N

物件

bytes_in

bi

network_stats

N

數字

差異指標,>= 0

bytes_out

bo

network_stats

N

數字

差異指標,>= 0

packets_in

pi

network_stats

N

數字

差異指標,>= 0

packets_out

po

network_stats

N

數字

差異指標,>= 0

範例

以下 JSON 結構使用長名稱。

{ "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" ] } ] } }
範例 使用短名稱範例 JSON 結構:
{ "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" ] } ] } }

從裝置傳送指標

AWS IoT Device Defender Detect 可收集、彙總及監控 AWS IoT 裝置產生的指標資料,以識別呈現異常行為的裝置。本節說明如何將指標從裝置傳送到 AWS IoT Device Defender。

您必須在 AWS IoT 連網裝置或裝置閘道上安全地部署 AWS IoT SDK 第 2 版,以收集裝置端指標。請在這裡參閱 SDK 的完整清單。

您可使用 AWS IoT 裝置用戶端發佈指標,因為它提供單一代理程式,涵蓋 AWS IoT Device Defender 和 AWS IoT 裝置管理中提供的功能。這些功能包括任務、安全通道、AWS IoT Device Defender 指標發佈等等。

針對 AWS IoT Device Defender 將裝置端指標發佈至 AWS IoT 中的保留主題以進行收集和評估。

使用 AWS IoT 裝置用戶端來發佈指標

若要安裝 AWS IoT 裝置用戶端,您可以從 GitHub 下載它。在您要收集其裝置端資料的裝置上安裝了 AWS IoT 裝置用戶端之後,您必須將其設定為將裝置端指標傳送至 AWS IoT Device Defender。驗證 AWS IoT 裝置用戶端組態檔案具有 device-defender 區段中設定的下列參數:

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

您應該將時間間隔設定為至少 300 秒。如果您將時間間隔設定為小於 300 秒的值,系統可能會調節您的指標資料。

在更新了您的組態之後,您可以在 AWS IoT Device Defender 主控台中建立安全設定檔和行為,來監控裝置發佈至雲端的指標。您可以在 AWS IoT Core 主控台中尋找已發佈的指標,方法為選擇 Defend (防禦)、Detect (偵測),然後選擇 Metrics (指標)。