管理 Azure 本地的 syslog 转发

适用于:Azure 本地版本 23H2

本文介绍如何使用 Azure 本地版本 23H2 的 syslog 协议将安全事件转发到客户管理的安全信息和事件管理(SIEM)系统。

使用 syslog 转发与安全监视解决方案集成,并检索相关的安全事件日志,以将其存储在自己的 SIEM 平台上。 有关此版本中的安全功能的详细信息,请参阅 Azure 本地版本 23H2 的安全功能。

配置 syslog 转发

默认情况下,Syslog 转发代理部署在每个 Azure 本地主机上,可供配置。 每个代理都将以 syslog 格式将安全事件从主机转发到客户配置的 syslog 服务器。

Syslog 转发代理彼此独立工作,但可在任一主机上一起管理。 在任何主机上使用具有管理权限的 PowerShell cmdlet 来控制所有转发器代理的行为。

Azure Local 中的 syslog 转发器支持以下配置:

  • Syslog 使用 TCP 转发、相互身份验证(客户端和服务器)和 TLS 加密: 在此配置中,syslog 服务器和 syslog 客户端都通过证书验证彼此的身份。 消息通过 TLS 加密通道发送。 有关详细信息,请参阅 Syslog 使用 TCP 转发、相互身份验证(客户端和服务器)和 TLS 加密

  • 使用 TCP、服务器身份验证和 TLS 加密转发 Syslog: 在此配置中,syslog 客户端通过证书验证 syslog 服务器的标识。 消息通过 TLS 加密通道发送。 有关详细信息,请参阅 使用 TCP、服务器身份验证和 TLS 加密的 Syslog 转发。

  • 使用 TCP 进行 Syslog 转发,不加密: 在此配置中,不会验证 syslog 客户端和 syslog 服务器标识。 消息通过 TCP 以明文形式发送。 有关详细信息,请参阅 Syslog 使用 TCP 转发,而无需加密

  • 具有 UDP 且无加密的 Syslog: 在此配置中,不会验证 syslog 客户端和 syslog 服务器标识。 消息通过 UDP 以明文形式发送。 有关详细信息,请参阅 Syslog 使用 UDP 转发,而无需加密

    重要

    为了防止中间人攻击和窃听消息,Microsoft强烈建议在生产环境中将 TCP 与身份验证和加密配合使用。 TLS 加密版本取决于终结点之间的握手。 默认情况下支持 TLS 1.2 和 TLS 1.3。

用于配置 Syslog 转发的 cmdlet

配置 syslog 转发器需要使用域管理员帐户访问物理主机。 已将一组 PowerShell cmdlet 添加到所有 Azure 本地主机,以控制 syslog 转发器的行为。

Set-AzSSyslogForwarder cmdlet 用于为所有主机设置 syslog 转发器配置。 如果成功,将启动一个行动计划实例,以跨所有主机配置 syslog 转发器代理。 将返回操作计划实例 ID。

使用以下 cmdlet 将 syslog 服务器信息传递给转发器,并配置传输协议、加密、身份验证以及客户端和服务器之间使用的可选证书:

Set-AzSSyslogForwarder [-ServerName <String>] [-ServerPort <UInt16>] [-NoEncryption] [-SkipServerCertificateCheck | -SkipServerCNCheck] [-UseUDP] [-ClientCertificateThumbprint <String>] [-OutputSeverity {Default | Verbose}] [-Remove] 

cmdlet 参数

下表提供 cmdlet 的参数 Set-AzSSyslogForwarder

参数 说明 类型 必须
ServerName Syslog 服务器的 FQDN 或 IP 地址。 String
ServerPort syslog 服务器侦听的端口号。 UInt16
NoEncryption 强制客户端以明文形式发送 Syslog 消息。 标记
SkipServerCertificateCheck 在 TLS 初次握手期间跳过对 Syslog 服务器所提供证书的验证。 标记
SkipServerCNCheck 在 TLS 初次握手期间跳过对 Syslog 服务器所提供证书的“公用名称”值的验证。 标记
UseUDP 使用 Syslog 时将 UDP 用作传输协议。 标记
ClientCertificateThumbprint 用于与 syslog 服务器通信的客户端证书的指纹。 字符串
OutputSeverity 输出日志记录的级别。 值为 Default 或 Verbose。 Default 包括严重性级别“警告”、“严重”或“错误”。 Verbose 包括所有严重性级别:“详细”、“信息”、“警告”、“严重”或“错误”。 字符串
删除 删除当前的 syslog 转发器配置并停止 syslog 转发器。 标记

使用 TCP、相互身份验证(客户端和服务器)和 TLS 加密进行 Syslog 转发

在此配置中,Azure 本地中的 syslog 客户端使用 TLS 加密通过 TCP 将消息转发到 syslog 服务器。 在初次握手期间,客户端会验证服务器是否提供了有效且可信的证书。 客户端也将证书提供给服务器,作为其标识的证明。

此配置是最安全的,因为它提供对客户端和服务器的标识的完全验证,并通过加密通道发送消息。

重要

Microsoft建议将此配置用于生产环境。

若要使用 TCP、相互身份验证和 TLS 加密配置 syslog 转发器,请配置服务器并向客户端提供证书,以便针对服务器进行身份验证。

针对物理主机运行以下 cmdlet:

