Что такое livepatch ubuntu

Как пропатчить ядро без перезагрузки: livepatch, kpatch и Canonical Livepatch Service

Что такое livepatch ubuntu. Смотреть фото Что такое livepatch ubuntu. Смотреть картинку Что такое livepatch ubuntu. Картинка про Что такое livepatch ubuntu. Фото Что такое livepatch ubuntu

Тему обновления патчей ядра без перезагрузки мы уже рассматривали в статье, опубликованной в 2014 году. В ней речь шла о KernelCare — инструменте, разработанном нашими партнёрами из компании Cloud Linux. На момент написания статьи KernelCare был чуть ли не единственным пригодным для полноценного использования инструментом для наложения патчей.

Прошло два с небольшим года — и ситуация изменилась, причём кардинально: начиная с версии 4.0 возможность наложения патчей «на лету» была официально добавлена в ядро.

Инструменты kpatch и kGraft, которые в 2014 году находились в «сыром» состоянии, также были существенно усовершенствованы. Kpatch даже был добавлен в официальные репозитории, — например, в Ubuntu 16.04 его уже можно установить с помощью стандартного менеджера пакетов.

А компания Canonical совсем недавно представила сервис Canonical Livepatch Service, с помощью которого можно патчить без перезагрузки ядро Ubuntu.

Более подробно о некоторых современных инструментах для добавления патчей мы расскажем в этой статье.

Простейший пример: livepatch

Начнём с очень простого эксперимента. Для этого нам понадобится любой дистрибутив Linux c ядром версии 4.0 или выше (в нашем случае это Ubuntu 16.04; здесь и далее все примеры команд приводятся именно для этого дистрибутива). В новых версиях ядра функция добавления патчей «на лету»(она так и называется — livepatch) включена по умолчанию.

Чтобы проверить, как она работает, нам потребуется, во-первых, установить заголовки ядра:

Далее установим отладочные символы ядра:

При выполнении этой команды в Ubuntu 16.04 может быть выдано следующее сообщение об ошибке:

Причина ошибки в том, что репозитории deb-src по умолчанию не подключены, а соответствующие строки в файле /etc/apt/sources.list закомментированы. Чтобы мы смогли работать с репозиториями исходных кодов, выполним:

После этого предыдущая команда будет выполняться без ошибок. К эксперименту всё готово, можно начинать:

Соберём модуль и вставим его в ядро:

Посмотрим, что получилось. Выполним:

Вместо стандартной информации о параметрах ядра мы увидим вот такой текст:

Как видим, патч был успешно применён.

Вся информация о загруженных патчах хранится в директории /sys/kernel/livepatch:

Деактивировать патч можно с помощью команды:

Kpatch

Kpatch — инструмент, разработанный компаний Red Hat. Впервые он был представлен широкой пользовательской аудитории в феврале 2016 года. За это время он был значительно усовершенствован: в Ubuntu 16.04 он уже включён в официальные репозитории. Рассмотрим особенности работы с kpatch на практических примерах.

Начнём с установки необходимых зависимостей:

Для полноценной работы с kpatch также желательно установить ccache:

Вот и всё, зависимости установлены. Можно устанавливать kpatch:

В нашем эксперименте мы будем патчить исходники ядра. Клонируем репозиторий с исходным кодом нашей текущей версии Ubuntu:

По завершении клонирования скопируем исходники в директорию ubuntu-xenial-kpatch (это нужно, чтобы вносить изменения в исходный код и потом создавать на основе этих изменений патчи):

Откроем файл ubuntu-xenial-kpatch/ubuntu-xenial/fs/proc/version.c и внесём в него следующие изменения:

Cоздадим патч с помощью команды:

Патч представляет собой обычный текстовый файл, в котором перечислены внесённые изменения:

Чтобы добавить патч в ядро, выполним:

Как видно из только что приведённого вывода, на выходе мы получаем модуль ядра. Чтобы применить патч, нужно просто добавить этот модуль стандартным способом:

Посмотрим, что получилось в результате:

Canonical Livepatch Service

Несколько месяцев назад компания Canonical запустила официальный сервис Canonical LivePatch Service, который позволяет патчить ядро «на лету» при помощи простейших команд. Этот сервис ориентирован в первую очередь на пользователей enterprise-уровня, и поэтому является платным.

Но рядовые пользователи тоже могут оперативно получать все свежие обновления ядра. Для этого нужно зарегистрироваться на Ubuntu One и получить токен. Токен даёт возможность установить на 3 машины программу canonical-livepatch, которая загружает и добавляет патчи.

Посмотрим, как работает Canonical Livepatch Service. Перейдём по ссылке выше, получим токен, а далее выполним:

По завершении установки выйдем из системы, затем войдём снова и выполним:

Если всё было сделано правильно, мы получим следующее сообщение:

Далее выполним команду:

Вывод показывает, что сanonical-livepatch работает, и в ядро установлены все последние обновления. Более подробную информацию можно получить, воспользовавшись опцией −−verbose:

Также информацию об установленных патчах можно получить, заглянув в уже упомянутую выше директорию /sys/kernel/livepatch:

Kpatch_livepatch_Ubuntu_4_4_0_47_68_generic_14 — это и есть последний загруженный патч. Последние цифры в имени патча (14) совпадают с номером версии, указанным в выводе команды canonical-livepatch status (см. выше).

Убедиться, что новый патч был добавлен, можно и с помощью команды lsmod:

Заключение

В этой статье мы проделали небольшой отбор инструментов для добавления патчей в ядро Linux. Естественно, что все аспекты темы в рамках одной публикации затронуть невозможно. Если у вас есть замечания и дополнения — добро пожаловать в комментарии.

А если вы хотите изучить тему более глубоко, обратите внимание на следующие ссылки:

Источник

Livepatch Service

Reduce downtime and unplanned work

Livepatch eliminates the need for unplanned maintenance windows for high and critical severity kernel vulnerabilities by patching the Linux kernel while the system runs. Reduce fire drills while keeping uninterrupted service with the Ubuntu Livepatch service for up to 10 years.

Livepatch is included in Ubuntu Pro and Ubuntu Advantage.

Livepatch is a perfect fit for our needs. There’s no other solution like it, and it’s highly cost-effective. Manually migrating virtual machines, applying kernel updates, and rebooting took an average of 32 hours per server. Multiplied by 80 servers, that was more than 2,500 hours of work.

Shinya Tsunematsu, Senior Engineering Lead of Tech Division, GMO Pepabo

Spend less time on unplanned work

According to a study of Dimensional research 64% of IT professionals spend more than 100 hours per year on unplanned work. That’s work that eliminates focus and distracts from one’s goals and business objectives. With 40% of high and critical severity vulnerabilities affecting the Linux kernel, the number of interruptions can be significant. Livepatch reduces the unplanned work that comes from Linux kernel vulnerabilities, making you more effective when managing Ubuntu systems.

Reduce downtime

Downtime is one of the major pains of every service provider. That is however unavoidable when deploying vulnerability fixes on the Linux kernel the traditional way. That’s because the updated system needs to be rebooted to apply the changes irrespective of your deployment strategy (Kubernetes, OpenStack or bare-metal). Industry leaders achieve high uptime by livepatching and scheduled maintenance.

Follow organisational policy

Livepatch on-prem allows you to define your rollout policy and remain in full control of which machines will get updated and when, as well as provide updates to isolated network environments. To keep your machines up-to-date, the Livepatch on-prem server regularly syncs with Ubuntu Livepatch service and obtains the latest patches. It then applies the policy for releasing patches gradually in as many stages as needed.

Kernel livepatching at a glance

When a high or critical Linux kernel vulnerability is detected a livepatch along with a Livepatch Security Notice are issued. Systems that enable the livepatch client will receive and apply the patch, after it is made available. The livepatch will provide new kernel code replacing the vulnerable one, and will update the rest of the kernel to use the new code.

Livepatch on-prem overview

Livepatch on-prem is designed for complex Enterprise environments that follow their own rollout policy and remain in control of which machines will get updated and when. Livepatch on-prem regularly syncs with the Ubuntu Livepatch service and obtains the latest patches. It then deploys the livepatches gradually in as many stages as required.

Источник

Как пропатчить ядро без перезагрузки: обзор современных инструментов

Что такое livepatch ubuntu. Смотреть фото Что такое livepatch ubuntu. Смотреть картинку Что такое livepatch ubuntu. Картинка про Что такое livepatch ubuntu. Фото Что такое livepatch ubuntu

Что такое livepatch ubuntu. Смотреть фото Что такое livepatch ubuntu. Смотреть картинку Что такое livepatch ubuntu. Картинка про Что такое livepatch ubuntu. Фото Что такое livepatch ubuntu

Тему обновления патчей ядра без перезагрузки мы уже рассматривали в статье, опубликованной в 2014 году. В ней речь шла о KernelCare — инструменте, разработанном нашими партнёрами из компании Cloud Linux. На момент написания статьи KernelCare был чуть ли не единственным пригодным для полноценного использования инструментом для наложения патчей.

Простейший пример: livepatch

Начнём с очень простого эксперимента. Для этого нам понадобится любой дистрибутив Linux c ядром версии 4.0 или выше (в нашем случае это Ubuntu 16.04; здесь и далее все примеры команд приводятся именно для этого дистрибутива). В новых версиях ядра функция добавления патчей «на лету»(она так и называется — livepatch) включена по умолчанию.
Чтобы проверить, как она работает, нам потребуется, во-первых, установить заголовки ядра:

Далее установим отладочные символы ядра:

К эксперименту всё готово, можно начинать. Выполним следующую команду:

Соберём модуль и вставим его в ядро:

Посмотрим, что получилось. Выполним:

Вместо стандартной информации о параметрах ядра мы увидим вот такой текст:

Как видим, патч был успешно применён.

Вся информация о загруженных патчах хранится в директории /sys/kernel/livepatch:

Деактивировать патч можно с помощью команды:

Kpatch

Kpatch — инструмент, разработанный компаний Red Hat. Впервые он был представлен широкой пользовательской аудитории в феврале 2016 года. За это время он был значительно усовершенствован: в Ubuntu 16.04 он уже включён в официальные репозитории. Рассмотрим особенности работы с kpatch на практических примерах.

Начнём с установки необходимых зависимостей:

Для полноценной работы с kpatch также желательно установить ccache :

Вот и всё, зависимости установлены. Можно устанавливать kpatch:

В нашем эксперименте мы будем патчить исходники ядра. Клонируем репозиторий с исходным кодом нашей текущей версии Ubuntu:

По завершении клонирования скопируем исходники в директорию ubuntu-xenial-kpatch (это нужно, чтобы вносить изменения в исходный код и потом создавать на основе этих изменений патчи):

Откроем файл ubuntu-xenial-kpatch/ubuntu-xenial/fs/proc/version.c и внесём в него следующие изменения:

Cоздадим патч с помощью команды:

Патч представляет собой обычный текстовый файл, в котором перечислены внесённые изменения:

Чтобы добавить патч в ядро, выполним:

Как видно из только что приведённого вывода, на выходе мы получаем модуль ядра. Чтобы применить патч, нужно просто добавить этот модуль стандартным способом:

Посмотрим, что получилось в результате:

Canonical Livepatch Service

Посмотрим, как работает Canonical Livepatch Service. Перейдём по ссылке выше, получим токен, а далее выполним:

По завершении установки выйдем из системы, затем войдём снова и выполним:

Если всё было сделано правильно, мы получим следующее сообщение:

Далее выполним команду:

Вывод показывает, что сanonical-livepatch работает, и в ядро установлены все последние обновления. Более подробную информацию можно получить, воспользовавшись опцией −−verbose:

Также информацию об установленных патчах можно получить, заглянув в уже упомянутую выше директорию /sys/kernel/livepatch:

Kpatch_livepatch_Ubuntu_4_4_0_47_68_generic_14 — это и есть последний загруженный патч. Последние цифры в имени патча (14) совпадают с номером версии, указанным в выводе команды canonical-livepatch status (см. выше).

Убедиться, что новый патч был добавлен, можно и с помощью команды lsmod:

Заключение

