LINUX.ORG.RU

Systemd 194, теперь с HTTP-сервером и генератором QR-кодов

 


3

3

Выход очередной версии init-демона systemd продолжает радовать пользователей новыми встроенными функциями.

В частности:

  • опция HandleSleepKey в logind.conf была разбита на HandleSuspendKey и HandleHibernateKey, старая опция более не доступна;
  • почти полностью удалена утилита multi-seat-x, минимальная обертка оставлена до тех пор, пока DM не начнут поддерживать новую логику перечисления графических устройств Xorg;
  • nspawn теперь создает символическую ссылку /etc/localtime в окружении контейнера;
  • исправлено поведение при отсутствии /etc/vconsole.conf, теперь в этом случае не будет загружаться никакой шрифт;
  • journald теперь пишет в лог максимальный размер, который файлы журнала могут занимать на диске;
  • опция параметра journalctl -n теперь необязательна и по умолчанию равна 10;
  • journalctl -f теперь реагирует на изменение размеров терминала и разбивает строки соответственно;
  • новая опция --cursor в journalctl позволяет выводить записи начиная с определенного места журнала;
  • добавлена поддержка journalctl для bash-completion.

Но две функции привлекли особое внимание. Их заметили пользователи федоры, которые при обновлении обнаружили, что systemd теперь зависит от libmicrohttpd и qrencode. Это стало причиной активно продолжающегося обсуждения в рассылке.

Оказалось, что обе функции связаны с journald — собственной заменой syslog-демона, как известно, входящей в состав systemd. Среди прочего, он отличается тем, что ведет логи в бинарном виде вместо текстового.

Зависимость от qrencode объясняется реализацией функции Forward Secure Sealing, journalctl из состава systemd использует qrencode для вывода QR-кодов в текстовой консоли.

А поскольку логи хранятся бинарно, для работы с ними нужны дополнительные программы. Зависимость от libmicrohttpd вызвана тем, что в состав systemd теперь входит встроенный http-сервер journald-gateway, умеющий отдавать логи в текстовом и json-формате. Его основное предназначение автор видит в синхронизации журнала по сети.

Так выглядит http-сервер journald-gateway в действии

>>> Леннарт про FSS и QR-код

anonymous

Проверено: JB ()
Последнее исправление: Silent (всего исправлений: 3)

Ответ на: комментарий от vasily_pupkin

http://lwn.net/Articles/512895/
Почитай обсуждение, например, если мой пост тебе был не понятен

Отличная ссылка, спасибо.

Пока что эта статья подтверждает мою идею про откусывание хвоста:

By default, FSS will seal the logs every 15 minutes... The default value surprisingly leaves a rather large window for an attacker who immediately turns to altering the log file, though.

Плюс добавили ещё какую-то глупость про зависимость от времени, т.е. перевод часов ntpd-демоном убивает логи (в общем-то, это в духе Леннарта).

Но зато в ней же первым комментарием:

те, кто интересуется подобными вещами, могут также заинтересоваться утилитами logstore от автора rsyslog: http://www.rsyslog.com/logtools-0-1-0-released/ Ведётся работа по добавлению к нему цифровых подписей http://www.logtools.org/logstore-digital-signatures/ Их преимущество в том, что они могут работать с любым log-файлом и не привязаны к конкретному формату.

А дальше в комментах народ угадывает, как именно это заявление могло бы быть реализовано. Как оно сделано на самом деле там тоже никто не знает.

Дело в том, что Леннарт сам плохо разбирается в криптографии. Он уже однажды заявлял, что добавил в логи контрольные суммы, и теперь их нельзя изменить. В ответ кто-то (кажется, автор rsyslog-а) его тогда прилично опустил, показав на пальцах, почему это не работает и почему можно просто перестроить контрольные суммы так, чтобы всё выглядело валидным. Этот FSS — его очередная попытка сделать то же самое, но иначе. Как бы она не оказалась такой же провальной...

anonymous
()
Ответ на: комментарий от anonymous

перевод часов ntpd-демоном

ntpd демон не переводит часы. По крайней мере назад

А дальше в комментах народ угадывает, как именно это заявление могло бы быть реализовано. Как оно сделано на самом деле там тоже никто не знает.

journal-authenticate.c

Дело в том, что Леннарт сам плохо разбирается в криптографии.

Если он не смог корректно забыдлокодить такую простую схему, то, думаю, беда :)

