Ubuntu 20.04.5 LTS openssh漏洞修复

为保障在升级openssh过程中出现网络中断导致连接不上服务器,建议先安装telnet服务,当网络中断时,可通过telnet远程到服务器。

CVE-2021-28041漏洞描述:

OpenSSH(OpenBSD Secure Shell)是Openbsd计划组的一套用于安全访问远程计算机的连接工具。该工具是SSH协议的开源实现,支持对所有的传输进行加密,可有效阻止窃听、连接劫持以及其他网络级的攻击。 OpenSSH before 8.5 存在安全漏洞,攻击者可利用该漏洞在遗留操作系统上不受约束的代理套接字访问

参考链接:

ubuntu20.4升级OpenSSL和OpenSSH_ubuntu升级openssh最新版_lqh_linux的博客-CSDN博客

openssh漏洞修复 - 简书

OpenSSH 安全漏洞(CVE-2021-28041)修复(升级OpenSSH至最新版本(8.6p1))_云间歌的博客-CSDN博客

Ubuntu系统升级openSSH和openSSL到最新版本8.8_ubuntu升级openssh到8.8_虚竹小和尚的博客-CSDN博客

一、安装包下载(下载说明中的版本)

openssl
官方下载地址: https://www.openssl.org/source/

openssl-3.1.0

openssh
官方下载地址:https://fastly.cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/

openssh-9.3p1(原8.2p1)

zlib
官方下载地址: http://www.zlib.net/

zlib-1.2.13

二、安装telnet服务

验证telnet服务是否存在并启用。telnet ip # 测试是否成功登陆;如果登录不成功,安装telnet服务。

在root下安装依赖

apt install xinetd

apt-get install openbsd-inetd telnetd telnet -y

启动服务

/etc/init.d/openbsd-inetd restart

# 出现Restarting openbsd-inetd (via systemctl): openbsd-inetd.service.

查看telnet服务的默认端口是否启动

netstat -anpt|grep 23

默认情况下,telnet连接不能用root账号登陆,需要用普通用户的账号连接

用 telnet ip 测试是否成功登陆

telnet 124.16.147.51

如果配置正确,系统提示输入远程机器的用户名和密码

注:默认只允许普通用户

root@aa:/home/aa# telnet 124.16.147.51
Trying 124.16.147.51...
Connected to 124.16.147.51.
Escape character is '^]'.
Ubuntu 20.04.5 LTS
aa login: aa
Password:
Welcome to Ubuntu 20.04.5 LTS (GNU/Linux 5.4.0-144-generic x86_64)

---参考下面的--------
[root@jzyue ~]# telnet 172.26.152.68
Trying 172.26.152.68...
Connected to 172.26.152.68.
Kernel 3.10.0-862.14.4.el7.x86_64 on an x86_64
jzyue login: root
Password: 
Last login: Thu May 30 09:27:56 from 221.130.253.135

Welcome to Alibaba Cloud Elastic Compute Service !

三、安装

在root下卸载原openssh

apt-get remove openssh-server openssh-client -y

此时想再通过类似xshell,putty之类的工具访问对应服务器就失效了,所以切勿关闭当前操作界面。

在root下安装 libpam0g-dev和gcc

apt-get update -y

apt-get install libpam0g-dev -y

apt install build-essential -y

四、安装zlib

cd /mnt/

cp -r /home/aa/下载/zlib-1.2.13 zlib-1.2.13

cd zlib-1.2.13/

./configure --shared

make && make install

五、安装OpenSSL

cd /mnt/

cp -r /home/aa/下载/openssl-3.1.0 openssl-3.1.0

./config shared zlib #一定要加上shared 参数,要不在安装openssh的时候就无法找到

make && make install

备份原来的openssl

mv /usr/bin/openssl /usr/bin/openssl.bak

mv /usr/include/openssl /usr/include/openssl.bak

创建软链接到系统位置

因为源码安装默认安装的位置是 /usr/local/ssl 需要将创建软链接到系统位置

ln -s /usr/local/bin/openssl /usr/bin/openssl

ln -s /usr/local/include/openssl /usr/include/openssl

执行上述命令前,建议先通过 find / -name openssl 查看一下bin和include对应的openssl安装包的位置,不出意外的话,应该和上面的命令是一样的。

查看libssl.so位置

find / -name "libssl.so"

#找到如下位置
/mnt/openssl-3.1.0/libssl.so
/usr/local/lib64/libssl.so

软链接openssl的lib库

mkdir -p /usr/local/openssl/lib64

ln -s /usr/local/lib64/libssl.so /usr/local/openssl/lib64/libssl.so

将openssl 的lib 库添加到系统

echo "/usr/local/openssl/lib64" > /etc/ld.so.conf.d/openssl.conf

使新添加的lib被系统找到

ldconfig -v

通过 find / -name libcrypto.so.3 和 find / -name libssl.so.3 查找到对应so文件的位置,并建立软连接

ln -s /usr/local/lib64/libssl.so.3 /usr/lib/libssl.so.3

ln -s /usr/local/lib64/libcrypto.so.3 /usr/lib/libcrypto.so.3

openssl升级成功显示

openssl version
# OpenSSL 3.1.0 14 Mar 2023 (Library: OpenSSL 3.1.0 14 Mar 2023)
openssl version -a

至此openssl 已经成功升级到3.1.0 

六、安装openssh

备份原openssh文件

mv /etc/init.d/ssh /etc/init.d/ssh.old

cp -r /etc/ssh /etc/ssh.old

升级openssh

cd /mnt/

cp -r /home/aa/下载/openssh-9.3p1 openssh-9.3p1
cd openssh-9.3p1/
whereis openssl

#在/usr/local/openssl,下一步需要指定openssl的安装路径
./configure --prefix=/usr --sysconfdir=/etc/ssh --with-md5-passwords --with-pam --with-zlib --with-ssl-dir=/usr/local/openssl --with-privsep-path=/var/lib/sshd

#报错,编译失败,请检查
configure: error: Your OpenSSL headers do not match your
    library. Check config.log for details.
    If you are sure your installation is consistent, you can disable the check
    by running "./configure --without-openssl-header-check".
    Also see contrib/findssl.sh for help identifying header/library mismatches.

vim /etc/ld.so.conf
# 文件内容如下
include /etc/ld.so.conf.d/*.conf

拜托大佬帮助解决报错!

openssl3安装略有问题。路径,编译参数那些。重新安装了openssl在  /root/openssl3.1.0。

root下那些个文件不要删,算是依赖。

make && make install

查看当前SSH的版本

ssh -V
# OpenSSH_9.3p1, OpenSSL 3.1.0 14 Mar 2023

sshd -V
# OpenSSH_9.3, OpenSSL 3.1.0 14 Mar 2023

七、修改还原默认配置

cd /etc/ssh
mv sshd_config sshd_config.default
cp …/ssh.old/sshd_config ./

使用原来的/etc/init.d/ssh

mv /etc/init.d/ssh.old /etc/init.d/ssh

取消注销指定服务

systemctl unmask ssh

重启服务

systemctl restart sshd

你可能感兴趣的:(网络,服务器,运维,ssh)