В этой статье мы проделали небольшой отбор инструментов для добавления патчей в ядро Linux. Естественно, что все аспекты темы в рамках одной публикации затронуть невозможно. Если у вас есть замечания и дополнения — добро пожаловать в комментарии.

А если вы хотите изучить тему более глубоко, обратите внимание на следующие ссылки:

Источник

Исправления к ядру без необходимости в перезагрузке.

Canonical предоставила для пользователей Ubuntu возможность получать исправления безопасности для ядер Linux без необходимости перезагружаться.

Введён в строй Canonical Livepatch Service, с помощью которого через аутентификацию и шифрованное соединение, вы сможете получить заплатки для 64-bit Intel/AMD архитектуры и Ubuntu 16.04 LTS Xenial Xerus. Данный функционал особенно будет интересен тем, кто использует контейнерные технологии типа Докера или LXD, так как контейнеры используют ядро хоста и если он получает заплатки, то это распространяется и на них.

Как активировать Canonical Livepatch Service?
Нужно выполнить три шага для актуальной 64-битной Ubuntu 16.04 LTS.

Какие системные требования?
Canonical Livepatch Service доступен для ядер generic и low-latency 64-bit Intel/AMD (x86_64, amd64) в Ubuntu 16.04 LTS (Xenial Xerus) с ядром Linux 4.4. Технология livepatches от Canonical работает с десктопной и серверной Ubuntu 16.04 LTS. На физических, виртуальных машинах, а так же в облачных образах.

Стабильность и безопасность работы технологии зависит от того, модифицировали вы самостоятельно ядра или нет, а также от надёжного сетевого доступа к https://livepatch.canonical.com:443

Snapd должен быть не ниже 2.15.

Что насчёт других архитектур?
В данный момент работа технологии ограничена 64-bit x86. IBM работает над поддержкой POWER8 и s390x. В активной разработке находится внедрение поддержки ARM64, о которой сообщат подробнее. Livepatch для 32-bit ARM и 32-bit x86 в данный момент не рассматривается.

Что насчёт других релизов Убунту?
Canonical Livepatch Service пока работает только с Ubuntu 16.04 LTS и ядром Linux 4.4. Старые релизы Убунту не будут поддерживаться, так как в их ядрах нет нужного функционала. Обычные релизы типа Убунту 16.10 предназначены для разработчиков и активных пользователей, любящих попробовать новинки первыми. Livepatch им мало интересен и сама технология нацелена на пользователей LTS систем для поддержания максимального uptime.

Как тестируются патчи, которые будут применятся к ядру налету?
Каждый такой патч тщательно проверяется серверами CI/CD (Continuous Integration / Continuous Delivery). Сотни комбинаций из livepatches, ядер, аппаратного оборудования, физических машин, виртуальных машин. После того как пройдены все тесты в CI/CD, а так же тесты на наличие регрессий, небольшой части пользователей дают скачать и установить патчи через Canonical Livepatch Service. Если всё хорошо, то процент увеличивают и так постепенно охватывают всё сообщество. Сбои в системах пользователей автоматически обнаруживаются и для разбирательства будут подняты на уши сотрудники Canonical.

Livepatch можно откатить?
В данный момент откат/удаление отключён. Нужен надёжный способ, чтобы определить нет ли выполняющегося внутри функции, которую патчат, прежде чем её удалить. Однако технология позволяет смело накладывать новые патчи друг на друга и даже репатчить функцию снова и снова.

Инциденты с безопасностью в статусе low и medium в базе CVE будут патчится?
В данный момент все сфокусированы на high и critical дырах.

Почему Canonical Livepatches сделан в виде сервиса с подпиской?
Canonical Livepatch Service обеспечивает безопасное, зашифрованное соединение с поддержкой аутентификации для того чтобы убедится в том, что подписанные livepatch напрямую доставляются для вашей системы.

Но я не хочу покупать Ubuntu Advantage!
И не нужно! Canonical предоставляет Livepatch Service бесплатно до 3 машин. Случайно выбранные пользователи, которые бесплатно используют технологию патчинга ядер на лету, получат свои патчи раньше других. Остальные пользователи (за бесплатно и в рамках Ubuntu Advantage) получат позже, после успешного первого развёртывания.