Как бы она не оказалась такой же провальной...

Можно просто сделать ревью. Но это скучно

vasily_pupkin ★★★★★
()
Ответ на: комментарий от anonymous

Пока что эта статья подтверждает мою идею про откусывание хвоста

Не, это другое. Но да, в диапазоне действия ключа лог можно коцать

vasily_pupkin ★★★★★
()
Ответ на: комментарий от tailgunner

Какие-то подростковые понты. Всё сводится к «We don’t care. We make Arch for ourselves».

Во-первых, он вполне имеет право так сказать.

Во-вторых, перед этим заявлением он нормально объясняет, почему systemd не так страшен, как может показаться на первый взгляд (хотя я все-таки в печали).

amix ★★★
()
Ответ на: комментарий от jackill

Ну вот мне понадобилась пульса - прикрутить скайп на серваке чтобы приделать его к астериску. «Классическое» решение - компеляция модуля ядра который делает фейковый oss. в pulse оказалось очень просто завернуть ввод и вывод звука на null. с альсой подобное сделать вообще не реально оказалось. вывод - пульса рулит.

farafonoff ★★
()
Ответ на: комментарий от vasily_pupkin

Так это региональное время. UTC один для всех

т.е. мне достаточно суметь сделать date -s ...go_to_future... и система, вернув по ntp правильное время, сдохнет?

anonymous
()
Ответ на: комментарий от anonymous

То, что ключ сохранен у админа в мобильнике. И его смена автоматически означает необходимость поднять логи с резервного сервера и разбираться (а лучше найти уязвимость и накатить всю систему из бэкапа)

farafonoff ★★
()
Ответ на: комментарий от anonymous

Если ты под системой понимаешь проверку логов на целостность, то я не знаю. Вообще там вроде используется монотонный таймер, но в детали я не углублялся

vasily_pupkin ★★★★★
()
Ответ на: комментарий от anonymous

вот незадача. В сислог (лично я) пишу по удп, и он срет на диск ровно то что я присылаю. Пришлю бинарный мусор - записывает бинарный мусор. С этим нельзя сделать ничего. Потом ты сделаешь cat этого лога, и он сломает тебе консоль.

farafonoff ★★
()

Что-то никак не пойму откуда столько баттхерта в теме. Для локалхоста хватит любой системы логов, хотя возможно со временем из этого комплекса программ будет своя польза. А на серьезном сервере уже все надо серьезно настраивать под свои нужды свои средствами — и довольно глупо негодовать из-за появления еще одной альтернативы. (по крайней мере так видно проблему с моей колокольни админа личного ноутбука)

Ustin
()
Ответ на: комментарий от anonymous

Очевидно, это на то далекое будущее когда в линуксе будет подписывание бинарников и реальное разделение привилегий.

farafonoff ★★
()
Ответ на: комментарий от farafonoff

То, что ключ сохранен у админа в мобильнике.

в iPad

И его смена автоматически означает необходимость поднять логи с резервного сервера и разбираться (а лучше найти уязвимость и накатить всю систему из бэкапа)

если таки есть резервный сервер с логами, то нах^Wзачем все эти танцы с seal-ключами, если простой контрольной суммы достаточно?

anonymous
()
Ответ на: комментарий от anonymous

Чаще всего оказывается что косяки не в моей системе, но с кейсами все равно надо разбираться. Бывают аппаратные проблемы, провайдерские проблемы, кривые руки юзеров.

farafonoff ★★
()
Ответ на: комментарий от farafonoff

Очевидно, это на то далекое будущее когда в линуксе будет подписывание бинарников и реальное разделение привилегий.

«будет»? «далекое будущее»? вылазь из криокамеры, а то совсем протухнешь.

anonymous
()
Ответ на: комментарий от farafonoff

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

вот горе-то какое! ну, замени все не-буквы и не-цифры на точки (10 секунд делов).

anonymous
()
Ответ на: комментарий от farafonoff

потому что ключ это и есть контрольная сумма

а все эти гапаки и прочий акробатический рок-н-ролл в противогазе нахрена?

anonymous
()
Ответ на: комментарий от vasily_pupkin

Ключ для маркировки != значение маркера. Думай об этом как о хешировании. Т.е. из записи в журнале ты состояние ГПСЧ в тот момент времени не полуичишь

А как именно выполняется маркировка? Там в статье в комментариях несколько раз упоминалось, что цифровые подписи они не используют. Вот поэтому я и хочу увидеть документацию.

