Добавление в systemd загрузчика для UEFI Secure Boot и другие планы на будущее
2 февраля 2015 года
Разработчики системного менеджера systemd намерены интегрировать в состав пакета поддержку загрузчика gummiboot (Архивная копия от 12 сентября 2013 на Wayback Machine) для обеспечения верификации процесса загрузки на системах с UEFI Secure Boot. Верификация загрузки позволит гарантировать отсутствие посторонней активности во время начальной загрузки, в том числе даст возможность пресечь попытки запуска подконтрольных злоумышленникам приложений, например, внедрённых для перехвата ввода паролей к зашифрованным разделам.
Ранее поддержка верификации, как правило, ограничивалась проверкой загрузчика или верификацией загрузки ядра и связанных с ним модулей. Разработчики systemd предлагают расширить число проверяемых компонентов, дав возможность пользователю разрешить загрузку только специально подписанных системных образов начальной загрузки (initramfs). Даже получив доступ к системе, атакующие не смогут внести изменения в initramfs чтобы запустить кейлоггер и перехватить ввод пароля к зашифрованному корневому разделу.
Загрузчик gummiboot выбран потому, что он является разработкой Red Hat, изначально поддерживает интеграцию с systemd и не требует специальной настройки - он автоматически выявляет конфигурацию ядра и наличие на диске заверенных цифровой подписью EFI-образов и добавляет их в меню загрузки.
Дополнительно можно отметить публикацию тезисов выступления Леннарта Поттеринга (Lennart Poettering) на конференции FOSDEM, в котором он рассказал о последних тенденциях в разработке systemd и планах на ближайшее будущее.
Некоторые интересные выдержки из доклада:
- В systemd появится поддержка перезапуска сервисов без потери состояния - каждый демон сможет сохранять на диске своё минимальное состояние и после перезапуска восстановить исходное состояние (systemd сохранит открытые сокеты и файловые дескрипторы и после перезапуска передаст их сервису).
- Ожидается минимальная поддержка средств управления межсетевым экраном в привязке к сервисам, а не номерам портов. Например, вместо определения правил доступа к 80 порту, можно будет привязать правила к http-серверу apache, без оглядки на то, на каком порту он принимает соединения.
- Приоритетным остаётся подход, при котором большая часть подсистем systemd, за исключением journald, не являются обязательными и могут быть отключены;
- Практически доведена до конца работа над компонентами пространства пользователя для dbus;
- Nspawn вырос из системы тестирования системы инициализации без перезагрузки в систему управления изолированными контейнерами, поддерживающую RAW-образы и docker-подобные контейнеры. Под впечатлением от концепции Solaris zone развивается machined - менеджер регистрации виртуальных машин;
- В будущем ожидается появление новых возможностей, связанных с изолированными контейнерами. В конечном счёте, целью является обеспечение работы всех инструментов systemd с оглядкой на контейнеры, например, journald может показывать как логи/сообщения основного хоста, так и всех работающих на нём контейнеров;
- В следующем выпуске systemd появится дополнительная поддержка Btrfs (подразделы и снапшоты Btrfs планируется использовать для изоляции отдельных приложений);
- В consoled появится поддержка экранов high DPI и Unicode;
- Утилиты systemctl-cat и systemctl-edit позволят отобразить и отредактировать файл конфигурации выбранного юнита (например, "systemctl-cat apache2.service"), без необходимости определения пути.
- Команда "ping gateway" позволит автоматически определить все доступные сетевые интерфейсы и проверить их работу утилитой ping;
- Развитие networkd и средств для автоматической настройки сетевой конфигурации в изолированных контейнерах. Создание собственной библиотеки для работы с DHCP (dhcpv4 и dhcpv6);
- Создание средств для проведения системного аудита, например, для ведения полного лога системных вызовов, связанных с /etc/passwd. Добавление средств аудита в journald и реализация в audit-tools возможности чтения сохранённых в journald логов;
- Обеспечение работы систем, не сохраняющих своё состояние (stateless). Генерация содержимого /etc и /var для таких систем.
- Возможность journald-remoting для передачи бинарных логов на удалённый хост с использованием HTTP вместо протокола syslog. Поддержка в journald моделей pull и push: при pull выполняется запрос HTTP GET для получения потока JSON, а при push данные передаются в другой экземпляр journald при помощи HTTP POST. Поддержка данных режимов позволит существенно упросить отправку логов из различных программ, в которых достаточно будет отправить запрос по HTTP вместо поддержки syslog.
- Возможность определения минимальных пространств имён и sandbox-изоляции для сервисов, например, для выбранных сервисов можно будет сделать доступ к /usr и /home в режиме только на чтение или вообще скрыть или запретить доступ. Возможность использования отдельных директорий /tmp для определённых сервисов. Возможность ограничения доступа к файлам устройств /dev/*, с сохранением доступности /dev/zero, /dev/null и т.п.
- Развитие простого ntp-клиента timesyncd в качестве минималистичной альтернативы ntpd;
- Автоматическое определение разделов GPT (GUID Partition Table) без их явного перечисления в etc/fstab;
Источники
править
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.