The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

В рамках проекта NTPsec создан защищённый форк NTPD

19.11.2015 10:09

Эрик Реймонд (Eric S. Raymond), один из основателей организации OSI (Open Source Initiative), стоявший у истоков движения открытого ПО и написавший в свое время известное эссе "Собор и Базар", представил бета-выпуск проекта NTPsec, в рамках которого предпринята попытка проведения рефакторинга эталонной реализации протокола NTPv4. Исходные тексты NTPsec размещены в репозитории на GitLab. NTPsec развивается как форк NTP Classic 4.3.34. Кроме Реймонда к работе над NTPsec привлечены разработчики оригинального NTP Classic, инженеры из компаний Hewlett Packard и Akamai Technologies, а также участники проектов GPSD и RTEMS.

Первый бета-выпуск NTPsec пока содержит не все задуманные возможности, а поддерживаемые платформы ограничены Linux и FreeBSD, но базовая функциональность по синхронизации времени работает вполне стабильно, проект полностью совместим с классическим пакетом NTP и использует те же алгоритмы. Изменения в NTPsec в основном касаются переработки внутренностей с внедрением передовых техник предотвращения проведения атак. Например, все функции работы с памятью и строками заменены на защищённые аналоги, не допускающие переполнения буфера. Поставляемые в комплекте экземпляры libevent2 заменены на внешние зависимости. Удалены неиспользуемые компоненты библиотек ISC. Осуществлён переход к манипуляции наносекундными отрезками времени вместо микросекунд. Исправлены ошибки, выявленные при тестировании в системе Coverity.

Из изменений, заметных пользователю, отмечается переименование утилит с целью унификации их имён (sntp переименован в ntpdig, ntp-keygen в ntpkeygen, ntp-wait в ntpwait, update-leap в ntpleapfetch), удаление демона ntpsnmpd (не соответствует RFC 5907) и утилиты ntpdc (следует использовать ntpq), прекращение поддержки устаревших типов эталонных часов. Добавлена новая утилита ntpfrob, предоставляющая средства для диагностики и тонкой настройки локального хронометра. Вместо программы ntpdate предложена shell-обвязка над утилитой ntpdig. Вывод часов приведён в соответствие с форматом ISO8601.

Из планов на будущее отмечается подготовка полнофункционального тестового набора, чистка кодовой базы от устаревших возможностей, полная поддержка IPv6, переход к модульной системе с выделением подсистемы управления часами в компонент refclockd, который будет отделён от алгоритмов синхронизации времени.

