Canonical livepatch что это
Если вы занимаетесь администрированием и поддержанием очень важных систем в корпоративном секторе, то знаете, что найти свободное окно для установки обновлений безопасности для операционной системы может быть очень непросто.
Если компания не работает в области компьютерной безопасности, то решение может быть принято в сторону бесперебойной работы, а не устранения уязвимостей, а внутренняя бюрократия может привести к задержкам при выборе времени простоя. Иногда возникают ситуации, когда вы не можете позволить себе ни минуты простоя сервера и должны минимизировать опасность уязвимостей другими способами.
Но теперь ситуация изменилась в лучшую сторону. Несколько дней назад Canonical выпустила службу Livepatch, с помощью которой вы можете применять критические патчи ядра для Ubuntu 16.04 64 бит начиная от версии ядра 4.4 без необходимости перезагрузки. На самом деле это не полное обновление ядра ubuntu 16.04, а обновление его некоторых частей, которые содержат ошибки.
Все правильно, теперь обновление ядра без перезагрузки возможно и в Ubuntu. И в этой статье мы рассмотрим как это использовать в своей системе.
Обновление системы
Как я уже сказал, служба Canonical LivePatch поддерживается начиная с Ubuntu 16.04. Но чтобы избежать ошибок сначала желательно обновить систему до самой последней версии. Для этого выполните:
sudo apt update
$ sudo apt upgrade
Если у вас еще не установлены инструменты для работы со snap, их нужно установить:
sudo apt install snapd
Затем можно переходить дальше к настройке canonical livepatch.
Подписка на Livepatch
Для того чтобы использовать службу Canonical Livepatch вам необходимо авторизоваться на https://auth.livepatch.canonical.com/ с помощью аккаунта Ubuntu One и указать являетесь ли вы обычным пользователем Ubuntu или абонентом.
Обычные пользователи Ubuntu могут подключить до трех машин с помощью Livepatch, для этого после входа вам будет выдан токен. Чтобы его получить нажмите Get your token:
Далее, вам нужно будет ввести данные учетной записи Ubuntu One или создать новую учетную запись. В последнем варианте нужно будет подтвердить адрес электронной почты. В следующем окне вы получите свой токен:
Этот токен нам понадобится позже, а теперь рассмотрим как установить необходимые пакеты.
Обновление ядра без перезагрузки Ubuntu
Сначала установите snap пакет этой службы, для этого выполните команду:
sudo snap install canonical-livepatch
Затем необходимо зарегистрировать свой компьютер с помощью полученного ранее токена. Используйте такую команду:
sudo canonical-livepatch enable ваш_токен
Например, если токен был d3b07384d213edec49eaa6238ad5ff00, то нужно выполнить:
sudo canonical-livepatch enable d3b07384d213edec49eaa6238ad5ff00
Successfully enabled device. Using machine-token: d3b07384d213edec49eaa6238ad5ff00
Дальше, чтобы проверить доступные патчи безопасности выполните команду:
kernel: 4.4.0-43.63-generic
fully-patched: true
version: «»
Доступные патчи будут применяться сервисом canonical-livepatch автоматически, как только они появятся. Это значит, что ваша система всегда будет в безопасности.
Выводы
Компания Red Hat выпустила подобный сервис для своего дистрибутива еще несколько лет назад, OpenSUSE тоже представила что-то подобное в то же самое время. Наконец появилось обновление ядра без перезагрузки в Ubuntu и это не может не радовать. Canonical работает над улучшением своей системы, жаль только что немного отстает от конкурентов.
Как пропатчить ядро без перезагрузки: livepatch, kpatch и Canonical Livepatch Service
Тему обновления патчей ядра без перезагрузки мы уже рассматривали в статье, опубликованной в 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 от Canonical в Ubuntu
Хотите, чтобы критические патчи ядра Linux автоматически применялись в вашей системе Ubuntu — без перезагрузки компьютера? Мы опишем, как использовать службу Livepatch от Canonical, чтобы сделать именно это.
Что такое Livepatch и как он работает?
Как объяснил Дастин Киркланд из Canonical несколько лет назад, в Canonical Livepatch используется технология Kernel Live Patching, встроенная в стандартное ядро Linux. На сайте Canonical Livepatch отмечается, что его используют такие крупные корпорации, как AT & T, Cisco и Walmart.
Заплаты ядра необходимы, но неудобны
Патчи ядра Linux — это факт жизни. Поддержание безопасности и исправлений вашей системы жизненно важно в нашем взаимосвязанном мире. Но перезагрузка компьютера для применения исправлений ядра может быть проблемой. Особенно, если компьютер предоставляет какую-то услугу пользователям, и вы должны координировать или вести с ними переговоры, чтобы отключить эту услугу. И есть множитель. Если вы поддерживаете несколько машин Ubuntu, в какой-то момент вам придется прикусить пулю и выполнить каждую из них по очереди.
Служба Canonical Livepatch Service устраняет все проблемы с обновлением ваших систем Ubuntu до критических исправлений ядра. Его легко настроить — либо графически, либо из командной строки — и это снимает с вас еще одну рутинную работу.
Все, что сокращает усилия по обслуживанию, повышает безопасность и сокращает время простоя, должно быть привлекательным предложением, верно? Да, но есть некоторые оговорки.
Получение учетной записи Ubuntu One
Независимо от того, собираетесь ли вы настраивать службу Livepatch через графический пользовательский интерфейс (GUI) или через интерфейс командной строки (CLI), у вас должна быть учетная запись Ubuntu One. Это необходимо, поскольку работа службы Livepatch зависит от секретного ключа, который выдается вам и привязан к вашей учетной записи Ubuntu One.
Если у вас нет учетной записи Ubuntu One, вы можете создать ее бесплатно.
Включение службы Canonical Livepatch графически
Чтобы запустить графический интерфейс настройки, нажмите клавишу «Super». Он расположен между клавишами «Control» и «Alt» в левом нижнем углу большинства клавиатур. Ищите «livepatch».
Когда вы увидите значок Livepatch, щелкните значок или нажмите «Enter».
Откроется диалоговое окно «Программное обеспечение и обновления» с выбранной вкладкой Livepatch. Нажмите кнопку «Войти». Напоминаем, что вам нужна учетная запись Ubuntu One.
Нажмите кнопку «Войти / Зарегистрироваться».
Откроется диалоговое окно Ubuntu Single Sign-On Account. Canonical взаимозаменяемо использует термины «Ubuntu One» и «Единый вход». Они имеют в виду одно и то же. Официально «Единый вход» был заменен на «Ubuntu One», но старое имя сохраняется.
Введите данные своей учетной записи и нажмите кнопку «Подключиться». Вы также можете использовать это диалоговое окно для регистрации учетной записи, если вы ее еще не создали.
Вам будет предложено ввести пароль.
Введите свой пароль и нажмите кнопку «Аутентифицировать». В диалоговом окне отображается адрес электронной почты, связанный с учетной записью Ubuntu One, которую вы собираетесь использовать.
Убедитесь, что это правильно, и нажмите кнопку «Продолжить».
Вам будет предложено ввести пароль еще раз. Через несколько секунд вкладка Livepatch в диалоговом окне «Программное обеспечение и обновления» обновится, чтобы показать, что Livepatch активен и активен.
Новый значок щита появится в области уведомлений инструмента, рядом со значками сети, звука и питания. Зеленый кружок с галочкой говорит вам, что все хорошо. Нажмите на значок, чтобы получить доступ к меню.
Нам сообщили, что Livepatch включен, и текущих обновлений нет.
Опция «Настройки Livepatch» откроет диалоговое окно «Программное обеспечение и обновления» на вкладке Livepatch.
Это оно; Вы все сделали.
Включение службы Canonical Livepatch с использованием интерфейса командной строки
Выберите переключатель «Пользователь Ubuntu» и нажмите кнопку «Получить токен Livepatch».
Вам будет предложено войти в свою учетную запись Ubuntu One.
После того, как ваша учетная запись Ubuntu One будет проверена, вы увидите веб-страницу исправлений ядра в режиме реального времени. Ваш ключ будет отображаться.
Держите веб-страницу с открытым ключом и откройте окно терминала. Используйте эту команду в окне терминала для установки демона службы Livepatch:
Когда установка будет завершена, вам нужно будет включить службу. Вам понадобится ключ на веб-странице «Управляемое исправление ядра».
Вам необходимо скопировать и вставить ключ в командную строку. Выделите ключ на веб-странице, щелкните его правой кнопкой мыши и выберите «Копировать» в контекстном меню. Или вы можете выделить клавишу и нажать «Ctrl + C».
Введите следующую команду в окне терминала, но не нажимайте «Enter».
Затем введите пробел, щелкните правой кнопкой мыши и выберите «Вставить» в контекстном меню. Или вы можете нажать «Ctrl + Shift + V». Вы должны увидеть только что набранную команду, пробел и клавишу с веб-страницы.
На тестовой машине, использованной для исследования этой статьи, это выглядело так:
Если все пойдет хорошо, вы увидите подтверждающее сообщение от Livepatch, сообщающее, что на компьютере включена возможность исправления ядра. Это также покажет еще один длинный ключ; это «машинный токен».
Что только что произошло:
Если вы откроете вкладку Livepatch в диалоговом окне «Программное обеспечение и обновления», вы увидите, что Livepatch включен и активен.
Проверка статуса Livepatch
Вы можете заставить Livepatch выдавать вам отчет о состоянии, используя следующую команду:
Отчет о состоянии содержит:
Блок статуса говорит нам:
Принудительное обновление Livepatch сейчас
Весь смысл Livepatch в том, чтобы предоставить услугу управляемого обновления, то есть вам не нужно об этом думать. Это все сделано для вас. Но если вы хотите, вы можете заставить Livepatch проверять исправления ядра (и применять любые найденные) с помощью следующей команды:
Livepatch сообщает вам версию ядра до и после обновления. В этом примере нечего было применять.
Меньше трений, больше безопасности
Трения безопасности — это боль или неудобство, связанные с внедрением, использованием или поддержанием функции безопасности. Если трение слишком велико, безопасность страдает, потому что функция не используется или не поддерживается. Livepatch устраняет все трудности, связанные с применением критических обновлений ядра, обеспечивая максимально возможную безопасность вашего ядра.
Как пропатчить ядро без перезагрузки: livepatch, kpatch и Canonical Livepatch Service
Тему обновления патчей ядра без перезагрузки мы уже рассматривали в статье, опубликованной в 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?
Используйте канонический Livepatch для повышения безопасности между перезапусками.
Я должен войти, чтобы сделать это, так стоит ли настраивать? Я не уверен, что это такое; коробка не отмечена. Я спросил своего знающего ИТ-друга, но он не знает.
Чем безопаснее, тем лучше, но стоит ли это того, насколько это сложно?
(Я новичок в Kubuntu, это процесс обучения)
3 ответа
Livepatch позволяет устанавливать некоторые критические обновления безопасности ядра без перезагрузки системы, напрямую исправляя работающее ядро.
Это не влияет на регулярные (не критичные для безопасности) обновления ядра, вам все равно нужно установить их обычным способом и перезагрузить. Это также не влияет на обновления других неядерных пакетов, которые в любом случае не требуют перезагрузки.
На обычном домашнем или офисном компьютере, который перезагружается ежедневно (или, по крайней мере, каждые несколько дней или недель, ваш пробег может меняться), Livepatch, вероятно, не дает вам много преимуществ. Он в основном предназначен для серверов, которые должны иметь месяцы и годы непрерывной работы без перезагрузок.
См., Например, это сообщение в блоге для получения дополнительной информации о Livepatch: http://blog.dustinkirkland.com/2016/10/canonical-livepatch.html
Я действительно пробовал это некоторое время (месяцы), когда он впервые вышел, и он никогда не вызывался.
Вам вряд ли понадобится это на настольном компьютере.
В диалоге есть дальнейшее описание. Livepatch позволяет применять обновления без перезагрузки. Это обычно (но не всегда) должно быть временным. В этих случаях это не то же самое, что перезапуск, чтобы правильно применить обновление. Кроме того, некоторые обновления не могут быть применены вообще без перезагрузки
Если вы намереваетесь / должны поддерживать систему в течение длительного времени и думаете, что не сможете перезагрузить компьютер для обновления, лучше всего это настроить. Как только обновление (особенно обновления для системы безопасности) будет развернуто, вы захотите запустить его в своей системе как можно скорее, чтобы минимизировать риск