通过livepatch-mgr工具管理内核热补丁

livepatch-mgr是Alibaba Cloud Linux操作系统提供的内核热补丁管理工具,用于热补丁相关运维管理操作,例如安装热补丁、查询热补丁信息、加载或卸载热补丁等,以便在不需要重启系统的情况下给正在运行的内核应用安全更新或修复漏洞。本文主要介绍如何使用内核热补丁管理工具livepatch-mgr查看、安装、加载或卸载内核热补丁。

背景信息

Alibaba Cloud Linux为保障系统的稳定与安全,会紧密跟进Linux业界与社区发现的各种软件问题及安全漏洞(CVE),及时更新包括内核在内的软件包,修复软件缺陷(Bugfix)并修补安全漏洞(CVE)。您可以基于Alibaba Cloud Linux安全更新记录,选择冷补丁或热补丁的方式更新内核软件包。本文主要介绍内核热补丁管理工具livepatch-mgr的使用方法。

Alibaba Cloud Linux的安全更新记录,请参见:

安装livepatch-mgr工具

您可以按照以下操作安装livepatch-mgr,并查看livepatch-mgr支持哪些功能来管理热补丁。

  1. 远程连接需要热补丁的Alibaba Cloud Linux实例。

  2. 运行以下命令,安装内核热补丁管理工具livepatch-mgr。

    sudo yum install livepatch-mgr -y
  3. 运行以下命令,查看livepatch-mgr工具支持的功能。

    livepatch-mgr -h

    命令行返回结果如下图所示:

    image

    livepatch-mgr提供了多个子命令,每个子命令支持的功能说明如下:

    • list:查询本主机的热补丁相关信息。命令的具体使用说明,请参见查询热补丁信息

    • update:安装并自动加载适用于本主机的热补丁。命令的具体使用说明,请参见安装热补丁

    • load/unload:手动加载/卸载已安装在本主机的热补丁。命令的具体使用说明,请参见加载/卸载热补丁

    • version:查看livepatch-mgr工具的版本。

    • sync:更新livepatch-mgr的缓存数据,以便及时获得安全软件包更新情况。命令的具体使用说明,请参见更新livepatch-mgr缓存数据

    • remind:登录Shell时,Livepatch-mgr Security Reminder会对当前系统的热补丁状态进行通知。命令的具体使用说明,请参见热补丁状态告警通知

安装热补丁

您可以通过livepatch-mgr的update相关命令,安装并自动加载热补丁。

同时,livepatch-mgr工具支持在update命令后添加--bugfix--security以及-cves <CVEs>参数,供您在不同的场景下选择使用。具体说明如下:

操作场景

运行命令

安装并自动加载本主机适用的所有热补丁

sudo livepatch-mgr update

安装并自动加载本主机适用的Bugfix类热补丁

sudo livepatch-mgr update --bugfix

安装并自动加载本主机适用的CVE类热补丁

sudo livepatch-mgr update --security

指定CVE ID,安装并自动加载指定的CVE类热补丁

sudo livepatch-mgr update --cves <CVEs>

变量<CVEs>表示可以指定一个或多个CVE ID,当指定多个CVE ID时,需要使用半角逗号(,)间隔,且严格区分变量值的大小写。例如:

sudo livepatch-mgr update --cves CVE-2021-33909,CVE-2021-22555

指定Advisory ID,安装并自动加载指定的Advisory类热补丁

sudo livepatch-mgr update --ids=<Advisory IDs>

变量<Advisory IDs>表示可以指定一个或多个Advisory ID,当指定多个Advisory ID时,需要使用半角逗号(,)间隔,且严格区分变量值的大小写。

例如:

sudo livepatch-mgr update --ids=ALINUX3-SA-2023:0042.ALINUX3-SA-2023:0017

sudo livepatch-mgr update命令为例,安装并自动加载本主机适用的所有热补丁的返回结果如下:

命令返回结果

Last metadata expiration check: 3:12:09 ago on Wed 08 May 2024 11:54:18 AM CST.
Dependencies resolved.
================================================================================
 Package                       Arch   Version                Repository    Size
================================================================================
Installing:
 kernel-hotfix-11169823-11.1.al8
                               x86_64 1.0-20221221203219.al8 alinux3-plus 225 k

Transaction Summary
================================================================================
Install  1 Package