Напомним, что для разрешения ситуации с плачевным уровнем безопасности эталонного NTPD уже предпринято несколько инициатив - OpenNTPD от проекта OpenBSD и Ntimed от организации Network Time Foundation, так же курирующей основной проект NTPD. В обоих проектах переработка NTPD с целью повышения безопасности была признана затруднительной из-за большой раздутости кодовой базы (более 300 тысяч строк), что затрудняет проведение полного аудита и переработку (проще оказалось написать новый NTP-сервер с нуля).

  1. Главная ссылка к новости (http://esr.ibiblio.org/?p=6924...)
  2. OpenNews: Новая атака на NTP позволяет воспользоваться просроченными сертификатами
  3. OpenNews: Проект OpenBSD выпустил NTP-сервер OpenNTPD 5.7p4
  4. OpenNews: Представлен NTP-сервер Ntimed, который будет развиваться параллельно с NTPD
  5. OpenNews: В ntpd выявлена уязвимость, которая может привести к удалённому выполнению кода
  6. OpenNews: Подстановка лишней секунды через NTP была использована для атаки на Linux-системы
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/43350-ntp
Ключевые слова: ntp, ntpsec
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (43) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (-), 12:08, 19/11/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Уж кого, а Реймонда к связанным с безопасностью проектам допускать нельзя.
    До появления proftpd его fetchmail был эталоном дырявого кода и примером наплевательского отношения к безопасности.
    Жаль, что на http://www.fetchmail.info/security.html  дыры до 2005 года не упомянуты, было весело с новым remote code execution каждый месяц.
     
     
  • 2.3, Аноним (-), 12:19, 19/11/2015 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Ещё забавно без лишней скромности написано про Реймондовский GPSD в https://www.ntpsec.org/FAQ.html

    "GPSD has an exceptional record of reliability and security over a decade of literally billions of deployments in mobile and embedded systems ranging from smartphones through life-critical navigation systems to military and aerospace applications. You rely on it every time you use Google Maps.

    Applying that GPSD and RTEMS experience to NTP combines the best in modern high-reliability software engineering with the proven excellence of the NTP Classic core algorithms."

    Еще раз "exceptional record of security", и это при remote root дыре :-)

    http://www.mail-archive.com/debian-bugs-closed@lists.debian.org/msg02103
    http://www.digitalmunition.com/DMA%5B2005-0125a%5D.txt

     
     
  • 3.9, Andrey Mitrofanov (?), 13:10, 19/11/2015 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > "GPSD has an exceptional record of reliability and security over a decade
    > of literally billions of deployments in mobile and embedded systems ranging
    > Еще раз "exceptional record of security", и это при remote root дыре
    > :-)
    > /debian-bugs-closed@lists.debian.org/msg02103.html

    "27 Jan 2005 06:39:22 -0800"
    Формально всё верно же: over a decade, 10 лет и 10 месяцев почти.

     
  • 2.4, DmA (??), 12:21, 19/11/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Он уже это понял и исправляется :)
     
     
  • 3.5, Аноним (-), 12:30, 19/11/2015 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Сомнительно, если участь, что его GPSD обязательно требует запуска с правами root.
    http://www.catb.org/gpsd/gpsd.html
     
     
  • 4.13, Аноним (-), 13:15, 19/11/2015 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Читать не умеете ?

    gpsd must start up as root in order to open the NTPD shared-memory segment, open its logfile, and create its local control socket. Before doing any processing of GPS data, it tries to drop root privileges by setting its UID to "nobody" (or another configured userid) and its group ID to the group of the initial GPS passed on the command line — or, if that device doesn't exist, to the group of /dev/ttyS0.

     
     
  • 5.18, тоже Аноним (ok), 14:15, 19/11/2015 [^] [^^] [^^^] [ответить]  
  • –6 +/
    Я, конечно, не разработчик ядра, но подозреваю, что за программы, которым нужно немножко рута, в сообществе принято бить канделябрами по пальцам.
    Линукс-вэй вроде как предполагает в таких случаях дробить программу на отдельную утилиту, требующую прав рута для конкретной цели и завершающуюся по достижении этой цели, и отдельного демона, который работает от сих до сих, никаких лишних прав изначально не требуя. Разве не так?

    Хинт: "разве не так?" - это не риторический вопрос, а приглашение объяснить, как оно на самом деле, если вы знаете лучше.

     
     
  • 6.20, Forth (ok), 15:50, 19/11/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Ну так оно наверно и есть.
    Открытие требующих рутовых прав файлов/сокетов, затем exec.
     
     
  • 7.21, тоже Аноним (ok), 16:14, 19/11/2015 [^] [^^] [^^^] [ответить]  
  • –2 +/
    "it tries to drop root privileges" как бы намекает, что это не так.
    Особенно "tries" наводит на мысль, что в случае чего демон продолжит работу под рутом.
     
     
  • 8.22, Forth (ok), 16:33, 19/11/2015 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Посмотрел исходники, да, так оно и есть Пытается сменить права, но если не полу... текст свёрнут, показать
     
  • 6.24, XXasd (?), 17:10, 19/11/2015 [^] [^^] [^^^] [ответить]  
  • +/
    > Я, конечно, не разработчик ядра, но подозреваю, что за программы, которым нужно немножко рута, в сообществе принято бить канделябрами по пальцам.

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

    > запуситься о root , инициализировать файловые дискрипторы (сокеты и т п), а затем сбросить с себя все привелегии (в частности -- поменять пользователя) ---

    ---это самый нормальный и безопасный способ. и главное простой как дерево, негде ему сломаться на ровном месте

     
  • 6.25, XXasd (?), 17:11, 19/11/2015 [^] [^^] [^^^] [ответить]  
  • +/
    > Я, конечно, не разработчик ядра, но подозреваю, что за программы, которым нужно немножко рута, в сообществе принято бить канделябрами по пальцам.
    > Линукс-вэй вроде как предполагает в таких случаях дробить программу на отдельную утилиту, требующую прав рута для конкретной цели и завершающуюся по достижении этой цели, и отдельного демона, который работает от сих до сих, никаких лишних прав изначально не требуя. Разве не так?

    запуситься о root , инициализировать файловые дискрипторы (сокеты и т п), а затем сбросить с себя все привелегии (в частности -- поменять пользователя) ---

    ---это самый нормальный и безопасный способ. и главное простой как дерево, негде ему сломаться на ровном месте

     
     
  • 7.28, тоже Аноним (ok), 18:00, 19/11/2015 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Ладно, тогда вопрос дилетанта № 2:
    Если в процессе работы этот самый демон вдруг захочет поднять себе привилегии и открыть еще сокет-другой, всякие там AppArmor-ы будут уверены, что так и надо, не так ли?
     
     
  • 8.29, Forth (ok), 18:04, 19/11/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Что значит захочет man 2 wantrootprivileges No entry for wantrootprivileges... текст свёрнут, показать
     
     
  • 9.30, тоже Аноним (ok), 18:11, 19/11/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Я где-то читал слова переполнение, приводящее к выполнению произвольного кода ... текст свёрнут, показать
     
     
  • 10.32, Forth (ok), 20:17, 19/11/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Наверно, не знаю Мне непонятно как приложение, сделавшее setuid на не 0 может о... текст свёрнут, показать
     
  • 8.33, анонимус вульгарис (?), 22:54, 19/11/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Нет, не так root-привилегии можно сбросить насовсем, безвозвратно, и обычно оно... текст свёрнут, показать
     

  • 1.8, eRIC (ok), 12:44, 19/11/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    ни в коем случае не форкать старый облезлый код ntpd где там несколько сот тысяч строк кода. пишите с нуля как это делают OpenNTPD и Ntimed(http://phk.freebsd.dk/time/20140926.html) с учетом безопасности и простоты.
     
     
  • 2.10, Аноним (-), 13:10, 19/11/2015 [^] [^^] [^^^] [ответить]  
  • +3 +/
    openntpd - простое и безопасное нерабочее г.вно.
     
     
  • 3.26, www2 (??), 17:17, 19/11/2015 [^] [^^] [^^^] [ответить]  
  • +2 +/
    А что там не рабочего?

    Использую на везде вместо ntpd - везде со своей функцией клиента справляется на отлично и никакие порты на прослушивание не открывает.

     
     
  • 4.31, Andrey Mitrofanov (?), 18:21, 19/11/2015 [^] [^^] [^^^] [ответить]  
  • +/
    > Использую на везде вместо ntpd - везде со своей функцией клиента справляется
    > на отлично

    Аналогично, но вот мне указали на первое же предложение на их оф.сайте. И там действительно написано "и сервер тоже".   В фичах, правда, отмазка "насколько это не мешает нашей грозной безопасной безопасности", но это детали.  //На сервере "локалки" ntpd-оригинал.

    > и никакие порты на прослушивание не открывает.

    И да, специально на сайте и на localhost-е перечитал про listen в [его!] man ntpd.conf -- есть listen.

    ...мои глаза![CODE]constraints from "https://www.google.com/search?q=openntpd"[/CODE]

     
     
  • 5.47, Аноним (-), 16:26, 28/11/2015 [^] [^^] [^^^] [ответить]  
  • +/
    >> Использую на везде вместо ntpd - везде со своей функцией клиента справляется
    >> на отлично
    > Аналогично, но вот мне указали на первое же предложение на их оф.сайте.
    > И там действительно написано "и сервер тоже".   В фичах,
    > правда, отмазка "насколько это не мешает нашей грозной безопасной безопасности", но
    > это детали.  //На сервере "локалки" ntpd-оригинал.
    >> и никакие порты на прослушивание не открывает.
    > И да, специально на сайте и на localhost-е перечитал про listen в
    > [его!] man ntpd.conf -- есть listen.
    > ...мои глаза![CODE]constraints from "https://www.google.com/search?q=openntpd"[/CODE]

    О, пришёл Андрюша-слышу-звон-да-не-знаю-где-он.

    Хоть почитали бы, зачем были придуманы эти constraints.

     
  • 4.39, Аноним (-), 09:32, 20/11/2015 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Эпически обсирается если время на сервере и клиенте сильно различается.
    И да обычный ntpd в этой ситуации работает.
     
     
  • 5.46, Аноним (-), 16:25, 28/11/2015 [^] [^^] [^^^] [ответить]  
  • +/
    > Эпически обсирается если время на сервере и клиенте сильно различается.
    > И да обычный ntpd в этой ситуации работает.

    Читать документацию (hint: ключик -s) - не, не слышали.

     
  • 3.34, forsam (?), 23:47, 19/11/2015 [^] [^^] [^^^] [ответить]  
  • +/
    > openntpd - простое и безопасное нерабочее г.вно.

    Дядя маны иногда курить надо, запускаешь # openntpd -s и всё работает

     
     
  • 4.40, Аноним (-), 09:33, 20/11/2015 [^] [^^] [^^^] [ответить]  
  • +/
    > Дядя маны иногда курить надо, запускаешь # openntpd -s и всё работает

    Я тоже так думал. А вот хрен.

     
     
  • 5.48, Аноним (-), 16:26, 28/11/2015 [^] [^^] [^^^] [ответить]  
  • +/
    >> Дядя маны иногда курить надо, запускаешь # openntpd -s и всё работает
    > Я тоже так думал. А вот хрен.

    А конкретнее?

     
  • 3.38, eRIC (ok), 07:56, 20/11/2015 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > openntpd - простое и безопасное нерабочее г.вно.

    вам на заметку что это в "гxвно" добавили опцию дополнительной проверки/ограничения сверки времени с надежными HTTPS ресурсом через TLS. Время из заголовка HTTPS не используются для установки/синхронизации времени, но служит некой дополнительной проверкой NTP сервера для того чтобы исключить нелегитимные/неевалидные NTP сервера... (http://undeadly.org/cgi?action=article&sid=20150325181259)

    почаще читайте OpenBSD Journal :)


     
     
  • 4.41, Аноним (-), 09:34, 20/11/2015 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Еще не хватало чтобы ntp-клиент не пойми куда в интернет лазил.
     
     
  • 5.43, eRIC (ok), 09:45, 20/11/2015 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Еще не хватало чтобы ntp-клиент не пойми куда в интернет лазил.

    а он и не будет пока ты явно не укажешь

     
  • 2.14, Andrey Mitrofanov (?), 13:28, 19/11/2015 [^] [^^] [^^^] [ответить]  
  • +/
    > ни в коем случае не форкать старый облезлый код ntpd где там
    > несколько сот тысяч строк кода. пишите с нуля как это делают
    > OpenNTPD и Ntimed
    >с учетом безопасности и простоты.

    Первый - не сервер, а клиент, cron+ntpdate практически.
    Второй - таки форк/патч/"на поиграться devel" оригинального ntpd.

    Не наблюдаю никакого "как это делают".  Вам, наверное, виднее.

     
     
  • 3.17, Аноним (-), 14:09, 19/11/2015 [^] [^^] [^^^] [ответить]  
  • +/
    > Первый - не сервер, а клиент, cron+ntpdate практически.

    С сайта OpenNTPD: "It provides the ability to sync the local clock to remote NTP servers and can act as NTP server itself, redistributing the local clock.

     
     
  • 4.19, Andrey Mitrofanov (?), 14:24, 19/11/2015 [^] [^^] [^^^] [ответить]  
  • +2 +/
    >> Первый - не сервер, а клиент, cron+ntpdate практически.
    > can act as NTP server
    > itself
    , redistributing the local clock.

    Был не прав, признаю безобразной ошибкой.

     
  • 3.35, Аноним (-), 03:27, 20/11/2015 [^] [^^] [^^^] [ответить]  
  • +/
    >> ни в коем случае не форкать старый облезлый код ntpd где там
    >> несколько сот тысяч строк кода. пишите с нуля как это делают
    >> OpenNTPD и Ntimed
    >>с учетом безопасности и простоты.
    > Первый - не сервер, а клиент, cron+ntpdate практически.
    > Второй - таки форк/патч/"на поиграться devel" оригинального ntpd.
    > Не наблюдаю никакого "как это делают".  Вам, наверное, виднее.

    ntimed интереснее.
    а про "форк на поиграться" так это больше для сабжа.
    криворукий реймонд, впрочем ничего консистентного за десятилетия и юзабельное - так и не создал.

     
     
  • 4.42, Andrey Mitrofanov (?), 09:39, 20/11/2015 [^] [^^] [^^^] [ответить]  
  • +/
    > криворукий реймонд, впрочем ничего консистентного за десятилетия и юзабельное - так и
    > не создал.

    Ну, почему ж, reposurgeon на питончике. В руках одного пользователя оно точно работает. Автора.

    С другой стороны, gpsd есть, собор-базар и ко есть. За созданием новенького чаще чем в десятилетие -- на freedesktop.org, к празднослоняющемуся-в-одиночестве, в комм.сущности типа Мозилы и Хатта. Мало ли "прогрессивных" мест.

     
  • 3.37, eRIC (ok), 07:33, 20/11/2015 [^] [^^] [^^^] [ответить]  
  • +/
    > Второй - таки форк/патч/"на поиграться devel" оригинального ntpd.

    Ntimed не форк, а разрабатываемое с чистого листа замена ntpd от автора Varnish и core разработчика FreeBSD. Доработки конечно требуются, но он в полной мере работоспособный продукт.

     
     
  • 4.45, Аноним (-), 09:08, 21/11/2015 [^] [^^] [^^^] [ответить]  
  • +/
    о чем и речь.
    человеческая синхронизация и автоподстройка - в обоих альтернативах - еще появится не скоро и не факт, к примеру.
     

  • 1.16, Аноним (-), 14:01, 19/11/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    >> ...но базовая функциональность по синхронизации времени работает вполне стабильно...

    Неужели? ))

     
  • 1.36, Аноним (-), 05:01, 20/11/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Ну прям сказка о потерянном времени
     
  • 1.44, Аноним (-), 18:15, 20/11/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Ленарту намекните что пора бы в systemd встроить сервер ntp
     
     
  • 2.49, Вареник (?), 06:19, 04/05/2016 [^] [^^] [^^^] [ответить]  
  • +/
    А также написанные с нуля httpd, ftpd, smtpd, ldapd, etc.
     
  • 2.50, Аноним (-), 19:21, 07/05/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Клиент кстати уже есть, systemd-timesyncd. Настраивается через timedatectl, как заставить его отдельно обновить время по команде, а не по запуску, я как-то не нашёл, приходится руками сервис перезапускать. Ну да для разно
     
  • 2.51, Аноним (-), 19:22, 07/05/2016 [^] [^^] [^^^] [ответить]  
  • +/
    й домашней аппаратуры должно хватить.
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру