管理 Azure Stack HCI 的 syslog 转发

适用于:Azure Stack HCI 版本 23H2

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

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

配置 syslog 转发

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

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

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

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

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

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

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

    重要

    为了防止中间人攻击和窃听消息,Microsoft 强烈建议在生产环境中将 TCP 与身份验证和加密配合使用。

用于配置 Syslog 转发的 cmdlet

配置 syslog 转发器需要使用域管理员帐户访问物理主机。 已向所有 Azure Stack HCI 主机添加了一组 PowerShell cmdlet,用于控制 syslog 转发器的行为。

cmdlet Set-AzSSyslogForwarder 用于为所有主机设置 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 服务器通信的客户端证书的指纹。 String
OutputSeverity 输出日志记录的级别。 值为 Default 或 Verbose。 Default 包括严重性级别“警告”、“严重”或“错误”。 Verbose 包括所有严重性级别:“详细”、“信息”、“警告”、“严重”或“错误”。 String
删除 删除当前 syslog 转发器配置并停止 syslog 转发器。 标志

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

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

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

重要

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

若要使用 TCP、相互身份验证和 TLS 1.2 加密配置 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 1.2 加密的 Syslog 转发

在此配置中,Azure Stack HCI 中的 syslog 转发器使用 TLS 1.2 加密通过 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 Stack HCI 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 Stack HCI 中的 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 Stack HCI 中的 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] 

Enable-AzSSyslogForwarderDisable-AzSSyslogForwarder cmdlet 的参数:

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

验证 syslog 设置

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

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

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

Get-AzSSyslogForwarder -PerNode 

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

Get-AzSSyslogForwarder -Local

cmdlet 的 Get-AzSSyslogForwarder Cmdlet 参数:

参数 说明 类型 必需
Local 显示当前主机上当前使用的配置。 标志
PerNode 显示每个主机上当前使用的配置。 标志
群集 显示 Azure Stack HCI 上的当前全局配置。 如果未提供参数,则这是默认行为。 标志

删除 syslog 转发

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

Set-AzSSyslogForwarder -Remove 

消息架构和事件日志参考

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

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

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

PRI 部分包含两个值: facilityseverity。 两者都取决于消息的类型,如 Windows 事件等。

后续步骤

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