Total download size: 225 k
Installed size: 875 k
Downloading Packages:
kernel-hotfix-11169823-11.1.al8-1.0-20221221203 567 kB/s | 225 kB     00:00    
--------------------------------------------------------------------------------
Total                                           567 kB/s | 225 kB     00:00     
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                        1/1 
  Running scriptlet: kernel-hotfix-11169823-11.1.al8-1.0-20221221203219.a   1/1 
  Installing       : kernel-hotfix-11169823-11.1.al8-1.0-20221221203219.a   1/1 
  Running scriptlet: kernel-hotfix-11169823-11.1.al8-1.0-20221221203219.a   1/1 
Created symlink /etc/systemd/system/multi-user.target.wants/kpatch.service → /usr/lib/systemd/system/kpatch.service.
installing /var/khotfix/5.10.112-11.1.al8.x86_64/11169823/kpatch-11169823.ko (5.10.112-11.1.al8.x86_64)
loading patch module: /var/khotfix/5.10.112-11.1.al8.x86_64/11169823/kpatch-11169823.ko

  Verifying        : kernel-hotfix-11169823-11.1.al8-1.0-20221221203219.a   1/1 

Installed:
  kernel-hotfix-11169823-11.1.al8-1.0-20221221203219.al8.x86_64                 

Complete!

Last metadata expiration check: 3:12:11 ago on Wed 08 May 2024 11:54:18 AM CST.
Dependencies resolved.
==========================================================================================
 Package                                Arch    Version                Repository     Size
==========================================================================================
Installing:
 kernel-hotfix-11463591-5.10.112-11.1   x86_64  1.0-20230118200906.al8 alinux3-plus  209 k

Transaction Summary
==========================================================================================
Install  1 Package

Total download size: 209 k
Installed size: 760 k
Downloading Packages:
kernel-hotfix-11463591-5.10.112-11.1-1.0-202301 763 kB/s | 209 kB     00:00    
--------------------------------------------------------------------------------
Total                                           762 kB/s | 209 kB     00:00     
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                        1/1 
  Running scriptlet: kernel-hotfix-11463591-5.10.112-11.1-1.0-20230118200   1/1 
  Installing       : kernel-hotfix-11463591-5.10.112-11.1-1.0-20230118200   1/1 
  Running scriptlet: kernel-hotfix-11463591-5.10.112-11.1-1.0-20230118200   1/1 
installing /var/khotfix/5.10.112-11.1.al8.x86_64/11463591/kpatch-11463591.ko (5.10.112-11.1.al8.x86_64)
loading patch module: /var/khotfix/5.10.112-11.1.al8.x86_64/11463591/kpatch-11463591.ko

  Verifying        : kernel-hotfix-11463591-5.10.112-11.1-1.0-20230118200   1/1 

Installed:
  kernel-hotfix-11463591-5.10.112-11.1-1.0-20230118200906.al8.x86_64            

Complete!

Last metadata expiration check: 3:12:13 ago on Wed 08 May 2024 11:54:18 AM CST.
Dependencies resolved.
===============================================================================================
 Package                                     Arch    Version                Repository     Size
===============================================================================================
Installing:
 kernel-hotfix-CVE-2023-0461-5.10.112-11.1   x86_64  1.0-20230316125119.al8 alinux3-plus  232 k

Transaction Summary
===============================================================================================
Install  1 Package

Total download size: 232 k
Installed size: 924 k
Downloading Packages:
kernel-hotfix-CVE-2023-0461-5.10.112-11.1-1.0-2 997 kB/s | 232 kB     00:00    
--------------------------------------------------------------------------------
Total                                           995 kB/s | 232 kB     00:00     
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                        1/1 
  Running scriptlet: kernel-hotfix-CVE-2023-0461-5.10.112-11.1-1.0-202303   1/1 
  Installing       : kernel-hotfix-CVE-2023-0461-5.10.112-11.1-1.0-202303   1/1 
  Running scriptlet: kernel-hotfix-CVE-2023-0461-5.10.112-11.1-1.0-202303   1/1 
installing /var/khotfix/5.10.112-11.1.al8.x86_64/CVE-2023-0461/kpatch-CVE-2023-0461.ko (5.10.112-11.1.al8.x86_64)
loading patch module: /var/khotfix/5.10.112-11.1.al8.x86_64/CVE-2023-0461/kpatch-CVE-2023-0461.ko

  Verifying        : kernel-hotfix-CVE-2023-0461-5.10.112-11.1-1.0-202303   1/1 

