OpenNTPD: Безопасная и простая реализация протокола NTP
OpenNTPD
OpenNTPD: точная синхронизация времени для Unix систем. Безопасный, простой в настройке NTP демон для клиентов и серверов. Портируемая версия OpenBSD NTP.
Сравнивайте с английским: нажмите на абзац — оригинал откроется в окне. Кнопка EN под абзацем показывает его прямо в тексте.
Содержание
Введение
Реализация протокола сетевого времени
Implementation of the Network Time Protocol
OpenNTPD (также известный как OpenBSD NTP Daemon) — это демон Unix, реализующий протокол сетевого времени для синхронизации системного времени компьютера с удалёнными NTP-серверами. Он также способен функционировать как NTP-сервер для NTP-совместимых клиентов. OpenBSD NTP Daemon был первоначально разработан Александром Гаем и Хеннингом Брауэром в рамках проекта OpenBSD, при участии множества других авторов. Основными целями разработки являются безопасность (устойчивость к взлому), простота настройки и достаточная точность для большинства задач. Его переносимая версия, подобно OpenSSH, разрабатывается как отдельный проект, добавляющий код переносимости к версии OpenBSD и выпускающий её независимо. Переносимую версию разрабатывает Брент Кук. Разработчики проекта получают частичное финансирование от Фонда OpenBSD.
OpenNTPD (also known as OpenBSD NTP Daemon) is a Unix daemon implementing the Network Time Protocol to synchronize the local clock of a computer system with remote NTP servers. It is also able to act as an NTP server to NTP compatible clients. OpenBSD NTP Daemon was initially developed by Alexander Guy and Henning Brauer as part of the OpenBSD project, with further help by many authors. Its design goals include being secure (non exploitable), easy to configure, and accurate enough for most purposes. Its portable version, like that of OpenSSH, is developed as a child project which adds the portability code to the OpenBSD version and releases it separately. The portable version is developed by Brent Cook. The project developers receive some funding from the OpenBSD Foundation.
История
Разработка OpenNTPD была обусловлена сочетанием проблем, существующих в современных NTP-демонах: сложная настройка, запутанный и трудно поддающийся проверке код, а также неподходящая лицензия. OpenNTPD был разработан для решения этих проблем и обеспечения доступности синхронизации времени для более широкого круга пользователей. После определенного периода разработки OpenNTPD впервые был включен в OpenBSD 3.6. Объявление о первом выпуске состоялось 2 ноября 2004 года.
The development of OpenNTPD was motivated by a combination of issues with current NTP daemons: difficult configuration, complicated and difficult to audit code, and unsuitable licensing. OpenNTPD was designed to solve these problems and make time synchronization accessible to a wider userbase. After a period of development, OpenNTPD first appeared in OpenBSD 3.6. Its first release was announced on 2 November 2004.
Голы
OpenNTPD – это попытка команды OpenBSD создать реализацию демона NTP, которая была бы безопасной, простой для проверки, легко настраиваемой и администрируемой, достаточно точной и не требовательной к системным ресурсам. Таким образом, основные цели разработки OpenNTPD – это безопасность, простота использования и производительность. Безопасность в OpenNTPD обеспечивается за счет надежной проверки достоверности входящих сетевых данных, использования операций с буферами ограниченного размера через strlcpy и разделения привилегий для снижения последствий возможных уязвимостей, которые могут быть использованы для повышения привилегий. Чтобы упростить использование NTP, OpenNTPD реализует меньший набор функций, чем другие NTP-демоны, например, демон, предоставляемый проектом Network Time Protocol Project. Цель состоит в том, чтобы предоставить достаточно функций для типичных сценариев использования, рискуя тем, что он может не подойти для специфических или узкоспециализированных задач. OpenNTPD настраивается через файл конфигурации ntpd.conf. Предлагается минимальное количество опций: IP-адрес или имя хоста, на котором OpenNTPD должен прослушивать, используемое устройство измерения времени и набор серверов, с которых будет выполняться синхронизация времени. Точность OpenNTPD обеспечивается по мере возможности; демон стремится быть максимально точным, но конкретная точность не гарантируется.
OpenNTPD is an attempt by the OpenBSD team to produce an NTP daemon implementation that is secure, simple to audit, trivial to set up and administer, reasonably accurate, and light on system resources. As such, the design goals for OpenNTPD are: security, ease of use, and performance. Security in OpenNTPD is achieved by robust validity check in the network input path, use of bounded buffer operations via strlcpy, and privilege separation to mitigate the effects of possible security bugs exploiting the daemon through privilege escalation. In order to simplify the use of NTP, OpenNTPD implements a smaller set of functionalities than those available in other NTP daemons, such as that provided by the Network Time Protocol Project. The objective is to provide enough features to satisfy typical usage at the risk of unsuitability for esoteric or niche requirements. OpenNTPD is configured through the configuration file, ntpd. conf. A minimal number of options are offered: IP address or hostname on which OpenNTPD should listen, a timedelta sensor device to be used, and the set of servers from which the time will be synchronized. The accuracy of OpenNTPD is best effort; the daemon attempts to be as accurate as possible but no specific accuracy is guaranteed.
Критика
OpenNTPD подвергается критике как менее точный, чем NTP-демон, разработанный проектом NTP (ntp.org). Внутри OpenNTPD не обеспечивается точность до миллисекунд и может отклоняться от "реального" времени на 50–200 мс, поскольку в целях упрощения кода он исключает ряд алгоритмов, повышающих точность. Проект OpenNTPD признал эту критику, но заявил, что отсутствие точности до микросекунд является намеренным компромиссом, обеспечивающим простоту и безопасность. В сентябре 2004 года, вскоре после выхода OpenNTPD 3.6, участник проекта ntp.org Брэд Ноулз опубликовал статью под названием «OpenNTPd Considered Harmful», в которой критиковал различные аспекты реализации протокола NTP в OpenNTPD, а также модель раздельной разработки, используемую в проекте, которая также применяется при разработке OpenSSH и OpenBGPD. В декабре 2004 года Даррен Такер, ведущий разработчик портативной ветви OpenNTPD, написал подробный ответ Ноулзу, признав некоторые проблемы обоснованными, отклонив другие как необоснованные и посчитав третьи вводящими в заблуждение. Одной из наиболее серьезных проблем, поднятых Ноулзом, было то, что серверы OpenNTPD заявляли о себе как о серверах первого уровня (stratum 1). Однако к моменту ответа Такера эта проблема уже была решена. В марте 2005 года Ноулз признал ответ Такера и заявил, что "приложит все усилия, чтобы сотрудничать с ним для решения любых оставшихся вопросов". Кроме того, раздел часто задаваемых вопросов по сетевым технологиям OpenBSD был расширен в ответ на первоначальную критику Ноулза. Согласно презентации 21C3 2004 года, текущая заявленная точность OpenNTPD составляет "обычно 50 мс".
OpenNTPD has been criticized as being less accurate than the NTP daemon produced by the NTP Project (ntp. org). Internally, OpenNTPD does not maintain millisecond accuracy and can vary 50 200ms from "real" time because it omits a variety of algorithms that increase accuracy in favour of code simplicity. The OpenNTPD project acknowledged the criticism, but stated that the lack of microsecond precision was a design tradeoff that benefited simplicity and security. In September 2004, shortly after the release of OpenNTPD 3.6, ntp. org contributor Brad Knowles published an article entitled OpenNTPd Considered Harmful criticizing various aspects of OpenNTPD's implementation of the NTP protocol, as well as the split development model that the project employs, which is also used in the development of OpenSSH and OpenBGPD. In December 2004, Darren Tucker, the principal developer on the portable branch of OpenNTPD, wrote a detailed response to Knowles, acknowledging some issues as valid, rejecting several others as unwarranted, and considering yet others as misleading. Among the more serious issues raised by Knowles was that OpenNTPD servers claimed to be stratum 1 servers. The issue had however already been fixed by the time of Tucker's response. In March 2005, Knowles acknowledged Tucker's response, and stated that he was "going to do everything [he could] to work with [Tucker] to get any remaining issues resolved". Additionally, the OpenBSD networking FAQ was expanded with a response to Knowles' initial criticism. The current OpenNTPD accuracy claim is, from the 2004 21C3 presentation, "typically 50 ms".
Скольцевые секунды
OpenNTPD (и ядро OpenBSD) игнорируют скачковые секунды. Необходимо соблюдать осторожность при использовании OpenNTPD в качестве источника более высокого стратума для других серверов ntpd или в системах с высокими требованиями к точности времени, использующих Координированное универсальное время. Скачковые секунды применяются в Координированном универсальном времени, но не в Международном атомном времени или сигналах времени Глобальной системы позиционирования. Точность в 50 мс также не характерна для источника с высоким стратумом. Морская обсерватория США и Международное бюро мер и весов рекомендуют, чтобы системы, не реализующие скачковые секунды, ориентировались на Международное атомное время или непосредственно на сигналы времени GPS. Однако ни одна из текущих версий NTP (по состоянию на 2023 год) не поддерживает временные шкалы, отличные от UTC.
OpenNTPD (and the OpenBSD kernel) ignore leap seconds. Care should be taken when using OpenNTPD as a higher stratum source for other ntpd servers, or with high resolution time requirements that reference Coordinated Universal Time. Leap seconds are used in Coordinated Universal Time, but not International Atomic Time or Global Positioning System time signals. The 50 ms accuracy is also not typical of a high stratum source. The United States Naval Observatory and the Bureau International des Poids et Mesures recommends that systems not implementing leap seconds be referenced to International Atomic Time, or directly to GPS time signals. However, no current version of NTP (as of 2023) supports non UTC time scales.