Set-AzSSyslogForwarder -ServerName <FQDN or IP address of syslog server> -ServerPort <Port number on which the syslog server is listening> -ClientCertificateThumbprint <Thumbprint of the client certificate>

重要

客户端证书必须包含私钥。 如果使用自签名根证书对客户端证书进行签名,则还必须导入根证书。

使用 TCP、服务器身份验证和 TLS 加密进行 Syslog 转发

在此配置中,Azure 本地中的 syslog 转发器使用 TLS 加密通过 TCP 将消息转发到 syslog 服务器。 在初次握手期间,客户端也会验证服务器是否提供了有效且可信的证书。

此配置可以防止客户端将消息发送至不受信任的目标。 使用身份验证和加密的 TCP 是默认配置,表示 Microsoft 为生产环境推荐的最低安全级别。

Set-AzSSyslogForwarder -ServerName <FQDN or IP address of syslog server> -ServerPort <Port number on which the syslog server is listening>

如果要使用自签名或不受信任的证书测试 syslog 服务器与 Azure Local syslog 转发器的集成,请使用这些标志跳过客户端在初始握手期间完成的服务器验证。

  1. 跳过服务器证书中公用名值的验证。 如果为 syslog 服务器提供 IP 地址,请使用此标志。

    Set-AzSSyslogForwarder -ServerName <FQDN or IP address of syslog server> -ServerPort <Port number on which the syslog server is listening> 
    -SkipServerCNCheck
    
  2. 跳过服务器证书验证。

    Set-AzSSyslogForwarder -ServerName <FQDN or IP address of syslog server> -ServerPort <Port number on which the syslog server is listening>  
    -SkipServerCertificateCheck
    

    重要

    Microsoft建议不要在 -SkipServerCertificateCheck 生产环境中使用该标志。

使用 TCP 进行 Syslog 转发,不加密

在此配置中,Azure 本地中的 syslog 客户端通过 TCP 将消息转发到 syslog 服务器,无需加密。 客户端不会验证服务器的标识,也不会向服务器提供自己的标识进行验证。

Set-AzSSyslogForwarder -ServerName <FQDN or IP address of syslog server> -ServerPort <Port number on which the syslog server is listening on> -NoEncryption

重要

Microsoft建议不要在生产环境中使用此配置。

使用 UDP 进行 Syslog 转发,不加密

在此配置中,Azure 本地中的 syslog 客户端通过 UDP 将消息转发到 syslog 服务器,无需加密。 客户端不会验证服务器的标识,也不会向服务器提供自己的标识进行验证。

Set-AzSSyslogForwarder -ServerName <FQDN or IP address of syslog server> -ServerPort <Port number on which the syslog server is listening> -UseUDP

虽然没有加密的 UDP 是最容易配置的,但它不提供任何保护,防止中间人攻击或窃听消息。

重要

Microsoft建议不要在生产环境中使用此配置。

启用 syslog 转发

运行以下 cmdlet 以启用 syslog 转发:

Enable-AzSSyslogForwarder [-Force]

将使用最后一次成功 Set-AzSSyslogForwarder 调用提供的存储配置启用 Syslog 转发器。 如果未使用 Set-AzSSyslogForwarder任何配置,则 cmdlet 将失败。

禁用 syslog 转发

运行以下 cmdlet 以禁用 syslog 转发:

Disable-AzSSyslogForwarder [-Force] 

cmdlet Enable-AzSSyslogForwarder 的参数 Disable-AzSSyslogForwarder

参数 说明 类型 必须
Force 如果指定,即使目标状态与当前状态相同,也会始终触发行动计划。 这有助于重置带外更改。 标记

验证 syslog 设置

成功将 syslog 客户端连接到 syslog 服务器后,将开始接收事件通知。 如果未看到通知,请运行以下 cmdlet 来验证群集 syslog 转发器配置:

Get-AzSSyslogForwarder [-Local | -PerNode | -Cluster] 

每个主机都有自己的 syslog 转发器代理,该代理使用群集配置的本地副本。 它们始终与群集配置相同。 可以使用以下 cmdlet 验证每个主机上的当前配置:

Get-AzSSyslogForwarder -PerNode 

还可以使用以下 cmdlet 验证连接到的主机上的配置:

Get-AzSSyslogForwarder -Local

cmdlet 的 Get-AzSSyslogForwarder Cmdlet 参数:

参数 说明 类型 必须
本地 显示当前主机上当前使用的配置。 标记
PerNode 显示每个主机上当前使用的配置。 标记
Cluster 显示 Azure 本地上的当前全局配置。 如果未提供任何参数,则这是默认行为。 标记

删除 syslog 转发

运行以下命令以删除 syslog 转发器配置并停止 syslog 转发器:

Set-AzSSyslogForwarder -Remove 

消息架构和事件日志参考

以下参考资料记录了 syslog 消息架构和事件定义。

Azure 本地基础结构的 syslog 转发器发送按照 RFC3164 中定义的 BSD syslog 协议设置格式的消息。 CEF 还用于设置 syslog 消息有效负载的格式。

每个 syslog 消息都基于此架构进行结构化:优先级 (PRI) |时间 |主机 |CEF 有效负载 |

PRI 部分包含两个值:设施和严重性。 两者都取决于消息类型,如 Windows 事件等。

后续步骤

了解有关以下方面的详细信息: