Почему важно, чтобы на серверах было одинаковое время?

35

Я прочитал несколько раз (хотя я не могу найти это прямо сейчас), что центры обработки данных прилагают большие усилия, чтобы обеспечить одинаковое время на всех серверах. Включая, но не ограничиваясь, беспокойство о високосных секундах.

Почему так важно, чтобы на серверах было одинаковое время? И каковы фактические допуски?

Йенс Шаудер
источник

Ответы:

53

Безопасность

В общем, временные метки используются в различных протоколах аутентификации, чтобы помочь предотвратить атаки повторного воспроизведения , когда злоумышленник может повторно использовать токен аутентификации, который он смог украсть (например, путем прослушивания сети).

Аутентификация Kerberos делает именно это, например. В версии Kerberos, используемой в Windows, допустимое отклонение по умолчанию составляет 5 минут.

Это также используется различными протоколами одноразовых паролей, используемыми для двухфакторной аутентификации, такими как Google Authenticator, RSA SecurID и т. Д. В этих случаях допустимое отклонение обычно составляет около 30-60 секунд.

Без синхронизации между клиентом и сервером было бы невозможно завершить аутентификацию. (Это ограничение снято в новейших версиях MIT Kerberos, так как запрашивающая сторона и KDC определяют смещение между своими часами во время аутентификации, но эти изменения произошли после Windows Server 2012 R2, и пройдет некоторое время, прежде чем вы увидите его в Windows версия. Но некоторые реализации 2FA, вероятно, всегда будут нуждаться в синхронизированных часах.)

администрация

Синхронизация часов облегчает работу с разнородными системами. Например, корреляция записей журнала с нескольких серверов намного проще, если все системы имеют одинаковое время. В этих случаях вы обычно можете работать с допуском в 1 секунду, который обеспечит NTP, но в идеале вы хотите, чтобы время было настолько близко синхронизировано, насколько вы можете себе позволить. PTP, который обеспечивает гораздо более жесткие допуски, может быть намного дороже в реализации.

Майкл Хэмптон
источник
16
+1 Устранение неполадок, связанных с ошибками в распределенных системах с несинхронизированными временными метками журналирования: больше никогда
Матиас Р. Джессен,
3
Серверы, на которых работает демон NTP, обычно синхронизируются с точностью до 0,01 секунды (несколько миллисекунд). Собственная синхронизация Windows NTP проверяется только несколько раз в день и не так точна. Для Windows доступны NTP-клиенты, которые обеспечивают хорошую синхронизацию.
BillThor
+1 за этот ответ, потому что я просто проверил системное время и опоздал на 5 секунд, но теперь я использую ntp для синхронизации, было бы хорошо добавить к вопросу ссылку на ntp.org, чтобы люди могли проверить свои система
Freedo
2
makeтакже запутывается перекос часов между NFS клиент / сервер.
Sobrique
@BillThor Ваша информация о службе времени Windows отстает на десятилетие. Он был полноценным NTP-клиентом с момента выпуска 2003R2 и адаптивно синхронизирует агентскую часть домена AD. Мы видим <16 мс, типичные смещения на 2008R2 пределы тика системного таймера 64 Гц. Мы видим даже лучшее время на боксах 2012+, которые могут использовать меньшие интервалы между тиками.
rmalayter
17

Главным образом, это так, что вы можете сопоставлять инциденты из журналов на разных устройствах. Предположим, у вас произошел инцидент безопасности, когда кто-то обращается к вашей базе данных через ваш веб-сервер - вы хотите, чтобы временные метки на вашем брандмауэре, вашем балансировщике нагрузки, вашем веб-сервере и вашем сервере баз данных совпадали, чтобы вы могли найти журналы на каждом устройстве которые относятся к инциденту. В идеале вы хотели бы, чтобы все было в течение нескольких миллисекунд. И оно должно синхронизироваться с фактическим внешним временем, чтобы вы также могли соотнести свои журналы со сторонними журналами, если это станет необходимым.

Майк Скотт
источник
2
Кроме того, некоторые решения безопасности, такие как ldap и / или kerberos, не будут работать, если время не синхронизировано. Как и некоторые решения HA.
Дженни Ди говорит восстановить Монику
7

Это важно не только с точки зрения администрирования, но и с синхронизацией, что также важно с точки зрения корреляции на уровне приложений. Это зависит от того, как разработано решение, как работающие приложения получают метку времени для любых транзакций, с которыми они могут работать. Я видел сбой проверки транзакции из-за того, что приложение работало на сервере со слишком большим смещением (было около 20 секунд в будущем) по сравнению с другими, с которыми оно взаимодействовало.

Кроме того, если виртуализация выполняется, например, на сервере VMWare ESXi, а время виртуальной машины не синхронизировано с временем гипервизора, то такое действие, как vmotion, может повторно синхронизировать часы виртуальной машины с гипервизорами, что, в свою очередь, может привести к непредсказуемым результатам. если разница во времени достаточно велика.

Я не знаю, каковы фактические допуски, потому что я думаю, что это во многом зависит от того, какие системы существуют, но я думаю, что, вообще говоря, можно сохранить серверы в центре обработки данных с смещением менее одной секунды друг от друга.

Петтер Н
источник
6

Поскольку вы упомянули високосные секунды, следует отметить, что они требуют особенно сложного обращения.

Они обычно добавляются путем введения секунды как 23:59:60, это проблематично, если вы проверяете временные метки как 0-59 для полей минут и секунд. Альтернатива повторения 23:59:59, чтобы сделать его продолжительностью 2 секунды, не намного лучше, так как это может испортить все, что чувствительно ко времени до уровня в секунду.

Google на самом деле недавно нашел хорошее решение, которое, похоже, еще не получило широкого распространения. Их решение состояло в том, чтобы применить скачкообразное «размазывание» и разделить изменения по промежутку времени, причем весь процесс управляется NTP-сервером. Они опубликовали блог об этом еще в 2011 году, интересны для чтения и, похоже, имеют отношение к этому вопросу.

Kaithar
источник
Звучит много , как некоторый NTP клиентов нарастаните поведение , которое было реализовано, навсегда.
CVn
@ MichaelKjörling вроде. Разница в том, что поворот предназначен для того, чтобы избежать больших скачков после того, как часы будут определены неправильно, сделав поправку во времени. То, что сделал Google, было намеренно добавить смещение к их ntp-серверу, поворачивая заранее и таким образом никогда не имея високосной секунды.
Кайтар
5

Всякий раз, когда используются временные метки, десинхронизированные устройства могут создавать логические несоответствия, такие как: A отправляет запрос B, а ответ B приходит с временной меткой, более ранней, чем у запроса, что может привести к тому, что A проигнорирует ее.

Гарри Ковер
источник
4

Я согласен со всем пунктом выше. Я хочу добавить больше мыслей.
Некоторые базы данных, такие как Cassendra, сильно зависят от метки времени . Вот как он справляется с параллелизмом.

Разные временные метки неизбежно испортят базу данных.

Франсуа Комбет
источник
2
Это лучше оставить как комментарий
Дейв М
Поэтому я обновил glibc на нескольких машинах CentOS 5.2, и это обновление случайно установило половину часового пояса MST - у нас сразу возникли проблемы с случайным выходом пользователей из системы из-за «бездействия». Все виды маленьких виджетов и уклонений ожидают, что время будет более или менее правильным. Кроме того, если ваше время неверно и оно автоматически исправлено, вы можете получить файлы и журнальные метки времени, которые действительно сбивают с толку и приходят из будущего ...
Некоторые Linux Nerd
Я ожидаю, что это будет верно для многих распределенных баз данных. Разница во временных отметках в несколько секунд может быть достаточной для изменения порядка двух операций.
Кайтар