Настройка ntpd на клиенте
Из пакета ntpd работает как клиент, обращаясь к одному из сервером времени в RUNET. При наличии в локальной сети сервера (серверов) NTP, в конфигурации требуется произвести следующие изменения:
- Внести в файл /etc/ntp/step-tickers список серверов времени в локальной сети
- Задать в /etc/ntp.conf в параметрах servers локальные сервера времени ()
- Разрешить в /etc/ntp.conf локальным серверам изменять время этой машины ()
Как альтернативный вариант, можно использовать настройку локального сервера NTP с генерацией широковещательных сигналов точного времени. В это случае на клиентах задавать список серверов NTP в не требуется, вместо этого там прописывается:
multicastclient authenticate no
При этом задать адрес (имя) сервера/серверов NTP в _необходимо_ для первоначальной синхронизации времени (если показания часов на рабочей станции _сильно_ отличаются от истинных, NTP может и не суметь синхронизировать их).
Знакомимся с SNTP протоколом
SNTP протокол – это облегченная версия протокола сетевого времени NTP. Оба эти продукта описывают один и тот формат сетевого пакета. Ключевая разница в том, как система обрабатывает содержимое данных пакетов с целью синхронизации времени. То есть перед обоими протоколами стоит одна и та же задача, но способы ее реализации несколько отличаются.
Наибольшее применение на практике SNTP получил во встроенных устройствах. Речь идет о бытовых коммутаторах, роутерах, то есть там, где в полной версии нет особой необходимости. Обновления СНТП идут с такой же периодичностью, что и у НТП. То есть сегодня на рынке представлена 4 версия продукта. SNTP порт в работе игнорирует значения дрейфа, применяет боле упрощенные настройки сетевых часов. Последняя версия протокола определена в RFC2030. Среди особенностей стоит выделить:
-
использование исключительно на концах подсети синхронизации: клиенты работают только на самом верхнем слое и в конфигурациях, где они будут существовать абсолютное независимыми от других пользователей;
-
доступ полностью совпадает с протоколом UDP/TIME, что существенно упрощает адаптацию;
-
подходит для работы в системах с выделенным сервером со встроенными радиочасами;
-
точное время позволяется выводить за миллиардные доли секунд благодаря более высокому контролю задержек.
Клиенты SNTP могут работать как в одноадресном, так и в многоадресном и широковещательном режиме. Так, в одноадресном режиме клиент отправляет запрос и ждет ответа от сервера. В широковещательном варианте пользователь запросы не отправляет, но ожидает сообщения от одного или нескольких устройств. В многоадресном запрос отправляется, но уже по широковещательному адресу, а ответ может отправляться как с одного, так и с нескольких серверов. То устройство, которое ответит первым в последующем будет использоваться для одноадресных запросов, в то время как остальные ответы будут игнорироваться.
В 4 версии протокола заголовки уже оптимизированы под IPv6, добавлен ряд расширений. Даже если вы работаете на SNTP, то можете обмениваться данными с клиентами и серверным аппаратным обеспечением, применяющим протокол НТП. То есть оба продукта – совместимы.
Особенности работы в виртуальных машинах
Некоторые особенности синхронизации времени описаны в статье про виртуализацию
Может быть установлена из репозитория Astra Linux Common Edition командой:
После установки запускается автоматически, однако по умолчанию работает только как клиент, и не обслуживает запросы как сервер времени.
Конфигурация службы openntpd находится в файле /etc/openntpd/ntpd.conf. Конфигурацию службы openntpd можно рассматривать как упрощенный вариант конфигурации службы ntp. Пример конфигурации:
После внесения изменений в файл конфигурации для того, чтобы эти изменения вступили в силу, служба должна быть перезапущена:
Так как служба openntpd использует стандартный протокол NTP, для диагностики службы openntpd можно использовать описанные выше команды ntpq и ntpdate (ntpq придётся использовать с другой машины, так как эта команда входит в состав пакета ntp).
Служба timesyncd предлагается в качестве современной «легковесной» замены ntp. Она более проста, интегрирована в ОС, но несколько ограничена в возможностях.
Служба timesyncd не может выполнять функции сервера, это исключительно клиентская служба.
Отключить невостребованный автоматический запуск службы можно командой:
sudo timedatectl set-ntp false
Включить, соответственно, командой (однако, пока присутствует служба ntp (или openntpd или chronyd), служба timesyncd всё равно работать не будет):
sudo timedatectl set-ntp true
Для использования timesyncd в первую очередь необходимо полностью удалить службы ntp и openntpd (если они были установлены):
Если была установлена служба времени chronyd удалить её:
После чего запустить службу timesyncd:
Состояние службы можно проверить командой:
sudo timedatectl status
Примерный вывод команды:
Технологии синхронизации времени и их применение в различных системах
Одним из наиболее распространенных методов является использование Протокола сетевого времени (NTP). NTP позволяет синхронизировать время на компьютерах и других устройствах, используя сеть Интернет. Используя специальные серверы времени, системы могут обновлять и корректировать свое время с высокой точностью.
Еще одной технологией синхронизации времени является протокол Precision Time Protocol (PTP). PTP разработан для синхронизации времени в локальных сетях с высокой точностью. Он позволяет синхронизировать время на устройствах с точностью до наносекунд и обеспечивает единое время для всех участников сети. PTP широко применяется в сферах, где требуется высочайшая точность временных данных, таких как финансовые системы и научные исследования.
Для систем с ограниченным доступом к Интернету, как например военные системы или системы автоматизации промышленности, часто используется метод синхронизации по GPS. В этом случае, спутниковая система GPS служит источником точного времени, которое передается на устройства через специальные приемники.
Современные системы также могут использовать сетевые протоколы для передачи временных данных, такие как Network Time Protocol version 4 (NTPv4) и Precision Time Protocol version 2 (PTPv2). Эти протоколы обеспечивают не только синхронизацию времени, но и защиту от подмены данных и обеспечивают безопасность передачи информации.
Технологии синхронизации времени нашли свое применение во множестве различных систем, от компьютерных сетей до промышленных установок. Они играют важную роль в обеспечении согласованности и точности временных данных, что необходимо для надежной работы систем и предотвращения возможных сбоев и ошибок.
Автоматическая синхронизация устройств
Автоматическая синхронизация устройств — это процесс, при котором различные устройства, такие как компьютеры, смартфоны, планшеты и другие, могут автоматически обмениваться информацией между собой. Это важная функция, которая позволяет пользователям иметь доступ к своим данным на разных устройствах без необходимости ручного копирования и передачи данных.
Автоматическая синхронизация может быть полезна во многих ситуациях. Например, если у вас есть несколько устройств, на которых хранятся ваши фотографии, вы можете настроить автоматическую синхронизацию, чтобы все ваши фотографии были доступны на каждом устройстве. Также автоматическая синхронизация может быть использована для обновления контактов, календарей и других личных данных на разных устройствах.
При автоматической синхронизации устройств используются различные протоколы и технологии. Например, для синхронизации данных между смартфоном и компьютером может использоваться протокол Bluetooth или Wi-Fi. Для синхронизации данных в облаке могут применяться протоколы, такие как Dropbox или Google Drive.
Автоматическая синхронизация устройств требует настройки и обычно выполняется через специальное программное обеспечение или облачный сервис. При этом пользователь может выбирать, какие данные синхронизировать и на каких устройствах. Также можно настраивать расписание синхронизации, чтобы данные обновлялись автоматически через определенное время или по заданному событию.
В целом, автоматическая синхронизация устройств делает жизнь пользователей удобнее, позволяя им иметь доступ к своим данным на разных устройствах без особых усилий. Благодаря этой функции можно быть уверенным, что важные данные всегда находятся под рукой, независимо от того, на каком устройстве вы находитесь.
Режимы работы NTP сервера/клиента
Клиент/сервер
Этот режим на сегодняшний день наиболее часто используется в сети Интернет. Схема работы – классическая. Клиент посылает запрос, на который в течение некоторого времени сервер присылает ответ. Настройка клиента производится с помощью директивы server в конфигурационном файле, где указывается DNS имя сервера времени.
Симметричный активный/пассивный режим
Этот режим используется в том случае, если производится синхронизация времени между большим количеством равноправных машин. Помимо того, что каждая машина синхронизируется с внешним источником, она также осуществляет синхронизацию со своими соседями (peer), выступая для них в качестве клиента и сервера времени. Поэтому даже если машина «потеряет» внешний источник, она все еще сможет получить точное время от своих соседей. Соседи могут работать в двух режимах – активном и пассивном. Работая в активном режиме, машина сама передает свое время всем машинам-соседям, перечисленным в секции peers конфигурационного файла ntp.conf. Если же в этой секции соседи не указаны, то считается, что машина работает в пассивном режиме. Для того чтобы злоумышленник не смог скомпрометировать другие машины, представившись в качестве активного источника, необходимо использовать аутентификацию.
Режим Broadcast
Этот режим рекомендуется использовать в тех случаях, когда малое количество серверов обслуживает большое количество клиентов. Работая в этом режиме, сервер периодически рассылает пакеты, используя широковещательный адрес подсети. Клиент, настроенный на синхронизацию таким способом, получает широковещательный пакет сервера и производит синхронизацию с сервером. Особенностью этого режима является то, что время доставляется в рамках одной подсети (ограничение broadcast-пакетов). Кроме того, для защиты от злоумышленников необходимо использовать аутентификацию.
Режим Multicast
Данный режим во многом похож на broadcast. Отличие заключается в том, что для доставки пакетов используются multicast-адреса сетей класса D адресного пространства IP-адресов. Для клиентов и серверов задается адрес multicast-группы, которую они используют для синхронизации времени. Это делает возможным синхронизацию групп машин, расположенных в различных подсетях, при условии, что соединяющие их маршрутизаторы поддерживают протокол IGMP и настроены на передачу группового трафика.
Режим Manycast
Этот режим является нововведением четвертой версии протокола NTP. Он подразумевает поиск клиентом среди своих сетевых соседей manycast-серверов, получение от каждого из них образцов времени (с использованием криптографии) и выбор на основании этих данных трех «лучших» manycast-серверов, с которыми клиент будет производить синхронизацию. В случае выхода из строя одного из серверов клиент автоматически обновляет свой список.
Для передачи образцов времени клиенты и серверы, работающие в manycast-режиме, используют адреса multicast-групп (сети класса D). Клиенты и серверы, использующие один и тот же адрес, формируют одну ассоциацию. Количество ассоциаций определяется количеством используемых multicast-адресов.
Время в Linux
Кратко расскажу, какое время существует в Linux и как его задать. В Linux, как и в другой ОС, существует 2 времени. Первые – аппаратные, иногда называемые Real Time Clock, сокращенно (RTC) (они же – часы BIOS) обычно они связаны с колеблющимся кварцевым кристаллом, имеющим точность хода до нескольких секунд в день. Точность зависит от различных колебаний, например, окружающей температуры. Вторые часы — внутренние программные часы, которые идут непрерывно, в том числе и при перерывах в работе системы. Они подвержены отклонениям, связанным с большой системной нагрузкой и задержкой прерываний. Однако система обычно считывает показания аппаратных часов при загрузке и потом использует системные часы.
Дата и время операционной системы устанавливается при загрузке на основании значения аппаратных часов, а так же настроек часового пояса. Настройки часового пояса берутся из файла /etc/localtime. Данный файл – есть ссылка (но чаще – копия) одного из файлов в структуре каталога /usr/share/zoneinfo/.
Аппаратные часы Linux могут хранить время в формате UTC (аналог GMT), либо текущее территориальное время. Общая рекомендация в том, какое время устанавливать (?) следующая: если на компьютере установлено несколько ОС и одна из них – Windows, то необходимо использовать текущее время (т.к. Windows берет время из BIOS/CMOS и считает его локальным). Если используются только операционные системы UNIX семейства, то желательно хранить время в BIOS в UTC формате.
После загрузки операционной системы, часы операционной системы и BIOS полностью независимы. Ядро системы раз в 11 секунд синхронизирует системные часы с аппаратными.
Через некоторое время между аппаратными и программными часами может быть разница в несколько секунд. Какие же часы содержат правильное время? Ни те, ни другие, пока мы не настроим синхронизацию времени.
Примечание:
Ядро Linux’а всегда хранит и вычисляет время, как число секунд прошедших с полночи 1-го января 1970 года, в независимости от того, установлены ваши часы на локальное или всемирное время. Преобразование в локальное время производится в процессе запроса.
Поскольку количество секунд с 1-го января 1970 года всемирного времени сохраняется как знаковое 32-битное целое (это справедливо для Linux/Intel систем), ваши часы перестанут работать где-то в 2038 году. Linux не имеет проблемы 2000-го года, но имеет проблему 2038 года. К счастью, к тому времени все linux’ы будут запущены на 64-х разрядных системах. 64-х битное целое будет содержать наши часы приблизительно до 292271-миллионного года.
Установка и настройка NTP-сервера
В Linux NTP сервер работает на базе пакета ntp. Для его работы необходимо установить этот пакет, который доступен в репозитории дистрибутива Linux. В зависимости от настроек демон ntp может выступать как сервером точного времени раздавая его другим хостам так и клиентом.
Настройка NTP сервера включает несколько шагов:
- Установка пакета ntp.
- Конфигурация файла ntp.conf.
- Проверка параметров, ключей шифрования и доступа к клиентам.
Установка
Для установки пакета ntp в Linux можно использовать менеджер пакетов вашего дистрибутива, например, apt-get или yum. После установки необходимо запустить службу NTP.
Настройка
Файл ntp.conf содержит настройки для работы NTP сервера. В нем можно определить уровень сервера, указать ключи шифрования для обеспечения безопасности и задать правила доступа к клиентам.
Для настройки необходимо открыть файл /etc/ntp.conf в любом текстовом редакторе.
Параметры логирования
В этой строке указывается файл для хранения информации о частоте смещения времени. В этом файле хранится значение, получаемое в результате предшествующих корректировок времени. Если внешние NTP-серверы по той или иной причине становятся недоступными, значение будет взятого из него.
Далее указывается файл, в который будут сохраняться логи синхронизации:
Список серверов синхронизации
В конфигурационном файле указывается список NTP-серверов, с которыми будет осуществляться синхронизация.
Каждая строка означает группу серверов, которые будут передавать нам корректное время. Чтобы повысить точность синхронизации можно использовать опцию iburst, она отвечает за отправку на сервер для синхронизации несколько пакетов вместо одного:
Также можно указать приоритетный серверы для синхронизации используя опцию prefer:
Уровень сервера 0 — 3 определяет его место в иерархии NTP серверов. Чем меньше значение стратума, тем ближе сервер к источнику времени с высшим уровнем.
Как мы писали выше, иерархия NTP построена с учетом отказоустойчивость и резервирования. NTP-серверы размещены по всему миру. Чтобы обеспечить более точную установку времени желательно использовать ntp-серверы размещенные в регионе размещения сервера, К примеру для России можно использовать:
Защита и дополнительные настройки
Чтобы наш сервер не стал инструментов в руках злоумышленников, которые научились использовать NTP-сервера для усиления трафика в DDoS-атаках, нужно установить ограничения на доступ для внешних клиентов
По умолчанию в файлe /etc/ntp.conf установлены следующие ограничения:
Параметры nomodify, notrap, nopeer и noquery запрещают сторонним клиентам изменять что-либо на сервере. При использовании параметра kod, клиент, отправляющий слишком частые запросы, сначала получит предупреждение об отказе в обслуживании (так называемый kod-пакет), а затем будет отключен от сервера.
notrap — запрет на прием управляющих команд;nomodify — запрет команд, которые изменяют состояние или способны это делать;nopeer — запрет синхронизации с хостом;4 — если используется протокол IPv4;6 — если используется протокол IPv6.
Чтобы с NTP-сервером могли синхронизироваться машины из локальной сети, добавим в конфигурационный файл следующую строку:
Для того, чтобы сервер мог обмениваться NTP данными сам собой вносим строки:
Перезапуск и проверка сервера
Для того, чтобы применились все изменения необходимо перезапустить сервер:
После проверяем статус работы:
В выводе должны увидеть статус работы сервера — Active (running).
Проверяем корректность работы, выполнив команду:
В ее выводе будут представлены следующие данные:remote — адрес сервера точного времени (в этой графе отражаются серверы из списка в конфигурационном файле);refid — вышестоящий сервер (тот, от которого сервер из предыдущей графы получает синхронизацию);st — уровень (stratum) сервера;t — тип пира (u — unicast, m — multicast);when — время последней синхронизации;poll — время в секундах, за которое демон NTP синхронизируется с пиром;reach — состояние доступности сервера;delay — время задержки ответа от сервера;offset — разница времени между нашим сервером и сервером синхронизации; положительное значение этого параметра означает, что наши часы спешат, отрицательное — что отстают;jitter — смещение времени на удаленном сервере.Слева от адреса сервера могут быть указаны следующие символы:
* сервер выбран для синхронизации;+ сервер, пригодный для обновления (с которым можно синхронизироваться);— с сервером синхронизироваться не рекомендуется;х сервер недоступен.
Проверка и принудительная коррекция времени с помощью команды ntpdate
Для проверки работы сервера времени и коррекции показаний времени в составе дистрибутивов предусмотрен инструмент командной строки ntpdate.
Типичные ошибки, которые можно обнаружить с помощью этой команды:
- no server suitable for synchronization found — пригодный для синхронизации сервер не найден, говорит сама за себя, типично для службы ntpd, которая, не обнаружив возможности синхронизироваться, просто перестаёт работать;
- leap not in sync — сервер находится в состоянии незавершенной коррекции времени, его показания пока недостоверны. Обычно действий не требует, и исчезает через некоторое время, после завершения сервером коррекции показаний своих часов.
Этот же инструмент может использоваться для периодической коррекции времени (например, с помощью службы выполнения заданий по расписанию cron).
Он не устанавливается по умолчанию, и может быть установлен с помощью графического менеджера пакетов или из командной строки командой
проверка доступности сервера времени запросом времени без коррекции показаний времени (опция -q или -d):
то же самое с подробной диагностикой (опция -d включает подробную диагностику, и так же отменяет выполнение коррекции времени):
то же самое без использования IP-порта 123:
По умолчанию ntpdate использует тот же IP-порт (123) что и ntpd, и, если сервис ntpd запущен, то ntpdate при запуске сообщает, что порт занят:
ntpdate: the NTP socket is in use, exiting
Для того, чтобы использовать для запроса времени IP-порт, отличный от 123, следует использовать опцию -u.
Так как IP-порт 123 часто закрыт по соображениям безопасности, команду ntpdate БЕЗ опции -u можно использовать для проверки доступности внешних серверов времени для службы ntpd (запросы в этом случае следует отправлять на серверы времени, указанные в конфигурационном файле службы ntpd):
Если первая команда ntpdate (с опцией «-q») не может получить ответ от сервера, а вторая (с опцией «-qu») может, то нужно либо разблокировать доступ к IP-порту 123, либо рассмотреть возможность замены NTP на службу, работающую через другие порты (например, OpenNTPD).
Команда ntpdate может применяться для периодической коррекции времени:
См. тж. про применение ntpdate в статье про виртуализацию
Example NTP Configuration File
As a minimum a configuration file needs to specify a server that should be used for synchronization along with a drift file to store local clock frequency.
server pool.ntp.org # NTP pool project world-wide servers driftfile /var/lib/ntp/ntp.drift.
However, a more complete configuration file will include multiple servers, drift file and a statics directory:
server 192.168.1.127 prefer # Local NTP server IP address server pool.ntp.org # NTP pool project world-wide servers server time-a-g.nist.gov # NIST internet time service driftfile /var/lib/ntp/ntp.drift. statsdir directory_path
Время и дата в Ubuntu Server
Как я уже сказал во введении, следить за системным временем в ubuntu server нужно в обязательном порядке, как и в любом другом сервере. Начальные настройки вы делаете еще во время установки системы. Далее вам может понадобиться либо изменение часового пояса, либо более точная настройка и синхронизация часов.
Кстати, если вам интересно узнать, почему я лично использую именно ubuntu server, а не какой-то другой linux дистрибутив, то читайте мой обзор и сравнение ubuntu с другими системами.
Особенно актуальной тема системного времени становится, когда вы арендуете сервера где-то в другой стране с отличным от вашего часового пояса. По умолчанию, у хостера скорее всего будет установлен его часовой пояс. Иногда я забываю это проверить и замечаю только тогда, когда возникают какие-то проблемы. А вот список проблем, которые могут теоретически возникнуть, если на сервере будет неправильное время:
- При просмотре логов или разборе инцидентов придется сначала переводить время в свой часовой пояс или формат, чтобы адекватно разобраться в ситуации.
- Если у вас настроена какая-то интеграция с доменной структурой Windows, расхождение по времени может приводить к проблемам.
- При использовании cron и автоматических заданий для выполнения, неправильное время на сервере может удивить вас тем, что ваши задачи будут выполнены не тогда, когда вы этого ожидаете.
- Если на сервере работает web сайт или почтовый сервис, время публикации постов или отправления писем будет неправильным, что создаст неудобство пользователям.
Это список, что первым делом приходит на ум. Думаю, его можно сильно расширить, если потратить чуть больше времени. Но не вижу в этом смысла. Думаю, и так понятно, что часы на сервере должны всегда показывать точное время в нужном вам часовом поясе. Этим мы и займемся далее.
Утилита date
Посмотреть время в командной строке Ubuntu можно с помощью команды date.
date
В данном случае вы видите следующую информацию:
Fri | День недели, пятница |
26 | Число месяца |
Mar | Месяц, март |
2021 | Год |
02:01:59 | Время в формате час:минута:секунда |
PM | Время суток в 12-ти часовом формате, PM — после полудня |
UTC | Часовой пояс |
Для того, чтобы посмотреть время в 24-х часовом формате в консоли ubuntu, можно использовать дополнительный ключ к команде, добавив туда еще и саму дату:
date +"%H:%M %d/%m/%Y" 14:09 26/03/2021
Таким образом, с помощью параметров форматирования, вы можете выбирать любой формат времени для отображения. Традиционно, командная строка linux позволяет очень гибко выполнять различные действия с помощью своих утилит. Например, вы можете посмотреть не только время и дату, но и вывести в консоль номер дня недели, добавив дополнительный ключ %j:
date +"%H:%M %d/%m/%Y %j" 14:13 26/03/2021 085
Узнать время сервера в unix формате можно вот так:
date '+%s' 1616768183
Если у вас часовой пояс отличный от UTC, а вы хотите увидеть время именно в этом часовой поясе, то воспользуйтесь следующим ключом команды:
date --utc
Очень удобно использовать утилиту date с различными параметрами в скриптах, чтобы получать время в удобном для вас формате. Например, когда вы используете время в названиях файлов бэкапов при их создании. Вот несколько примеров наиболее часто используемых форматов отображения даты и времени:
date +%Y-%m-%d 2021-03-26 date +%H:%M:%S 14:36:35 date +%Y-%m-%d_%H:%M:%S 2021-03-26_14:36:42
Утилита timedatectl
В составе systemd есть своя утилита для просмотра и настройки времени через консоль — timedatectl. Далее пример с ее участием для просмотра системного времени сервера ubuntu.
timedatectl
Local time | Локальное время данного сервера |
Universal time | Время в часовом поясе UTC |
RTC time | Время на аппаратных часах |
Time zone | Ваш часовой пояс |
С просмотром в консоли текущего времени сервера разобрались, переходим к его настройке.
Как включить синхронизацию времени в Linux
К счастью, большинство Linux-дистрибутивов по умолчанию синхронизируют время. Если вы не замечали, что часы вашего компьютера расходятся с часами телефона, тогда наверняка ваш дистрибутив использует NTP-клиент / демон.
Синхронизировать время в Linux с systemd
В большинстве дистрибутивов Linux используется systemd, а вместе с ним и демон systemd-timesyncd. Это означает, что у вас уже есть NTP-клиент, предварительно установленный в Ubuntu, Debian, Fedora, Arch Linux, openSUSE, Manjaro и других. На этих дистрибутивах (и других основанных на них, например, Elementary ОС, Zorin OS) чтобы проверить, включена ли синхронизация NTP запустите команду:
Если на выходе отображается «
Network time onyes», часы вашего компьютера автоматически синхорнизируются через NTP. Иногда вы можете также заметить
NTP synchronized — это означает, что часы синхронизируются с помощью другого инструмента.
Если вы видите
Network time onno, выполните следующую команду, чтобы включить синхронизацию времени NTP.
Это все, что вам нужно сделать в этих дистрибутивах.
Синхронизировать время в Linux без systemd
Для примера возьмем MX Linux. Запуск команды timedatectl показывает, что сетевое время включено, но systemd-timesyncd не используется. Как же синхронизировать время в таких дистрибутивах без systemd?
Проверьте с помощью следующей команды, которую вы можете использовать в любой другой операционной системе Linux.
В MX Linux вы увидите результат, подобный тому, что вы видите на следующем снимке экрана.
Из этого сообщения журнала видно, что клиент «ntpdate» запускался один раз. Это популярный клиент, установленный по умолчанию во многих дистрибутивах Linux. Он легкий и время от времени запрашивает только NTP-серверы. Он не работает в фоновом режиме и запускается сценариями, синхронизируется, а затем завершается.
Это означает, что время не синхронизируется с высокой точностью (например, миллисекунды или микросекунды), но оно достаточно точно для большинства.
В других операционных системах вы можете увидеть «ntpd», который является демоном, постоянно работающим в фоновом режиме и очень точным. Чем больше он работает, тем точнее время.
Если по какой-то причине вы хотите установить
ntpили
ntpdate в операционных системах с systemd, сначала отключите ntp-клиент systemd.
Конечно, приведенная выше команда не нужна в несистемных дистрибутивах.
Установить клиент ntpdate
Это подходит для домашних компьютеров, ноутбуков и других устройств, которые не постоянно подключены к Интернету.
На Debian, Ubuntu, Linux Mint, Zorin и других дистрибутивах, основанных на них, запустите:
На всех вышеперечисленных дистрибутивах на основе Debian он настроен по умолчанию на запуск после того, как обнаружит новое сетевое соединение. Вы можете принудительно синхронизировать время, если отключитесь от сети и подключитесь снова.
В Fedora ntpdate устарела, поэтому рекомендуется вместо этого использовать демон ntpd (см. Следующую главу). То же самое рекомендуется для всех других дистрибутивов по двум причинам:
- Иногда они не включают ntpdate в отдельный пакет, а связывают его с ntpd из следующего раздела.
- Они не автоматизируют запуск ntpdate автоматически при каждом сетевом подключении. Вы должны вставить ntpdate самостоятельно в скрипт, который автоматически запускается после подключения к сети.
В этом случае имеет смысл установить ntpd, как указано в следующей главе.
Установить ntpd Daemon
В Debian, Ubuntu, Zorin, Mint и других дистрибутивах, основанных на Debian или Ubuntu, запустите:
1 | sudo apt install ntp |
Эти дистрибутивы сразу запускают ntpd, а затем автоматически запускают его при каждой загрузке; никаких дальнейших действий от вас не требуется.
На Fedora установите с помощью:
На CentOS запустите:
Для Arch Linux используйте команду:
И на openSUSE введите:
После этого включите службу для запуска при загрузке, а затем запустите ее:
1 |
sudo systemctl enable ntpd sudo systemctl start ntpd |
В других дистрибутивах, которые работают без systemd, вам, возможно, придется выполнить следующие команды:
1 |
sudo update-rc.dntpd enable sudo service ntpd start |
Если вы получите сообщение об ошибке, что ntpd не существует, замените «ntpd» на «ntp» в приведенных выше командах. В некоторых дистрибутивах файлы службы демона ntpd называются по-разному.
Безопасность системы
Синхронизация времени имеет непосредственное отношение к безопасности системы. Корректное и точное время в системе позволяет эффективно анализировать события и логи, а также синхронизировать различные операции и процессы
Это крайне важно для обеспечения защиты от кибератак и предотвращения мошенничества
Одним из подходов к синхронизации времени является использование протокола Network Time Protocol (NTP). NTP позволяет устанавливать точное и согласованное время на компьютерах в сети. Клиенты NTP синхронизируют свое время с временными серверами, которые получают информацию от внешних источников времени, таких как атомные часы или GPS сигналы. Это обеспечивает точность и надежность синхронизации времени.
Некорректное или несинхронизированное время может привести к серьезным проблемам безопасности. Например, атакующий может использовать расхождение во времени для повреждения защитных механизмов, провести атаку с ранее украденных данных или создать ложные события в логах системы. Синхронизация времени помогает своевременно распознать и предотвратить такие атаки.
Кроме того, синхронизация времени также важна при аудитах и юридических проверках. Точное время позволяет эффективно анализировать логи и события, а также устанавливать последовательность событий, что может быть критично для определения причины и ответственности за инциденты или проблемы в системе.
Таким образом, безопасность системы неразрывно связана с синхронизацией времени. Корректное и точное время позволяет обнаруживать и предотвращать кибератаки, эффективно анализировать события и соблюдать требования юридических норм и стандартов. Выбор надежного и точного метода синхронизации времени, такого как использование протокола NTP, является важным шагом для обеспечения безопасности системы.
Настройка локального сервера точного времени
Требуется: настроить ntpd на использование 3х серверов точного времени, разрешить им менять время системы, разрешить хостам локальной сети получать время с сервера времени.
- Найти IP-адреса{{Имена DNS в настройках ntpd _не работают_}} трёх{{Вроде бы с одним-двумя внешними серверами будут проблемы: не все клиенты захотят получать время с локального сервера}} внешних серверов NTP.
- Прописать эти IP в /etc/ntp/step-tickers
- Прописать эти IP в параметры server в /etc/ntp.conf в виде
- Снять все ограничения с этих серверов на обновление времени локального сервера: в /etc/ntp.conf добавить строки
- Снять ограничение на получение времени для требующихся локальных сетей: в /etc/ntp.conf прописать
- Включить сервис:
- Если есть внутренний firewall, разрешить доступ к порту ntp по tcp и udp.
Если требуется синхронизация большого количества серверов NTP в пределах одной сети, то имеет смысл для упрощения настройки клиентов и уменьшения нагрузки на сервер использовать передачу сигналов точного времени через широковещательные сообщения. Для этого на сервере надо добавить в конфигурацию:
broadcast <broadcast IP>
Настройка NTP
Открываем файл с настройками:
vi /etc/chrony.conf
Настраиваем серверы, с которых наш NTP будет брать эталонное время. Например:
#pool 2.centos.pool.ntp.org iburst
server 192.168.0.100 iburst prefer
server 192.168.0.110 iburst
server 127.127.1.0
* где:
- pool — указывает на выполнение синхронизации с пулом серверов.
- server — указывает на выполнение синхронизации с сервером.
- iburst — отправлять несколько пакетов (повышает точность).
- prefer — указывает на предпочитаемый сервер.
- server 127.127.1.0 — позволит в случае отказа сети Интернет брать время из своих системных часов.
* в данном примере мы закомментировали указанный пул по умолчанию и добавили свои серверы 192.168.0.100 и 192.168.0.110.
Настраиваем безопасность:
allow 192.168.0.0/24
* в данном примере мы разрешаем синхронизацию времени с нашим сервером для узлов сети 192.168.0.0/255.255.255.0.
Перезапускаем сервис:
systemctl restart chronyd
Добавляем правило в брандмауэр:
firewall-cmd —permanent —add-service=ntp
firewall-cmd —reload