Форум русскоязычного сообщества Ubuntu
Страница сгенерирована за 0.037 секунд. Запросов: 25.
- Сайт
- Об Ubuntu
- Скачать Ubuntu
- Семейство Ubuntu
- Новости
- Форум
- Помощь
- Правила
- Документация
- Пользовательская документация
- Официальная документация
- Семейство Ubuntu
- Материалы для загрузки
- Совместимость с оборудованием
- RSS лента
- Сообщество
- Наши проекты
- Местные сообщества
- Перевод Ubuntu
- Тестирование
- RSS лента
© 2012 Ubuntu-ru — Русскоязычное сообщество Ubuntu Linux.
© 2012 Canonical Ltd. Ubuntu и Canonical являются зарегистрированными торговыми знаками Canonical Ltd.
Canonical Livepatch Service — сервис обновления ядра Linux в Ubuntu без перезагрузки
Вчера вечером Дастин Кирклэнд (Dustin Kirkland) из Canonical анонсировал публичный запуск сервиса Canonical Livepatch Service, который бесплатно доступен всему сообществу пользователей Ubuntu.
Canonical Livepatch Service — коммерческий корпоративный сервис, предоставляющий «живые» патчи к ядру Linux (т.е. применяемые без перезагрузки системы), прошедшие проверку подлинности, зашифрованные и протестированные в Canonical. На данный момент в нём предлагаются обновления для ядра Linux 4.4 в составе дистрибутива Ubuntu 16.04 «Xenial Xerus» LTS для 64-битных архитектур Intel/AMD (x86_64, amd64), в серверной и десктопной редакциях. Эти патчи устраняют наиболее критические уязвимости в безопасности, исправление которых возможно без перезагрузки операционной системы. В рамках бесплатной доступности своего сервиса Canonical разрешает применять его на трёх системах, а для большего количества хостов предлагается воспользоваться коммерческой подпиской Ubuntu Advantage.
Использование сервиса сводится к следующей простой инструкции:
- Зайти на https://ubuntu.com/livepatch для получения аутентификационного токена в сервиса Livepatch.
- Установить livepatch snap (sudo snap install canonical-livepatch).
- Активировать свой аккаунт по токену (sudo canonical-livepatch enable ).
Убедиться, что сервис работает на текущей системе, можно так:
$ canonical-livepatch status kernel: 4.4.0-38.57-generic fully-patched: true version: «12.2»
В 2017 году Canonical рассмотрит предоставление «живых» патчей для всех ядер HWE (Hardware Enablement Stacks, т.е. входящих в составы LTS-релизов Ubuntu).
Сравнивая свой сервис с другими доступными решениями, такими как Oracle Ksplice и kpatch/kgraft в RHEL и SUSE, авторы из Canonical отмечают, что используют upstream-технологию применения live-патчей из ядра, а также предоставляют бесплатный доступ к сервису обычным пользователям Ubuntu. Несмотря на это, на сайте Ksplice предлагается бесплатная версия Ksplice Desktop для домашних пользователей Ubuntu (12.04, 14.04, 16.04, 16.10) и Fedora (23 и 24), которая не требует регистрации, но просит обязательного указания электронной почты.
Как пропатчить ядро без перезагрузки: 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) включена по умолчанию.
Чтобы проверить, как она работает, нам потребуется, во-первых, установить заголовки ядра:
$ sudo apt-get install linux-headers-$(uname -r)
Далее установим отладочные символы ядра:
#добавляем репозитории $ codename=$(lsb_release -sc) $ sudo tee /etc/apt/sources.list.d/ddebs.list main restricted universe multiverse deb http://ddebs.ubuntu.com/ $-security main restricted universe multiverse deb http://ddebs.ubuntu.com/ $-updates main restricted universe multiverse deb http://ddebs.ubuntu.com/ $-proposed main restricted universe multiverse EOF #добавляем ключ wget -Nq http://ddebs.ubuntu.com/dbgsym-release-key.asc -O- | sudo apt-key add - #обновляем список пакетов $ sudo apt-get update #устанавливаем отладочные символы $ sudo apt-get install linux-image-$(uname -r)-dbgsym
$ sudo apt-get build-dep linux
При выполнении этой команды в Ubuntu 16.04 может быть выдано следующее сообщение об ошибке:
E: You must put some 'source' URIs in your sources.list
Причина ошибки в том, что репозитории deb-src по умолчанию не подключены, а соответствующие строки в файле /etc/apt/sources.list закомментированы. Чтобы мы смогли работать с репозиториями исходных кодов, выполним:
$ sudo sed -i -- 's/#deb-src/deb-src/g' /etc/apt/sources.list && sudo sed -i -- 's/# deb-src/deb-src/g' /etc/apt/sources.list $ sudo apt-get update
После этого предыдущая команда будет выполняться без ошибок. К эксперименту всё готово, можно начинать:
wget http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/plain/samples/livepatch/livepatch-sample.c
Мы скачали код модуля ядра, который вносит изменения в основной ядерный код и модифицирует вывод команды cat /proc/cmdline. Теперь этот самый модуль нужно собрать. Для этого создадим следующий make-файл:
obj-m +=livepatch-sample.o KDIR= /lib/modules/$(shell uname -r)/build all: $(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules clean: rm -rf *.o *.ko *.mod.* .c* .t*
Соберём модуль и вставим его в ядро:
$ make $ insmod livepatch-sample.ko
Посмотрим, что получилось. Выполним:
$ cat /proc/cmdinfo
Вместо стандартной информации о параметрах ядра мы увидим вот такой текст:
this has been live patched
Как видим, патч был успешно применён.
Вся информация о загруженных патчах хранится в директории /sys/kernel/livepatch:
$ ls /sys/kernel/livepatch/ livepatch_sample
Деактивировать патч можно с помощью команды:
$ echo 0 > /sys/kernel_livepatch/livepatch_sample/enabled
Kpatch
Kpatch — инструмент, разработанный компаний Red Hat. Впервые он был представлен широкой пользовательской аудитории в феврале 2016 года. За это время он был значительно усовершенствован: в Ubuntu 16.04 он уже включён в официальные репозитории. Рассмотрим особенности работы с kpatch на практических примерах.
Начнём с установки необходимых зависимостей:
$ sudo apt-get install libelf-dev dpkg-dev
Для полноценной работы с kpatch также желательно установить ccache:
$ sudo apt-get install ccache $ ccache --max-size=5G
Вот и всё, зависимости установлены. Можно устанавливать kpatch:
$ sudo apt-get install kpatch kpatch-build
В нашем эксперименте мы будем патчить исходники ядра. Клонируем репозиторий с исходным кодом нашей текущей версии Ubuntu:
git clone git://kernel.ubuntu.com/ubuntu/ubuntu-xenial.git
По завершении клонирования скопируем исходники в директорию ubuntu-xenial-kpatch (это нужно, чтобы вносить изменения в исходный код и потом создавать на основе этих изменений патчи):
$ mkdir ubuntu-xenial-kpatch $ cp -r ubuntu-xenial ubuntu-xenial-kpatch
Откроем файл ubuntu-xenial-kpatch/ubuntu-xenial/fs/proc/version.c и внесём в него следующие изменения:
#include #include #include #include #include #include static int version_proc_show(struct seq_file *m, void *v) < seq_printf(m, linux_proc_banner, "This has been patched!", utsname()->sysname, utsname()->release, utsname()->version); return 0; >
Cоздадим патч с помощью команды:
$ diff -u ubuntu-xenial/fs/proc/version.c ubuntu-xenial.kpatch/ubuntu-xenial/proc.version.c > version.patch
Патч представляет собой обычный текстовый файл, в котором перечислены внесённые изменения:
--- ubuntu-xenial/fs/proc/version.c 2016-12-05 10:04:30.126141156 +0300 +++ ubuntu-xenial.kpatch/ubuntu-xenial/fs/proc/version.c 2016-12-05 10:10:35.678461801 +0300 @@ -8,6 +8,7 @@ static int version_proc_show(struct seq_file *m, void *v) < seq_printf(m, linux_proc_banner, + "This has been patched!", utsname()->sysname, utsname()->release, utsname()->version);
Чтобы добавить патч в ядро, выполним:
$ kpatch-build -t vmlinux --skip-gcc-check version.patch WARNING: Skipping gcc version matching check (not recommended) Debian/Ubuntu distribution detected Downloading the kernel source for 4.4.0-51-generic Unpacking kernel source Testing patch file checking file fs/proc/version.c Reading special section data Building original kernel Building patched kernel Detecting changed objects Rebuilding changed objects Extracting new and modified ELF sections version.o: changed function: version_proc_show Building patch module: kpatch-version.ko SUCCESS
Как видно из только что приведённого вывода, на выходе мы получаем модуль ядра. Чтобы применить патч, нужно просто добавить этот модуль стандартным способом:
sudo insmod kpatch-version.ko
Посмотрим, что получилось в результате:
cat /proc/version This has been patched! version Linux (buildd@lcy01-08) (gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.4) ) 4.4.0-51-generic
Canonical Livepatch Service
Несколько месяцев назад компания Canonical запустила официальный сервис Canonical LivePatch Service, который позволяет патчить ядро «на лету» при помощи простейших команд. Этот сервис ориентирован в первую очередь на пользователей enterprise-уровня, и поэтому является платным.
Но рядовые пользователи тоже могут оперативно получать все свежие обновления ядра. Для этого нужно зарегистрироваться на Ubuntu One и получить токен. Токен даёт возможность установить на 3 машины программу canonical-livepatch, которая загружает и добавляет патчи.
Посмотрим, как работает Canonical Livepatch Service. Перейдём по ссылке выше, получим токен, а далее выполним:
$ sudo snap install canonical-livepatch
По завершении установки выйдем из системы, затем войдём снова и выполним:
$ sudo canonical-livepatch enable [токен]
Если всё было сделано правильно, мы получим следующее сообщение:
Successfully enabled device. Using machine-token: [токен]
Далее выполним команду:
$ canonical-livepatch status kernel: 4.4.0-47.68-generic fully-patched: true version: "14.1"
Вывод показывает, что сanonical-livepatch работает, и в ядро установлены все последние обновления. Более подробную информацию можно получить, воспользовавшись опцией −−verbose:
$ canonical-livepatch status --verbose client-version: "6" machine-id: [id] machine-token:[token] architecture: x86_64 cpu-model: Intel(R) Xeon(R) CPU E5-2670 v3 @ 2.30GHz last-check: 2016-12-05T11:56:02.88803394+03:00 boot-time: 2016-11-29T10:48:38+03:00 uptime: 145h18m21s status: - kernel: 4.4.0-47.68-generic running: true livepatch: checkState: checked patchState: applied version: "14.1" fixes: |- * CVE-2016-7425 * CVE-2016-8658
Также информацию об установленных патчах можно получить, заглянув в уже упомянутую выше директорию /sys/kernel/livepatch:
$ ls /sys/kernel/livepatch kpatch_livepatch_Ubuntu_4_4_0_47_68_generic_14
Kpatch_livepatch_Ubuntu_4_4_0_47_68_generic_14 — это и есть последний загруженный патч. Последние цифры в имени патча (14) совпадают с номером версии, указанным в выводе команды canonical-livepatch status (см. выше).
Убедиться, что новый патч был добавлен, можно и с помощью команды lsmod:
$ lsmod |grep livepatch kpatch_livepatch_Ubuntu_4_4_0_47_68_generic_14 36864 1
Заключение
В этой статье мы проделали небольшой отбор инструментов для добавления патчей в ядро Linux. Естественно, что все аспекты темы в рамках одной публикации затронуть невозможно. Если у вас есть замечания и дополнения — добро пожаловать в комментарии.
А если вы хотите изучить тему более глубоко, обратите внимание на следующие ссылки:
- https://github.com/dynup/kpatch — официальный репозиторий kpatch;
- https://events.linuxfoundation.org/sites/events/files/slides/kpatch-linuxcon_3.pdf — презентация доклада о kpatch c подробным разъяснением принципов его работы;
- http://events.linuxfoundation.org/sites/events/files/slides/kGraft.pdf — презентация о kGraft — инструменте, созданном разработчиками SUSE (мы в статье его не рассматривали);
- http://www.slideshare.net/UdoSeidel/kpatchkgraft — неплохая презентация о техниках наложения патчей «на лету»
- Блог компании Selectel
- *nix
Записки IT специалиста
Включаем расширенную поддержку ESM и Livepatch для Ubuntu
- Автор: Уваров А.С.
- 22.02.2022
Каждый системный администратор знает, как важно своевременно получать и устанавливать обновления безопасности, особенно касающиеся вновь найденных уязвимостей. Конечно, оптимальный вариант — это использовать последние выпуски ОС и ПО, находящиеся на поддержке, но к сожалению это возможно не всегда. Если вы используете Ubuntu, то можете присоединиться к программе Ubuntu Advantage, которая позволяет продлить срок поддержки LTS версий еще на 5 лет (суммарно 10). Как это сделать — мы расскажем в данной статье.
Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.
Что такое Ubuntu Advantage
Ubuntu Advantage (UA) — это сервисный пакет от компании Canonical для пользователей Ubuntu, включает коммерческую поддержку и ряд расширенных сервисов направленных на повышение управляемости и безопасности ваших систем. Пакет предоставляется на коммерческой основе, стоимость годового обслуживания для физического сервера начинается от $225, а для виртуальной машины от $75 в год. Для некоммерческого и личного использования предоставляется бесплатный пакет на три физических ПК, но мы не испытали никаких затруднений и при подключении виртуальной машины.
Мы сейчас не будем вдаваться в юридические и лицензионные подробности, отметим только, что цены на годовое обслуживание вполне приемлемые даже для малого бизнеса, особенно если сравнить их с возможным ущербом от компрометации системы в результате использования уязвимостей.
Далее мы будем рассматривать бесплатный пакет и два основных сервиса из него: Extended Security Maintenance (ESM) и Livepatch.
Extended Security Maintenance (ESM)
Данный сервис предоставляет особый интерес для пользователей систем с истекшим сроком основной поддержки. Extended Security Maintenance предоставляет обновления безопасности для всех бинарных пакетов находящихся в основном репозитории Ubuntu в течении дополнительных 5 лет, таким образом продлевая общий срок поддержки систем до 10 лет.
Но есть определенные тонкости. ESM не предоставляет исправления ошибок ПО, кроме тех, которые были вызваны обновлениями ESM. Также исправления безопасности предоставляются только по тем CVE, которые имеют статус важных или критических. Ну и наконец — поддерживаются только 64-х разрядные системы.
В настоящее время Extended Security Maintenance доступно для Ubuntu 14.04 LTS (до апреля 2024 года) и Ubuntu 16.04 LTS (до апреля 2026 года). О доступности ESM сообщается на официальном сайте после истечения срока основной поддержки, также об этом может сообщить утилита apt при обновлении пакетов.
![]()
Таким образом, если вы продолжаете использовать устаревшие системы, то подключение к Ubuntu Advantage и использование ESM позволит получать обновления безопасности в течении десятилетнего цикла, спокойно подготовить и осуществить переход на современные версии ОС и ПО. При этом обратите внимание, что ESM не распространяется на пакеты, поддерживаемые сообществом (репозитории universe и multiverse).
Livepatch Service
Livepatch — в буквальном переводе «живой патч» — еще один крайне полезный сервис, предоставляющий возможность устанавливать обновления безопасности ядра Linux без перезагрузки системы. В отличие от обычных обновлений, обновления ядра очень часто остаются не установленными по причине невозможности или нежелательности перезагрузки системы. Причин этому может быть множество, как объективных, так и не очень, но результат один — страдает безопасность системы. Livepatch позволяет избежать этой проблемы применяя исправления налету. Данная возможность доступна для всех систем входящих в Ubuntu Advantage, даже таких старых как Ubuntu 14.04 LTS.
Подключение к Ubuntu Advantage
Прежде всего вам нужно зарегистрироваться в сервисе Ubuntu One, никаких особых сложностей там нет, потребуется указать минимум данных и подтвердить адрес электронной почты.
![]()
После окончания регистрации и прохождения верификации перейдите на основной сайт Ubuntu и в персональном меню выберите пункт UA subscriptions, на открывшейся странице вы получите токен доступа для бесплатного подключения к Ubuntu Advantage трех физических систем.
![]()
Здесь же ниже, в разделе Documentation представлена команда для подключения системы, но не будем спешить. Прежде всего обновим список пакетов и установим все последние обновления:
apt update
apt full-upgrade
Для Ubuntu 14.04 LTS возможно придется использовать более старую утилиту apt-get:
apt-get update
apt-get dist-upgrade
После чего перезагрузим систему. Затем убедимся, что установлен пакет ubuntu-advantage-tools:
dpkg -l ubuntu-advantage-tools
Если все нормально, то вы увидите следующий вывод, обратите внимание на флаги ii, которые обозначают что пакет установлен.
![]()
В противном случае для установки пакета воспользуйтесь командой:
apt install ubuntu-advantage-tools
Затем можно подключить систему к UA используя команду:
ua attach
По умолчанию будут включены сервисы esm-infra и livepatсh.
![]()
Длу управления службами Ubuntu Advantage используйте команды:
ua enable | disable
Чтобы полностью отключить систему от UA с удалением регистрации в личном кабинете воспользуйтесь командой:
ua detach
После того, как вы подключили сервис ESM самое время еще раз обновить систему, установив все последние обновления безопасности. При этом вы увидите, что у вас появился новый источник пакетов ESM и доступны новые обновления, которые до этого были недоступны.
apt update
apt full-upgrade
![]()
После завершения процесса обновления не забудьте выполнить очистку от ненужных пакетов:
apt autoremove
или в Ubuntu 14.04 LTS:
apt-get autoremove
и перезагрузите систему, чтобы загрузилось новое ядро.
Включение Livepatch в Ubuntu 14.04 LTS
После подключения к Ubuntu Advantage для Ubuntu 14.04 LTS можно заметить, что активировался только сервис esm-infra, а при попытке включить livepatсh мы будем получать ошибку.
![]()
Это нормально, livepatch поддерживается начиная с ядра версии 4.4, в то время как Ubuntu 14.04 LTS использует ядро версии 3.x, также для работы данного сервиса нам потребуется поддержка snap. Обновим список пакетов и установим snapd, нужное ядро версии 4.4 будет установлено по зависимостям.
apt update
apt install snapd
После чего обязательно перезагрузите систему, чтобы активировать новое ядро, после чего добавим поддержку livepatch:
snap install canonical-livepatch
Если теперь мы проверим статус служб Ubuntu Advantage, то увидим, что напротив сервиса livepatch вместо n/a появилось disabled.
ua status
![]()
Попробуем снова включить сервис и в этот раз у нас должно все получиться:
ua enable livepatch
![]()
Теперь даже такая старая система, как Ubuntu 14.04 LTS окажется гораздо более защищена и сможет применять новые обновления безопасности ядра без перезагрузки системы.
Заключение
Как видим, Ubuntu Advantage предоставляет отличные возможности поддержки старых систем предоставляя им обновления безопасности в рамках Extended Security Maintenance (ESM) и такие современные возможности, как обновления ядра без перезагрузки системы в течении дополнительных пяти лет, после окончания основной поддержки. Стоимость пакета UA вполне доступна, а для личного и некоммерческого использования имеется возможность получения бесплатной подписки на три компьютера.
Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.
Помогла статья? Поддержи автора и новые статьи будут выходить чаще:
![]()
![]()
Или подпишись на наш Телеграм-канал: