银河麒麟修复“OpenSSH 代码问题漏洞(CVE-2023-38408)“
漏洞扫描软件扫银河麒麟2403版本,扫出来一个超高危漏洞,CVE-2023-38408,网上查了一圈,说是OPENSSH版本过低,9.3p1以下都有这个漏洞,而银河麒麟仓库里最高版本是8.2,不能通过apt直接安装来解决这个问题,只能硬着头皮用OPENSSH的源码来编译升级.离线环境就更坑,连依赖包都要下载好导进去.离线环境怎么准备需要的包,可以参考银河麒麟离线安装deb包-CSDN博客
步骤如下:
- 查看当前ssh版本号,记住当前版本号,后续安装完成后好与之对比
ssh –V
sshd -V
关于ssh和sshd的关系可参考https://blog.csdn.net/pcling/article/details/147957035
2.下载最新openssh源码,可访问
OpenSSH: Mirrors
最新版本是10.0,下载连接很多,下图中哪个速度快用哪个
银河麒麟2403,通过apt安装了openssh,并且能正常运行,编译所需的g++这些环境应该都是满足的,只需要下载zlib1g-dev和libssl-dev两个包就行了,参考银河麒麟离线安装deb包-CSDN博客,下载下来的包拷贝到离线主机上,通过sudo dpkg -i 来安装,像干净的麒麟服务器版,连dpkg都没有,就得想办法先装dpkg工具了.
3.在拷贝进去的文件夹中右键-打开终端
4.安装zlib1g
sudo dpkg -i zlib1g-dev_1%3a1.2.11.dfsg-2kylin1.5k0.2_amd64.deb
5.安装libssl-dev
sudo dpkg -i libssl-dev_1.1.1f-1kylin2.22k0.1_amd64.deb
6.解压openssh-10.0p1.tar.gz
tar -xvf openssh-10.0p1.tar.gz
7.进入解压后的文件夹
cd openssh-10.0p1/
8.关闭银河麒麟的安全验证,不然安装过程中会不停的弹窗确认
setstatus disable
9.编译OpenSSH源码,依次执行下边几条指令
sudo ./configure --with-privsep-path=/var/lib/sshd/ --sysconfdir=/etc/ssh
成功后如下图,安装后的目录在user binaries:/usr/local/bin,这个信息很重要,默认安装的在/usr/bin里边,也就是说编译安装成功后,并不会覆盖原有老版本,后续会用到这里.
sudo make
sudo make clean
这里如果不清理的话,安装过程会提示某些文件已经存在,不会自动覆盖
sudo make install
通过apt安装的老的sshd执行文件在/usr/sbin下放着,而新编出来的执行文件默认在/usr/local/sbin里边,如上图,这时候就要将/usr/sbin下的sshd文件替换掉,执行下边指令:
进入路径
cd /usr/sbin
重命名原来的老版本,备个份
sudo mv sshd sshd_8.2
新建一个软链接链到新编出来的sshd文件上
sudo ln -s /usr/local/sbin/sshd sshd
重启ssh服务
sudo systemctl stop ssh
sudo systemctl start ssh
不出意外就完成升级了,有意外的话就是你点背不要怨社会