Kernel live patching - это отличный способ поддерживать вашу инфраструктуру в актуальном состоянии, сводя к минимуму ручную работу и избегая перезагрузки системы.
Ядром операционной системы Linux обеспечивает основное взаимодействие между аппаратным и программным обеспечением. Оно также выполняет такие задачи, как управление памятью, управление процессами, безопасность системы, взаимодействие с аппаратным обеспечением и т.д. и т.п. Такая важная часть операционной системы неизбежно имеет недостатки или уязвимости, которые необходимо устранять и поддерживать.
Обновление ядра, как ключевого компонента операционной системы, традиционно требовало перезагрузки системы. Это изменилось с выходом версии 5.10 ядра Linux в декабре 2020 года. (Некоторые дистрибутивы Linux поддерживали Kernel live patching до версии 5.10).
Если вы используете версию ядра, которая поддерживает это, вы можете (и должны) воспользоваться преимуществами Kernel live patching. Этот метод выполнения кода работает наряду с зондированием ядра и трассировкой функций. Вместо того чтобы полагаться на перенаправление с использованием точки останова для проб ядра или предопределенного места (в случае трассировки функций), живое исправление обычно выполняется путем перенаправления кода как можно ближе к входу функции.
Как включить Kernel live patching
Включение Kernel live patching зависит от дистрибутива Linux, но в целом все просто.
Во-первых, проверьте версию ядра. Вы можете сделать это с помощью менеджера пакетов:
1 | dnf list kernel |
Пример вывода
1 2 3 | kernel.x86_64 4.18.0-373.el8 @baseos kernel.x86_64 4.18.0-383.el8 @baseos kernel.x86_64 4.18.0-394.el8 @baseos |
В качестве альтернативы используйте команду uname:
1 | uname -r |
Пример:
1 2 | 4.18.0-383.el8.x86_64 |
Kernel live patching в CentOS 8.1+
Живое исправление ядра уже включено в RHEL и CentOS, начиная с версии 8.1. Проверить это можно, убедившись, что установлен kpatch:
1 2 3 4 5 6 | dnf install kpatch ... Package kpatch-0.9.4-2.el8.noarch is already installed. Dependencies resolved. Nothing to do. Complete! |
Далее установите kpatch-dnf, который обеспечивает автоматическую установку патчей kpatch:
1 | dnf install kpatch-dnf |
После установки плагина включите подписку на обновления ядра:
1 | dnf kpatch auto |
Kernel live patching в CentOS 7.7+
Kernel live patching также готово к работе в CentOS и RHEL 7.7 и выше, хотя kpatch-dnf недоступен. После установки kpatch вы должны вручную установить исправления ядра. Вот быстрый метод установки всех актуальных патчей ядра для текущего ядра:
1 2 | yum install -y "kpatch-patch = $(uname -r)" |
Утилиты Kernel live patching
Между командами dnf и kpatch у вас есть очень хорошие утилиты для сбора информации о том, какие патчи установлены и для каких CVE имеются патчи.
Команда kpatch list отображает загруженные и установленные исправления ядра. Это очень полезно для аудита и отслеживания:
1 2 | kpatch list |
Хотя следующая команда не относится исключительно к исправлению ядра, ее полезно знать. Эта команда показывает список CVE, степень серьезности каждого из них и затронутый пакет (включая ядро):
1 | dnf updateinfo list cves |
С помощью некоторой фильтрации вы можете отобразить только то, что вас интересует:
1 2 | yum updateinfo list cves | grep -i kernel | grep CVE |
Команда dnf update --security выполняет обновление dnf, но запускает только обновления, связанные с исправлениями безопасности, включая исправления ядра.
1 | dnf update --security |