OpenEuler20.03升级SSH 9.7p1

想做大程序猿的李Sir 2024-08-07 09:07:03 阅读 86

背景:最近漏扫发现欧拉20.03版本自带的ssh存在安全漏洞,查看后发现20.03系统默认部署的ssh版本为9.5p1,漏洞修复说明中提到OpenSSH 9.6及之前版本均存在该安全漏洞,因此选择目前最新的版本9.7p1进行升级,如图:

说明:

1、操作环境:OpenEuler20.03,OpenSSH_9.5p1, OpenSSL 1.1.1;(仅供参考,其他系统版本请自行测试)

2、升级方案参考:Linux OpenSSH最新版9.7p1升级操作详细教程_openssh 9.7-CSDN博客

3、漏洞所在均为生产服务器,与外网不互通,因此通过上传rpm包方式进行升级;

4、经过测试,欧拉系统缺少部分环境包,本次升级所用到的rpm包均是从源镜像中提取 ;

        如果你也存在无法通过网络获取,这里介绍一个小操作:解压缩源镜像文件,然后进入解压之后的镜像文件夹中进入Packages目录,在这里可以找到相关的rpm包;

<code>查看本地是否安装某功能 rpm -qa |grep ***

注:这里将本次升级所用到的包都放在一起,有需要的自取-附件ssh.zip

操作:

1、备份ssh配置

cp -rf /etc/ssh /etc/ssh.bak

cp -rf /usr/bin/openssl /usr/bin/openssl.bak

cp -rf /etc/pam.d /etc/pam.d.bak

cp -rf /usr/lib/systemd/system /system.bak

2、安装telnet

rpm -ivh telnet-0.17-76.oe1.x86_64.rpm #安装telnet

systemctl enable telnet.socket #设置telnet开机自启

systemctl start telnet.socket #启动telnet

测试telnet是否可用

1、添加防火墙策略

2、换一台服务器进行telnet

这里需要注意,安装telnet后先测试telnet是否可用,不然后续openssh安装就得跑机房咯!!

3、升级环境准备

3.1、如果可以通过yum安装,执行如下命令:

yum install -y vim gcc gcc-c++ glibc make autoconf openssl openssl-devel pcre-devel pam-devel zlib-devel tcp_wrappers-devel tcp_wrappers libedit-devel perl-IPC-Cmd wget tar lrzsz nano

3.2、如不能通过自动安装,则需要排查缺少哪些包,再依次找到对应rpm包进行安装

升级所需环境:gcc gcc-c++ glibc make autoconf openssl openssl-devel pcre-devel pam-devel zlib-devel tcp_wrappers-devel tcp_wrappers libedit-devel perl-IPC-Cmd wget tar lrzsz nano

示例:rpm -qa |grep gcc

经排查缺少

1、libedit-3.1-27.oe1.x86_64.rpm

2、lrzsz-0.12.20-46.oe1.x86_64.rpm

3、pam-devel-1.4.0-8.oe1.x86_64.rpm

4、tcp_wrappers-7.6-96.oe1.x86_64.rpm

找到对应的rpm包上传至服务器后进行安装

rpm -ivh ***.rpm

4、升级Openssh

4.1、获取源码包

        4.1.1可以使用wget下载

wget https://www.zlib.net/zlib-1.3.1.tar.gz

wget https://www.openssl.org/source/openssl-3.2.1.tar.gz

wget https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-9.7p1.tar.gz

        4.1.2无法连接外网,则手动下载后上传至服务器

4.2、解压缩源码包

<code>tar -zxvf zlib-1.3.1.tar.gz

tar -zxvf openssl-3.2.1.tar.gz

tar -zxvf openssh-9.7p1.tar.gz

4.3、安装zlib

#进入zlib-1.3.1目录

cd /usr/local/src/zlib-1.3.1

#配置

./configure --prefix=/usr/local/src/zlib

#编译及安装

make -j 4 && make test && make install

4.4、安装openssl

#1.进入openssl-3.2.1目录

cd /usr/local/src/openssl-3.2.1

#2.配置

./config --prefix=/usr/local/src/openssl

#3.编译及安装

make -j 4 && make install

4.5、配置

#配置

mv /usr/bin/openssl /usr/bin/oldopenssl

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

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

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

#更新动态库

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

ldconfig

#查看更新后的版本

openssl version -v

4.6、卸载系统自带openssh9.5p1

操作之前先测试telnet是否可用再执行,否则就要在机房执行后续操作咯!!

<code>#卸载openssh9.5p1

yum remove -y openssh

#清理残余文件

rm -rf /etc/ssh/*

4.7、安装openssh9.7p1

#1.进入openssh-9.7p1目录

cd /usr/local/src/openssh-9.7p1

#2.配置

./configure --prefix=/usr/local/src/ssh --sysconfdir=/etc/ssh --with-pam --with-ssl-dir=/usr/local/src/openssl --with-zlib=/usr/local/src/zlib

#3.编译及安装

make -j 4 && make install

#4.查看目录版本

/usr/local/src/ssh/bin/ssh -V

#5.复制新ssh文件

cp -rf /usr/local/src/openssh-9.7p1/contrib/redhat/sshd.init /etc/init.d/sshd

cp -rf /usr/local/src/openssh-9.7p1/contrib/redhat/sshd.pam /etc/pam.d/sshd

cp -rf /usr/local/src/ssh/sbin/sshd /usr/sbin/sshd

cp -rf /usr/local/src/ssh/bin/ssh /usr/bin/ssh

cp -rf /usr/local/src/ssh/bin/ssh-keygen /usr/bin/ssh-keygen

#6.允许root登录

echo 'PermitRootLogin yes' >> /etc/ssh/sshd_config

echo 'PasswordAuthentication yes' >> /etc/ssh/sshd_config

4.8、重启ssh

#重启sshd服务

systemctl restart sshd

#如果ssh无法重启,试试这个命令,然后再执行重启

systemctl daemon-reload

#查看服务运行状态

/etc/init.d/sshd status

#添加开机启动

chkconfig --add sshd

#查看升级后ssh版本

ssh -V

5、测试登录

<code>#测试是否可以远程登录,如发现执行

ssh root@***ip***后产生如下报错:

/etc/crypto-policies/back-ends/openssh.config: line 3: Bad configuration option: gssapikexalgorithms

/etc/crypto-policies/back-ends/openssh.config: terminating, 1 bad configuration options

#可以多换几台服务器进行连接测试。

排查思路:检查4.3-4.8之间的操作是否成功

#验证方式:

执行命令 echo $?

如返回0,则说明上一步操作成功

6、升级完成

如有安全相关要求,可关闭telnet,更换远程端口等。



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。