自学内容网 自学内容网

OpenSSH-9.9p1 OpenSSL-3.4.0 升级步骤详细

前言

收到漏洞扫描通知

OpenSSH 安全漏洞(CVE-2023-38408)

OpenSSH 安全漏洞(CVE-2023-51385)

OpenSSH 安全漏洞(CVE-2023-51384)

OpenSSH 安全漏洞(CVE-2023-51767)

OpenSSH 安全漏洞(CVE-2023-48795)

OpenSSH(OpenBSD SecureShell)是加拿大OpenBSD计划组的一套用于安全访问远程计算机的连接工具。该工具是SSH协议的开源实现,支持对所有的传输进行加密,可有效阻止窃听、连接劫持以及其他网络级的攻击。OpenSSH 9.3p2之前版本存在安全漏洞,该漏洞源于ssh-agent的PKCS11功能存在安全问题。攻击者可利用该漏洞执行远程代码。

意思就是版本太低,发现OpenSSH官网当前已经是OpenSSH-9.9p1,直接开始升级。

当前版本

[root@localhost sbin]# cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)
[root@localhost sbin]# ssh -V
OpenSSH_9.3p1, OpenSSL 1.0.2k-fips  26 Jan 2017

升级后版本当前最新

名称版本官网
opensshopenssh-9.9p1连接
opensslopenssl-3.4.0连接
zlibzlib-1.3.1连接

前置操作

为了避免升级过程中出现的意外导致服务器无法进行连接,建议对重要的内容先进行备份

创建快照

一定一定一定,服务商创建快照。

安装telnet

升级过程中会卸载旧版本ssh导致远程无法连接,所以先安装一个telnet

检查

#检查是否安装了telnet服务端
rpm -q telnet-server
#检查是否安装了telnet客户端
rpm -q telnet

提示package telnet-server is not installed表示未安装

安装

#安装telnet服务端
yum install telnet-server -y
#安装telnet客户端
yum install telnet -y

启动

#设置开机启动该
systemctl enable telnet.socket
#打开服务
systemctl start telnet.socket

防火墙开放23端口

#添加23端口
firewall-cmd --permanent --add-port=23/tcp
# 移除
firewall-cmd --permanent --remove-port=23/tcp
#配置生效
firewall-cmd --reload
#查看开启端口
firewall-cmd --list-all

使用telnet ip进行连接登录

[root@localhost ~]# telnet 10.0.0.159
Trying 10.0.0.159...
Connected to 10.0.0.159.
Escape character is '^]'.

Kernel 3.10.0-1160.71.1.el7.x86_64 on an x86_64
localhost login: root
Password: 
Last failed login: Fri Nov 29 00:15:00 CST 2024 from ::ffff:10.0.0.144 on pts/2
There was 1 failed login attempt since the last successful login.

允许root登录

如上登录错误,默认系统不允许root用户使用telnet远程登陆

echo 'pts/0' >>/etc/securetty
echo 'pts/1' >>/etc/securetty
echo 'pts/2' >>/etc/securetty
echo 'pts/3' >>/etc/securetty
echo 'pts/4' >>/etc/securetty

输入正确的密码还是不能登录
主机端执行:tail /var/log/secure
看到了access denied: tty 'pts/3' is not secure !
再添加一个

echo 'pts/5' >>/etc/securetty
echo 'pts/6' >>/etc/securetty

设置telnet后再登录一切正常了

开始升级

执行下方操作前,请确认telnet外部连接正常

备份

cd /opt
cp /etc/ssh/sshd_config sshd_config.backup
cp /etc/pam.d/sshd sshd.backup

检查相关依赖包

rpm -q gcc perl-IPC-Cmd zlib-devel
#安装没有的包
yum install -y gcc perl-IPC-Cmd zlib-devel

安装

安装zlib

cd /opt/
#下载zlib源码
wget http://www.zlib.net/zlib-1.3.1.tar.gz
#解压
tar -zxvf zlib-1.3.1.tar.gz
#编译并安装
cd zlib-1.3.1
#编译
./configure --prefix=/usr/local/zlib
#安装
make && make test && make install
#
ll /usr/local/zlib
ldconfig -v
/sbin/ldconfig

安装OpenSSL

SSL更新前如果编译目录下有原版本,需删除后编译,防止SSH编译失败! 2.结尾处截图为初发文时间更新版本,和操作语句新版本不冲突