Но у меня нет единой учётной записи Ubuntu SSO!
Создание Ubuntu SSO бесплатно и похоже на аналогичный ID у компаний Google, Microsoft и Apple. Создать аккаунт можно по адресу login.ubuntu.com

У меня нет доступа к livepatch.canonical.com:443!
Можно представить Canonical Livepatch Service как сервис от Netflix, Pandora или Dropbox. Это потоковый сервис в Интернет для вашего ядра. Если есть доступ к Интернет, то можно подключится к потоку битов. С другой стороны, если нет прямого доступа к Интернет, тогда машины надёжнее защищены от остального мира?

Есть исходный код?
Исходный код модулей livepatch доступен на git.launchpad.net. Исходный код клиента canonical-livepatch является коммерческим ПО и частью продукта по управлению системами Landscape.

Что про Ubuntu Core?
Canonical Livepatches будет доступен для Ubuntu Core в конце 2016 года. Canonical Livepatches для IoT устройств на базе ARM будет зависеть от того, как апстрим проекта реализует поддержку данной архитектуры.

Как можно сравнить с Oracle Ksplice, RHEL Live Patching и SUSE Live Patching?
Концептуально они похожи и разница лишь в реализации и в коммерческих условиях поставки:

Что будет если я огребу проблем с Canonical Livepatches?
Клиенты Ubuntu Advantage будут подавать запрос в службу поддержки на support.canonical.com, где их обслужат в соответствии с их уровнем Essential, Standard или Advanced. Пользователи из сообщества, кто бесплатно использует технологию, должны создать отчёт о баге на Launchpad, который постараются решить как можно быстрее (best effort).

Я могу собрать свои livepatches?
Вы, безусловно, можете создавать свои патчи для применения их на лету, но это потребует от вас серьёзных навыков, времени, вычислительных мощностей и усилий в тестировании. Chris Arges в своём блоге создал HOWTO using linux livepatch on ubuntu для тех кто решится действовать самостоятельно.

livepatching не является просто огромным руткитом?
Canonical Livepatches инжектирует модули ядра, чтобы заменить секции двоичного кода в работающем ядре. Это требует CAP_SYS_MODULE возможности для использования подгрузки модулей (modprobe) в ядро Linux. Данной возможностью обладает root в системе, так что вы, как админ, можете это делать С и БЕЗ Canonical Livepatches. Если вы админ системы Убунту и хотите отключить загрузку модулей ядра (тем самым отключить Canonical Livepatches), то можете использовать echo 1 | sudo tee /proc/sys/kernel/modules_disabled

Источник

Как пропатчить ядро без перезагрузки: livepatch, kpatch и Canonical Livepatch Service

Что такое livepatch ubuntu. Смотреть фото Что такое livepatch ubuntu. Смотреть картинку Что такое livepatch ubuntu. Картинка про Что такое livepatch ubuntu. Фото Что такое livepatch ubuntu

Тему обновления патчей ядра без перезагрузки мы уже рассматривали в статье, опубликованной в 2014 году. В ней речь шла о KernelCare — инструменте, разработанном нашими партнёрами из компании Cloud Linux. На момент написания статьи KernelCare был чуть ли не единственным пригодным для полноценного использования инструментом для наложения патчей.

Прошло два с небольшим года — и ситуация изменилась, причём кардинально: начиная с версии 4.0 возможность наложения патчей «на лету» была официально добавлена в ядро.

Инструменты kpatch и kGraft, которые в 2014 году находились в «сыром» состоянии, также были существенно усовершенствованы. Kpatch даже был добавлен в официальные репозитории, — например, в Ubuntu 16.04 его уже можно установить с помощью стандартного менеджера пакетов.

А компания Canonical совсем недавно представила сервис Canonical Livepatch Service, с помощью которого можно патчить без перезагрузки ядро Ubuntu.

Более подробно о некоторых современных инструментах для добавления патчей мы расскажем в этой статье.

Простейший пример: livepatch

Начнём с очень простого эксперимента. Для этого нам понадобится любой дистрибутив Linux c ядром версии 4.0 или выше (в нашем случае это Ubuntu 16.04; здесь и далее все примеры команд приводятся именно для этого дистрибутива). В новых версиях ядра функция добавления патчей «на лету»(она так и называется — livepatch) включена по умолчанию.

Чтобы проверить, как она работает, нам потребуется, во-первых, установить заголовки ядра:

Далее установим отладочные символы ядра:

При выполнении этой команды в Ubuntu 16.04 может быть выдано следующее сообщение об ошибке:

Причина ошибки в том, что репозитории deb-src по умолчанию не подключены, а соответствующие строки в файле /etc/apt/sources.list закомментированы. Чтобы мы смогли работать с репозиториями исходных кодов, выполним:

После этого предыдущая команда будет выполняться без ошибок. К эксперименту всё готово, можно начинать:

Соберём модуль и вставим его в ядро:

Посмотрим, что получилось. Выполним:

Вместо стандартной информации о параметрах ядра мы увидим вот такой текст:

Как видим, патч был успешно применён.

Вся информация о загруженных патчах хранится в директории /sys/kernel/livepatch:

Деактивировать патч можно с помощью команды:

Kpatch

Kpatch — инструмент, разработанный компаний Red Hat. Впервые он был представлен широкой пользовательской аудитории в феврале 2016 года. За это время он был значительно усовершенствован: в Ubuntu 16.04 он уже включён в официальные репозитории. Рассмотрим особенности работы с kpatch на практических примерах.

Начнём с установки необходимых зависимостей:

Для полноценной работы с kpatch также желательно установить ccache:

Вот и всё, зависимости установлены. Можно устанавливать kpatch:

В нашем эксперименте мы будем патчить исходники ядра. Клонируем репозиторий с исходным кодом нашей текущей версии Ubuntu:

По завершении клонирования скопируем исходники в директорию ubuntu-xenial-kpatch (это нужно, чтобы вносить изменения в исходный код и потом создавать на основе этих изменений патчи):

Откроем файл ubuntu-xenial-kpatch/ubuntu-xenial/fs/proc/version.c и внесём в него следующие изменения:

Cоздадим патч с помощью команды:

Патч представляет собой обычный текстовый файл, в котором перечислены внесённые изменения:

Чтобы добавить патч в ядро, выполним:

Как видно из только что приведённого вывода, на выходе мы получаем модуль ядра. Чтобы применить патч, нужно просто добавить этот модуль стандартным способом:

Посмотрим, что получилось в результате:

Canonical Livepatch Service

Несколько месяцев назад компания Canonical запустила официальный сервис Canonical LivePatch Service, который позволяет патчить ядро «на лету» при помощи простейших команд. Этот сервис ориентирован в первую очередь на пользователей enterprise-уровня, и поэтому является платным.

Но рядовые пользователи тоже могут оперативно получать все свежие обновления ядра. Для этого нужно зарегистрироваться на Ubuntu One и получить токен. Токен даёт возможность установить на 3 машины программу canonical-livepatch, которая загружает и добавляет патчи.

Посмотрим, как работает Canonical Livepatch Service. Перейдём по ссылке выше, получим токен, а далее выполним:

По завершении установки выйдем из системы, затем войдём снова и выполним:

Если всё было сделано правильно, мы получим следующее сообщение:

Далее выполним команду:

Вывод показывает, что сanonical-livepatch работает, и в ядро установлены все последние обновления. Более подробную информацию можно получить, воспользовавшись опцией −−verbose:

Также информацию об установленных патчах можно получить, заглянув в уже упомянутую выше директорию /sys/kernel/livepatch:

Kpatch_livepatch_Ubuntu_4_4_0_47_68_generic_14 — это и есть последний загруженный патч. Последние цифры в имени патча (14) совпадают с номером версии, указанным в выводе команды canonical-livepatch status (см. выше).

Убедиться, что новый патч был добавлен, можно и с помощью команды lsmod:

Заключение

В этой статье мы проделали небольшой отбор инструментов для добавления патчей в ядро Linux. Естественно, что все аспекты темы в рамках одной публикации затронуть невозможно. Если у вас есть замечания и дополнения — добро пожаловать в комментарии.

А если вы хотите изучить тему более глубоко, обратите внимание на следующие ссылки:

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *