凌峰创科服务平台

windows 配置日志服务器

这个过程主要通过 Windows 内置的 事件转发 功能来实现,该功能基于 Windows 远程管理技术,是微软官方推荐的、现代且高效的日志收集方案。

windows 配置日志服务器-图1
(图片来源网络,侵删)

下面我将为你提供一个详细的、分步的指南,从概念到实践,帮助你完成配置。


核心概念:事件转发

在开始配置前,理解以下三个核心角色非常重要:

  1. 源计算机:需要将其事件日志发送到日志服务器的计算机,可以是任何 Windows 客户端或服务器(Windows 7/8/10, Windows Server 2008 R2 及更高版本)。
  2. 收集器服务器:作为日志服务器,接收并存储来自源计算机的事件日志,通常是 Windows Server 版本(如 Windows Server 2025/2025/2025),因为它功能更强大、更稳定。
  3. 订阅:这是连接源计算机和收集器服务器的“规则”或“契约”,它定义了:
    • 从哪些源计算机收集日志。
    • 收集哪些事件日志(如应用程序、安全、系统)。
    • 收集哪些特定的事件(所有登录失败事件)。
    • 如何传输日志(实时传输或每天定时传输)。

配置步骤

我们将配置一个最常见和实用的场景:将一台 Windows Server 配置为收集器服务器,并收集一台或多台客户端计算机的“安全”日志

第一步:在收集器服务器上配置

启用所需服务

确保收集器服务器上启用了以下 Windows 服务,它们是事件转发的基础。

windows 配置日志服务器-图2
(图片来源网络,侵删)
  • Windows 远程管理:这是用于远程通信的核心服务。
    • 打开“服务器管理器” -> “管理” -> “添加角色和功能”。
    • 在“功能”列表中,找到并勾选 “Windows 远程管理 (WinRM)”
    • 点击“安装”。
  • 事件日志服务:此服务默认已启动,但需要确保其运行正常。

配置 WinRM 侦听器

为了让源计算机能够连接到收集器服务器,需要配置 WinRM 使用 HTTPS(推荐,更安全)或 HTTP。

推荐使用 HTTPS(安全方式):

  1. 在收集器服务器上,以管理员身份打开 PowerShell。

  2. 为 WinRM 创建一个自签名 SSL 证书。

    windows 配置日志服务器-图3
    (图片来源网络,侵删)
    New-SelfSignedCertificate -DnsName "LogCollectorServer.yourdomain.com" -CertStoreLocation "Cert:\LocalMachine\My"

    注意DnsName 应替换为你的收集器服务器的实际主机名或完全限定域名,在生产环境中,应使用由受信任的 CA 签名的证书。

  3. 获取上一步创建的证书的指纹。

    $thumbprint = (Get-ChildItem -Path Cert:\LocalMachine\My | Where-Object { $_.Subject -like "*LogCollectorServer*" }).Thumbprint
    $thumbprint
  4. 使用该指纹创建 HTTPS 侦听器。

    winrm create winrm/config/Listener?Address=*+Transport=HTTPS '@{CertificateThumbprint="$thumbprint"}'

简单使用 HTTP(不推荐用于生产环境):

如果你在内部网络中,为了方便,可以先配置 HTTP。请确保在生产环境中务必改回 HTTPS。

winrm quickconfig

这个命令会自动配置一个 HTTP 侦听器。

创建事件订阅

这是最关键的一步,我们使用 Windows PowerShell 来创建订阅。

  1. 以管理员身份打开 PowerShell(在收集器服务器上)。
  2. 创建一个 XML 文件来定义订阅的详细内容,我们可以使用 Create-ScheduledJob cmdlet 来简化这个过程,它会自动处理订阅的创建和凭证安全。
# 定义订阅名称
$subscriptionName = "SecurityLogsCollector"
# 定义要收集的源计算机列表(可以是单个或多个)
$sourceComputers = @("ClientPC01", "ClientPC02", "192.168.1.100")
# 定义要收集的日志和查询
# 这里的查询表示收集所有安全日志中 ID 为 4625(登录失败)的事件
$Query = "<QueryList><Query><Select Path='Security'>*[System[(EventID=4625)]]</Select></Query></QueryList>"
# 创建订阅
Register-WinEvtEventSubscription -SubscriptionId $subscriptionName -Locale en-US -ContentFormat XML -EventSources $sourceComputers -Query $Query -DeliveryMode Push -Force

命令解释:

  • -SubscriptionId:订阅的唯一名称。
  • -Locale en-US:指定区域设置,影响事件消息的语言。
  • -ContentFormat XML:日志以 XML 格式传输,保留最完整的信息。
  • -EventSources:源计算机的数组。
  • -Query:XPath 查询,用于精确筛选事件,你可以修改 EventID 来收集其他事件,4624(登录成功)、4688(进程创建)等。
  • -DeliveryMode Push:实时推送日志,也可以使用 Scheduled 来定时拉取。

第二步:在源计算机上配置

源计算机需要信任收集器服务器,并允许 WinRM 连接。

启用 WinRM 服务

在每台源计算机上,以管理员身份运行 PowerShell,执行以下命令:

winrm quickconfig

这会自动启用 WinRM 服务并配置一个 HTTP 侦听器。

设置防火墙规则

确保源计算机的防火墙允许来自收集器服务器的 WinRM 流量。

  • 自动设置(推荐)winrm quickconfig 命令通常会自动配置好防火墙规则。
  • 手动设置:如果未自动配置,可以运行:
    Enable-NetFirewallRule -Name "WINRM-HTTP-In-TCP"

    如果你使用的是 HTTPS,则需要确保端口 5986(HTTPS WinRM)是开放的。

信任收集器服务器(可选但推荐)

为了增强安全性,可以配置源计算机只信任特定的收集器服务器。

  1. 在源计算机上,以管理员身份打开 PowerShell。
  2. 运行以下命令,将收集器服务器的计算机名添加到受信任的主机列表中。
    Set-Item WSMan:\localhost\Client\TrustedHosts -Value "LogCollectorServer.yourdomain.com" -Force

    注意TrustedHosts 是一个安全设置,使用 表示信任所有主机(非常不安全),仅适用于测试环境,在生产环境中,应明确指定收集器服务器的地址。


第三步:验证和查看日志

验证订阅状态

收集器服务器上,运行以下命令检查订阅是否已成功创建并正在运行:

Get-WinEventEventSubscription

你应该能看到之前创建的 SecurityLogsCollector 订阅,Status 应为 Active

查看收集到的日志

成功配置后,源计算机上的指定事件会开始出现在收集器服务器上。

  1. 打开 “事件查看器”(Event Viewer)。
  2. 在左侧窗格中,导航到 “应用程序和服务日志” -> “Microsoft” -> “Windows” -> “Eventlog-ForwardingPlugin”
  3. 你会看到按源计算机名称分组的文件夹,里面包含了从源计算机转发过来的事件。

你也可以直接在“Windows 日志” -> “安全”中查看,但转发过来的事件通常会有一个来源标识,或者你也可以直接在“Eventlog-ForwardingPlugin”中查找,这样更清晰。


进阶配置与管理

  • 管理订阅

    • 删除订阅Unregister-WinEvtEventSubscription -SubscriptionId "YourSubscriptionName"
    • 修改订阅:需要先删除,再重新创建。
  • 使用组策略部署: 对于企业环境,最佳实践是使用 组策略 来大规模部署事件订阅,这比手动在每台机器上配置要高效得多。

    • 在组策略管理器中,创建一个新的 GPO。
    • 计算机配置 -> 管理模板 -> Windows 组件 -> 事件转发。
    • 你可以配置新的订阅、指定源计算机列表、设置查询等,这种方式更集中、更可控。
  • 日志轮转和清理: 收集器服务器上的日志会不断增长,你需要设置日志的保留策略。

    1. 在“事件查看器”中,右键点击“Windows 日志” -> “安全” -> “属性”。
    2. 在“常规”选项卡下,可以设置“当日志达到大小时”的行为(如覆盖旧事件)。
    3. 也可以使用 wevtutil 命令行工具进行更高级的配置。

常见问题排查

  1. 连接被拒绝

    • 检查源计算机和收集器服务器的防火墙设置。
    • 确认 WinRM 服务在两端都已启动(win qc 查看)。
    • 检查 TrustedHosts 设置是否正确。
  2. 没有收到日志

    • 使用 Get-WinEventEventSubscription 确认订阅状态为 Active
    • 在源计算机上手动触发一个符合查询条件的事件(尝试用错误的密码登录),看是否能立即在收集器服务器上看到。
    • 检查源计算机的事件日志中是否有与 WinRM 相关的错误事件。
  3. 权限问题

    • 默认情况下,只有管理员可以创建和管理订阅,确保你使用的账户有足够权限。
    • 确保用于传输的账户(通常是创建订阅时使用的账户)在源计算机上有“读取事件日志”的权限。

通过以上步骤,你就可以成功地在 Windows 环境中搭建一个功能完善的事件日志服务器,实现集中化日志管理,极大地提升安全运维和故障排查的效率。

分享:
扫描分享到社交APP
上一篇
下一篇