【推荐】ECS Windows 时间跳变的处理

  • A+
所属分类:Windows
高性能企业级服务器首台5折

注:注册表修改需要对Windows操作系统有一定了解,为了避免注册表误操作带来的操作系统问题或者可能的数据丢失,请您采用如下方式操作注册表前,务必对系统盘和数据盘创建快照以避免可能的数据丢失。

问题现象


Windows服务器运行一段时间后,时间发生跳变,出现变快或者变慢的情况,影响应用程序运行。从系统日志可以发现,每隔5分钟就会有系统更正时间的日志(事件ID 1), 日志截图如下:

可能原因


服务器发生时间跳变的原因有如下可能

  • 由于网络原因,服务器长时间没能和NTP server进行时间同步,导致有偏差。虚拟机在这种情况下容易出现偏差。偏差的积累会导致时间上有大的跳变。
  • 错误的配置了NTP服务器。
  • 服务器的系统时间被其他应用或者进程篡改。这个我们可以检查当前服务器上有没有配置计划任务,或者第三方应用有自动进行时间同步的功能。

最佳实践


为了帮助您快速解决问题,在采用如下排查方案前,您可以采用最佳实践来配置服务器。

  • 请参考知识点 ECS Windows默认NTP服务器设置说明 ,配置正确的时间服务器,并保证到时间服务器的UDP 123端口的连通性正常。
  • 请检查是否安装可疑的三方软件,以及是否有配置计划任务,这可能会影响篡改。请停用可疑的三方软件,删除可疑的计划任务。

排查方案


为了发现为何出现时间跳变,我们可以相应的开启Windows的审核与时间服务日志进行排查。

  • 开启审计帮助我们监控系统事件,是否有进程修改了系统时间。
  • 开启w32time调试日志,监控服务器与NTP服务器的同步活动。
  • 收集系统配置信息、系统日志,安全日志进行检查。

问题发生前的配置

请在问题发生前,启用如下配置来记录各类日志。

<1> 启动审核

在客户机上,运行gpedit.msc, 展开到:本地计算机->计算机配置->Windows设置->安全设置->本地策略->审核策略

启用如下审核

  • 审核特权使用: 成功
  • 审核系统事件: 成功
  • 审核进程跟踪: 成功

配置完成后,请运行gpupdate /force 生效。

<2> 配置安全日志

点击开始,运行eventvwr,右键单击”安全”,选择属性,调整安全日志的属性调整为自动存档,不要覆盖,同时增大日志最大大小为100MB。

<3> 启用w32time debug日志
以管理员身份启动CMD,运行命令

  1. 1
    <span class="pln">w32tm </span><span class="pun"><span class="hljs-string">/</span></span><span class="pln"><span class="hljs-string">debug</span> </span><span class="pun"><span class="hljs-string">/</span></span><span class="pln"><span class="hljs-string">enable</span> </span><span class="pun"><span class="hljs-string">/</span></span><span class="pln"><span class="hljs-string">file</span></span><span class="pun"><span class="hljs-function">:</span></span><span class="pln"><span class="hljs-function">C</span></span><span class="pun">:</span><span class="pln">\windows\temp\w</span><span class="lit">32time</span><span class="pun">.</span><span class="pln">log </span><span class="pun"><span class="hljs-string">/</span></span><span class="pln"><span class="hljs-string">size</span></span><span class="pun"><span class="hljs-function">:</span></span><span class="lit"><span class="hljs-function">10000000</span></span> <span class="pun"><span class="hljs-string">/</span></span><span class="pln"><span class="hljs-string">entries</span></span><span class="pun"><span class="hljs-function">:</span></span><span class="lit"><span class="hljs-function">0</span></span><span class="pun"><span class="hljs-function">-</span></span><span class="lit"><span class="hljs-function">300</span></span>

您也可以参考微软官方Blog文档说明:

https://blogs.msdn.microsoft.com/w32time/2008/02/28/configuring-the-time-service-enabling-the-debug-log/&nbsp;

配置完上述信息后,请等待问题再次发生。

问题发生后日志收集

<1> 请收集系统基本信息

  • 点击开始,运行msinfo32.exe,选择”文件”-> “保存”,保存成系统信息文件NFO格式。
  • 点击开始,运行eventvwr,选择事件查看器中系统日志和应用程序日志,右键“将所有事件另存为”保存保存成evtx格式

<2> 运行如下命令,导出注册表键值

  1. 1
    <span class="pln">    reg </span><span class="kwd">export</span> <span class="pun">“</span><span class="pln">HKLM<span class="hljs-symbol">\S</span>YSTEM<span class="hljs-symbol">\C</span>urrentControlSet<span class="hljs-symbol">\S</span>ervices<span class="hljs-symbol">\W</span></span><span class="lit">32Time</span><span class="pun">”</span><span class="pln"> C</span><span class="pun">:</span><span class="pln"><span class="hljs-symbol">\w</span></span><span class="lit">32tm</span><span class="pun">.</span><span class="pln">txt    reg </span><span class="kwd">export</span> <span class="pun">“</span><span class="pln">HKLM<span class="hljs-symbol">\S</span>oftware<span class="hljs-symbol">\P</span>olicies<span class="hljs-symbol">\M</span>icrosoft<span class="hljs-symbol">\W</span></span><span class="lit">32Time</span><span class="pun">”</span><span class="pln"> C</span><span class="pun">:</span><span class="pln"><span class="hljs-symbol">\p</span>olicy</span><span class="pun">.</span><span class="pln">txt</span>

注:某些系统上可能没有HKLM\SOFTWARE\POLICIES\MICROSOFT\W32Time 注册表键值,这不是错误。

<3> 停止时间服务debug日志

以管理员身份启动CMD,运行命令

  1. 1
    <span class="pln">w32tm </span><span class="pun">/</span><span class="pln"><span class="hljs-keyword">debug</span> </span><span class="pun">/</span><span class="pln"><span class="hljs-keyword">disable</span></span>

完成上述操作后,请您将C:\w32tm.txt , C:\policy.txt, C:\windows\temp\w32time.log,导出的日志,nfo文件反馈给售后支持进一步分析。

实际案例


在时间跳变后,发现安全日志有如下ID 4616的审核日志,提示进程0x390修改的时间。

使用tasklist /svc 命令,可以看到0x390 (十进制为912)的进程为w32 time service。这对于 Windows 时间服务属正常情况,该服务以系统特权运行,定期更改系统时间。其他的系统时间更改意味着对计算机的破坏。
基于此看出来时间由win 32 time 服务更改的,应该是当时时间出现了偏差,可以相应的调整对应的时间服务器。如果这里是3方程序修改的时间,这种方式会将程序名字列出来,此时可以将三方程序卸载后检查。

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: