常見物聯(lián)網(wǎng)安全事件的持續(xù)檢測和監(jiān)控解決方案
近幾年來,隨著物聯(lián)網(wǎng)技術(shù)的不斷成熟和相關(guān)國家政策的驅(qū)動,大量物聯(lián)網(wǎng)行業(yè)創(chuàng)新應(yīng)用得到了快速發(fā)展。從消費端智能家居、智能單品的爆發(fā)式增長,到企業(yè)端在智能制造、智慧交通、公共安全和醫(yī)療領(lǐng)域等不斷創(chuàng)新,整個物聯(lián)網(wǎng)的市場規(guī)模在迅速擴展。然而,隨之而來的問題便是越來越多的物聯(lián)網(wǎng)信息安全事件不斷頻發(fā)。由于物聯(lián)網(wǎng)設(shè)備的一些先天限制,比如要求設(shè)備低功耗、體積小、成本低,通常企業(yè)選擇的物聯(lián)網(wǎng)模組芯片安全性能不高,因此這些物聯(lián)網(wǎng)設(shè)備都容易成為黑客的攻擊對象。作者根據(jù)近幾年頻發(fā)的物聯(lián)網(wǎng)安全事件總結(jié)出常見的物聯(lián)網(wǎng)設(shè)備異常行為如下:
▌DDOS 攻擊。設(shè)備被控制并對服務(wù)器進行 DDOS 攻擊,設(shè)備發(fā)送大量異常數(shù)據(jù)到服務(wù)器,結(jié)果導(dǎo)致設(shè)備本身無法正常工作以及服務(wù)器癱瘓。
▌設(shè)備證書泄露以及濫用、設(shè)備證書不唯一、設(shè)備證書共享導(dǎo)致的安全問題。另外 IoT 權(quán)限設(shè)置過于寬泛,黑客可以利用以上漏洞來控制設(shè)備并造成數(shù)據(jù)泄露。
▌設(shè)備離線問題。黑客通過掃描默認(rèn)密碼或者弱密碼進入設(shè)備,刪除設(shè)備防火墻或者磁盤分區(qū),導(dǎo)致大量設(shè)備“變磚”,無法正常工作,造成企業(yè)和個人的生命財產(chǎn)安全損失。
亞馬遜云科技推出了眾多原生的物聯(lián)網(wǎng)服務(wù)來滿足不同客戶對于物聯(lián)網(wǎng)設(shè)備上云的需求。其中 Amazon IoT Core 是最主要的連接服務(wù),它能幫助客戶將海量設(shè)備連接上云;Amazon IoT Device Defender 是一項針對物聯(lián)網(wǎng)設(shè)備的安全服務(wù),客戶可以借助此服務(wù)審核設(shè)備的安全配置,檢測異常行為,從而降低安全風(fēng)險;此外,亞馬遜云還提供了常見的消息通知服務(wù)和日志分析監(jiān)控服務(wù)幫助客戶實現(xiàn)對云中安全事件的持續(xù)檢測和監(jiān)控。
在這篇博文中,作者將介紹如何通過集成亞馬遜云相關(guān)服務(wù)來實現(xiàn)企業(yè)對于以上物聯(lián)網(wǎng)安全事件的持續(xù)檢測和監(jiān)控。主要內(nèi)容包含以下幾個方面:
▌針對物聯(lián)網(wǎng)設(shè)備 DDOS 攻擊的持續(xù)檢測和監(jiān)控解決方案
▌針對物聯(lián)網(wǎng)設(shè)備證書安全和權(quán)限問題的持續(xù)檢測和監(jiān)控解決方案
▌針對物聯(lián)網(wǎng)設(shè)備生命周期事件的持續(xù)檢測和監(jiān)控解決方案
關(guān)于 Amazon IoT Device Defender Audit/Detect
Amazon IoT Device Defender 推出 Audit (審計) 功能,它能夠從設(shè)備和客戶賬戶層面來審計相關(guān)的安全配置和權(quán)限是否滿足安全規(guī)范。比如 Audit 能夠幫助檢查設(shè)備證書是否唯一、是否存在證書共享問題、IoT policy 權(quán)限是否設(shè)置過高、設(shè)備證書是否快過期等問題。您可以定期或者按要求來啟動 Audit。
當(dāng)前,IoT Device Defender Audit 配置了預(yù)先定義好的審計檢查項,您可以通過啟動 Audit 功能來完成對所有審計項的檢查。具體審計列表請查看以下官方文檔:
https://docs.aws.amazon.com/iot/latest/developerguide/device-defender-audit-checks.html
Amazon IoT Device Defender 推出 Detect 功能幫助客戶發(fā)現(xiàn)設(shè)備產(chǎn)生的異常行為。它通過檢測設(shè)備行為來幫助客戶發(fā)現(xiàn)設(shè)備是否存在被入侵的傾向。Detect 定義了 cloud-side metrics 和 device-side metrics 來幫助客戶檢測云中和設(shè)備端的異常現(xiàn)象,比如:
▌設(shè)備連接狀態(tài)的異常
▌設(shè)備是否嘗試連接未授權(quán)的端口
▌設(shè)備收到和發(fā)出的數(shù)據(jù)量大小異常
客戶可以創(chuàng)建一個 security profiles 將需要檢測的 metrics 包含其中,然后集成 Amazon CloudWatch 和 Amazon SNS 服務(wù)。這樣,一旦設(shè)備有異常行為發(fā)生,相關(guān)的報警事件就可以第一時間通知到客戶。詳細說明請查看以下官方文檔:
https://docs.aws.amazon.com/iot/latest/developerguide/device-defender-detect.html
解決方案架構(gòu)綜述
此解決方案在設(shè)備側(cè)利用 IoT SDK (亞馬遜云提供 embedded C、C++、java、python 等 SDK) 將客戶的物聯(lián)網(wǎng)設(shè)備,比如傳感器、機器、家電產(chǎn)品等連接到 Amazon IoT Core 服務(wù)中,這樣設(shè)備便能夠連接上云。接下來 IoT Device Defender 服務(wù)會對從設(shè)備產(chǎn)生的運行數(shù)據(jù)和日志進行審計和檢測,并將結(jié)果發(fā)送到 Amazon CloudWatch 中??蛻艨梢栽?CloudWatch 中查看到對應(yīng)的審計日志并做初步分析,同時您還可以針對特定的 Metric 創(chuàng)建 Alarm,定義報警規(guī)則以及下一步的觸發(fā)對象,比如 Amazon SNS 服務(wù)。在 SNS 中,您可以配置 SNS 的通知對象為 lambda 函數(shù),并在 lambda 中對數(shù)據(jù)進行預(yù)處理并將結(jié)果推送到 Amazon OpenSearch 服務(wù)。最終,我們通過 OpenSearch 服務(wù)來實時分析和可視化日志事件。當(dāng)中,我們通過 Amazon Secrets Manager 服務(wù)來存儲 OpenSearch 服務(wù)相關(guān)的驗證密鑰。通過這樣的方式,我們就可以對物聯(lián)網(wǎng)設(shè)備產(chǎn)生的異常事件和安全配置問題進行持續(xù)檢測和監(jiān)控。
先決條件
▌您在本地有 demo 硬件,并且安裝了對應(yīng)的 IoT Device SDK,而且設(shè)備可以成功連接上 Amazon IoT Core 并上報數(shù)據(jù)。
▌如果沒有達到以上條件,可以通過以下方式在 Amazon EC2 中建立虛擬設(shè)備,并將設(shè)備連接上云。以下提供 C++ 和 embedded C 的 SDK。
https://github.com/awslabs/aws-iot-device-client
https://github.com/aws/aws-iot-device-sdk-embedded-C
▌在設(shè)備端完成 device-side metric 相關(guān) SDK 配置工作,具體的配置方式請參考以下官方文檔:
https://docs.aws.amazon.com/iot/latest/developerguide/detect-device-side-metrics.html#DetectMetricsMessages
演練操作步驟
本演練操作包含三個部分:
▌創(chuàng)建 Amazon IoT Core 和 Device Defender 相關(guān)資源,完成對物聯(lián)網(wǎng)設(shè)備的審計和異常行為檢測。包括 DDOS 攻擊,設(shè)備證書安全相關(guān)事件和生命周期事件。
▌創(chuàng)建 Amazon SNS、Amazon CloudWatch、Amazon Lambda 相關(guān)資源,從而建立對設(shè)備安全事件的持續(xù)監(jiān)控和響應(yīng)。
▌創(chuàng)建 Amazon OpenSearch 等相關(guān)資源,完成對設(shè)備安全事件的實時分析和可視化監(jiān)控。
創(chuàng)建 Amazon IoT Core 和 Device Defender 相關(guān)資源,完成對物聯(lián)網(wǎng)設(shè)備的審計和異常行為檢測。包括 DDOS 攻擊,設(shè)備證書安全相關(guān)事件和生命周期事件。
針對前文提到的三類物聯(lián)網(wǎng)設(shè)備安全事件(DDOS 攻擊、設(shè)備證書安全和權(quán)限配置問題、設(shè)備變磚離線問題),我們可以通過 Amazon IoT Core 和 Device Defender 來持續(xù)檢測。
首先,我們來創(chuàng)建對于設(shè)備證書安全和權(quán)限配置的檢測。本文提供相應(yīng)的 CloudFormation 代碼幫助快速部署相應(yīng)資源。首先我們部署本解決方案需要用到的 IAM 資源。我們打開 Amazon CloudFormation Console,創(chuàng)建 Stack 并導(dǎo)入如下 CloudFormation 代碼:
AWSTemplateFormatVersion: "2010-09-09"
Description: ""
Resources:
IAMRole:
Type: "AWS::IAM::Role"
Properties:
Path: "/"
RoleName: "aod_iot_defender_SNS"
AssumeRolePolicyDocument: "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Sid\":\"\",\"Effect\":\"Allow\",\"Principal\":{\"Service\":\"iot.amazonaws.com\"},\"Action\":\"sts:AssumeRole\"}]}"
MaxSessionDuration: 3600
ManagedPolicyArns:
- "arn:aws:iam::aws:policy/service-role/AWSIoTDeviceDefenderAddThingsToThingGroupMitigationAction"
- "arn:aws:iam::aws:policy/service-role/AWSIoTDeviceDefenderEnableIoTLoggingMitigationAction"
- "arn:aws:iam::aws:policy/service-role/AWSIoTDeviceDefenderReplaceDefaultPolicyMitigationAction"
- "arn:aws:iam::aws:policy/service-role/AWSIoTDeviceDefenderUpdateCACertMitigationAction"
- "arn:aws:iam::aws:policy/service-role/AWSIoTDeviceDefenderUpdateDeviceCertMitigationAction"
- "arn:aws:iam::aws:policy/service-role/AWSIoTDeviceDefenderPublishFindingsToSNSMitigationAction"
Description: "Provides AWS IoT Device Defender write access to IoT and related resources for execution of Mitigation Actions."
IAMRole2:
Type: "AWS::IAM::Role"
Properties:
Path: "/"
RoleName: "iot_device_connect_status_to_SNS_role"
AssumeRolePolicyDocument: "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Sid\":\"\",\"Effect\":\"Allow\",\"Principal\":{\"Service\":\"iot.amazonaws.com\"},\"Action\":\"sts:AssumeRole\"}]}"
MaxSessionDuration: 3600
Policies:
- PolicyName: iot-device-connect-status-policy
PolicyDocument:
Version: "2012-10-17"
Statement:
- Effect: Allow
Action: 'sns:Publish'
Resource: !Sub "arn:aws:sns:${AWS::Region}:${AWS::AccountId}:SNS_test"
IAMRole3:
Type: "AWS::IAM::Role"
Properties:
Path: "/service-role/"
RoleName: "iot-logs-to-OpenSearch-aod-test-role-g373dnli"
AssumeRolePolicyDocument: "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Effect\":\"Allow\",\"Principal\":{\"Service\":\"lambda.amazonaws.com\"},\"Action\":\"sts:AssumeRole\"}]}"
MaxSessionDuration: 3600
ManagedPolicyArns:
- !Sub "arn:aws:iam::${AWS::AccountId}:policy/service-role/AWSLambdaBasicExecutionRole-5ca5e513-45ed-4ad0-9250-aa0ed765f5a9"
- 'arn:aws:iam::aws:policy/AmazonOpenSearchServiceFullAccess'
- 'arn:aws:iam::aws:policy/SecretsManagerReadWrite'
左滑查看更多
由上,我們啟動了3個 IAM role,后面的資源部署會用到以上 IAM 資源,用戶可以根據(jù)自己的情況自定義 Role Name。
接下來我們啟動 Amazon IoT Device Defender Audit 功能。我們打開 Amazon CloudFormation Console,創(chuàng)建 Stack 并導(dǎo)入如下 CloudFormation 代碼:
AWSTemplateFormatVersion: "2010-09-09"
Description: ""
Resources:
IoTScheduledAudit:
Type: "AWS::IoT::ScheduledAudit"
Properties:
ScheduledAuditName: "Aod_IoT_device_defender_audit"
Frequency: "DAILY"
TargetCheckNames:
- "AUTHENTICATED_COGNITO_ROLE_OVERLY_PERMISSIVE_CHECK"
- "CA_CERTIFICATE_EXPIRING_CHECK"
- "CA_CERTIFICATE_KEY_QUALITY_CHECK"
- "CONFLICTING_CLIENT_IDS_CHECK"
- "DEVICE_CERTIFICATE_EXPIRING_CHECK"
- "DEVICE_CERTIFICATE_KEY_QUALITY_CHECK"
- "DEVICE_CERTIFICATE_SHARED_CHECK"
- "INTERMEDIATE_CA_REVOKED_FOR_ACTIVE_DEVICE_CERTIFICATES_CHECK"
- "IOT_POLICY_OVERLY_PERMISSIVE_CHECK"
- "IOT_ROLE_ALIAS_ALLOWS_ACCESS_TO_UNUSED_SERVICES_CHECK"
- "IOT_ROLE_ALIAS_OVERLY_PERMISSIVE_CHECK"
- "LOGGING_DISABLED_CHECK"
- "REVOKED_CA_CERTIFICATE_STILL_ACTIVE_CHECK"
- "REVOKED_DEVICE_CERTIFICATE_STILL_ACTIVE_CHECK"
- "UNAUTHENTICATED_COGNITO_ROLE_OVERLY_PERMISSIVE_CHECK"
左滑查看更多
當(dāng)部署成功后,我們可以在 Amazon IoT Core Console-Audit 中 看到 daily 的審計結(jié)果,如下圖所示,其中5條審計規(guī)則報警,其中包括 IoT policy overly permissive 和 CA certificate expiring 等問題。
點擊對應(yīng)的 Check Name 可以看到哪些 IoT 資源違反了審計規(guī)則,如下圖所示。
另外,我們還可以看到其他9項合規(guī)的審計,如果未來有相關(guān)資源違規(guī)也會被持續(xù)檢測到,如下圖所示:
以上,我們完成了對于設(shè)備證書安全和權(quán)限配置的審計工作。
針對設(shè)備 DDOS 攻擊,我們需要啟動 Amazon IoT Device Defender Detect 來進行 device side metric 的檢測。在本文中,我們通過開啟對于設(shè)備端 Packets in/out 以及 Bytes in/out 的異常行為來檢測設(shè)備是否發(fā)起 DDOS 攻擊。同樣,作者提供 CloudFormation 代碼如下:
AWSTemplateFormatVersion: "2010-09-09"
Description: ""
Resources:
IoTSecurityProfile:
Type: "AWS::IoT::SecurityProfile"
Properties:
SecurityProfileName: "aod_demo"
TargetArns:
- "arn:aws:iot:us-west-2:xxxxxxxxxxxx:all/things"
Behaviors:
-
Name: "Bytes_in"
Metric: "aws:all-bytes-in"
Criteria:
ComparisonOperator: "greater-than"
ConsecutiveDatapointsToAlarm: 1
ConsecutiveDatapointsToClear: 1
DurationSeconds: 300
Value:
Count: 500
-
Name: "Bytes_out"
Metric: "aws:all-bytes-out"
Criteria:
ComparisonOperator: "greater-than"
ConsecutiveDatapointsToAlarm: 1
ConsecutiveDatapointsToClear: 1
DurationSeconds: 300
Value:
Count: 500
-
Name: "Packets_in"
Metric: "aws:all-packets-in"
Criteria:
ComparisonOperator: "greater-than"
ConsecutiveDatapointsToAlarm: 1
ConsecutiveDatapointsToClear: 1
DurationSeconds: 300
Value:
Count: 5
-
Name: "Packets_out"
Metric: "aws:all-packets-out"
Criteria:
ComparisonOperator: "greater-than"
ConsecutiveDatapointsToAlarm: 1
ConsecutiveDatapointsToClear: 1
DurationSeconds: 300
Value:
Count: 5
AlertTargets:
SNS:
AlertTargetArn: 'arn:aws:sns:us-west-2:xxxxxxxxxxxx:SNS_test'
RoleArn: 'arn:aws:iam::xxxxxxxxxxxx:role/aod_iot_defender_SNS'
左滑查看更多
打開 CloudFormation console,導(dǎo)入以上 yaml 文件,創(chuàng)建 stack,成功之后我們可以在 IoT Console-Security-Detect-Security Profiles 中看到創(chuàng)建的 Metrics 監(jiān)控事件。從以上 CloudFormation 中我們創(chuàng)建了 Bytes in/out 事件,定義當(dāng)5分鐘內(nèi)設(shè)備端接受或者發(fā)出的數(shù)據(jù)量大于 500 Bytes 便報警;同時創(chuàng)建 Packets in/out 事件,定義當(dāng)5分鐘內(nèi)設(shè)備接受或者發(fā)出的數(shù)據(jù)包數(shù)量大于5時報警。您可以根據(jù)自己的業(yè)務(wù)情況來定義 DDOS 攻擊的判斷條件。如下圖所示,在 console 中相關(guān)的事件已經(jīng)被云端檢測到。
接下來,我們將創(chuàng)建針對于設(shè)備變磚離線事件的檢測。Amazon IoT Core 會將設(shè)備的生命周期事件發(fā)送到云端,我們可以利用這些生命周期事件來知道設(shè)備現(xiàn)在處于什么連接狀態(tài)。比如針對于設(shè)備的 Connect/Disconnect 事件,我們可以通過以下默認(rèn)的兩個 MQTT topic 來進行監(jiān)聽:
▌$amazon/events/presence/connected/clientId
▌$amazon/events/presence/disconnected/clientId
作者將建立一個 Iot Rule 對以上 topic 來進行監(jiān)聽,同時將事件消息發(fā)送到 SNS 服務(wù)。同樣,提供 Cloudformation 代碼如下:
AWSTemplateFormatVersion: '2010-09-09'
Resources:
MyTopicRule:
Type: AWS::IoT::TopicRule
Properties:
RuleName:
'device_connection_aod'
TopicRulePayload:
Sql: SELECT * FROM '$aws/events/presence/+/demo_device'
Actions:
- Sns:
RoleArn: 'arn:aws:iam::xxxxxxxxxxxx:role/iot_device_connect_status_to_SNS_role'
TargetArn: !Sub "arn:aws:sns:${AWS::Region}:${AWS::AccountId}:SNS_test"
左滑查看更多
通過 CloudFormation 來啟動以上資源,成功后你可以在 IoT Console 中訂閱到設(shè)備的上下線狀態(tài)事件,如下圖所示:
以上我們便完成了對于三類物聯(lián)網(wǎng)設(shè)備安全事件(DDOS 攻擊,設(shè)備證書安全和權(quán)限配置問題,設(shè)備變磚離線問題)的持續(xù)檢測。
創(chuàng)建 Amazon SNS、Amazon CloudWatch、Amazon Lambda 相關(guān)資源,從而建立對設(shè)備安全事件的持續(xù)監(jiān)控和響應(yīng)。
基于前文,我們完成了安全事件的審計和持續(xù)檢測,接下來,我們需要對檢測事件進行分析并將結(jié)果推送給消費者,從而完成對事件的持續(xù)監(jiān)控和響應(yīng)。首先,我們定義 Amazon CloudWatch Alarm 功能,將 IoT Metrics 作為監(jiān)控對象,當(dāng)檢測到來自 IoT Device Defender Audit 和 Detect 的 Metrics 超過某個閾值時,向 SNS 發(fā)送報警。提供 CloudFormation 代碼如下:
AWSTemplateFormatVersion: "2010-09-09"
Description: ""
Resources:
CloudWatchAlarm:
Type: "AWS::CloudWatch::Alarm"
Properties:
AlarmName: "Audit-IOT-POLICY-OVERLY-PERMISSIVE-Alarm"
ActionsEnabled: true
AlarmActions:
- !Sub "arn:aws:sns:${AWS::Region}:${AWS::AccountId}:SNS_test"
MetricName: "NonCompliantResources"
Namespace: "AWS/IoT"
Statistic: "Average"
Dimensions:
-
Name: "CheckName"
Value: "IOT_POLICY_OVERLY_PERMISSIVE_CHECK"
-
Name: "ScheduledAuditName"
Value: "Aod_IoT_device_defender_audit_test"
Period: 86400
EvaluationPeriods: 1
DatapointsToAlarm: 1
Threshold: 10
ComparisonOperator: "GreaterThanThreshold"
TreatMissingData: "missing"
CloudWatchAlarm2:
Type: "AWS::CloudWatch::Alarm"
Properties:
AlarmName: "device-side-bytes-out-alarm"
ActionsEnabled: true
AlarmActions:
- !Sub "arn:aws:sns:${AWS::Region}:${AWS::AccountId}:SNS_test"
MetricName: "BehaviorEvaluationCompleted"
Namespace: "AWS/IoT"
Statistic: "Average"
Dimensions:
-
Name: "BehaviorName"
Value: "Bytes_out"
-
Name: "SecurityProfileName"
Value: "aod_demo"
Period: 300
EvaluationPeriods: 1
DatapointsToAlarm: 1
Threshold: 5
ComparisonOperator: "GreaterThanThreshold"
TreatMissingData: "missing"
CloudWatchAlarm3:
Type: "AWS::CloudWatch::Alarm"
Properties:
AlarmName: "device-side-packets-out-aod"
ActionsEnabled: true
AlarmActions:
- !Sub "arn:aws:sns:${AWS::Region}:${AWS::AccountId}:SNS_test"
MetricName: "Violations"
Namespace: "AWS/IoT"
Statistic: "Average"
Dimensions:
-
Name: "BehaviorName"
Value: "Packets_out"
-
Name: "SecurityProfileName"
Value: "aod_demo"
Period: 300
EvaluationPeriods: 1
DatapointsToAlarm: 1
Threshold: 5
ComparisonOperator: "GreaterThanThreshold"
TreatMissingData: "missing"
左滑查看更多
由上,我們定義當(dāng) IOT_POLICY_OVERLY_PERMISSIVE_CHECK 在24小時內(nèi)超過10個資源違規(guī)時產(chǎn)生報警并發(fā)送到 SNS 服務(wù);Bytes out/Packets out 在5分鐘內(nèi)觸發(fā)超過5次時產(chǎn)生報警并發(fā)送到 SNS 服務(wù)。
接下來,我們創(chuàng)建 SNS 服務(wù),接受以上報警并將消息發(fā)送給 Lambda。提供以下 CloudFormation 代碼:
AWSTemplateFormatVersion: "2010-09-09"
Description: ""
Resources:
SNSTopic:
Type: "AWS::SNS::Topic"
Properties:
DisplayName: ""
TopicName: "SNS_test"
KmsMasterKeyId: "alias/aws/sns"
左滑查看更多
最后,我們創(chuàng)建 Lambda 函數(shù),Lambda 函數(shù)會接受從 SNS 發(fā)來的數(shù)據(jù),并將數(shù)據(jù)推送給 Amazon OpenSearch 服務(wù)進行實時分析和可視化展示。提供 CloudFormation 代碼如下:
AWSTemplateFormatVersion: "2010-09-09"
Description: ""
Resources:
LambdaFunction:
Type: "AWS::Lambda::Function"
Properties:
Description: ""
FunctionName: "iot-logs-to-OpenSearch-aod-test"
Handler: "sample.handler"
Architectures:
- "x86_64"
Code:
S3Bucket: "aod-iot-device-client"
S3Key: "iot-logs-to-OpenSearch-aod-test-9e7975a0-a071-4026-9c1c-91f520f80d9b.zip"
MemorySize: 128
Role: !Sub "arn:aws:iam::${AWS::AccountId}:role/service-role/iot-logs-to-OpenSearch-aod-test-role-g373dnli "
Runtime: "python3.7"
Timeout: 3
TracingConfig:
Mode: "PassThrough"
EphemeralStorage:
Size: 512
左滑查看更多
其中您需要將 Lambda 代碼打包成 zip 格式,放在 S3 bucket 中。
將 Lambda 中關(guān)鍵代碼展示如下,在 Lambda handler 中定義 message 為來自 event[‘Records’] [‘Sns’] 消息,并將 message 組成 document,并通過 requests.post 發(fā)送給 OpenSearch endpoint url。
def handler(event, context):
for record in event['Records']:
message = record['Sns']
document = {"message": message }
r = requests.post(url, auth=HTTPBasicAuth(account, pwd), json=document, headers=headers)
return event
左滑查看更多
其中 url = host + ‘/’ + index + ‘/’ + type;host為 OpenSearch endpoint url;index 客戶可以自定義 string 類型比如 ‘iot-metric-cloudwatch-index’;type = ‘_doc’;account 和 pwd 為 OpenSearch Dashboard 賬號和密碼。下文會介紹 Amazon OpenSearch 和 Amazon Secret Manager 相關(guān)資源創(chuàng)建。
以上,當(dāng)設(shè)備安全事件(DDOS 攻擊、設(shè)備證書安全和權(quán)限配置問題、設(shè)備變磚離線問題)發(fā)生時, 事件就會被 Amazon IoT Core 持續(xù)監(jiān)測到,并且通過集成 Amazon CloudWatch、Amazon SNS 服務(wù)發(fā)送到 Lambda 函數(shù)進行持續(xù)監(jiān)控和響應(yīng)。
創(chuàng)建 Amazon OpenSearch 等相關(guān)資源,完成對設(shè)備安全事件的實時分析和可視化監(jiān)控。
接下來,我們將完成本解決方案的最后一步,即創(chuàng)建 Amazon OpenSearch 和 Amazon Secrets Manager 相關(guān)服務(wù)。首先,我們根據(jù)以下官方文檔創(chuàng)建 OpenSearch endpoint:
https://docs.aws.amazon.com/opensearch-service/latest/developerguide/gsg.html
其中我們選擇 enable Fine-grained access control,并設(shè)置 Master user 通過賬號和密碼方式認(rèn)證登錄。這里的賬號和密碼便是上文 lambda 中的 account 和 pwd。我們將 account 和 pwd 通過 Amazon Secret Manager 服務(wù)進行管理,這樣密鑰就不會以明文方式暴露在代碼中,從而提高安全性。Amazon Secret Manager 相關(guān) CloudFormation 代碼如下:
AWSTemplateFormatVersion: "2010-09-09"
Description: ""
Resources:
SecretsManagerSecret:
Type: "AWS::SecretsManager::Secret"
Properties:
Name: "ES_Kibana_credential-aod"
SecretString: "{\"es_account\":\"xxx\",\"es_pwd\":\"xxx\"}"
左滑查看更多
通過以上步驟,我們創(chuàng)建了 Amazon OpenSearch 和 Amazon Secret Manager 相關(guān)服務(wù)。打開 OpenSearch Console,并點擊創(chuàng)建的 DashBoard url。點擊 Discover 并搜索相應(yīng)的關(guān)鍵字如 “over-permission”,我們看到如下界面:
以上,相應(yīng)的安全事件都已經(jīng)存儲到 OpenSearch 服務(wù)。接下來,我們可以在 OpenSearch 中建立一些 Dashboard 從而對不同的物聯(lián)網(wǎng)安全事件進行實時的可視化監(jiān)控。比如作者建立了一些簡單的 Dashboard 如下:
總結(jié)
在本文中,作者介紹了幾種當(dāng)前主要物聯(lián)網(wǎng)安全事件的行為模式,包括 DDOS 攻擊、設(shè)備證書安全和權(quán)限配置問題、設(shè)備離線問題。針對這些問題,作者結(jié)合了亞馬遜云物聯(lián)網(wǎng)相關(guān)服務(wù)(主要是 Amazon IoT Device Defender 服務(wù))提供了對應(yīng)的檢測和審計方案;同時作者結(jié)合了亞馬遜云其他相關(guān)消息推送,日志監(jiān)控服務(wù)搭建了針對事件的持續(xù)監(jiān)控和響應(yīng)方案;最后作者介紹了 Amazon OpenSearch 服務(wù)幫助搭建完整的日志事件實時分析和可視化方案。通過本文的介紹,客戶可以建立基于亞馬遜云相關(guān)服務(wù)的針對物聯(lián)網(wǎng)安全事件的持續(xù)檢測,監(jiān)控和可視化分析方案,從而幫助客戶建立物聯(lián)網(wǎng)安全事件響應(yīng)機制,降低潛在安全風(fēng)險,減少企業(yè)損失。
本篇作者
楊陽:亞馬遜云科技專業(yè)服務(wù)團隊物聯(lián)網(wǎng)應(yīng)用架構(gòu)師。負責(zé)基于 Amazon IoT 的解決方案咨詢,架構(gòu)與交付,深度參與過智慧工廠、智能家居等行業(yè) IoT 解決方案的咨詢與交付。進入亞馬遜云科技之前在消費電子產(chǎn)品和制造業(yè)擁有豐富的物聯(lián)網(wǎng)項目開發(fā)和管理經(jīng)驗。
來源:亞馬遜云開發(fā)者