大規模なタイム オフセットに対してWindows タイム サービスを構成する方法

この記事では、大きなタイム オフセットに対して Windows タイム サービスを構成する方法について説明します。

適用対象: Windows 10 - すべてのエディション、Windows Server 2012 R2
元の KB 番号: 884776

概要

Windows オペレーティング システムには、Kerberos 認証プロトコルで使用される Time Service ツール (W32Time サービス) が含まれています。 Kerberos 認証は、関連するコンピューター間の時間間隔が最大有効時間スキュー内にある場合に機能します。 既定値は 5 分です。 タイム サービス ツールをオフにすることもできます。 その後、サード パーティのタイム サービスをインストールできます。

Time Service ツールの目的は、Microsoft Windows 2000 以降のバージョンの Windows オペレーティング システムを実行しているorganization内のすべてのコンピューターが一般的な時刻を使用することを確認することです。 適切な一般的な時間使用量があることを確認するために、Time Service は権限を制御する階層リレーションシップを使用します。 Windows ベースのコンピュータでは、デフォルトで以下の階層構造が使用されます。

  • すべてのクライアント デスクトップ コンピューターは、認証ドメイン コントローラーを権限のあるタイム ソースとして指名します。

  • ドメインでは、すべてのサーバーが、クライアント デスクトップ コンピューターと同じプロセスに従います。

  • ドメイン内のすべてのドメイン コントローラーは、プライマリ ドメイン コントローラー (PDC) 操作マスターをタイム ソースとして指名します。

  • すべての PDC 操作マスターは、タイム ソースの選択でドメインの階層に従います。 ただし、PDC 操作マスターは、階層番号付けに基づく親ドメイン コントローラーを使用できます。

    注:

    階層番号は、タイム サーバーがプライマリ参照ソースにどの程度近づくかを定義します。

数値が小さい場合、サーバーはプライマリ タイム ソースに近づきます。 この階層では、フォレストのルートにある PDC 操作マスターが、organizationの権限のあるタイム サーバーになります。 ハードウェア ソースから時間を収集するように、権限のあるタイム サーバーを構成することを強くお勧めします。 インターネット タイム ソースと同期するように権限のあるタイム サーバーを構成しようとすると、認証は行われません。 また、サーバーとスタンドアロン クライアントの時間修正設定を短縮することをお勧めします。 これらの推奨事項に従うと、より正確な時間がドメインに提供されます。

詳細

時間のロールバックのレビューでは、コンピューターは、将来または過去の日数、月、年、または数十年の時間を採用できることを示しています。 次の問題は、コンピューターが時間内にロールフォワードまたはロール バックするときに発生する可能性があります。

  • コンピューター アカウント、ユーザー アカウント、および信頼関係のパスワードは、途中で更新される可能性があります。
  • 検疫は、Active Directory ディレクトリ サービス レプリケーションの NTDS レプリケーション イベント 2042 によって識別できます。
  • パスワードの不一致は、コンピューター アカウント、ユーザー アカウント、または信頼関係に対して正式に復元されます。 このような不一致からの回復には、影響を受けるすべてのアカウントと信頼に対する手動のパスワード リセットが必要になる場合があります。

ロールフォワードする時間と時間のロールバックから保護する方法

コンピューターと電源サイクルが再起動されると、BIOS はコンピューターのマザーボード上にあるローカル EPROM で時間を維持します。 Windows が起動すると、カーネルは BIOS から現在の時刻をプルします。 この現在の時刻は、W32Time サービスが別のタイム ソースと同期できるようになるまでの初期時間として使用されます。

Windows 32 タイム サービスでは、 と の 2 つのレジストリ エントリが MaxPosPhaseCorrection サポートされています MaxNegPhaseCorrection。 これらのエントリは、タイム サービスがリモート コンピューターからサンプルを送信するときにローカル コンピューターで受け入れるサンプルを制限します。

安定した状態で実行されているコンピューターがタイム ソースからタイム サンプルを受け取ると、サンプルは、 と MaxNegPhaseCorrection レジストリ エントリによって課されるMaxPosPhaseCorrectionフェーズ修正境界に照らしてチェックされます。 時間サンプルが 2 つのレジストリ エントリによって適用される制限内にある場合、このサンプルは追加の処理で受け入れられます。 時間サンプルがこれらの制限に該当しない場合、タイム サンプルは無視され、タイム サービスは W32Time プライベート ログ ファイルに次のメッセージを記録します。

大きすぎる

管理者が正と負のフェーズの修正の値を減らす場合、管理者は、コンピューターが Windows ベースのコンピューターの無効な時間サンプルから時間を受け取る脅威を減らすことができます。 一方、管理者が値を小さくした場合、管理者は、コンピューターが現在の時間より前または遅れているのを、これらの値が課す制限を超えて妨げる可能性があります。

注:

正の修正と負の修正のレジストリ エントリの値が減ると、時間が増減します。

Windows 2000、Windows XP、Windows Server 2003、および Windows Vista の レジストリ エントリと レジストリ エントリの既定値MaxPosPhaseCorrectionMaxNegPhaseCorrectionは、次の値です。
0xFFFFFFF

この値を使用すると、コンピューターは、タイム サンプルに含まれている時間を、不正確な場合でも受け取ります。

Windows Server 2008 では、MaxPosPhaseCorrection および MaxNegPhaseCorrection レジストリ エントリの新しい既定値が採用されました。 この新しい既定値は 48 時間です。 この 48 時間の値は、次のいずれかの値として表すことができます。

  • 2a300 (16 進数)
  • 172800 (10 進数)

エントリとMaxNegPhaseCorrectionレジストリ エントリは、次の値以外の値に設定することをお勧めしますMaxPosPhaseCorrection
MAX (0xFFFFFFFF)

注:

値を MAX (0xFFFFFFFF) 以外の値に設定すると、コンピューターが再起動されたり、外部のタイム ソースへの接続が中断されたりするシナリオで、コンピューターが非常に不正確な時間を採用できないようにすることができます。 たとえば、フォレスト内のすべてのドメイン コントローラーで MaxPosPhaseCorrection レジストリ エントリと MaxNegPhaseCorrection レジストリ エントリが 48 時間設定されている場合を考えてみましょう。 1 つのドメイン コントローラーで 48 時間を超える異常なタイム ジャンプが発生した場合、MaxPosPhaseCorrection と MaxNegPhaseCorrection レジストリ エントリに設定した値によって、他のコンピューターが同じ時間ジャンプを行うのを防ぐことができます。 そのため、同期されていないコンピューターは、管理者が調査して是正措置を講じることができるまで、他のコンピューターとは区別できます。

時間の精度は、フォレスト ルート プライマリ ドメイン コントローラー (PDC) で特に重要です。 PDC はドメインのルート時刻ソースであるため、PDC の時刻の変更が不正確な場合、ドメイン全体の時間ジャンプが発生する可能性があります。 PDC にフェーズ修正の制限を課すと、フォレスト内の他のドメイン コントローラーが新しい時刻を受け入れるのを防ぐことができます。

既定値の 5 分または 15 分ではなく 48 時間の既定値は、次の理由に基づいています。

  • W32TM ユーティリティからの出力は読み取りが困難です。
  • W32TM は現在、メンバー コンピューターとメンバー サーバー上の時間をターゲットにしていません。
  • Windows オペレーティング システムとスタンドアロンのサード パーティ 製アプリケーションがログに記録するエラーとイベントは、非常に一貫性がありません。 考えられるエラーには、次のようなリターン コードが含まれます。
    • アクセスが拒否されました
    • RPC サーバーが使用できない

    注:

    この原因により、Windows ベースのコンピューターが正確な時間値を採用できなくなる可能性があるため、これらのエラーはタイム スキューとの相関関係が低くなります。

  • 夏時間のバグにより、1 時間の時間差が発生する可能性があります。
  • AM または PM の構成ミスにより、12 時間の時間差が発生する可能性があります。
  • 日または日付の間違いは、24 時間の時間差を引き起こす可能性があります。

そのため、48 時間は、25 時間または 36 時間後の次の明らかな時間オフセットでした。 管理者は、インフラストラクチャとテストを報告する適切なツールを使用して値を減らすこともできます。

オペレーティング システムのバージョンとコンピューターの役割に応じた具体的な推奨事項については、次のセクションで説明します。

Windows XP Professional とすべてのバージョンの Windows Server 2003

ドメイン サーバー

フォレスト ルート PDC (権限のあるタイム サーバー)

ハードウェア ソースから時間を収集するように、権限のあるタイム サーバーを構成することを強くお勧めします。 信頼できるタイム サーバーをインターネット タイム ソースと同期するように構成する場合、認証はありません。 次のレジストリ エントリを再構成する必要があります。

  • MaxPosPhaseCorrection
  • MaxNegPhaseCorrection

これら 2 つのレジストリ エントリの既定値は0xFFFFFFFF。 この既定値は、"いつでも変更を受け入れる" を意味します。48 時間の値をお勧めします。 レジストリでは、2a300 (16 進数) または 172800 (10 進数) として表されます。 MaxPollInterval レジストリ エントリの値を 10 以下に設定するか、SpecialPollInterval レジストリ エントリの値を 3600 (1 時間) 以下に設定することをお勧めします。

ドメイン コントローラーとドメイン内のメンバー サーバー

MaxPosPhaseCorrectionエントリとMaxNegPhaseCorrectionレジストリ エントリの既定値は 0xFFFFFFFF です。 この既定値は、"いつでも変更を受け入れる" を意味します。すべてのドメイン コントローラーで、この値を 48 時間に設定することをお勧めします。 48 時間の値は、時間依存ベースのアプリケーションを実行しているメンバー サーバーでも設定できます。

注:

これらのレジストリ エントリの詳細については、「 Windows Server 2003 および Windows XP Time Service のレジストリ エントリ」 セクションを参照してください。

スタンドアロン クライアント

エントリとMaxNegPhaseCorrectionレジストリ エントリの既定値は MaxPosPhaseCorrection 54,000 (15 時間) です。 セキュリティのベスト プラクティスとして、この既定値を減らすことをお勧めします。 また、タイム ソース、ネットワーク条件、ポーリング間隔、およびセキュリティ要件に応じて、値を 3600 (1 時間) またはさらに小さい値に設定することをお勧めします。

Windows Server 2003 および Windows XP Time Service のレジストリ エントリ

詳細
レジストリ エントリ MaxPosPhaseCorrection
値の種類 DWORD
サブキー HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config
Notes (メモ) このエントリは、サービスが実行できる最大の正の時刻修正を秒単位で指定します。 必要以上の変更がサービスによって決定された場合は、代わりにイベントがログに記録されます。 特殊なケース:0xFFFFFFFFは、常に時間修正を行う手段です。 ドメイン メンバーの既定値は0xFFFFFFFFです。 スタンドアロン クライアントとサーバーの既定値は 54,000 (15 時間) です。
レジストリ エントリ MaxNegPhaseCorrection
値の種類 DWORD
サブキー HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config
Notes (メモ) このエントリは、サービスが実行できる最大の負の時刻修正を秒単位で指定します。 サービスは、これより大きい変更が必要であると判断した場合は、代わりにイベントをログに記録します。 特殊なケース: -1 は、常に時間修正を行います。 ドメイン メンバーの既定値は0xFFFFFFFFです。 スタンドアロン クライアントとサーバーの既定値は 54,000 (15 時間) です。
レジストリ エントリ MaxPollInterval
値の種類 DWORD
サブキー HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config
Notes (メモ) このエントリは、システム ポーリング間隔に対して有効になっている最大の間隔を秒単位で指定します。 システムはスケジュールされた間隔に従ってポーリングする必要がありますが、プロバイダーはサンプルが要求されたときにサンプルの生成を拒否できることに注意してください。 ドメイン メンバーの既定値は 10 です。 スタンドアロン クライアントとサーバーの既定値は 15 です。
レジストリ エントリ SpecialPollInterval
値の種類 DWORD
サブキー HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpClient
Notes (メモ) このエントリは、手動ピアの特殊なポーリング間隔を秒単位で指定します。 SpecialInterval 0x1 フラグが有効になっている場合、W32Time では、オペレーティング システムが決定するポーリング間隔ではなく、このポーリング間隔が使用されます。 ドメイン メンバーの既定値は 3,600 です。 スタンドアロン クライアントとサーバーの既定値は 604,800 です。

注:

これらの設定を展開するには、グローバル ポリシー オブジェクト エディターを使用することをお勧めします。 Windows Server 2003 ベースのフォレスト内の Windows タイム サービスの詳細については、「 Windows タイム サービス (W32Time)」を参照してください。

グループ ポリシー オブジェクト (GPO) で定義されている既定の Windows タイム サービス パラメーター値は、Windows Server 2003 ベースのドメイン コントローラーのレジストリで定義されている既定値と一致しない場合があります。 GPO を使用して Windows Server 2003 ドメイン コントローラーに MaxPosPhaseCorrection 値と MaxNegPhaseCorrection 値を展開する場合は、GPO がレジストリ内の他の Windows タイム サービス パラメーターの値を変更していないことを確認します。 また、ドメイン コントローラーの既定のレジストリ値と一致するように、GPO で他の Windows タイム サービス パラメーターの値を変更する必要もあります。

Windows 2000 Service Pack 4 (SP4) のすべてのバージョン

ドメイン サーバー

フォレスト ルート PDC (権限のあるタイム サーバー)

ハードウェア ソースから時間を収集するように、権限のあるタイム サーバーを構成することを強くお勧めします。 信頼できるタイム サーバーをインターネット タイム ソースと同期するように構成する場合、手動モードでは認証されません。 レジストリ エントリを MaxAllowedClockErrInSecs 再構成できます。 既定値は 43,200 です。 推奨される値は、タイム ソース、ネットワーク条件、およびセキュリティ要件に応じて、900 (15 分) またはさらに小さい値です。 また、ポーリング間隔によっても異なります。 ポーリング間隔の値は、24 時間ごとに 1 時間に設定することをお勧めします。

注:

このレジストリ エントリの詳細については、「 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
Notes (メモ) 有効な最大クロック変更を秒単位で指定します。 イベントがログに記録されると、時間は値に基づいて調整されません。 この動作は、疑わしいタイム スタンプ アクティビティから保護するために発生します。 ドメイン メンバーの既定値は 43,200 です。