在边缘设备上通过 AWS IoT 检测加密货币挖矿威胁 官方博客中的物联网
通过 AWS IoT 监测边缘设备的加密货币挖矿威胁
作者:Ryan Dsouza 和 Emir Ayar 发布日期:2022年10月18日 原文链接
关键要点
边缘设备的安全性对于防范加密货币挖矿活动至关重要。使用 AWS IoT Device Defender 定义自定义指标以监测 CPU/GPU 使用率和 ML 推理时间。利用自定义指标创建安全配置文件,及时探测边缘设备上的加密货币挖矿威胁。引言
在边缘设备上实施机器学习ML需要具备强大硬件的设备,并且其可用性、安全性和安全策略的要求与云环境有很大的不同。这是由于边缘设备位于客户场所且直接与操作技术OT和互联网连接,因此物理安全和云环境所具备的安全控制通常不足。这使得边缘设备成为一些不法分子,尤其是加密货币矿工的目标。在许多情况下,边缘设备并未配置反恶意软件防护,这让检测加密货币挖矿活动变得更加困难。
为保护边缘设备免受恶意网络的攻击并保护敏感数据和 ML 模型的端到端安全模型至关重要。客户可以使用 AWS IoT Device Defender 来审计和监控他们的边缘设备。本文将介绍如何使用 AWS IoT Device Defender 自定义指标 来帮助检测和缓解边缘设备上的加密货币挖矿威胁。
加密货币挖矿用例
加密货币 是一种存在于数字或虚拟领域中,并使用密码学来确保交易安全的货币形式。加密货币挖矿是一种创建新数字货币的过程,是一种计算密集型活动,近年来不断上升。
加密劫持 是一种网络犯罪,涉及未经授权使用设备如边缘计算机、智能手机、平板电脑或服务器来挖掘加密货币。随着加密货币价格的上涨,以及使用 GPU 资源进行 ML 的边缘设备的能力提升,越来越多的加密劫持者可能会利用边缘设备的安全漏洞。一旦发生这种情况,边缘计算资源将用于挖掘加密货币,导致 CPU/GPU 使用率上升和边缘应用性能下降,进而增加 ML 在边缘推理的处理时间。
在本文中,我们将展示如何使用自定义指标监测 CPU/GPU 使用率和边缘 ML 推理处理时间,以帮助指示边缘设备上的加密货币挖矿活动。AWS IoT Device Defender 自定义指标是您定义的独特于设备的指标。在这个加密货币挖矿的网络安全用例中,您可以利用两个自定义指标进行监控CPU/GPU 使用率指标和平均边缘 ML 推理时间指标。有关使用 AWS IoT Device Defender 检测加密货币挖矿的更多信息,可以查阅 这里。请注意,要调查异常,您需要将警报细节与其他上下文信息关联,例如设备属性、设备指标历史趋势、安全配置文件指标历史趋势、标准指标和日志,以确定是否存在安全威胁。
解决方案前提条件
AWS 账户配备已安装 Docker 和 AWS CLI 的开发环境/计算机拥有能够为 AWS IoT Greengrass 最小 IAM 策略 创建新 IAM 用户或角色的 AWS 角色或用户一台配备最新浏览器的计算机对 Linux 有基本了解,例如创建目录、设置文件权限和编程解决方案架构与概述
我们的边缘安全解决方案通过 AWS IoT Greengrass 实现边缘应用管理,通过 AWS IoT Greengrass 自定义组件 收集与云进行数据集成,并使用 AWS IoT Device Defender 进行安全配置文件的定义和监控。
实施解决方案的步骤如下:
创建 AWS IoT Greengrass 设备创建并部署 AWS IoT Greengrass 组件用于 AWS IoT Device Defender在 AWS IoT Device Defender 中为 GPU 资源和边缘 ML 推理时间定义安全配置文件模拟 GPU 负载并在加密货币挖矿情境中更改平均推理时间指标检查并确认 AWS IoT Device Defender 服务的报警状态
图 帮助监测和检测边缘设备加密货币挖矿威胁的解决方案架构
解决方案操作步骤
1 准备并出版 AWS IoT Device Defender 组件及自定义指标
使用 AWS CLI 或 AWS Cloud9 实例连接到您的开发计算机。本文默认为在 useast1弗吉尼亚北部区域部署解决方案,如果您想部署到其他区域,将看到更改区域的说明。
首先,运行以下命令安装 AWS IoT Greengrass 开发工具包 以测试和发布自定义 AWS IoT Greengrass 组件。
bashpython3 m pip install U githttps//githubcom/awsgreengrass/awsgreengrassgdkcligit@v110
我们使用了一个稍作修改的公共开源 AWS IoT Device Defender 组件,以便在 AWS IoT Greengrass中使用。修改的主要内容是增强了调试/日志记录,以便于开发流程,并为模拟的 GPU 资源指标和边缘 ML 推理时间指标定义了自定义指标。
公共 AWS IoT Device Defender 组件是从中央 AWS IoT Greengrass 组件库中部署的,但修改后的版本将存储在您自己的账户中。
克隆 此博客的 Git 仓库 并运行组件库构建脚本:
bashcd /environmentgit clone https//githubcom/awssamples/awsiotblogsgreengrassdevicedefendercustomcd awsiotblogsgreengrassdevicedefendercustomchmod x buildsh/buildsh
然后运行以下命令以构建和发布 AWS IoT Greengrass 组件。要更改默认区域 useast1,请修改 comawsiotblogDeviceDefenderCustom/gdkconfigjson 文件中的 region 部分。
bashgdk component buildgdk component publish
转到 AWS IoT Greengrass 控制台 gt 组件 来确认您的组件已发布。
2 创建并部署一个容器化的 AWS IoT Greengrass 设备
在本节中,我们将使用 Docker 容器创建一个 AWS IoT Greengrass 设备,以模拟和代表您的边缘设备。
存储库中的 Dockerfile 允许我们获取基本的 AWS IoT Greengrass 容器镜像,并与一些 GPU 资源指标测量文件一起构建它。
运行以下命令以构建 AWS IoT Greengrass 设备容器。
bashcd /environment/awsiotblogsgreengrassdevicedefendercustomdocker build t ggawsiotblogimage
AWS IoT Greengrass 容器需要 AWS 凭证以提供这些资源和部署本地开发工具。创建一个具有 最小 IAM 策略的安装程序以提供资源 的 IAM 用户,或者从具有相同最小 IAM 策略的角色中检索临时 AWS 凭证,以便将其提供给容器。有关详细信息,请查看 在 Docker 容器中运行 AWS IoT Greengrass 的自动资源提供。
创建一个文件夹以放置您的凭证文件。
bashcd /environment/mkdir /greengrassv2credentials
在 /greengrassv2credentials 文件夹中创建一个名为 credentials 的配置文件。以以下格式将您的 AWS 凭证添加到凭证文件中。
bash[default]awsaccesskeyid = AKIAIOSFODNN7EXAMPLEawssecretaccesskey = wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEYawssessiontoken = AQoEXAMPLEH4aoAH0gNCAPytruncatedzrkuWJOgQs8IZZaIv2BXIa2R4Olgk
仅为临时凭证包含 awssessiontoken。运行以下命令以创建、提供和初始化 AWS IoT Greengrass 设备。该容器将代表具有 GPU 资源的边缘设备。
bashdocker run v (pwd)/greengrassv2credentials/root/aws/ro e GGCROOTPATH=/greengrass/v2 e AWSREGION=useast1 e PROVISION=true e THINGNAME=ggawsiotblog01 e THINGGROUPNAME=ggawsiotblog e TESROLENAME=GGBlogTokenExchangeRole e TESROLEALIASNAME=GGBlogTokenExchangeRoleAlias e COMPONENTDEFAULTUSER=ggcuserggcgroup name ggawsiotblog01 ggawsiotblogimagelatest
运行 Docker 容器后,您将看到最终日志输出,指示您的虚拟 AWS IoT Greengrass 设备已成功提供和启动。
启动 Nucleus成功启动 Nucleus
注意: 创建第一个容器后,您可以使用不同的 THINGNAME 输入来运行命令以创建更多虚拟边缘设备。
您可以转到 AWS IoT gt 管理 gt Greengrass 设备 gt 核心设备 查看已创建的 AWS IoT Greengrass 设备。
3 将组件部署到 AWS IoT Greengrass 模拟设备群
现在是时候将一些组件部署到新创建的设备上,包括自定义/修改过的 AWS IoT Device Defender 组件。
在部署组件之前,运行以下命令以允许 AWS IoT Greengrass 设备从亚马逊简单存储服务Amazon S3下载组件工件。
bashcd /environment/aws iam putrolepolicy rolename GGBlogTokenExchangeRole policyname GGComponentArtifactPolicy policydocument file//componentartifactpolicyjson
已部署的虚拟设备被添加到 ggawsiotblog 事物组中。因此,您需要创建一个目标为 ggawsiotblog 事物组的部署。
转到 AWS IoT gt 管理 gt Greengrass 设备 gt 部署选择 创建,指定一个部署名称将目标名称指定为 ggawsiotblog,选择 下一步在步骤 2在我的组件下选择 comawsiotblogDeviceDefenderCustom在公共组件下选择 awsgreengrassCli 和 awsgreengrassNucleus在步骤 3 配置组件,您将看到所选的 3 个组件。选择 “comawsiotblogDeviceDefenderCustom” 组件并选择 配置组件在右侧窗格输入以下配置合并内容:json { EnableGPUMetrics true }
继续后续步骤并选择 部署。创建部署后,您的设备将接收该部署、应用并向云报告状态。最后,您将在部署详情页面上的 核心设备 部分看到您的设备报告为 健康。
现在,您的 AWS IoT Greengrass 设备正在将设备端指标和自定义指标报告给 AWS IoT Device Defender。您可以检查组件发布的实际有效负载。
bashdocker exec it ggawsiotblog01 grep stdout Publishing metrics /greengrass/v2/logs/comawsiotblogDeviceDefenderCustomlog
将输出 JSON 复制并粘贴到您喜欢的 JSON 解析器/查看器中,以检查从设备发布的指标。
4 为自定义 GPU 资源指标和平均 ML 边缘推理时间指标创建安全配置文件
首先,在 AWS IoT Device Defender 中开始定义自定义指标:
转到 AWS IoT gt 管理 gt 安全 gt 检测 gt 指标 并选择 创建。创建一个 GPU 负载的自定义指标。 对于名称,指定 gpuloadperinference对于类型,选择数字。创建一个推理时间的自定义指标。 对于名称,指定 avginferencetime对于类型,选择数字。现在,AWS IoT Device Defender 能够监测来自边缘设备的两个定义自定义指标。
接下来,您需要创建一个安全配置文件,利用自定义 GPU 指标和 ML 边缘平均推理时间指标来评估加密货币威胁情况。
鲤鱼加速器最新版本进入 AWS IoT Device Defender 控制台的 安全配置文件 部分:AWS IoT gt 管理 gt 安全 gt 检测 gt 安全配置文件选择 创建安全配置文件 并选择 创建基于规则的异常检测配置文件对于目标,选择 ggawsiotblog指定安全配置文件名称清除所有云端指标以保持重点。选择您刚刚创建的两个设备端自定义指标;gpuloadperinference 和 avginferencetime。选择 下一步在定义指标行为部分,指定以下参数:指标:gpuloadperinference操作符:“小于”值:“40”持续时间:“5分钟”指标:avginferencetime操作符:“小于”值:“100”持续时间:“5分钟”选择 下一步选择 创建5 运行加密货币挖矿状态模拟
现在我们的模拟 AWS IoT Greengrass 设备在容器中运行,并将设备侧指标与自定义指标发布到 AWS IoT Device Defender 服务。当前自定义