设置源发起的订阅

通过源发起的订阅,可以在事件收集器计算机上定义订阅,而无需定义事件源计算机,然后可以设置多个远程事件源计算机(使用组策略设置)将事件转发到事件收集器计算机。 这与收集器发起的订阅不同,因为在收集器发起的订阅模型中,事件收集器必须定义事件订阅中的所有事件源。

设置源发起的订阅时,请考虑事件源计算机是否与事件收集器计算机位于同一域中。 以下部分介绍当事件源与事件收集器计算机位于同一域或不在同一域时要遵循的步骤。

注意

域中的任何计算机(无论是本地还是远程)都可以作为事件收集器。 但是,在选择事件收集器时,必须选择一台拓扑结构接近大多数事件生成位置的计算机。 将事件发送到 WAN 上远程网络位置的计算机会降低事件收集的整体性能和效率。

设置源发起的订阅,其中事件源与事件收集器计算机位于同一域中

事件源计算机和事件收集器计算机都必须配置为设置源发起的订阅。

注意

这些说明假定你对服务于域的 Windows Server 域控制器具有管理员访问权限,远程计算机将在该域中配置为收集事件。

配置事件源计算机

  1. 从 Windows Server 域控制器上的提升权限命令提示符运行以下命令,以配置 Windows 远程管理:

    winrm qc -q

  2. 通过运行以下命令启动组策略:

    %SYSTEMROOT%\System32\gpedit.msc

  3. 计算机配置节点下,展开管理模板节点,然后展开 Windows 组件节点,然后选择事件转发节点。

  4. 右键单击 SubscriptionManager 设置,然后选择属性。 启用 SubscriptionManager 设置,然后单击显示按钮,将服务器地址添加到该设置。 至少添加一个指定事件收集器计算机的设置。 SubscriptionManager 属性窗口包含一个解释选项卡,用于描述设置的语法。

  5. 添加 SubscriptionManager 设置后,运行以下命令以确保应用策略:

    gpupdate /force

配置事件收集器计算机

  1. 从 Windows Server 域控制器上的提升权限命令提示符运行以下命令,以配置 Windows 远程管理:

    winrm qc -q

  2. 运行以下命令以配置事件收集器服务:

    wecutil qc /q

  3. 创建源发起的订阅。 这可以通过编程方式、使用事件查看器或使用 Wecutil.exe 来完成。 有关如何以编程方式创建订阅的详细信息,请参阅创建源发起的订阅中的代码示例。 如果使用 Wecutil.exe,则必须创建事件订阅 XML 文件并使用以下命令:

    wecutil cs configurationFile.xml

    以下 XML 是订阅配置文件的内容示例,该文件创建源发起的订阅,以将事件从远程计算机的应用程序事件日志转发到事件收集器计算机上的 ForwardedEvents 日志。

    <Subscription xmlns="http://schemas.microsoft.com/2006/03/windows/events/subscription">
        <SubscriptionId>SampleSISubscription</SubscriptionId>
        <SubscriptionType>SourceInitiated</SubscriptionType>
        <Description>Source Initiated Subscription Sample</Description>
        <Enabled>true</Enabled>
        <Uri>http://schemas.microsoft.com/wbem/wsman/1/windows/EventLog</Uri>
    
        <!-- Use Normal (default), Custom, MinLatency, MinBandwidth -->
        <ConfigurationMode>Custom</ConfigurationMode>
    
        <Delivery Mode="Push">
            <Batching>
                <MaxItems>1</MaxItems>
                <MaxLatencyTime>1000</MaxLatencyTime>
            </Batching>
            <PushSettings>
                <Heartbeat Interval="60000"/>
            </PushSettings>
        </Delivery>
    
        <Expires>2018-01-01T00:00:00.000Z</Expires>
    
        <Query>
            <![CDATA[
                <QueryList>
                    <Query Path="Application">
                        <Select>Event[System/EventID='999']</Select>
                    </Query>
                </QueryList>
            ]]>
        </Query>
    
        <ReadExistingEvents>true</ReadExistingEvents>
        <TransportName>http</TransportName>
        <ContentFormat>RenderedText</ContentFormat>
        <Locale Language="en-US"/>
        <LogFile>ForwardedEvents</LogFile>
        <AllowedSourceNonDomainComputers></AllowedSourceNonDomainComputers>
        <AllowedSourceDomainComputers>O:NSG:NSD:(A;;GA;;;DC)(A;;GA;;;NS)</AllowedSourceDomainComputers>
    </Subscription>
    

    注意

    创建源发起的订阅时,如果 AllowedSourceDomainComputers、AllowedSourceNonDomainComputers/IssuerCAList、AllowedSubjectList 和 DeniedSubjectList 均为空,则 "O:NSG:NSD:(A;;GA;;;DC)(A;;GA;;;NS)" 将用作 AllowedSourceDomainComputers 的默认安全描述符。 默认描述符授予域计算机域组的成员以及本地网络服务组(用于本地转发器)为此订阅引发事件的能力。

验证订阅是否正常工作

  1. 在事件收集器计算机上,完成以下步骤:

    1. 从 Windows Server 域控制器上提升的权限命令提示符运行以下命令,以获取订阅的运行时状态:

      wecutil gr <subscriptionID>

    2. 验证事件源是否已连接。 在为要连接的事件源创建订阅后,可能需要等待策略中指定的刷新间隔结束。

    3. 运行以下命令以获取订阅信息:

      wecutil gs <subscriptionID>

    4. 从订阅信息获取 DeliveryMaxItems 值。

  2. 在事件源计算机上,从事件订阅中引发与查询匹配的事件。 要转发事件,必须触发事件的 DeliveryMaxItems 数。

  3. 在事件收集器计算机上,验证事件是否已转发到 ForwardedEvents 日志或订阅中指定的日志。

转发安全日志

为了能够转发安全日志,需要将 NETWORK SERVICE 帐户添加到 EventLog Readers 组。

设置源发起的订阅,其中事件源与事件收集器计算机不位于同一域中

注意

这些说明假定你具有 Windows Server 域控制器的管理员访问权限。 在这种情况下,由于远程事件收集器计算机或计算机不在域控制器提供服务的域中,因此必须使用 Services (services.msc) 将 Windows 远程管理设置为“自动”来启动单个客户端。 或者,可以在每个远程客户端上运行"winrm quickconfig"。

在创建订阅之前,必须满足以下先决条件。

  1. 在事件收集器计算机上,从提升权限命令提示符运行以下命令,以配置 Windows 远程管理和事件收集器服务:

    winrm qc -q

    wecutil qc /q

  2. 收集器计算机应在本地计算机证书存储中具有服务器身份验证证书(用于服务器身份验证的证书)。

  3. 在事件源计算机上,运行以下命令以配置 Windows 远程管理:

    winrm qc -q

  4. 源计算机应在本地计算机证书存储中具有客户端身份验证证书(用于客户端身份验证的证书)。

  5. 在事件收集器计算机上打开 5986 端口。 若要打开此端口,请运行以下命令:

    netsh firewall add portopening TCP 5986 "Windows HTTPS 远程管理"

证书要求

  • 必须在本地计算机的个人存储中的事件收集器计算机上安装服务器身份验证证书。 此证书的使用者必须与收集器的 FQDN 匹配。

  • 必须在本地计算机的个人存储中的事件源计算机上安装客户端身份验证证书。 此证书的使用者必须与计算机的 FQDN 匹配。

  • 如果客户端证书是由与事件收集器之一不同的证书颁发机构颁发的,则还需要在事件收集器上安装这些根证书和中间证书。

  • 如果客户端证书是由中间证书颁发机构颁发的,并且收集器运行的是 Windows 2012 或更高版本,则必须配置以下注册表项:

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\Schannel\ClientAuthTrustMode (DWORD) = 2

  • 验证服务器和客户端是否能够成功检查所有证书的吊销状态。 使用 certutil 命令有助于排查任何错误。

在此文中可以找到详细信息:https://technet.microsoft.com/library/dn786429(v=ws.11).aspx

在事件收集器上设置侦听器

  1. 使用以下命令设置证书身份验证:

    winrm set winrm/config/service/auth @{Certificate="true"}

  2. 事件收集器计算机上应存在具有服务器身份验证证书指纹的 WinRM HTTPS 侦听器。 这可以通过执行以下命令来验证:

    winrm e winrm/config/listener

  3. 如果未看到 HTTPS 侦听器,或者如果 HTTPS 侦听器的指纹与收集器计算机上的服务器身份验证证书的指纹不同,则可以删除该侦听器并创建具有正确指纹的新侦听器。 若要删除 https 侦听器,请使用以下命令:

    winrm delete winrm/config/Listener?Address=*+Transport=HTTPS

    若要创建新的侦听器,请使用以下命令:

    winrm create winrm/config/Listener?Address=*+Transport=HTTPS @{Hostname="<FQDN of the collector>";CertificateThumbprint="<Thumb print of the server authentication certificate>"}

在事件收集器上配置证书映射

  1. 创建新的本地用户。

  2. 将此新用户设为收集器的本地管理员。

  3. 使用计算机“受信任的根证书颁发机构”或“中间证书颁发机构”中存在的证书创建证书映射。

    注意

    这是颁发在事件源计算机上安装的证书的根或中间证书颁发机构 (CA) 的证书(证书链中证书正上方的 CA):

    winrm create winrm/config/service/certmapping?Issuer=<Thumbprint of the issuing CA certificate>+Subject=*+URI=* @{UserName="<username>";Password="<password>"} -remote:localhost

  4. 从客户端,使用以下命令测试侦听器和证书映射:

    winrm g winrm/config -r:https://<Event Collector FQDN>:5986 -a:certificate -certificate:"<Thumbprint of the client authentication certificate>"

    这会返回事件收集器的 WinRM 配置。 如果配置未显示,请不要跳过此步骤。

    此步骤会发生什么情况?

    • 客户端连接到事件收集器并发送指定的证书。
    • 事件收集器查找颁发 CA,并检查是否是匹配的证书映射。
    • 事件收集器验证客户端证书链和吊销状态。
    • 如果这些步骤成功,则身份验证完成。

注意

你可能会收到一个关于身份验证方法的拒绝访问错误,这可能会产生误导。 若要排除故障,请查看事件收集器上的 CAPI 日志。

  1. 使用以下命令列出配置的证书映射条目:winrm enum winrm/config/service/certmapping

注意

步骤 1 中创建的本地用户不会用于模拟 EventLog 转发方案中通过证书认证连接的用户,后续可以删除。 如果计划在其他方案中(如远程 Powershell)中使用证书身份验证,请不要删除本地用户。

事件源计算机配置

  1. 使用管理员帐户登录并打开本地组策略编辑器 (gpedit.msc)

  2. 导航到本地计算机策略\计算机配置\管理模板\Windows 组件\事件转发。

  3. 打开“配置目标订阅管理器的服务器地址、刷新间隔和颁发者证书颁发机构”策略。

  4. 启用策略,然后单击 SubscriptionManagers“显示…”按钮。

  5. 在 SubscriptionManagers 窗口中输入以下字符串:

    Server=HTTPS://<FQDN of the Event Collector server>:5986/wsman/SubscriptionManager/WEC,Refresh=<Refresh interval in seconds>,IssuerCA=<Thumbprint of the issuing CA certificate>

  6. 运行以下命令行以刷新本地组策略设置:Gpupdate /force

  7. 这些步骤将在源计算机事件查看器应用程序和 Services Logs\Microsoft\Windows\Eventlog-ForwardingPlugin\Operational log 中生成事件 104,并显示以下消息:

    “转发器已成功连接到地址 <FQDN> 的订阅管理器,后跟事件 100,并显示消息:”已成功创建订阅 <sub_name>。"

  8. 在事件收集器上,订阅运行时状态现在会显示 1 台活动计算机。

  9. 打开事件收集器上的 ForwardedEvents 日志,并检查是否已从源计算机转发事件。

授予对事件源上客户端证书私钥的权限

  1. 在事件源计算机上打开本地计算机的证书管理控制台。
  2. 右键单击客户端证书,然后单击“管理私钥”。
  3. 向 NETWORK SERVICE 用户授予读取权限。

事件订阅配置

  1. 在事件收集器中打开事件查看器,然后导航到“订阅”节点。
  2. 右键单击“订阅”,然后选择“创建订阅...”
  3. 为新订阅指定名称和可选说明。
  4. 选择“源计算机发起的”选项,然后单击“选择计算机组...”。
  5. 在计算机组中,单击“添加非域计算机...” 并键入事件源主机名。
  6. 单击“添加证书…” 并添加颁发客户端证书的证书颁发机构的证书。 可以在“查看证书”中单击以验证证书。
  7. 在证书颁发机构中,单击“确定”以添加证书。
  8. 添加完计算机后,单击“确定”。
  9. 返回到订阅属性,单击“选择事件...”
  10. 通过指定事件级别、事件日志或事件源、事件 ID 和任何其他筛选选项来配置事件查询筛选器。
  11. 返回到订阅属性,单击“高级...”
  12. 从源事件到事件收集器的事件传递中选择一个优化选项,或保留默认的“正常”:
    1. 最小化带宽:事件将以更少的频率传递以节省带宽。
    2. 最小化延迟:事件将在发生后立即交付,以减少事件延迟。
  13. 将协议更改为 HTTPS,然后单击“确定”。
  14. 单击“确定”以创建新订阅。
  15. 通过右键单击并选择“运行时状态”,检查订阅的运行时状态