Апр 152022
 

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

Что нам для этого понадобится:
1. Дистрибутив Debian (достаточно x86, ресурсов эта машина будет потреблять минимум);
2. Доступ к Интернету;
3. Прямые руки.

И так, первое что мы должны сделать, после установки системы (этот момент пропускаем, надеюсь Вы это знаете как делать), это проверяем правильность настройки часового пояса, если Вы это не сделали при установке ОС.

dpkg-reconfigure tzdata

Данную и все последующие команды следует выполнять с правами суперпользователя
Обязательно перед установкой пакетов, необходимо их обновить, поэтому незамедлительно обновляем

apt-get update
apt-get upgrade

Устанавливаем пакет NTP

 apt-get install ntp

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

nano /etc/ntp.conf

Заменяем источники времени используемых по умолчанию на разные, так мы добьёмся как минимум гарантированного получения данных.
А так же используем опцию iburst и prefer, где,
iburst — поможет увеличить точность синхронизации, то есть указать то, что на сервер необходимо отправлять несколько пакетов вместо одного.
prefer — приоритет источнику времени будет отдаваться именно этому, если вы точно знаете, что этот сервер находится ближе всего к вашему.

server ntp2.stratum2.ru iburst prefer
server ntp.msk-ix.ru iburst
server 2.debain.pool.ntp.org iburst
server 1.ubuntu.pool.ntp.org iburst

Если совсем все плохо, и наш сервер перестал получать время от источников в интернете, то мы можем синхронизироваться с аппаратными часами самого сервера, на чем у нас установлен Debian
!!Внимание!!
Строго не рекомендуется использовать эти команды, если ОС развернута на виртуальной машине, та как, в связи с особенностью этого механизма, результат получения времени может быть не предсказуем.

Добавлем в этот же конфиг файл команды:

server 127.127.1.0
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 -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

Расположение строк не имеет значения, так как при запуске сервера все адреса будут отсортированы по возрастанию адреса/маски.
На этом конфигурацию сервера можно считать законченной, и необходимо убедиться в ее правильности. Для этого, нужно перезапустить службу NTP

systemctl restart ntp

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

systemctl status ntp

Состояние синхронизации с вышестоящими серверами можно узнать командой:

ntpq -p

На что следует обратить внимание в полях вывода информации:

* — сервер выбран для синхронизации
+ — сервер пригодный для синхронизации
— синхронизация с этим сервером не рекомендуется
x — сервер недоступен
Затем на колонку refid — показывающее вышестоящий сервер синхронизации и колонку offset, которое показывает расхождение ваших часов с эталоном, при положительном значении наши часы спешат, при отрицательном отстают.
В колонке st указывается stratum — приоритет сервера, а delay содержит задержку ответа от сервера.

Установить источник времени для синхронизации на сервере можно командой:

ntpdate -u 192.168.111.1

Проверить статус синхронизации:

ntpdc -c sysinfo

Ну и на последок, не забываем, что у нас есть такой инструмент защиты как sfw и iptables
Ограничение по порту:

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

Ограничение по сетевому интерфейсу ens33:

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

Полезные ссылки:
Настройка NTP-сервера в Debian или Ubuntu
Как установить и настроить NTP-сервер

 Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

(required)

(required)