Доброго дня господа. Сегодня будем делать нужную вещь для любого системного администратора, это настройка NTP сервера точного времени, который может понадобиться для чего угодно — например для синхронизации времени на вашем сетевом оборудовании, серверов или рабочих мест. Для этой реализации нет необходимости покупать действительно настоящие аппаратные часы, так как возможность использования нескольких источников времени позволяют на текущий момент получать параметры даты и времени с очень большой точностью вплоть до миллисекунд.
Что нам для этого понадобится:
1. Дистрибутив Debian (достаточно x86, ресурсов эта машина будет потреблять минимум);
2. Доступ к Интернету;
3. Прямые руки.
И так, первое что мы должны сделать, после установки системы (этот момент пропускаем, надеюсь Вы это знаете как делать), это проверяем правильность настройки часового пояса, если Вы это не сделали при установке ОС.
Данную и все последующие команды следует выполнять с правами суперпользователя
Обязательно перед установкой пакетов, необходимо их обновить, поэтому незамедлительно обновляем
apt-get upgrade
Устанавливаем пакет NTP
По идее все должно уже заработать по умолчанию, но на мой вкус и цвет, я бы сделал несколько правильных изменений. Для этого открываем файл конфигурации м вносим изменения:
Заменяем источники времени используемых по умолчанию на разные, так мы добьёмся как минимум гарантированного получения данных.
А так же используем опцию iburst и prefer, где,
iburst — поможет увеличить точность синхронизации, то есть указать то, что на сервер необходимо отправлять несколько пакетов вместо одного.
prefer — приоритет источнику времени будет отдаваться именно этому, если вы точно знаете, что этот сервер находится ближе всего к вашему.
server ntp.msk-ix.ru iburst
server 2.debain.pool.ntp.org iburst
server 1.ubuntu.pool.ntp.org iburst
Если совсем все плохо, и наш сервер перестал получать время от источников в интернете, то мы можем синхронизироваться с аппаратными часами самого сервера, на чем у нас установлен Debian
!!Внимание!!
Строго не рекомендуется использовать эти команды, если ОС развернута на виртуальной машине, та как, в связи с особенностью этого механизма, результат получения времени может быть не предсказуем.
Добавлем в этот же конфиг файл команды:
fudge 127.127.1.0 stratum 10
И да, ничего менять не надо, этот IP адрес является именно правильным значением аппаратных часов вашего компьютера, и не стоит туда подставлять IP адрес локальной сети.
Поэтому, первая строка задает адрес аппаратных часов — 127.127.1.0, вторая указывает приоритет — stratum — он выбран таким образом, чтобы при наличии интернета NTP-сервер не синхронизировался с аппаратными часами.
Stratum 10 — говорит о том, что выбирать этот источник времени стоит только в крайнем случае, так как нормальное состояние источника времени должно быть 2 или на крайний случай 3.
Перейдем к безопасности. NTP могут использовать, чтобы усилить трафик в DDoS-атаках. А чтобы избежать столкновения с различными злоупотреблениями, следует ограничить доступ для внешних клиентов.
Говоря об ограничениях, то по умолчанию в /etc/ntp.conf файле выставлены такие:
restrict -6 default kod notrap nomodify nopeer noquery limited
Перечисленные флаги имеют значения:
kod — отправка клиенту, посылающему нежелательные запросы, пакета KoD (Kiss O’Death), получатель такого пакета обязан выполнить предписанную ему проверку и изменить свое поведение, в противном случае такой клиент будет отключен от сервера.
notrap — запрет приема управляющих сообщений
nomodify — запрет приема сообщений, изменяющих состояние сервера
nopeer — запрет установки одноранговых отношений с другими NTP-серверами
noquery — запрет любых запросов для синхронизации времени поступающих с других серверов
limited — запрет обслуживания, если интервал между пакетами от клиента превышает разрешенные значения
Под ними расположены строки, дающие полный доступ к серверу локальной системе:
restrict ::1
Отсутствие маски указывает на то, что это конечный узел, а отсутствие флагов предоставляет полный доступ.
При необходимости мы можем добавить свои записи, скажем для клиентов собственной сети с меньшим числом ограничений:
Если нужно запретить доступ к серверу времени, то следует использовать флаг ignore. Допустим, мы хотим запретить доступ для всех клиентов доменной сети, кроме эмулятора PDC:
restrict 192.168.122.101 nomodify notrap #PDC
Расположение строк не имеет значения, так как при запуске сервера все адреса будут отсортированы по возрастанию адреса/маски.
На этом конфигурацию сервера можно считать законченной, и необходимо убедиться в ее правильности. Для этого, нужно перезапустить службу NTP
Проверить ее статус можно командой:
Состояние синхронизации с вышестоящими серверами можно узнать командой:
На что следует обратить внимание в полях вывода информации:
* — сервер выбран для синхронизации
+ — сервер пригодный для синхронизации
— — синхронизация с этим сервером не рекомендуется
x — сервер недоступен
Затем на колонку refid — показывающее вышестоящий сервер синхронизации и колонку offset, которое показывает расхождение ваших часов с эталоном, при положительном значении наши часы спешат, при отрицательном отстают.
В колонке st указывается stratum — приоритет сервера, а delay содержит задержку ответа от сервера.
Установить источник времени для синхронизации на сервере можно командой:
Проверить статус синхронизации:
Ну и на последок, не забываем, что у нас есть такой инструмент защиты как sfw и iptables
Ограничение по порту:
Ограничение по сетевому интерфейсу ens33:
Либо подсетью:
Полезные ссылки:
Настройка NTP-сервера в Debian или Ubuntu
Как установить и настроить NTP-сервер