如何設定 Windows Time 服務,以防止大規模的時間位移

本文說明如何針對大型時間位移設定 Windows Time 服務。

適用於:Windows 10 - 所有版本、Windows Server 2012 R2
原始 KB 編號: 884776

簡介

Windows 作業系統包含時間服務工具 (Kerberos 驗證通訊協定所使用的 W32Time 服務) 。 如果相關計算機之間的時間間隔在啟用的時間上限範圍內,Kerberos 驗證將可運作。 預設值為 5 分鐘。 您也可以關閉時間服務工具。 然後,您可以安裝第三方時間服務。

時間服務工具的目的是要確保組織中執行 Microsoft Windows 2000 或更新版本 Windows 作業系統的所有電腦都使用一般時間。 為了確保有適當的常見時間使用方式,時間服務會使用控制授權單位的階層式關聯性。 根據預設,Windows 電腦使用下列階層:

  • 所有用戶端桌面計算機都會提名驗證域控制器作為其授權時間來源。

  • 在網域中,所有伺服器都會遵循用戶端桌面計算機所遵循的相同程式。

  • 網域中的所有域控制器都會將主要域控制器提名 (PDC) 作業主機作為其時間來源。

  • 所有 PDC 作業主機都會遵循其時間來源選取範圍中的網域階層。 不過,PDC 作業主機可能會使用以階層編號為基礎的父域控制器。

    注意事項

    階層編號會定義時間伺服器與主要參考來源的接近程度。

數位越小,伺服器越接近主要時間來源。 在此階層中,位於樹系根目錄的 PDC 作業主機會成為組織的授權時間伺服器。 強烈建議您設定授權時間伺服器,以從硬體來源收集時間。 當您嘗試設定授權時間伺服器與因特網時間來源同步時,不會進行驗證。 我們也建議您減少伺服器和獨立客戶端的時間更正設定。 當您遵循這些建議時,系統會提供更精確的時間給網域。

其他相關資訊

時間復原的檢閱顯示計算機可以採用未來或過去可能是天、月、年或甚至數十年的時間。 當計算機向前復原或向前復原時,可能會發生下列問題:

  • 計算機帳戶、用戶帳戶和信任關係上的密碼可以提前更新。
  • 隔離可由 Active Directory 目錄服務複寫的 NTDS 複寫事件 2042 來識別。
  • 計算機帳戶、用戶帳戶或信任關係的密碼不符會以授權方式還原。 從這類不相符的復原可能需要在所有受影響的帳戶和信任上手動重設密碼。

如何防止向前復原和時間回復的時間

當計算機和電源週期重新啟動時,BIOS 會在位於電腦主機板的本機 EPROM 中維護時間。 當 Windows 啟動時,核心會從 BIOS 提取目前的時間。 目前的時間會作為初始時間,直到 W32Time 服務可以與另一個時間來源同步為止。

Windows 32 時間服務支援兩個登入專案: MaxPosPhaseCorrectionMaxNegPhaseCorrection。 當這些範例是從遠端電腦傳送時,這些專案會限制時間服務在本機計算機上接受的範例。

當處於穩定狀態執行的計算機從其時間來源收到時間範例時,會根據 和 MaxNegPhaseCorrection 登錄專案所施加的階段更正界限MaxPosPhaseCorrection來檢查範例。 如果時間範例落在兩個登錄專案強制執行的限制內,則會接受此範例進行其他處理。 如果時間範例未落在這些限制內,則會忽略時間範例,而時間服務會在 W32Time 私人記錄檔中記錄下列訊息:

太大

如果系統管理員降低正和負相更正的值,系統管理員可以降低計算機從 Windows 電腦無效時間範例接收時間的威脅。 另一方面,如果系統管理員降低此值,系統管理員可能會防止計算機超過這些值所施加的限制,超過目前時間。

注意事項

如果正和負修正的登錄專案值減少,時間將會增加或減少。

Windows 2000、Windows XP、Windows Server 2003 和 Windows Vista 中的 和 MaxNegPhaseCorrection 登錄專案的預設值MaxPosPhaseCorrection為下列值:
0xFFFFFFF

這個值可讓計算機接收任何時間範例中所包含的時間,無論其不精確。

在 Windows Server 2008 中,已採用 MaxPosPhaseCorrection 和 MaxNegPhaseCorrection 登錄專案的新預設值。 這個新的預設值為 48 小時。 這個 48 小時的值可以表示為下列其中一個值:

  • 2a300 (十六進位)
  • 172800 (十進位)

我們建議將 MaxPosPhaseCorrectionMaxNegPhaseCorrection 登錄項目設定為下列值以外的值:
最大 (0xFFFFFFFF)

注意事項

當您將值設定為 MAX (0xFFFFFFFF) 以外的值時,您可以防止電腦採用在電腦重新啟動或中斷外部時間來源連線時非常不正確的時間。 例如,假設您在樹系中的所有域控制器上,將 MaxPosPhaseCorrection 和 MaxNegPhaseCorrection 登錄專案設定為 48 小時。 如果任何單一域控制器遇到超過 48 小時的異常時間跳躍,您為 MaxPosPhaseCorrection 和 MaxNegPhaseCorrection 登錄項目設定的值將會防止其他計算機進行相同的時間跳躍。 因此,不同步的計算機可以與其他計算機分開,直到系統管理員可以調查並採取更正動作為止。

時間精確度在樹系根主域控制器 (PDC) 上特別重要。 因為 PDC 是網域的根時間來源,所以 PDC 上不正確的時間變更可能會導致全網域的時間跳躍。 如果您對 PDC 施加階段修正限制,您可以防止樹系中的其他域控制器接受新時間。

預設值為 48 小時,而不是預設值 5 分鐘或 15 分鐘,取決於下列原因:

  • 很難讀取 W32TM 公用程序的輸出。
  • W32TM 目前不會以成員計算機和成員伺服器上的時間為目標。
  • Windows 作業系統和獨立第三方應用程式記錄的錯誤和事件極不一致。 可能的錯誤包括類似下列的傳回碼:
    • 拒絕存取
    • RPC Server 無法使用

    注意事項

    這些錯誤與時間扭曲的相互關聯性很低,因為原因可能會導致 Windows 計算機無法採用精確的時間值。

  • 日光節約時間錯誤可能會造成1小時的時差。
  • AM 或 PM 設定錯誤可能會造成 12 小時的時差。
  • 日或日期錯誤可能會造成 24 小時的時間差異。

因此,48 小時是 25 或 36 小時之後的下一個明顯時間位移。 系統管理員也可以使用可報告基礎結構和測試的正確工具來降低值。

下列各節將說明根據操作系統版本和計算機角色的特定建議。

Windows XP Professional 和所有版本的 Windows Server 2003

網域伺服器

樹系根 PDC (授權時間伺服器)

強烈建議您設定授權時間伺服器,以從硬體來源收集時間。 當您將授權時間伺服器設定為與因特網時間來源同步時,不會進行任何驗證。 您必須重新設定下列登入專案:

  • MaxPosPhaseCorrection
  • MaxNegPhaseCorrection

這兩個登錄項目的預設值是0xFFFFFFFF。 此預設值表示「接受任何時間變更」。我們建議使用 48 小時的值。 其在登錄中會以 2a300 (十六進位) 或 172800 (十進位) 表示。 建議您將 MaxPollInterval 登錄專案的值設定為 10 或更少,或將 SpecialPollInterval 登錄專案的值設定為 3600 (1 小時) 或更少。

網域內的域控制器和成員伺服器

MaxNegPhaseCorrection 登錄MaxPosPhaseCorrection項目的預設值為 0xFFFFFFFF。 此預設值表示「接受任何時間變更」。建議您在所有域控制器上將此值設定為 48 小時。 48 小時值也可以在執行以時間為敏感性應用程式的成員伺服器上設定。

注意事項

如需這些登錄專案的詳細資訊,請參閱 Windows Server 2003 和 Windows XP 時間服務登錄專案 一節。

獨立用戶端

MaxNegPhaseCorrection和 登錄MaxPosPhaseCorrection項目的預設值為54,000 (15小時) 。 作為安全性最佳做法,建議您減少此預設值。 我們也建議您將值設定為 3600 (1 小時) 或更小的值,視時間來源、網路條件、輪詢間隔,以及安全性需求而定。

Windows Server 2003 和 Windows XP 時間服務登錄專案

類型 詳細資料
登錄專案 MaxPosPhaseCorrection
值類型 DWORD
子機碼 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config
附註 此專案會指定服務可在幾秒內進行的最大正時修正。 如果服務判斷變更大於所需的變更,則會改為記錄事件。 特殊案例:0xFFFFFFFF表示一律進行時間修正。 網域成員的預設值為 0xFFFFFFFF。 獨立客戶端和伺服器的預設值為 54,000 (15 小時) 。
登錄專案 MaxNegPhaseCorrection
值類型 DWORD
子機碼 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config
附註 此專案會指定服務可在幾秒內進行的最大負時更正。 如果服務判斷需要大於此值的變更,則會改為記錄事件。 特殊案例:-1 表示一律進行時間修正。 網域成員的預設值為 0xFFFFFFFF。 獨立客戶端和伺服器的預設值為 54,000 (15 小時) 。
登錄專案 MaxPollInterval
值類型 DWORD
子機碼 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config
附註 這個專案會指定為系統輪詢間隔啟用的最大間隔,以秒為單位。 請注意,雖然系統必須根據排程的間隔輪詢,但提供者可以在要求樣本時拒絕產生範例。 網域成員的預設值為10。 獨立客戶端和伺服器的預設值為 15。
登錄專案 SpecialPollInterval
值類型 DWORD
子機碼 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpClient
附註 這個專案會以秒為單位指定手動對等的特殊輪詢間隔。 啟用 SpecialInterval 0x1旗標時,W32Time 會使用此輪詢間隔,而不是操作系統判斷的輪詢間隔。 網域成員的預設值為 3,600。 獨立客戶端和伺服器上的預設值為 604,800。

注意事項

建議您使用全域原則物件 編輯器 來部署這些設定。 如需 Windows Server 2003 樹系中 Windows Time 服務的詳細資訊,請參閱 Windows Time Service (W32Time)

群組原則 物件中定義的預設 Windows Time 服務參數值 (GPO) 可能不符合 Windows Server 2003 域控制器登錄中定義的預設值。 當您使用 GPO 將 MaxPosPhaseCorrection 和 MaxNegPhaseCorrection 值部署到 Windows Server 2003 域控制器時,請確定 GPO 不會變更登錄中其他 Windows Time 服務參數的值。 其他 Windows Time 服務參數值可能也必須在 GPO 中變更,以符合域控制器中的預設登錄值。

所有版本的 Windows 2000 Service Pack 4 (SP4)

網域伺服器

樹系根 PDC (授權時間伺服器)

強烈建議您設定授權時間伺服器,以從硬體來源收集時間。 當您將授權時間伺服器設定為與因特網時間來源同步時,手動模式中沒有驗證。 您可以重新設定 MaxAllowedClockErrInSecs 登錄專案。 默認值為 43,200。 建議的值為 900 (15 分鐘) 或甚至是較小的值,視時間來源、網路條件和安全性需求而定。 這也取決於輪詢間隔。 我們建議將輪詢間隔值設定為每 24 小時一小時。

注意事項

如需此登錄專案的詳細資訊,請參閱 Windows Server 2000 SP 4 登錄專案 一節。

網域內的域控制器和成員伺服器

同步處理類型為NT5DS。 時間服務會從網域階層進行同步處理,而時間服務會接受所有時間變更。 由於 NT5DS 會接受任何時間變更而不考慮時間位移,因此請務必在時間同步子網中設定可靠的樹系根時間來源。

注意事項

NT5DS 值表示同步處理類型是從登錄專案取得。

獨立用戶端

登錄 MaxAllowedClockErrInSecs 項目預設值為 43,200 (12 小時) 。 作為安全性最佳做法,建議您減少此預設值。 建議您將值設定為 3600 (1 小時) 或更小的值,視時間來源、網路條件、輪詢間隔以及安全性需求而定。

Windows Server 2000 SP 4 登錄專案

類型 詳細資料
登錄專案 MaxAllowedClockErrInSecs
值類型 DWORD
子機碼 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Parameters
附註 指定以秒為單位啟用的最大時鐘變更。 記錄事件時,不會根據值調整時間。 發生此行為有助於防範任何可疑的時間戳活動。 網域成員的預設值為43,200。