web-dev-qa-db-ja.com

サーバーが正確に同じ時間を持つことが重要なのはなぜですか?

データセンターはすべてのサーバーが正確に同じ時間を確保するために多大な努力を払っていることを何度も読みました(現在は見つかりません)。うるう秒の心配を含みますが、これに限定されません。

サーバーが同じ時間を持つことがなぜそれほど重要なのですか?そして、実際の許容範囲は何ですか?

35
Jens Schauder

安全保障

一般に、タイムスタンプはさまざまな認証プロトコルで使用され、リプレイ攻撃を防止します。攻撃者は、盗んだ(たとえば、ネットワークをスニッフィングすることによって)認証トークンを再利用できます。

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

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

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

行政

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

53
Michael Hampton

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

17
Mike Scott

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

また、たとえばVMWare ESXiサーバーで仮想化し、VMの時間がハイパーバイザーの時間と同期していない場合、vmotionなどのアクションがVMクロックはハイパーバイザーと連動しており、時間差が十分に大きい場合、予測不能な結果を​​引き起こす可能性があります。

実際の許容範囲が何かはわかりません。システムの種類によって大きく異なると思いますが、一般的に言えば、データセンター内のサーバー間のオフセットを1秒未満にすることで達成できると思います。

7
Petter H

うるう秒について述べたので、特に扱いが難しいことに注意してください。

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

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

6
Kaithar

タイムスタンプが関係するときはいつでも、非同期デバイスは次のような論理的な非一貫性を作成できます。

5
Harry Cover

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

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

4
Francois Combet