URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 105608
[ Назад ]

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

Отправлено opennews , 19-Ноя-15 12:08 
Эрик Реймонд (Eric S. Raymond), один из основателей организации OSI (Open Source Initiative), стоявший у истоков движения открытого ПО и написавший в свое время известное эссе "Собор и Базар", представил (http://esr.ibiblio.org/?p=6924) бета-выпуск проекта NTPsec (https://www.ntpsec.org/), в рамках которого предпринята попытка проведения рефакторинга эталонной реализации протокола NTPv4 (http://www.ntp.org/). Исходные тексты NTPsec размещены (https://gitlab.com/NTPsec/ntpsec) в репозитории на GitLab. NTPsec развивается (https://www.ntpsec.org/announcement.html) как форк NTP Classic 4.3.34.  Кроме Реймонда к работе над NTPsec привлечены (https://www.ntpsec.org/core-team.html) разработчики оригинального
NTP Classic, инженеры из компаний Hewlett Packard и Akamai Technologies, а также участники проектов GPSD (http://www.catb.org/gpsd/) и RTEMS (https://www.rtems.org/).


Первый бета-выпуск  NTPsec пока содержит не все задуманные возможности, а поддерживаемые платформы ограничены Linux и FreeBSD, но базовая функциональность по синхронизации времени работает вполне стабильно, проект полностью совместим с классическим пакетом NTP и использует те же алгоритмы. Изменения (https://gitlab.com/NTPsec/ntpsec/blob/master/NEWS) в NTPsec в основном касаются переработки внутренностей (https://www.ntpsec.org/accomplishments.html) с внедрением передовых техник предотвращения проведения атак. Например, все функции работы  с памятью и строками заменены на защищённые аналоги, не допускающие переполнения буфера. Поставляемые в комплекте экземпляры  libevent2 заменены на внешние зависимости. Удалены неиспользуемые компоненты библиотек ISC. Осуществлён переход к манипуляции наносекундными отрезками времени вместо микросекунд. Исправлены ошибки, выявленные при тестировании в системе Coverity.


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


Из планов на будущее отмечается подготовка полнофункционального тестового набора, чистка кодовой базы от устаревших возможностей (https://www.ntpsec.org/removal-plan.html), полная поддержка IPv6, переход к модульной системе с выделением подсистемы  управления часами в компонент refclockd, который будет отделён от алгоритмов синхронизации времени.

Напомним, что для разрешения ситуации  с плачевным (https://www.opennet.me/opennews/art.shtml?num=41309) уровнем безопасности эталонного NTPD уже предпринято несколько инициатив - OpenNTPD (https://www.opennet.me/opennews/art.shtml?num=41419) от проекта OpenBSD и Ntimed (https://www.opennet.me/opennews/art.shtml?num=41318) от организации Network Time Foundation (http://nwtime.org/projects/ntimed/), так же курирующей основной проект NTPD. В обоих переработка NTPD с целью повышения безопасности была признана затруднительной из-за большой раздутости кодовой базы (более 300 тысяч строк), проведение полного аудита и переработка которой слишком трудоёмкая задача.

URL: http://esr.ibiblio.org/?p=6924
Новость: http://www.opennet.me/opennews/art.shtml?num=43350


Содержание

Сообщения в этом обсуждении
"В рамках проекта NTPsec создан защищённый форк NTPD"
Отправлено Аноним , 19-Ноя-15 12:08 
Уж кого, а Реймонда к связанным с безопасностью проектам допускать нельзя.
До появления proftpd его fetchmail был эталоном дырявого кода и примером наплевательского отношения к безопасности.
Жаль, что на http://www.fetchmail.info/security.html  дыры до 2005 года не упомянуты, было весело с новым remote code execution каждый месяц.

"В рамках проекта NTPsec создан защищённый форк NTPD"
Отправлено Аноним , 19-Ноя-15 12:19 
Ещё забавно без лишней скромности написано про Реймондовский 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.de...
http://www.digitalmunition.com/DMA%5B2005-0125a%5D...


"В рамках проекта NTPsec создан защищённый форк NTPD"
Отправлено Andrey Mitrofanov , 19-Ноя-15 13:10 
> "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 месяцев почти.


"В рамках проекта NTPsec создан защищённый форк NTPD"
Отправлено DmA , 19-Ноя-15 12:21 
Он уже это понял и исправляется :)

"В рамках проекта NTPsec создан защищённый форк NTPD"
Отправлено Аноним , 19-Ноя-15 12:30 
Сомнительно, если участь, что его GPSD обязательно требует запуска с правами root.
http://www.catb.org/gpsd/gpsd.html

"В рамках проекта NTPsec создан защищённый форк NTPD"
Отправлено Аноним , 19-Ноя-15 13:15 
Читать не умеете ?

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.


"В рамках проекта NTPsec создан защищённый форк NTPD"
Отправлено тоже Аноним , 19-Ноя-15 14:15 
Я, конечно, не разработчик ядра, но подозреваю, что за программы, которым нужно немножко рута, в сообществе принято бить канделябрами по пальцам.
Линукс-вэй вроде как предполагает в таких случаях дробить программу на отдельную утилиту, требующую прав рута для конкретной цели и завершающуюся по достижении этой цели, и отдельного демона, который работает от сих до сих, никаких лишних прав изначально не требуя. Разве не так?

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


"В рамках проекта NTPsec создан защищённый форк NTPD"
Отправлено Forth , 19-Ноя-15 15:50 
Ну так оно наверно и есть.
Открытие требующих рутовых прав файлов/сокетов, затем exec.

"В рамках проекта NTPsec создан защищённый форк NTPD"
Отправлено тоже Аноним , 19-Ноя-15 16:14 
"it tries to drop root privileges" как бы намекает, что это не так.
Особенно "tries" наводит на мысль, что в случае чего демон продолжит работу под рутом.

"В рамках проекта NTPsec создан защищённый форк NTPD"
Отправлено Forth , 19-Ноя-15 16:33 
> "it tries to drop root privileges" как бы намекает, что это не
> так.
> Особенно "tries" наводит на мысль, что в случае чего демон продолжит работу
> под рутом.

Посмотрел исходники, да, так оно и есть.
Пытается сменить права, но если не получилось - продолжит работу.
Правда это самое не получилось маловероятно. Разве что ему неправильный GPSD_USER скормили, ну это по идее проблема админа :)
Хотя я в таких случаях завершаю работу приложения, если оно чего-то такого критичного не смогло сделать.


"В рамках проекта NTPsec создан защищённый форк NTPD"
Отправлено XXasd , 19-Ноя-15 17:10 
> Я, конечно, не разработчик ядра, но подозреваю, что за программы, которым нужно немножко рута, в сообществе принято бить канделябрами по пальцам.

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

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

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


"В рамках проекта NTPsec создан защищённый форк NTPD"
Отправлено XXasd , 19-Ноя-15 17:11 
> Я, конечно, не разработчик ядра, но подозреваю, что за программы, которым нужно немножко рута, в сообществе принято бить канделябрами по пальцам.
> Линукс-вэй вроде как предполагает в таких случаях дробить программу на отдельную утилиту, требующую прав рута для конкретной цели и завершающуюся по достижении этой цели, и отдельного демона, который работает от сих до сих, никаких лишних прав изначально не требуя. Разве не так?

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

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


"В рамках проекта NTPsec создан защищённый форк NTPD"
Отправлено тоже Аноним , 19-Ноя-15 18:00 
Ладно, тогда вопрос дилетанта № 2:
Если в процессе работы этот самый демон вдруг захочет поднять себе привилегии и открыть еще сокет-другой, всякие там AppArmor-ы будут уверены, что так и надо, не так ли?

"В рамках проекта NTPsec создан защищённый форк NTPD"
Отправлено Forth , 19-Ноя-15 18:04 
> Ладно, тогда вопрос дилетанта № 2:
> Если в процессе работы этот самый демон вдруг захочет поднять себе привилегии
> и открыть еще сокет-другой, всякие там AppArmor-ы будут уверены, что так
> и надо, не так ли?

Что значит "захочет"?
$ man 2 wantrootprivileges
No entry for wantrootprivileges in section 2 of the manual

:(


"В рамках проекта NTPsec создан защищённый форк NTPD"
Отправлено тоже Аноним , 19-Ноя-15 18:11 
Я где-то читал слова "переполнение, приводящее к выполнению произвольного кода" и таки "повышение привилегий", встречающиеся если не в одном предложении, то в соседних.
Я неправильно сложил этот пазл?

"В рамках проекта NTPsec создан защищённый форк NTPD"
Отправлено Forth , 19-Ноя-15 20:17 
> Я где-то читал слова "переполнение, приводящее к выполнению произвольного кода" и таки
> "повышение привилегий", встречающиеся если не в одном предложении, то в соседних.
> Я неправильно сложил этот пазл?

Наверно, не знаю.
Мне непонятно как приложение, сделавшее setuid на не 0 может обратно вернуться на root.


"В рамках проекта NTPsec создан защищённый форк NTPD"
Отправлено анонимус вульгарис , 19-Ноя-15 22:54 
> Если в процессе работы этот самый демон вдруг захочет поднять себе привилегии и открыть еще сокет-другой, всякие там AppArmor-ы будут уверены, что так и надо, не так ли?

Нет, не так. root-привилегии можно сбросить насовсем, безвозвратно, и обычно оно так и делается. См. setresuid(2)


"В рамках проекта NTPsec создан защищённый форк NTPD"
Отправлено eRIC , 19-Ноя-15 12:44 
ни в коем случае не форкать старый облезлый код ntpd где там несколько сот тысяч строк кода. пишите с нуля как это делают OpenNTPD и Ntimed(http://phk.freebsd.dk/time/20140926.html) с учетом безопасности и простоты.

"В рамках проекта NTPsec создан защищённый форк NTPD"
Отправлено Аноним , 19-Ноя-15 13:10 
openntpd - простое и безопасное нерабочее г.вно.

"В рамках проекта NTPsec создан защищённый форк NTPD"
Отправлено www2 , 19-Ноя-15 17:17 
А что там не рабочего?

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


"В рамках проекта NTPsec создан защищённый форк NTPD"
Отправлено Andrey Mitrofanov , 19-Ноя-15 18:21 
> Использую на везде вместо ntpd - везде со своей функцией клиента справляется
> на отлично

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

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

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

...мои глаза!

constraints from "https://www.google.com/search?q=openntpd"


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

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

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


"В рамках проекта NTPsec создан защищённый форк NTPD"
Отправлено Аноним , 20-Ноя-15 09:32 
Эпически обсирается если время на сервере и клиенте сильно различается.
И да обычный ntpd в этой ситуации работает.

"В рамках проекта NTPsec создан защищённый форк NTPD"
Отправлено Аноним , 28-Ноя-15 16:25 
> Эпически обсирается если время на сервере и клиенте сильно различается.
> И да обычный ntpd в этой ситуации работает.

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


"В рамках проекта NTPsec создан защищённый форк NTPD"
Отправлено forsam , 19-Ноя-15 23:47 
> openntpd - простое и безопасное нерабочее г.вно.

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


"В рамках проекта NTPsec создан защищённый форк NTPD"
Отправлено Аноним , 20-Ноя-15 09:33 
> Дядя маны иногда курить надо, запускаешь # openntpd -s и всё работает

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


"В рамках проекта NTPsec создан защищённый форк NTPD"
Отправлено Аноним , 28-Ноя-15 16:26 
>> Дядя маны иногда курить надо, запускаешь # openntpd -s и всё работает
> Я тоже так думал. А вот хрен.

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


"В рамках проекта NTPsec создан защищённый форк NTPD"
Отправлено eRIC , 20-Ноя-15 07:56 
> openntpd - простое и безопасное нерабочее г.вно.

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

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



"В рамках проекта NTPsec создан защищённый форк NTPD"
Отправлено Аноним , 20-Ноя-15 09:34 
Еще не хватало чтобы ntp-клиент не пойми куда в интернет лазил.

"В рамках проекта NTPsec создан защищённый форк NTPD"
Отправлено eRIC , 20-Ноя-15 09:45 
> Еще не хватало чтобы ntp-клиент не пойми куда в интернет лазил.

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


"В рамках проекта NTPsec создан защищённый форк NTPD"
Отправлено Andrey Mitrofanov , 19-Ноя-15 13:28 
> ни в коем случае не форкать старый облезлый код ntpd где там
> несколько сот тысяч строк кода. пишите с нуля как это делают
> OpenNTPD и Ntimed
>с учетом безопасности и простоты.

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

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


"В рамках проекта NTPsec создан защищённый форк NTPD"
Отправлено Аноним , 19-Ноя-15 14:09 
> Первый - не сервер, а клиент, 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.


"В рамках проекта NTPsec создан защищённый форк NTPD"
Отправлено Andrey Mitrofanov , 19-Ноя-15 14:24 
>> Первый - не сервер, а клиент, cron+ntpdate практически.
> can act as NTP server
> itself
, redistributing the local clock.

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


"В рамках проекта NTPsec создан защищённый форк NTPD"
Отправлено Аноним , 20-Ноя-15 03:27 
>> ни в коем случае не форкать старый облезлый код ntpd где там
>> несколько сот тысяч строк кода. пишите с нуля как это делают
>> OpenNTPD и Ntimed
>>с учетом безопасности и простоты.
> Первый - не сервер, а клиент, cron+ntpdate практически.
> Второй - таки форк/патч/"на поиграться devel" оригинального ntpd.
> Не наблюдаю никакого "как это делают".  Вам, наверное, виднее.

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


"В рамках проекта NTPsec создан защищённый форк NTPD"
Отправлено Andrey Mitrofanov , 20-Ноя-15 09:39 
> криворукий реймонд, впрочем ничего консистентного за десятилетия и юзабельное - так и
> не создал.

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

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


"В рамках проекта NTPsec создан защищённый форк NTPD"
Отправлено eRIC , 20-Ноя-15 07:33 
> Второй - таки форк/патч/"на поиграться devel" оригинального ntpd.

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


"В рамках проекта NTPsec создан защищённый форк NTPD"
Отправлено Аноним , 21-Ноя-15 09:08 
о чем и речь.
человеческая синхронизация и автоподстройка - в обоих альтернативах - еще появится не скоро и не факт, к примеру.

"В рамках проекта NTPsec создан защищённый форк NTPD"
Отправлено Аноним , 19-Ноя-15 14:01 
>> ...но базовая функциональность по синхронизации времени работает вполне стабильно...

Неужели? ))


"В рамках проекта NTPsec создан защищённый форк NTPD"
Отправлено Аноним , 20-Ноя-15 05:01 
Ну прям сказка о потерянном времени

"В рамках проекта NTPsec создан защищённый форк NTPD"
Отправлено Аноним , 20-Ноя-15 18:15 
Ленарту намекните что пора бы в systemd встроить сервер ntp

"В рамках проекта NTPsec создан защищённый форк NTPD"
Отправлено Вареник , 04-Май-16 06:19 
А также написанные с нуля httpd, ftpd, smtpd, ldapd, etc.

"В рамках проекта NTPsec создан защищённый форк NTPD"
Отправлено Аноним , 07-Май-16 19:21 
Клиент кстати уже есть, systemd-timesyncd. Настраивается через timedatectl, как заставить его отдельно обновить время по команде, а не по запуску, я как-то не нашёл, приходится руками сервис перезапускать. Ну да для разно

"В рамках проекта NTPsec создан защищённый форк NTPD"
Отправлено Аноним , 07-Май-16 19:22 
й домашней аппаратуры должно хватить.