你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

在 OT 传感器上配置代理设置

本文是介绍使用 Microsoft Defender for IoT 进行 OT 监视的 部署路径 的系列文章之一,并介绍了如何在 OT 传感器上配置代理设置以连接到 Azure。

Diagram of a progress bar with Deploy your sensors highlighted.

在以下情况下,可以跳过此步骤:

先决条件

要执行本文所述的步骤,需要:

此步骤由部署团队和连接团队执行。

在 OT 传感器上配置代理设置

本部分介绍如何在 OT 传感器控制台上配置现有代理的设置。 如果还没有代理,请使用以下过程配置一个代理:

在 OT 传感器上定义代理设置:

  1. 登录到 OT 传感器,然后选择“系统设置 >”“传感器网络设置”。

  2. 开启“启用代理”选项,然后输入代理服务器的以下详细信息:

    • 代理主机
    • 代理端口
    • 代理用户名(可选)
    • 代理密码(可选)

    例如:

    Screenshot of the proxy setting page.

  3. 如果相关,请选择“客户端证书”上传代理身份验证证书以访问 SSL/TLS 代理服务器。

    注意

    检查 SSL/TLS 流量的代理服务器需要客户端 SSL/TLS 证书,例如,当使用 Zscaler 和 Palo Alto Prisma 等服务时。

  4. 选择“保存”。

设置 Azure 代理

在以下情况下,可以使用 Azure 代理将传感器连接到 Defender for IoT:

  • 需要在传感器与 Azure 之间建立专用连接
  • 站点通过 ExpressRoute 连接到 Azure
  • 站点通过 VPN 连接到 Azure

如果已配置代理,请直接继续在传感器控制台上定义代理设置

如果尚未配置代理,请使用本部分中的过程在 Azure VNET 中设置代理。

先决条件

在开始之前,请确保已做好以下准备:

  • 一个用于监视日志的 Log Analytics 工作区

  • 与 Azure VNET 建立了远程站点连接

  • 允许端口 443 上的出站 HTTPS 流量从传感器流向 Defender for IoT 所需的终结点。 有关详细信息,请参阅 预配 OT 传感器以进行云管理

  • 一个代理服务器资源,它有权通过防火墙访问 Microsoft 云服务。 本文所述的过程使用 Azure 中托管的 Squid 服务器。

重要

Microsoft Defender for IoT 不会对 Squid 或任何其他代理服务提供支持。 由客户负责代理服务的设置和维护。

配置传感器代理设置

本部分介绍如何在 Azure VNET 中配置代理以用于 OT 传感器,包含以下步骤:

  1. 为 NSG 日志定义存储帐户
  2. 定义虚拟网络和子网
  3. 定义虚拟或本地网络网关
  4. 定义网络安全组
  5. 定义 Azure 虚拟机规模集
  6. 创建 Azure 负载均衡器
  7. 配置 NAT 网关

步骤 1:为 NSG 日志定义存储帐户

在 Azure 门户中,使用以下设置创建新的存储帐户:

区域 设置
基础知识 性能:标准
帐户类型:Blob 存储
复制:LRS
Network 连接方法:公共终结点(选定网络)
在虚拟网络中:无
路由首选项:Microsoft 网络路由
数据保护 将所有选项保留未选中状态
高级 保留所有默认值

步骤 2:定义虚拟网络和子网

创建以下 VNET 和包含的子网:

名称 建议大小
MD4IoT-VNET 使用 Bastion 时设置为 /26 或 /25
子网
- GatewaySubnet /27
- ProxyserverSubnet /27
- AzureBastionSubnet(可选) /26

步骤 3:定义虚拟或本地网络网关

为虚拟网关创建 VPN 或 ExpressRoute 网关,或者创建本地网关,具体取决于你要如何将本地网络连接到 Azure。

将网关附加到先前创建的 GatewaySubnet 子网。

有关详细信息,请参阅:

步骤 4:定义网络安全组

  1. 创建 NSG 并定义以下入站规则:

    • 创建规则 100,以允许来自传感器(源)的流量发往负载均衡器的专用 IP 地址(目标)。 使用端口 tcp3128

    • 创建规则 4095 作为 65001 系统规则的副本。 这是因为,规则 65001 将由规则 4096 覆盖。

    • 创建规则 4096,以拒绝微分段的所有流量。

    • 可选。 如果使用了 Bastion,请创建规则 4094 以允许 Bastion 通过 SSH 连接到服务器。 使用 Bastion 子网作为源。

  2. 将 NSG 分配到先前创建的 ProxyserverSubnet

  3. 定义 NSG 日志记录:

    1. 选择新的 NSG,然后选择“诊断设置”>“添加诊断设置”。

    2. 输入诊断设置的名称。 在“类别”下,选择“allLogs”。

    3. 选择“发送到 Log Analytics 工作区”,然后选择要使用的 Log Analytics 工作区。

    4. 选择发送“NSG 流日志”,然后定义以下值:

      在“基本信息”选项卡上:

      • 输入有意义的名称
      • 选择先前创建的存储帐户
      • 定义所需的保留天数

      在“配置”选项卡上:

      • 选择“版本 2”
      • 选择“启用流量分析”
      • 选择你的 Log Analytics 工作区

步骤 5:定义 Azure 虚拟机规模集

定义 Azure 虚拟机规模集用于创建和管理一个负载均衡的虚拟机组,你可以在其中根据需要自动增加或减少虚拟机的数量。

有关详细信息,请参阅什么是虚拟机规模集?

要创建规模集以用于传感器连接

  1. 使用以下参数定义创建规模集:

    • 业务流程模式:统一
    • 安全类型:标准
    • 映像:Ubuntu Server 18.04 LTS - Gen1
    • 大小:Standard_DS1_V2
    • 身份验证:基于你的企业标准

    为“磁盘”设置保留默认值。

  2. 先前创建的 Proxyserver 子网中创建网络接口,但暂时不要定义负载均衡器。

  3. 如下所述定义缩放设置:

    • 将初始实例计数定义为“1”
    • 将缩放策略定义为“手动”
  4. 定义以下管理设置:

    • 对于升级模式,请选择“自动 - 实例将开始升级”
    • 禁用启动诊断
    • 清除“标识”和“Microsoft Entra ID”的设置
    • 选择“超量预配”
    • 选择“已启用自动 OS 升级”
  5. 定义以下运行状况设置:

    • 选择“启用应用程序运行状况监视”
    • 选择“TCP”协议和端口“3128”
  6. 在高级设置下,将“传播算法”定义为“最大传播”。

  7. 对于自定义数据脚本,请执行以下操作:

    1. 根据使用的端口和服务创建以下配置脚本:

      # Recommended minimum configuration:
      # Squid listening port
      http_port 3128
      # Do not allow caching
      cache deny all
      # allowlist sites allowed
      acl allowed_http_sites dstdomain .azure-devices.net
      acl allowed_http_sites dstdomain .blob.core.windows.net
      acl allowed_http_sites dstdomain .servicebus.windows.net
      acl allowed_http_sites dstdomain .download.microsoft.com
      http_access allow allowed_http_sites
      # allowlisting
      acl SSL_ports port 443
      acl CONNECT method CONNECT
      # Deny CONNECT to other unsecure ports
      http_access deny CONNECT !SSL_ports
      # default network rules
      http_access allow localhost
      http_access deny all
      
    2. 对脚本文件的内容进行 base-64 编码。

    3. 复制编码文件的内容,然后创建以下配置脚本:

      #cloud-config
      # updates packages
      apt_upgrade: true
      # Install squid packages
      packages:
       - squid
      run cmd:
       - systemctl stop squid
       - mv /etc/squid/squid.conf /etc/squid/squid.conf.factory
      write_files:
      - encoding: b64
        content: <replace with base64 encoded text>
        path: /etc/squid/squid.conf
        permissions: '0644'
      run cmd:
       - systemctl start squid
       - apt-get -y upgrade; [ -e /var/run/reboot-required ] && reboot
      

步骤 6:创建 Azure 负载均衡器

Azure 负载均衡器是第 4 层负载均衡器,它使用基于哈希的分配算法在正常的虚拟机实例之间分配传入流量。

有关详细信息,请参阅 Azure 负载均衡器文档

要为传感器连接创建 Azure 负载均衡器

  1. 创建采用标准 SKU 和“内部”类型的负载均衡器,确保对 Internet 关闭负载均衡器。

  2. 先前创建的 proxysrv 子网中定义一个动态前端 IP 地址,并将可用性设置为区域冗余。

  3. 对于后端,请选择先前创建的虚拟机规模集。

  4. 在传感器中定义的端口上,创建连接前端 IP 地址和后端池的 TCP 负载均衡规则。 默认端口为 3128。

  5. 创建一个新的运行状况探测,并在端口 3128 上定义一个 TCP 运行状况探测。

  6. 定义负载均衡器日志记录:

    1. 在 Azure 门户中,转到创建的负载均衡器。

    2. 选择“诊断设置”>“添加诊断设置”。

    3. 输入有意义的名称,并将类别定义为“allMetrics”。

    4. 选择“发送到 Log Analytics 工作区”,然后选择你的 Log Analytics 工作区。

步骤 7:配置 NAT 网关

若要为传感器连接配置 NAT 网关,请执行以下操作:

  1. 创建新的 NAT 网关。

  2. 在“出站 IP”选项卡中,选择“创建新的公共 IP 地址”。

  3. 在“子网”选项卡中,选择先前创建的 ProxyserverSubnet 子网。

现在已完全配置了代理。 继续在 OT 传感器上 定义代理设置

通过代理链进行连接

在以下情况下,可以使用代理链接将传感器连接到 Azure 中的 Defender for IoT:

  • 传感器需要通过代理从 OT 网络访问云
  • 你希望通过单个接入点将多个传感器连接到 Azure

如果已配置代理,请直接继续在传感器控制台上定义代理设置

如果尚未配置代理,请使用本部分中的过程配置代理链接。

有关详细信息,请参阅使用代理链进行代理连接

必备知识

在开始之前,请确保站点网络中有一个运行代理进程的主机服务器。 传感器和链中的下一个代理都必须可以访问该代理进程。

我们已使用开源的 Squid 代理验证了此过程。 此代理使用 HTTP 隧道和 HTTP CONNECT 命令进行连接。 支持 CONNECT 命令的任何其他代理链连接都可用于此连接方法。

重要

Microsoft Defender for IoT 不会对 Squid 或任何其他代理服务提供支持。 由客户负责代理服务的设置和维护。

配置代理链接连接

此过程说明如何在 Ubuntu 服务器上安装最新版本的 Squid 并使用它来配置传感器与 Defender for IoT 之间的连接。

  1. 在每个传感器上定义代理设置:

    1. 登录到 OT 传感器,然后选择“系统设置 >”“传感器网络设置”。

    2. 将“启用代理”选项切换为打开状态,并定义代理主机、端口、用户名和密码。

  2. 安装 Squid 代理:

    1. 登录到代理 Ubuntu 计算机并启动一个终端窗口。

    2. 更新系统并安装 Squid。 例如:

      sudo apt-get update
      sudo apt-get install squid
      
    3. 找到 Squid 配置文件。 例如,该文件位于 /etc/squid/squid.conf/etc/squid/conf.d/;然后在文本编辑器中打开该文件。

    4. 在 Squid 配置文件中搜索以下文本:# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS

    5. acl <sensor-name> src <sensor-ip>http_access allow <sensor-name> 添加到文件中。 例如:

      # INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
      acl sensor1 src 10.100.100.1
      http_access allow sensor1
      

      根据需要添加更多的传感器,只需为传感器添加额外的行即可。

    6. 将 Squid 服务配置为在系统启动时启动。 运行:

      sudo systemctl enable squid
      
  3. 将代理连接到 Defender for IoT。 请确保允许端口 443 上的出站 HTTPS 流量从传感器流向 Defender for IoT 的每个所需终结点。

    有关详细信息,请参阅 预配 OT 传感器以进行云管理

现在已完全配置了代理。 继续在 OT 传感器上 定义代理设置

为多云环境设置连接

本部分介绍如何通过一个或多个公有云中部署的传感器,将你的传感器连接到 Azure 中的 Defender for IoT。 有关详细信息,请参阅多云连接

必备条件

开始前,请确保已在公有云(例如 AWS 或 Google Cloud)中部署传感器,并已配置为监视 SPAN 流量

选择多云连接方法

使用以下流程图确定要使用哪种连接方法:

Flow chart to determine which connectivity method to use.

  • 如果你不需要使用专用 IP 地址交换数据,请使用公共 IP 地址通过 Internet 进行连接

  • 仅当你不必要实现以下任一目的时,才使用站点到站点 VPN 通过 Internet 进行连接:

    • 可预测的吞吐量
    • SLA
    • 高数据量传输
    • 避免通过公共 Internet 进行连接
  • 如果你需要可预测的吞吐量、满足 SLA 要求、高数据量传输或避免通过公共 Internet 进行连接,请使用 ExpressRoute。

    在这种情况下:

    • 如果你想要拥有和管理用于建立连接的路由器,请将 ExpressRoute 与客户管理的路由结合使用。
    • 如果你不需要拥有和管理用于建立连接的路由器,请将 ExpressRoute 与云交换提供商的服务结合使用。

配置

  1. 使用 Azure 云采用框架建议的方法之一将传感器配置为连接到云。 有关详细信息,请参阅连接到其他云提供商

  2. 若要在 VPC 与 Defender for IoT 之间启用专用连接,请通过 VPN 连接将 VPC 连接到 Azure VNET。 例如,如果要从 AWS VPC 进行连接,请参阅我们的技术社区博客文章:How to create a VPN between Azure and AWS using only managed solutions(如何仅使用托管的解决方案在 Azure 与 AWS 之间创建 VPN)。

  3. 配置 VPC 和 VNET 后,在 OT 传感器上定义代理设置

后续步骤

建议配置 Active Directory 连接,从而在 OT 传感器上管理本地用户,并通过 SNMP 设置传感器运行状况监视。

如果未在部署期间配置这些设置,还可以在之后返回并配置它们。 有关详细信息,请参阅: