サーバーがまったく同じ時間を持つことが重要なのはなぜですか?


35

データセンターは、すべてのサーバーが正確に同じ時間になるように多大な努力を払っていることを何度も読みました(現時点ではわかりませんが)。含むが、うるう秒の心配はありません。

サーバーが同じ時間を持つことが重要なのはなぜですか?そして、実際の公差は何ですか?

回答:


53

セキュリティ

一般に、タイムスタンプはさまざまな認証プロトコルで使用され、リプレイ攻撃の防止に役立ちます。攻撃者は、盗み出した認証トークンを再利用できます(ネットワークのスニッフィングなど)。

たとえば、Kerberos認証はまさにこれを行います。Windowsで使用されているKerberosのバージョンでは、デフォルトの許容値は5分です。

これは、Google Authenticator、RSA SecurIDなどの2要素認証に使用されるさまざまなワンタイムパスワードプロトコルでも使用されます。これらの場合、許容範囲は通常約30〜60秒です。

クライアントとサーバー間で時間を同期させなければ、認証を完了することはできません。(この制限は、リクエスターとKDCが認証中にクロック間のオフセットを決定することにより、MIT Kerberosの最新バージョンでは削除されますが、これらの変更はWindows Server 2012 R2の後に発生し、Windowsで表示されるまでにしばらく時間がかかりますただし、2FAの一部の実装では、常に同期クロックが必要になる可能性があります。

運営管理

クロックを同期させると、異種システムでの作業が容易になります。たとえば、すべてのシステムの時刻が同じであれば、複数のサーバーからのログエントリの関連付けがはるかに簡単になります。これらの場合、通常は1秒の許容範囲で作業できますが、NTPはそれを提供しますが、理想的には、時間をできるだけ余裕を持って同期させたいと考えています。はるかに厳しい許容範囲を提供するPTPは、実装するのにはるかに高価になる可能性があります。


16
:外の同期のタイムスタンプをログに記録するとともに、分散ystemsに+1のトラブルシューティングエラー条件二度と
マティアスR.ジェッセンを

3
NTPデーモンを実行しているサーバーは、通常、0.01秒(数ミリ秒)以内に同期されます。ネイティブのWindows NTP同期は1日に数回しか確認されず、それほど正確ではありません。良好な同期を提供するNTPクライアントがWindowsで利用可能です。
BillThor

システム時間を確認しただけで、5秒遅れていたため、この回答に+1を追加しましたが、現在はntpを使用して同期しているため、ntp.orgへのリンクを質問に追加して、システム
-Freedo

2
makeまた、クライアント/サーバーNFS間のクロックスキューによって混乱します。
-Sobrique

@BillThor Windowsタイムサービスに関する情報は、約10年遅れています。2003R2のリリース以来完全なNTPクライアントであり、ADドメインのエージェント部分を適応的に同期します。2008R2では、16Hz未満の典型的なオフセットである64Hzシステムタイマーティックの制限が見られます。より小さなティック間隔を使用できる2012+ボックスでは、さらに優れた計時が行われています。
rmalayter

17

主に、異なるデバイス上のログからのインシデントを相互に関連付けることができるようにするためです。誰かがWebサーバーを介してデータベースにアクセスするというセキュリティインシデントがあるとします-ファイアウォール、ロードバランサー、Webサーバー、およびデータベースサーバーのタイムスタンプをすべて一致させて、各デバイスのログを検索できるようにしますインシデントに関連しています。理想的には、すべてを数ミリ秒以内に収めたいと考えています。また、実際の外部時刻と同期する必要があります。そのため、必要に応じて、ログをサードパーティのログと関連付けることもできます。


2
また、時刻が同期されていない場合、ldapやkerberosなどの一部のセキュリティソリューションは失敗します。一部のHAソリューションも同様です。
ジェニーDは、モニカ

7

管理の観点から重要であるだけでなく、クロックを同期させることは、アプリケーションレベルの相関関係からも重要です。これは、ソリューションの設計方法、実行中のアプリケーションが動作するトランザクションのタイムスタンプを取得する方法に依存します。サーバー上で実行されているアプリケーションが、他のアプリケーションと比較してオフセットが大きすぎるため(将来約20秒かかったため)、トランザクション検証が失敗するのを見てきました。

また、VMWare ESXiサーバーなどで仮想化し、VMの時刻がハイパーバイザーの時刻と同期していない場合、vmotionなどのアクションがVMクロックをハイパーバイザーと再同期する可能性があり、これにより予測できない結果が生じる可能性があります時間差が十分に大きい場合。

実際の許容値が何であるかはわかりません。システムの種類に大きく依存するためだと思いますが、一般的に言って、データセンター内のサーバーのオフセットを1秒未満に保つことは達成可能だと思います。


6

うるう秒について説明したので、特に難しい処理が必要なことに注意してください。

それらは通常、23:59:60として1秒を挿入することによって追加されます。これは、分フィールドと秒フィールドのタイムスタンプを0〜59として検証する場合に問題となります。23:59:59を繰り返して2秒の長さにする代替案は、1秒あたりのレベルまでタイミングが敏感なものを混乱させるため、あまり良くありません。

Googleは実際にはしばらく前に良い解決策を思いつきましたが、まだ広く採用されていないようです。彼らの解決策は、「スミア」の飛躍を適用し、一定期間にわたって変更を分割することで、プロセス全体がNTPサーバーによって管理されていました。彼らは2011年にそれについてのブログ公開し、興味深い読書をしており、この質問に関連しているようです。


一部のNTPクライアントのスルー動作によく似ていますが、これは永久に実装されています。
CVn

@MichaelKjörlingのような。違いは、時間の経過とともに修正を行うことでクロックが間違っていると判断された後の大きなジャンプを回避するためにスルーが意図されていることです。グーグルがやったことは、意図的にntpサーバーにオフセットを追加し、事前に旋回して、うるう秒がないことでした。
カイター

5

タイムスタンプが関係するときはいつでも、非同期化されたデバイスは次のような論理的なインコヒーレンスを作成できます:AはクエリをBに送信します


4

上記のすべての点に同意します。もっと考えてみたいCassendra
などの一部のデータベースはタイムスタンプに大きく依存しています。それが並行性を扱う方法です。

異なるタイムスタンプは完全にデータベースを台無しにします。


2
これはコメントとしてより良い投稿
デイブM

そのため、私は多くのCentOS 5.2マシンでglibcをアップグレードしましたが、アップデートによって誤って半分がMSTタイムゾーンに設定されてしまいました。あらゆる種類の小さなウィジェットとドーディングは、時間が多少とも正しいことを期待しています。また、時刻が間違っていて自動修正されて戻ってきた場合、ファイルとログのタイムスタンプは非常に紛らわしく、将来のものです...
Linux Nerd

これは、多くの分散データベースに当てはまると思います。2つの操作の順序を逆にするには、数秒のタイムスタンプの違いで十分な場合があります。
Kaithar
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.