IoT Edge for Linux on Windows 安全性

适用于:IoT Edge 1.4 checkmark IoT Edge 1.4

Azure IoT Edge for Linux for Windows 受益于运行在 Windows Client/Server 主机上的所有安全产品,并确保所有额外组件保持相同的安全本地。 本文提供有关默认启用的不同安全本地的信息,以及用户可能启用的某些可选本地。

虚拟机安全

IoT Edge for Linux (EFLOW) 特选虚拟机基于 Microsoft CBL-Mariner。 CBL-Mariner 是 Azure 的云基础结构和边缘产品和服务的内部 Linux 分发版。 CBL-Mariner 旨在为这些设备和服务提供一致的平台,并增强 Azure 在 Linux 更新上保持最新状态的能力。 有关详细信息,请参阅 CBL-Mariner 安全性

EFLOW 虚拟机基于四点综合安全平台构建:

  1. 服务更新
  2. 只读根文件系统
  3. 防火墙锁定
  4. DM-Verity

服务更新

出现安全漏洞时,CBL-Mariner 使最新的安全修补程序和修补程序可用于通过 ELOW 每月更新提供服务。 虚拟机没有包管理器,因此无法手动下载和安装 RPM 包。 所有虚拟机更新都使用 EFLOW A/B 更新机制进行安装。 有关 EFLOW 更新的详细信息,请参阅更新 IoT Edge for Linux on Windows

只读根文件系统

EFLOW 虚拟机由两个主要分区 rootfs数据组成。 rootFS-A 或 rootFS-B 分区可互换,其中一个分区作为只读文件系统安装在 /,这意味着在此分区中存储的文件不允许更改。 另一方面,安装在 /var数据分区是可读和可写的,允许用户修改分区内的内容。 此分区上存储的数据不受更新过程操作,因此不会在更新过程中修改。

由于你可能需要对特定用例具有对 /etc/home/root/var 的写入访问权限,因此这些目录的写入访问权限是通过将这些目录覆盖到指定给目录 /var/.eflow/overlays 的数据分区中完成的。 最终结果是用户可以将任何内容写入上述目录。 若要了解覆盖的详细信息,请参阅覆盖

EFLOW CR partition layout

分区 大小 说明
BootEFIA 8 MB 用于未来 GRUBless 启动的固件分区 A
BootA 192 MB 包含 A 分区的引导加载程序
RootFS A 4 GB 包含根文件系统的两个主动/被动分区之一
BootEFIB 8 MB 用于未来 GRUBless 启动的固件分区 B
BootB 192 MB 包含 B 分区的引导加载程序
RootFS B 4 GB 包含根文件系统的两个主动/被动分区之一
日志 1 GB 或 6 GB 在 /logs 下装载的日志特定分区
数据 2 GB 到 2 TB 用于跨更新存储永久性数据的有状态分区。 根据部署配置可扩展

注意

分区布局表示逻辑磁盘大小,不指示虚拟机在主机 OS 磁盘上占用的物理空间。

防火墙

默认情况下,EFLOW 虚拟机使用 iptables 实用工具进行防火墙配置。 Iptables 用于在 Linux 内核中设置、维护和检查 IP 数据包筛选器规则的表。 默认实现仅允许端口 22 (SSH 服务)上的传入流量 ,否则会阻止流量。 可以使用以下步骤检查 iptables 配置:

  1. 打开权限提升的 PowerShell 会话

  2. 连接到 EFLOW 虚拟机

    Connect-EflowVm
    
  3. 列出所有 iptables 规则

    sudo iptables -L
    

    EFLOW iptables default

已验证的启动

EFLOW 虚拟机支持通过包含的设备映射器-verity (dm-verity) 内核功能进行验证启动,该功能提供块设备的透明完整性检查。 dm-verity 有助于防止可以保留根特权和入侵设备的持久性 rootkit。 此功能可确保虚拟机基础 fotware 软件映像相同且未更改。 虚拟机使用 dm-verity 功能检查特定的块设备、文件系统的基础存储层,并确定它是否与预期配置匹配。

默认情况下,此功能在虚拟机中处于禁用状态,并且可以打开或关闭。 有关详细信息,请参阅 dm-verity

受信任的平台模块 (TPM)

受信任的平台模块 (TPM) 技术旨在提供基于硬件的安全性相关的功能。 TPM 芯片是安全加密处理器,旨在执行加密操作。 该芯片包含多个物理安全机制以使其防篡改,并且恶意软件无法篡改 TPM 的安全功能。

EFLOW 虚拟机不支持 vTPM。 但是,用户可以启用/禁用 TPM 直通功能,该功能允许 EFLOW 虚拟机使用 Windows 主机 OS TPM。 这可实现两个主要方案:

安全的主机和虚拟机通信

EFLOW 提供了多种方式,通过公开丰富的 PowerShell 模块实现来与虚拟机交互。 详细信息,请参阅适用于 IoT Edge for Linux on Windows 的 PowerShell 函数。 此模块需要提升的会话才能运行,并使用 Microsoft Corporation 证书对其进行签名。

Windows 主机操作系统与 PowerShell cmdlet 所需的 EFLOW 虚拟机之间的所有通信都是使用 SSH 通道完成的。 默认情况下,虚拟机 SSH 服务不允许通过用户名和密码进行身份验证,并且仅限于证书身份验证。 证书是在 EFLOW 部署过程中创建的,对于每个 EFLOW 安装都是唯一的。 此外,为了防止 SSH 暴力攻击,如果虚拟机尝试每分钟去连接 SSH 服务三次以上,虚拟机将阻止 IP 地址。

在 EFLOW 持续发布 (CR) 版本中,我们引入了用于建立 SSH 连接的传输通道的更改。 最初,SSH 服务在 TCP 端口 22 上运行,该端口可由同一网络中的所有外部设备使用 TCP 套接字访问该特定端口。 出于安全原因,EFLOW CR 通过 Hyper-V 套接字而不是正常的 TCP 套接字运行 SSH 服务。 通过 Hyper-V 套接字的所有通信在Windows 主机 OS 和 EFLOW 虚拟机之间运行,而无需使用网络。 这会限制 SSH 服务的访问,仅限制到Windows 主机 OS 的连接。 有关详细信息,请参阅 Hyper-V 套接字。

后续步骤

详细了解 Windows IoT 安全本地

随时了解最新的 IoT Edge for Linux on Windows 更新