NTP Сервер NTPD. Ubuntu Server 20.04

16 March
Настраиваем синхронизацию времени
Настраиваем синхронизацию времени

NTP Сервер – элемент, необходимый для правильного функционирования контроллера домена. У всех входящих в него устройств должно быть +- одинаковое время. Если не обеспечить это важное условие, контроллер попросту не будет функционировать так как было задумано. Kerberos использует правильное время чтобы предотвратить ряд атак. Active Directory использует метки времени для разрешения конфликтов репликации. Если разница во времени внутри AD превышает 5 минут, начнутся проблемы. В том числе с сетевыми ресурсами.

Самба поддерживает работу с NTPD. NTPD синхронизирует время с внешними ресурсами и в свою очередь позволяет своим клиентам получать точное время.

Windows машины состоящие в домене могут получать время только от PDC (Primary Domain Controller), и если PDC безвозвратно падает, то продолжить синхронизацию времени виндовый клиент сможет только когда в сети появится новый PDC. Наилучшим подходом будет синхронизация всех контроллеров домена с одного внешнего источника, а в случае безвременной кончины PDC, трансфер всех ролей на другой имеющийся в сети контроллер домена. Кстати да, мы говорим о линуксовых контроллерах домена поднятых с помощью Samba4.

Windows клиенты домена синхронизируют своё время с PDC по протоколу NT5DS, который в свою очередь требует наличия цифровых подписей. Добиться такой реализации можно в том случае если сервер времени стоит на одном сервере с Samba4. Если сервер времени и контроллер домена стоят на разных машинах, клиенты смогут синхронизировать время только по протоколу NTP, что делать не рекомендуется.

NTP Сервер контроллера домена с помощью NTPD

Для реализации нужна версия ntpd больше чем 4.2.6, собранная с параметром –enable-ntp-signd

Установка

sudo apt install ntp

Смотрим расположение папки ntp_signd

sudo find / -name ntp_signd

NTP Сервер – Проверяем права на директорию

ls -ld /var/lib/samba/ntp_signd

Должно быть следующее:

drwxr-x--- 2 root ntp 4096 сен 24 12:33 /var/lib/samba/ntp_signd

Если что-то отличается, приводим в порядок

Устанавливаем владельца директории

sudo chown root:ntp /var/lib/samba/ntp_signd/

Устанавливаем права на директорию

sudo chmod 750 /var/lib/samba/ntp_signd/

NTP Сервер – Настройка NTPD

Немножечко матчасти

disable monitor – Данная команда закроет дыру, которая позволяет использовать ваш NTP сервер для DDoS атак, в случае если его версия меньше чем 4.2.7p26 (уязвимость CVE-2013-5211 )

Команда запущенная на вашем контроллере домена

ntpdc -c monlist ag-dc-1 # подставьте имя своего контроллера домена

Флаги для restricted

--ipv4 – В контексте когда подразумевается использование имени хоста, осуществляет принудительное преобразование его DNS имени в IPv4 адрес

--ipv6 – аналогично –ipv4, только осуществляет преобразование в IPv6

kod – если какой-то клиент непрерывно долбит сервер, отправить ему kiss off death пакет

notrap – запрет на принятие команд управления

nomodify – блокировка команд отправляемых утилитой ntpq, направленных на изменение состояния сервера

nopeer – не синхронизироваться с хостом

noquery – блокировать запросы от ntpq. Служба времени не затрагивается.

Пустые строки и строки начинающиеся со знака # игнорируются.

Редактируем ntpd.conf

Открываем на редактирование и тем самым создаём файл ntpd.conf

sudo nano /etc/ntpd.conf

В него необходимо поместить следующее содержимое:

Отдельно для виртуальных машин

Если NTP сервер работает на виртуальной машине, необходимо указать в конце ntp.conf добавить

tinker panic 0

sudo sh -c "echo 'tinker panic 0' >> /etc/ntp.conf"

Вкратце, при запуске ntpd смотрит разницу во времени между своим временем и источником времени. Встроенная логика отрицает наличие каких либо катаклизмов, потому в случае большой разницы между локальным временем и внешним, сервер времени выпилится. Выпилится при этом так, что запустить его можно будет только ручками. На виртмашинах время не будучи синхронизируемо с чем-либо, уходит в рассинхрон за считанные мгновения. Потому если например ось на виртмашине не будет непрерывно синхронизировать своё время с каким-то источником, она уедет по времени очень далеко от эталона. Отсюда и необходимость внешнего источника времени.  В свою очередь если локальный источник времени, то есть наш NTP сервер так же живёт в виртуальной среде, вместе с ним уже уедет вся наша сеть. Это же касается разворачивания из снапшота. tinker panic 0, объяснит серверу что не нужно самовыпиливаться, а нужно спокойно синхронизироваться с внешним источником времени.