设置源启动的订阅

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

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

注意

域中的任何计算机(本地或远程)都可以是事件收集器。 但是,在选择事件收集器时,请务必选择一台在拓扑上接近生成大部分事件的计算机。 将事件发送到 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 csconfigurationFile.xml

    以下 XML 是订阅配置文件的内容示例,该文件创建源启动的订阅,以将事件从远程计算机的 Application 事件日志转发到事件收集器计算机上的 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 日志或订阅中指定的日志。

转发安全日志

若要转发安全日志,需要将网络服务帐户添加到 EventLog 读取器组。

设置源启动的订阅,其中事件源与事件收集器计算机不在同一域中

注意

这些说明假定你对 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 防火墙添加端口打开 TCP 5986“Winrm 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 删除 winrm/config/Listener?Address=*+Transport=HTTPS

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

    winrm 创建 winrm/config/Listener?Address=*+Transport=HTTPS @{Hostname=“<收集器的> FQDN”;CertificateThumbprint=“<服务器身份验证证书>的指纹”}

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

  1. 创建新的本地用户。

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

    这是颁发在事件源计算机上安装的证书的根或中间 CA 的证书 (,以避免混淆,这是证书链中证书的正上方的 CA)

    winrm 创建 winrm/config/service/certmapping?Issuer=<发证 CA 证书>的指纹+Subject=*+URI=* @{UserName=“<username>”;Password=“<password>”} -remote:localhost

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

    winrm g winrm/config -r:https://<事件收集器 FQDN>:5986 -a:certificate -certificate:”<客户端身份验证证书>的指纹"

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

    此步骤会发生什么情况?

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

注意

你可能会收到“拒绝访问”错误,并抱怨身份验证方法,这可能会造成误导。 若要进行故障排除,检查事件收集器上的 CAPI 日志。

  1. 使用命令列出配置的 certmapping 条目: winrm enum winrm/config/service/certmapping

事件源计算机配置

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

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

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

  4. 启用策略并单击 SubscriptionManagers“显示...”按钮。

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

    Server=HTTPS://<事件收集器服务器的> FQDN:5986/wsman/SubscriptionManager/WEC,Refresh=<刷新间隔(秒)>,IssuerCA=<颁发 CA 证书的指纹>

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

  7. 这些步骤应在源计算机事件查看器应用程序和服务日志\Microsoft\Windows\Eventlog-ForwardingPlugin\Operational 日志中生成事件 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. 选择一个优化选项,以便将事件从源事件传递到事件收集器,或保留默认的 Normal:
    1. 最小化带宽:传递事件的频率会降低,以节省带宽。
    2. 最大程度地减少延迟:事件发生后将立即传递,以减少事件延迟。
  13. 将协议更改为 HTTPS,然后单击“确定”。
  14. 单击“确定”创建新订阅。
  15. 通过右键单击并选择“运行时状态”来检查订阅的运行时状态