Installed:
  kernel-hotfix-CVE-2023-0461-5.10.112-11.1-1.0-20230316125119.al8.x86_64       

Complete!

Last metadata expiration check: 3:12:15 ago on Wed 08 May 2024 11:54:18 AM CST.
Dependencies resolved.
===============================================================================================
 Package                                     Arch    Version                Repository     Size
===============================================================================================
Installing:
 kernel-hotfix-CVE-2023-0386-5.10.112-11.1   x86_64  1.0-20230512161247.al8 alinux3-plus  120 k

Transaction Summary
===============================================================================================
Install  1 Package

Total download size: 120 k
Installed size: 482 k
Downloading Packages:
kernel-hotfix-CVE-2023-0386-5.10.112-11.1-1.0-2 587 kB/s | 120 kB     00:00    
--------------------------------------------------------------------------------
Total                                           585 kB/s | 120 kB     00:00     
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                        1/1 
  Running scriptlet: kernel-hotfix-CVE-2023-0386-5.10.112-11.1-1.0-202305   1/1 
  Installing       : kernel-hotfix-CVE-2023-0386-5.10.112-11.1-1.0-202305   1/1 
  Running scriptlet: kernel-hotfix-CVE-2023-0386-5.10.112-11.1-1.0-202305   1/1 
installing /var/khotfix/5.10.112-11.1.al8.x86_64/CVE-2023-0386/kpatch-CVE-2023-0386.ko (5.10.112-11.1.al8.x86_64)
loading patch module: /var/khotfix/5.10.112-11.1.al8.x86_64/CVE-2023-0386/kpatch-CVE-2023-0386.ko

  Verifying        : kernel-hotfix-CVE-2023-0386-5.10.112-11.1-1.0-202305   1/1 

Installed:
  kernel-hotfix-CVE-2023-0386-5.10.112-11.1-1.0-20230512161247.al8.x86_64       

Complete!

查询热补丁信息

您可以通过livepatch-mgr的list相关命令,查询已安装的内核热补丁。

同时,livepatch-mgr工具支持在list命令后添加--installed--bugfix--security--running以及--available参数,供您在不同的场景下选择使用。具体说明如下:

操作场景

运行命令

查询本主机适用的所有热补丁

sudo livepatch-mgr list

查询本主机已安装的热补丁

sudo livepatch-mgr list --installed

查询本主机已安装的Bugfix类热补丁

sudo livepatch-mgr list --installed --bugfix

查询本主机已安装的CVE类热补丁

sudo livepatch-mgr list --installed --security

查询本主机正在生效的所有热补丁

sudo livepatch-mgr list --running

查询本主机正在生效的Bugfix类热补丁

sudo livepatch-mgr list --running --bugfix

查询本主机正在生效的CVE类热补丁

sudo livepatch-mgr list --running --security

查询本主机可用但未安装的所有热补丁

sudo livepatch-mgr list --available

查询本主机可用但未安装的Bugfix类热补丁

sudo livepatch-mgr list --available --bugfix

查询本主机可用但未安装的CVE类热补丁

sudo livepatch-mgr list --available --security

sudo livepatch-mgr list命令为例,查询本主机适用的所有热补丁的返回结果如下。

Loaded patch modules:
Update ID            CVE ID(s)       Hotfix ID       Description
HOTFIX-SA-2023:0001  CVE-2022-4378   11169823        Package updates are available for Alibaba Cloud Li...(more)
HOTFIX-SA-2023:0002  CVE-2023-0179   11463591        Package updates are available for Alibaba Cloud Li...(more)
HOTFIX-SA-2023:0004  CVE-2023-0386   CVE-2023-0386   Package updates are available for Alibaba Cloud Li...(more)
HOTFIX-SA-2023:0003  CVE-2023-0461   CVE-2023-0461   Package updates are available for Alibaba Cloud Li...(more)


Installed patch modules:
HOTFIX-SA-2023:0001  CVE-2022-4378   11169823        Package updates are available for Alibaba Cloud Li...(more)
HOTFIX-SA-2023:0002  CVE-2023-0179   11463591        Package updates are available for Alibaba Cloud Li...(more)
HOTFIX-SA-2023:0004  CVE-2023-0386   CVE-2023-0386   Package updates are available for Alibaba Cloud Li...(more)
HOTFIX-SA-2023:0003  CVE-2023-0461   CVE-2023-0461   Package updates are available for Alibaba Cloud Li...(more)


Available and not installed patch modules:

根据返回结果可以将查询到的热补丁分为三类:

  • Loaded patch modules:表示已加载的热补丁

  • Installed patch modules:表示已安装但未加载的热补丁

  • Available and not installed patch modules:表示可用但未安装的热补丁

加载/卸载热补丁

通过update相关命令安装热补丁时,系统会自动加载热补丁。在系统运维过程中,您可以根据实际需要通过unload相关命令卸载热补丁、通过load相关命令再手动加载热补丁。

同时,livepatch-mgr工具支持在unloadload命令后添加--security--bugfixunload <目标热补丁标识>参数,供您在不同的场景下选择使用。具体说明如下:

操作场景

运行命令

加载/卸载本主机中已安装的所有热补丁

  • 加载:sudo livepatch-mgr load

  • 卸载:sudo livepatch-mgr unload

加载/卸载本主机中已安装的CVE类热补丁

  • 加载:sudo livepatch-mgr load --security

  • 卸载:sudo livepatch-mgr unload --security

加载/卸载本主机中已安装的Bugfix类热补丁

  • 加载:sudo livepatch-mgr load --bugfix

  • 卸载:sudo livepatch-mgr unload --bugfix

加载/卸载本主机中某一具体的热补丁

  • 加载:sudo livepatch-mgr load <目标热补丁标识>

  • 卸载:sudo livepatch-mgr unload <目标热补丁标识>

变量<目标热补丁标识>表示支持通过热补丁中的内核模块(ko文件)的绝对路径或模块名称指定要加载或卸载的热补丁信息。例如:

  • 通过热补丁中内核模块(ko文件)的绝对路径指定热补丁包。以加载为例,命令使用如下:

    sudo livepatch-mgr load /var/khotfix/5.10.112-11.1.al8.x86_64/11169823/kpatch-11169823.ko
  • 通过热补丁的模块名称(不带.ko后缀)指定热补丁包。以加载为例,命令使用如下:

    sudo livepatch-mgr load kpatch-11463591
  • 通过热补丁的模块名称(带.ko后缀)指定热补丁包。以加载为例,命令使用如下:

    sudo livepatch-mgr load kpatch-4121479.ko

sudo livepatch-mgr load命令为例,加载本主机中已安装的所有热补丁的返回结果如下所示:

loading kernel-hotfix-11169823-11.1.x86_64
loading patch module: /var/khotfix/5.10.112-11.1.al8.x86_64/11169823/kpatch-11169823.ko

loading kernel-hotfix-11463591-11.1.x86_64
loading patch module: /var/khotfix/5.10.112-11.1.al8.x86_64/11463591/kpatch-11463591.ko

loading kernel-hotfix-CVE-2023-0386-11.1.x86_64
loading patch module: /var/khotfix/5.10.112-11.1.al8.x86_64/CVE-2023-0386/kpatch-CVE-2023-0386.ko

loading kernel-hotfix-CVE-2023-0461-11.1.x86_64
loading patch module: /var/khotfix/5.10.112-11.1.al8.x86_64/CVE-2023-0461/kpatch-CVE-2023-0461.ko

更新livepatch-mgr缓存数据

您可以通过sync子命令,直接更新livepatch-mgr的缓存数据,以便及时获得安全包的更新情况。

sudo livepatch-mgr sync

热补丁状态告警通知

您可以通过livepatch-mgr的remind相关命令,对系统中的热补丁状态进行监控。

  • 查看系统热补丁的状态

    您可以通过remind命令直接查看当前系统的热补丁状态。

    sudo livepatch-mgr remind
  • 开启告警功能

    安装livepatch-mgr工具后,您可以通过sudo livepatch-mgr remind --enable命令开启告警功能。开启后,每次登录Shell时,Livepatch-mgr Security Reminder都会对当前系统的热补丁状态进行通知,告诉您目前系统有多少个待安装的热补丁、有多少个已经安装但是没有加载的热补丁。

    通知信息示例如下:

    ****************** Livepatch-mgr Security Reminder ******************
    Your system have [0] security packages available to install
    Your system have [0] security packages installed but not loaded
    Conclusion :  Safe 
    *********************************************************************
  • 关闭告警功能

    关闭告警功能后,登录Shell时,Reminder将不会对当前系统安全包状态进行通知。

    sudo livepatch-mgr remind --disable