Я тоже могу придумать, как это можно было бы сделать. Чорт, я могу прикрутить такую фичу к любому сислогу одной строчкой на bash! Но мне интересно, как это сделано на самом деле.

Даже если предположить, что оно действительно работает, работает идеально и не содержит дурацких ошибок в духе Леннарта, бинарный формат логов всё равно портит всю картину. Хакер делает так:
1. Убивает journald
2. Удаляет из сислога подозрительные записи
3. Портит все маркеры во всех логах
4. Троянит libjournal, чтобы она по запросу verify делала вид, что всё нормально, а заодно чтобы она не писала следующие заходы хакера в лог
5. Запускает journald обратно
Всё это выполняется скриптом за секунду.

Для админа выглядит так, словно в логах всё нормально. При просмотре логов глазами он тоже ничего подозрительного не заметит. Заметить что-то подозрительное он сможет только если загрузит сервер со своего livecd и им проверит логи. Но этого, ясное дело, никто делать не будет. А если и сделает, то поскольку попорчены все контрольные суммы сразу, он спишет всё на глюки journald. :)

Простая копия сислога на выделенном сервере защищает и от этого варианта тоже.

anonymous
()
Ответ на: комментарий от anonymous

Для админа выглядит так, словно в логах всё нормально. При просмотре логов глазами он тоже ничего подозрительного не заметит. Заметить что-то подозрительное он сможет только если загрузит сервер со своего livecd и им проверит логи. Но этого, ясное дело, никто делать не будет. А если и сделает, то поскольку попорчены все контрольные суммы сразу, он спишет всё на глюки journald. :)

Никакая схема не работает на скомпрометированной системе, это очевидно. Единственный кейс валидации - на доверенной системе

vasily_pupkin ★★★★★
()
Ответ на: комментарий от farafonoff

А если у одмина, ну так на минутку, хотя бы сотня серверов, то...?

anonymous
()
Ответ на: комментарий от farafonoff

reset и оно отломается. ничто не помешает также срать бинарным мусором в лог journald, который также сломает и консоль и гуйню при просмотре

anonymous
()
Ответ на: комментарий от anonymous

Там где-то есть подписывание бинарей? У нас разве что IMA есть. Хотя, совместив это с нормальным менеджером пакетов можно получить нечто рабочее..

vasily_pupkin ★★★★★
()
Ответ на: комментарий от vasily_pupkin

Там где-то есть подписывание бинарей?

Ну, если ты совсем-совсем читать не умеешь, рассказывай, где в бинаре ты хочешь накорябать «Здесь был Вася»?

http://en.wikibooks.org/wiki/Grsecurity/The_RBAC_System

http://en.wikipedia.org/wiki/Mandatory_Access_Control

http://en.wikibooks.org/wiki/Grsecurity/Application-specific_Settings

не то?

anonymous
()
Ответ на: комментарий от vasily_pupkin

Ну как где. Как в венде :D

http://en.wikipedia.org/wiki/Mandatory_Access_Control

«* Microsoft Starting with Windows Vista and Server 2008 Windows incorporates Mandatory Integrity Control, which adds Integrity Levels (IL) to processes running in a login session. MIC restricts the access permissions of applications that are running under the same user account and which may be less trustworthy. Five integrity levels are defined: Low, Medium, High, System, and Trusted Installer.[15] Processes started by a regular user gain a Medium IL; elevated processes have High IL.[16] While processes inherit the integrity level of the process that spawned it, the integrity level can be customized on a per-process basis: e.g. IE7 and downloaded executables run with Low IL. Windows controls access to objects based on ILs, as well as for defining the boundary for window messages via User Interface Privilege Isolation. Named objects, including files, registry keys or other processes and threads, have an entry in the ACL governing access to them that defines the minimum IL of the process that can use the object. MIC enforces that a process can write to or delete an object only when its IL is equal to or higher than the object’s IL. Furthermore, to prevent access to sensitive data in memory, processes can’t open processes with a higher IL for read access.[17]»

Mark Russinovich’s Blog http://blogs.technet.com/b/markrussinovich/archive/2007/02/12/638372.aspx

anonymous
()
Ответ на: комментарий от vasily_pupkin

ntpd демон не переводит часы. По крайней мере назад

Переводит, если нет выбора. Когда время ушло на несколько дней вперёд обычное ntp-шное «торможение» не поможет.