检查OpenSSL当前已有版本
[root@localhost zlib-1.3.1]# openssl version -a
OpenSSL 1.0.2k-fips  26 Jan 2017
built on: reproducible build, date unspecified
platform: linux-x86_64
options:  bn(64,64) md2(int) rc4(16x,int) des(idx,cisc,16,int) idea(int) blowfish(idx) 
compiler: gcc -I. -I.. -I../include  -fPIC -DOPENSSL_PIC -DZLIB -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -DKRB5_MIT -m64 -DL_ENDIAN -Wall -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches   -m64 -mtune=generic -Wa,--noexecstack -DPURIFY -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DRC4_ASM -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM -DECP_NISTZ256_ASM
OPENSSLDIR: "/etc/pki/tls"
engines:  rdrand dynamic
卸载
yum remove -y openssl
安装操作
cd /opt/
#下载zlib源码
wget https://github.com/openssl/openssl/releases/download/openssl-3.4.0/openssl-3.4.0.tar.gz
#解压
tar -zxvf openssl-3.4.0.tar.gz
#编译并安装
cd openssl-3.4.0
编译
./config --prefix=/usr/local/openssl shared zlib

这里编译时可能会遇到报错:缺少IPC/Cmd.pm模块

[root@localhost openssl-3.4.0]# ./config shared zlib --prefix=/usr/local/openssl
Can't locate IPC/Cmd.pm in @INC (@INC contains: /opt/openssl-3.4.0/util/perl /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 . /opt/openssl-3.4.0/external/perl/Text-Template-1.56/lib) at /opt/openssl-3.4.0/util/perl/OpenSSL/config.pm line 19.
BEGIN failed--compilation aborted at /opt/openssl-3.4.0/util/perl/OpenSSL/config.pm line 19.
Compilation failed in require at /opt/openssl-3.4.0/Configure line 23.
BEGIN failed--compilation aborted at /opt/openssl-3.4.0/Configure line 23.

直接安装yum -y install perl-IPC-Cmd后再进行编译,编译成功
在这里插入图片描述
或者提示如下这个是缺失perl 的插件,直接执行yum install -y 'perl(Data::Dumper)'

Can’t locate Data/Dumper.pm in @INC

在这里插入图片描述

安装
make && make install

在这里插入图片描述
有可能还会缺少crypto/comp/libcrypto-lib-c_zlib.o,直接安装yum -y install zlib-devel然后继续make install

更新系统OpenSSL
# 更新系统的 OpenSSL 链接,首先备份旧版本的 openssl 可执行文件
mv /usr/bin/openssl /usr/bin/openssl.old
# 创建新的符号链接:
ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
# 更新系统库链接
echo "/usr/local/openssl/lib" >> /etc/ld.so.conf.d/openssl-3.4.0.conf
sudo ldconfig
# 验证系统openssl版本
openssl version

此时可能会出现错误

openssl: error while loading shared libraries: libssl.so.3: cannot open shared object file: No

查询

[root@localhost openssl-3.4.0]# whereis openssl
openssl: /usr/lib64/openssl /usr/local/openssl

查询是否已有找不到的依赖

find / -name libssl.so.3
find / -name libcrypto.so.3

添加软连接

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

安装成功

[root@localhost openssl-3.4.0]# openssl version
OpenSSL 3.4.0 22 Oct 2024 (Library: OpenSSL 3.4.0 22 Oct 2024)

安装OpenSSH

卸载原有OpenSSH
rpm -e --nodeps `rpm -qa | grep openssh`
安装
cd /opt/

#下载zlib源码
wget https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-9.9p1.tar.gz

#解压
tar -zxvf openssh-9.9p1.tar.gz
#
cd openssh-9.9p1
编译
./configure --prefix=/usr --sysconfdir=/etc/ssh --with-ssl-dir=/usr/local/openssl/ --with-zlib=/usr/local/zlib/ --with-ssl-engine
# 安装
make && make install

#查看目录版本
/usr/bin/ssh -V
OpenSSH设置
#调整文件权限
chmod 600 /etc/ssh/ssh_host_rsa_key /etc/ssh/ssh_host_ecdsa_key /etc/ssh/ssh_host_ed25519_key

#复制配置文件
cp -a contrib/redhat/sshd.init /etc/init.d/sshd
chmod u+x /etc/init.d/sshd

#允许root登录
echo 'PermitRootLogin yes' >> /etc/ssh/sshd_config
echo 'Subsystem sftp /usr/libexec/sftp-server' >> /etc/ssh/sshd_config

#添加开机启动
chkconfig --add sshd
chkconfig sshd on

# Centos 7 重启sshd
systemctl restart sshd

# Centos 6 重启sshd
/etc/init.d/sshd restart
/etc/init.d/sshd status

#查看升级后ssh版本
ssh -V


原文地址:https://blog.csdn.net/a33003623/article/details/144115711

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!