服务器爆出Linux kernel权限提升漏洞,所以需要升级内核。所以我记录一下升级内核的过程。
因为有权限漏洞,所以升级全程离线断网。
一 下载
先下载内核升级文件,打算升级的目标是6.1.76版本
Index of /mainline/v6.1.76/amd64
下载完毕后传到服务器上,注意不要放到/tmp目录下,一个重启文件就没了。
二 安装
安装很简单了
sudo dpkg -i linux*.deb
但是请问注意,
这个文件linux-headers-6.1.76-060176-generic_6.1.76-060176.202402010036_amd64.deb
需要lib6版本大于2.34,需要llbssl3大于3.0.0
而libc6是系统底层,不能随便升级。
安装libc6需要找与系统相对接近的版本去更新,否则会出现系统异常。
而我的服务器的Ubuntu 18.04默认的libc版本是2.27。
哦豁,完蛋。
不过我还是不死心的想试试跳过这个包会怎么样。
三 修改配置
检查当前内核版本
uname -r
检查当前内核列表
dpkg --list | grep linux-image
检查当前内核列表数量
dpkg --list | grep -c linux-image
更新 initramfs 映像,
运行此命令时,它将为指定的内核版本创建或更新 initramfs 映像。 initramfs 映像包含启动系统所需的内核模块、驱动程序和其他文件。这确保了系统在启动时具有正确的模块和配置,以成功启动指定的内核版本。
sudo update-initramfs -u -k 6.1.76-060176-generic
修改grub配置
vim /etc/default/grub
# GRUB_DEFAULT设置默认启动内核为多少,序号从0开始。
# 后面的10指的是第11个内核。前面的dpkg --list | grep -c linux-image就是为了后面的这个数字。
GRUB_DEFAULT="1> 10" #GRUB_TIMEOUT属性:进入默认启动项的等候时间。一般不需要改。
#参数:单位:秒,默认0,-1表示一直等待
GRUB_TIMEOUT=0# 根据第一个配置来自动读取内核配置,不建议改
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`#属性:内核启动参数的默认值,text指的是纯文本,可以改成图形化界面"maybe-ubiquity"
GRUB_CMDLINE_LINUX_DEFAULT="text"GRUB_CMDLINE_LINUX=""注意做好备份,最终样式:
GRUB_DEFAULT="1> 10"
GRUB_TIMEOUT=0
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="text"
GRUB_CMDLINE_LINUX=""
更新grub
sudo update-grub
四 重启
重启
sudo reboot
检查当前内核版本
uname -r
一般来说,uname -r显示6.1.76就是正常升级结束了。诸位读者就可以离开了。
但是这次不正常,因为我上面因为libc6的版本问题跳过了linux-headers-6.1.76-060176-generic_6.1.76-060176.202402010036_amd64.deb的安装。
这会导致两种情况
1 文本显示情况下,可以正常登录和操作,但是屏幕会时不时的出现bpfilter:read fail 0,非常影响体验。
2 图形化操作界面情况下,这个报错可能是因为显示策略而被过滤掉。(反正我在谷歌上搜索解决bpfilter:read fail 0报错中有个处理方法是修改显示策略)
但是我深感不安,这样子的升级真的没有隐患吗,说不定某天晚上系统炸掉我就要连夜修环境……
所以最好是升级一下Ubuntu版本。