У нас на нескольких серверах после ребута время вечно убегает куда-нибудь на пару дней вперёд или назад. А для местных сервисов неправильное время смерти подобно. Поэтому там в init-скриптах сразу после поднятия сети до запуска всех остальных сервисов идёт синхронизация времени. К счастью, systemd там нет, и вставить скрипт между сетью и всеми остальными сервисами там не проблема.

anonymous
()
Ответ на: комментарий от farafonoff

Ну вот мне понадобилась пульса - прикрутить скайп на серваке чтобы приделать его к астериску. «Классическое» решение - компеляция модуля ядра который делает фейковый oss.

Причём тут OSS?

в pulse оказалось очень просто завернуть ввод и вывод звука на null. с альсой подобное сделать вообще не реально оказалось.

Да, действительно, ведь в alsa ведь нет pcm.null...

$ aplay -L
...
null
    Discard all samples (playback) or generate zero samples (capture)

anonymous
()
Ответ на: комментарий от farafonoff

Потом ты сделаешь cat этого лога, и он сломает тебе консоль.

Не все консоли ломаются при выводе бинарного мусора. А если и сломается — не беда, вслепую: <Ctrl+C><Enter>reset<Enter>

anonymous
()
Ответ на: комментарий от Ustin

Что-то никак не пойму откуда столько баттхерта в теме. [...] довольно глупо негодовать из-за появления еще одной альтернативы.

Если бы это была всего лишь альтернатива, было бы не так страшно. Дело в том, что это — не альтернатива, это основа, открутить её можно только всё поломав. Зато в федоре уже сейчас (а в RHEL в будущем, а скоро в сусе, арче, остатках мандривы) syslog — это необязательная альтернатива.

anonymous
()
Ответ на: комментарий от farafonoff

Очевидно, это на то далекое будущее когда в линуксе будет подписывание бинарников и реальное разделение привилегий.

Ну да, это логично, вместо простых решений, которые давно работают, сделать извращённое нерабочее решение, и потом отмазаться, что, мол, мы не виноваты, это всё устаревшие принципы юникс, которые нас не защитили. Это да, это так по-леннартовски. :)

anonymous
()
Ответ на: комментарий от vasily_pupkin

Никакая схема не работает на скомпрометированной системе, это очевидно. Единственный кейс валидации - на доверенной системе

Классическая схема с отдельным логом — работает. Для этого не придётся ребутиться с livecd, можно всё делать на живой машине. Но самое главное, она покажет не только факт изменения логов, но ещё и покажет, что именно было изменено.

Можно ещё однострочник на баше для текстовых логов сделать, на той же идее, только намного проще и универсальнее, хотя и не так надёжно, как отдельный лог. И такой однострочник тоже будет работать на взломанной машине — затроянить его не получится потому, что троянить нечего, не while read же троянить в самом деле. :)

anonymous
()
Ответ на: комментарий от farafonoff

с альсой подобное сделать вообще не реально оказалось. вывод - пульса рулит.

Если честно, не совсем понял задачу.

Неужто создание фейковых карт и система маршрутизации альсы никак не помогла?

Фактически пульс умеет только то, что умеет альса.

jackill ★★★★★
()
Ответ на: комментарий от Ustin

А на серьезном сервере уже все надо серьезно настраивать под свои нужды свои средствами — и довольно глупо негодовать из-за появления еще одной альтернативы.

Не получится своими средствами-то.

Сейчас, чтобы заработал systemd, нужно патчить ядро, изменять параметры загрузки grub, шаманить с ssh и df - я сегодня почитал про эту магию.

Как я понимаю, система логов прибита гвоздями. Если сказать ей в конфиге ничего не писать, демон все равно будет висеть в памяти. Как подключить другой логгер - хз (я пока не разбирался, но судя по тому, что гуглом сходу не находится, это не так просто).

Патчишь ядро, чтобы вырубить systemd, теряешь поддержку (если была) и своевременные апдейты. С системой логгирования, раз она часть, будет то же самое. TCO вырастет. Нехорошо.

Что-то никак не пойму откуда столько баттхерта в теме.

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

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

jackill ★★★★★
()

Читаю-читаю... Может я туплю?

