3.5. Настройка подключения к серверу точного времени

Сервер точного времени - это сервер времени, который использует протокол NTP. У серверов NTP существует единый источник времени, который они могут распространять по сети. NTP-сервер проверяет системные часы устройств и корректирует время, в случае, если оно каким-либо образом отклоняется от единого. Регулярно сверяя системные часы с сервером времени, сервера с иcпользованием NTP позволяют обеспечить синхронизацию устройств.

Схема подключения к серверу точного времени показана на Рис. 3.9.

../_images/Setup10.png

Рис. 3.9 Схема подключения

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

Все представленные команды требуется выполнить с правами суперпользователя.

Перед установкой сервера времени следует убедиться в том, что в системе правильно настроен часовой пояс. Для этого требуется ввести команду:

dpkg-reconfigure tzdata

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

apt update
apt install ntp

Для организации постоянной синхронизации времени необходима установка и настройка службы (сервера) ntpd. Выполните команду:

apt install ntp ntpdate

Для настройки автоматического запуска службы при загрузке системы, используйте специальную команду:

update-rc.d ntp defaults

Далее, следует создать или внести изменения в файл /etc/ntp.conf.

Примечание.

Для синхронизации времени рекомендуется выбирать ближайшие сервера.

Далее, в конфигурационном файле требуется указать адрес:

server адрес_сервера.

Например:

pool 0.ru.pool.ntp.org iburst
pool 1.ru.pool.ntp.org iburst
pool 2.ru.pool.ntp.org iburst
pool 3.ru.pool.ntp.org iburst

В приведенном примере приведены настройки использования российских серверов точного времени.

Ниже представлена настройка для синхронизации с аппаратными часами на случай отсутствия синхронизации с серверами в Интернете:

server 127.127.1.0
fudge 127.127.1.0 stratum 10

Первая строка задает адрес аппаратных часов – 127.127.1.0. Вторая указывает приоритет – stratum – он выбран таким образом, чтобы при наличии интернета NTP-сервер не синхронизировался с аппаратными часами. У серверов, входящих в пулы ntp.org, значение stratum равно двум.

Далее требуется настроить список контроля доступа, который состоит из сетевых адресов, отсортированных по возрастанию, и масок. Запись по умолчанию - default соответствует адресу 0.0.0.0 с маской 0.0.0.0, если в записи не указана маска, то автоматически подставляется значение 255.255.255.255, что соответствует конечному хосту.

Кроме адресов, строки списка содержат флаги, флаги указывают на те или иные ограничения, если строка не содержит флагов – это означает полный доступ к серверу.

По умолчанию, список контроля доступа следующий:

Первые две строки задают значения по умолчанию, т.е. для любых клиентов, в сетях IPv4 и IPv6:

restrict -4 default kod notrap nomodify nopeer noquery limited
restrict -6 default kod notrap nomodify nopeer noquery limited

Перечисленные флаги имеют следующие значения:

  • kod – отправка клиенту, посылающему нежелательные запросы, пакета KoD (Kiss O’Death), получатель такого пакета обязан выполнить предписанную ему проверку и изменить свое поведение, в противном случае такой клиент будет отключен от сервера;
  • notrap – запрет приема управляющих сообщений;
  • nomodify – запрет приема сообщений, изменяющих состояние сервера;
  • nopeer – запрет установки одноранговых отношений с другими NTP-серверами;
  • noquery – запрет любых запросов для синхронизации времени поступающих с других серверов;
  • limited – запрет обслуживания, если интервал между пакетами от клиента превышает разрешенные значения.

Ниже расположены строки, дающие полный доступ к серверу локальной системы:

restrict 127.0.0.1
restrict ::1

Отсутствие маски указывает на то, что это конечный узел, а отсутствие флагов предоставляет полный доступ. При необходимости можно добавить свои записи, например, для клиентов собственной сети с меньшим числом ограничений:

restrict 192.168.111.0 mask 255.255.255.0 nomodify notrap

Если требуется запретить доступ к серверу времени, то следует использовать флаг ignore. Далее приведен пример запрета доступа для всех клиентов доменной сети, кроме эмулятора PDC:

restrict 192.168.122.0 mask 255.255.255.0 ignore #доменная сеть
restrict 192.168.122.101 nomodify notrap #PDC

Расположение строк не имеет значения, так как при запуске сервера все адреса будут отсортированы по возрастанию адреса/маски. После внесения изменений следует перезапустить службу:

systemctl restart ntp

Проверить статус можно командой:

systemctl status ntp

Проверка состояния синхронизации с вышестоящими серверами выполняется командой:

ntpq -p

В результате будет выведен следующий результат (Рис. 3.10):

../_images/Setup11.png

Рис. 3.10 Вывод результата команды (ntpq -p)

Символы слева от адреса сервера обозначают следующее:

  • «*» – сервер выбран для синхронизации;
  • «+» – сервер пригодный для синхронизации;
  • «-» – синхронизация с этим сервером не рекомендуется;
  • «x» – сервер недоступен.

Колонка refid - значение, показывающее вышестоящий сервер синхронизации. Колонка offset, значение показывает расхождение часов с эталоном, при положительном значении часы спешат, при отрицательном отстают.

В колонке st указывается stratum - приоритет сервера, delay содержит задержку ответа от сервера.

В приведенном случае служба времени выбрала для синхронизации сервер с приоритетом 1, который синхронизируется от GPS-часов, несмотря на более высокий уровень задержки при работе с ним.

Для разрешения доступа к NTP-серверу в брандмауэре требуется добавить в правила iptables строку:

iptables -A INPUT -p udp --dport 123 -j ACCEPT

При необходимости можно ограничить доступ сетевым интерфейсом:

iptables -A INPUT -i ens33 -p udp --dport 123 -j ACCEPT

Либо подсетью:

iptables -A INPUT -s 192.168.111.0/24 -p udp --dport 123 -j ACCEPT