Проект OpenBSD выпустил переносимую редакцию OpenNTPD

09.01.2015 07:52

Представлен релиз cервера синхронизации точного времени OpenNTPD 5.7p1, развиваемого проектом OpenBSD. Это первый переносимый выпуск OpenNTPD, рассчитанный на работу в операционных системах отличных от OpenBSD, представленный после длительного перерыва. Прошлая переносимая версия OpenNTPD 3.9p1 вышла в 2006 году, после чего из-за отсутствия интереса к портированию развитие OpenNTPD ограничивалось только платформой OpenBSD. Интерес к работе OpenNTPD на других платформах возродился после выявления критической уязвимости в NTPD и осознания проблематичности повышения качества кода из-за раздутости кодовой базы NTPD. За разработкой переносимой версии можно проследить в зеркале репозитория на GitHub.

OpenNTPD создан в 2004 году для замены демона ntpd, который по лицензионным соображениям пришлось удалить из базовой системы и переместить в порты. Проект обеспечивает поддержку протокола NTP в соответствии с RFC 1305 и RFC 5905, но в отличие от остальных реализаций NTPD развивается с первичной оглядкой на обеспечение безопасности и обладает только самым необходимым набором возможностей (простой и понятный для аудита код). Для дополнительной защиты в OpenNTPD применяется механизм разделения привилегий, разделяющий работу непривилегированного кода обработки сетевых соединений от привилегированного кода установки времени. Демон ntpd запускается в отдельном изолированном chroot-окружении. Реализация кода определения имён через DNS работает в асинхронном режиме, т.е. определение имени будет выполнено даже если демон стартовал в момент, когда не было доступно сетевое соединение.

Поддерживается как синхронизация локального времени с удалённым NTP-сервером, так и работа в роли NTP-сервера, который в том числе может получать точное время от специального оборудования через sensorsd(8). Настройка осуществляется через файл конфигурации ntpd.conf. Работа OpenNTPD 5.7p1 проверена в Linux (Ubuntu 12.04, 14.04), FreeBSD (9.x, 10.x), Solaris (10.x, 11.x) и OS X (10.9).

Особенности новой версии:

  • Переход на новую сборочную инфраструктуру, основанную на наработках переносимых версий OpenSSH и LibreSSL;
  • Исходные тексты интегрированы непосредственно в дерев OpenBSD с внесением небольших ручных изменений, нацеленных на упрощение сопровождения;
  • Удаление поддержки устаревших операционных систем (IRIX, HP-UX, AIX и т.п.), для которых не подтверждена работоспособность OpenNTPD и не обновлён переносимый код;
  • Поддержка протокола SNTPv4 (Simple Network Time Protocol), определённого в RFC 5905;
  • Поддержка виртуализации таблицы маршрутизации (rdomain) для ограничения доступа по сети;
  • Создана утилита ntpctl, позволяющая на лету управлять работой демона ntpd.
  • Более точная корректировка часов, благодаря использованию вызовов adjfreq / ntp_adjtime, если они доступны;
  • Проведена работа по увеличению отзывчивости (latency) на высоко нагруженных системах.