ADG Оставить заявку
Блог Системное администрирование 4 мин чтения

Восемь минут разницы - и домен лёг: строим иерархию NTP

Аутентификация Kerberos в Active Directory не терпит расхождения часов больше пяти минут. Рассказываем, как восемь минут разницы между контроллером и рабочими станциями положили входы в домен и как мы это починили.

Контекст момента

аутентификация в домене требует синхронного времени

Позвонили в пятницу утром - у клиента не могут зайти в домен несколько человек сразу. Сообщение невнятное: «ошибка входа в систему». Паролей не меняли, учётные записи не блокировали, домен работает. Приехали смотреть.

Первое, что бросилось в глаза на контроллере домена - время. 10:04. На ноутбуке инженера - 09:56. На рабочих станциях пользователей, у которых не работает вход, - тоже где-то около 09:56-09:57. Восемь минут разницы между контроллером и клиентами.

Вот и весь диагноз.

Почему время вообще имеет значение. Active Directory использует Kerberos для аутентификации - это протокол, который мы уже видели в работе при переходе с NT4. Kerberos выдаёт билеты с временными метками. Проверяя билет, контроллер смотрит, не устарел ли он. Защита от replay-атак: злоумышленник не может перехватить пакет авторизации и воспроизвести его через час. Максимально допустимое расхождение часов - пять минут. Это не настройка «по умолчанию», это требование протокола. Восемь минут - ошибка. Хоть на секунду больше пяти - ошибка.

Те пользователи, у которых вход работал, оказались за отдельным коммутатором, и их машины синхронизировались автоматически с каким-то сетевым ресурсом. Те, кто не мог зайти - нет. Хаотичная картина, которая первые десять минут выглядела как что угодно, только не как проблема с временем.

Как время разошлось. Оказалось просто: контроллер домена стоит в серверной, без подключения к интернету напрямую. Системное время на нём никто не синхронизировал с момента установки - почти полтора года назад. BIOS-часы немного спешили, потихоньку накопили восемь минут. Рабочие станции при этом кто-то однажды настроил синхронизироваться с внешним сервером time.windows.com через NAT. Контроллер жил сам по себе. Итог предсказуемый.

Как мы выстроили иерархию. Правильная схема для домена выглядит так:

  • Контроллер домена - берёт время из внешнего источника. Один доверенный NTP-сервер снаружи, лучше два. Мы прописали pool.ntp.org и time.nist.gov - оба доступны через интернет.
  • Остальные контроллеры (если есть) - синхронизируются с основным контроллером внутри домена.
  • Рабочие станции и серверы в домене - получают время автоматически от контроллера. В Windows 2000 это работает через службу Windows Time (W32tm) и групповые политики. Отдельно настраивать каждую машину не нужно - домен сам раздаёт эталон.

На практике это называется иерархия NTP или Stratum: внешний сервер - Stratum 1 или 2, контроллер домена получает от него и становится Stratum 3, рабочие станции - Stratum 4. Чем больше уровней, тем больше потенциальное отклонение, но для корпоративной сети это не критично - внутри домена отклонение будет долями секунды.

Что сделали руками. На контроллере прописали NTP-серверы через реестр (в W32tm нет удобного GUI в Windows 2000, всё руками или скриптом). Принудительно запустили синхронизацию, время на контроллере выровнялось. Рабочие станции подтянулись за несколько минут сами. Пользователи зашли в домен без проблем.

Параллельно проверили BIOS-батарейку на контроллере - оказалась слабовата, меняли по случаю. Это отдельная история, но если батарейка умрёт и сервер перезагрузится, часы сбросятся на дату из прошлого - и ситуация повторится немедленно.

Что здесь не мелочь. Расхождение времени - одна из тех проблем, которые проявляются неожиданно и диагностируются неочевидно. «Не могу зайти в домен» - это звучит как проблема с паролями, учётной записью, сетью, сервисом. Никто с порога не думает про часы. Мы сами потратили несколько минут, прежде чем обратили внимание на метку времени в углу экрана.

При этом починить - пять минут, как только знаешь причину.

Хорошая практика - не ждать, пока время само разойдётся на критические восемь минут. Один раз правильно выстроенная иерархия NTP работает без участия администратора. Контроллер сам синхронизируется, домен сам раздаёт время клиентам. Это один из тех базовых вещей, которые нужно настроить при развёртывании домена и проверить при аудите - а не вспоминать в пятницу утром под звонки рассерженных пользователей.

Контакт

Нужна такая же инженерная работа?

Опишите задачу и контекст. Ответим в течение рабочего дня, при необходимости подпишем NDA.