It works by generating a key pair of «sealing key» and «verification key». The former stays on the machine whose logs are to be protected and is automatically changed in regular intervals (and the previous one securely deleted), the latter should be written down on a piece of paper or stored on your phone or some other secure location (that means: not on the machine whose logs are to be protected). With the verification key at hand you can verify the journals on the machine and be sure that — if the verification is successful — log history until the point where the machine was cracked has not been altered a posteriori.

То есть генерируется пара ключей - то бишь это ассиметричное шифрование. Sealing key затем меняется каждые 15 минут, а verification key - остается неизменным у пользователя. Нигде не написано, что с ним происходит. Т.е. (and the previous one securely deleted) относится к sealing key, который типа меняется.

При ассиметричном шифровании, если ключей всего два и один постоянно меняется, значит второй должен быть, собственно говоря, закрытым ключом. С его помощью логи шифруются. Т.е. копия есть где-то на машине. И если его утащить, опять же можно им шифровать все до следующей перегенерации ключей.

Я что-то не так понимаю?

jackill ★★★★★
()
Ответ на: комментарий от jackill

Добавлю. Вот что меня смущает. Ежели система перегенерирует каждый раз эту пару ключей, как добраться до записей, сделанных с предыдущим ключом?

Второй вопрос - если схема не такая, что же накодил этот человек, коли даже документации нет? Security by obscurity?

jackill ★★★★★
()
Ответ на: комментарий от at

Занимается этим РедХат. Другие поделки Поттеринга их не интересовали. Система инициализации, которую они планируют включить в свой энтерпрайз это явно не тот случай.

В редхате кроме этих двоих никто не занимается.

Занимался бы Алан Кокс, я бы понял. Но он учится...

jackill ★★★★★
()
Ответ на: комментарий от jackill

Это всё придмул брат поттеринга, не смущайся

anonymous
()
Ответ на: комментарий от anonymous

Какой дистрибутив исповедует идею «у нас никогда не будет поделок поттеринга»? Слаку и дебиан не предлагать.

The first big distribution with systemd by default will be Fedora 15, due end of May. It is expected that the others will follow the lead a bit later (with one exception)

Цитата взята отсюда

dr_dobermann
()
Ответ на: комментарий от iTA05

С такими новшевствами уже FBSD в дуалбуте... При том что она и вправду радует новостями последнее время ( в отличие от...)

Как раз не радует - такое-же «переписывание ради переписывания».

  • отлаженную сеть раздачи слоно^Wисходников херят не создав новой - типа, ну еще-ж полгода есть, оно-ж само вырастет. А пока даже тестовые сервера, которые текущие исходники на собирабельность проверяют, чекаут сделать не могут.
  • gcc на clang меняется даже без причесывания портов - типа оно само починится
  • в портах вместо работавшей системы условной сборки на WITH/WITHOUT запилили OPTIONS_NG, в которой так и не могут добиться нормальной батч-сборки по заранее выставленным условиям для конкретного хоста
  • отставание на десктопе за счет отсутствия поддержки видеоадаптеров и проч. достигло уже эпических величин
  • крупные конторы типа Яндекс/Рамблер/Яха тихо отползают в сторону линукса. Как следствие качество сетевого стека упало катастрофически.
sergv
()
Ответ на: комментарий от ksicom

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

Сразу видно человека, которого ещё не щупала за попу инфобезопасность, дай вам Бог, чтобы так и дальше было.

Вопрос неизменяемости логов — первостепенная задача, если вы хотите своих админов защитить от наездов клоунов, кричащих: «Он админ, он все сделал и за собой почистил.».

Если у вас нет механизмов по защите логов от вставки/вырезания, то ответить вам на эти крики нечего и ваши админы будут всегда крайними. Хотя из всех механизмов бинарный лог и мне представляется самым худшим вариантом для решения этой задачи.

dr_dobermann
()
Ответ на: комментарий от amix

Он имеет право так говорить, конечно. Но его объяснение - невнятные понты.

tailgunner ★★★★★
()
Ответ на: комментарий от Boboms

А что, говносистемд уже стандарт для всех серверных дистрибутивов?

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

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

В общем практически вся хрень, ради которой писался системд, для серверов нужна как зайцу стоп-сигнал.

dr_dobermann
()
Ответ на: комментарий от anonymous

Классическая схема с отдельным логом — работает. Для этого не придётся ребутиться с livecd, можно всё делать на живой машине. Но самое главное, она покажет не только факт изменения логов, но ещё и покажет, что именно было изменено.

щито?!

vasily_pupkin ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.