Centos7.x离线升级OpenSSH步骤

背景

我们用的服务器操作系统是Centos7.6版本,Centos7.x版本的操作系统,自带的openssh版本是7.4,该版本是有漏洞的,这是我们扫描出的漏洞报告

漏洞名称:OpenSSH 用户枚举漏洞(CVE-2018-15473)。

OpenSSH-7.8及以后的版本都修复了该漏洞,此文我们将升级OpenSSH版本至8.4版本。

由于我们的服务器是部署在生产内网环境,不允许访问外网,对升级带来比较大的挑战,如果有外网环境的,可以参考这篇文章进行升级:centos7升级openssh的详细步骤

注:建议生产环境升级前要先做测试。

升级说明

1、升级OpenSSH后,原有公钥失效,信任关系需要重新配置;

2、升级过程需要停止sshd服务,会导致ssh和sftp无法使用;

3、升级需要关闭防火墙服务;

4、升级需要关闭selinux服务;

5、升级前需要开启telnet,防止升级失败,系统无法登录,对应的防火墙需要开启23端口,安装需要telnet相关包

6、telnet协议无法传输文件,如果需要往服务器传输文件,建议安装vsftp的服务

7、如果采用编译安装OpenSSH,服务器需要提前安装以下环境:gcc、make、perl、zlib、zlib-devel、pam、pam-devel(由于我的服务器缺乏这些环境,且部署起来很费劲,本教程将不采用编译部署的方式

自制OpenSSH-8.4 RPM包

由于官方适用于Centos7.x的rpm包只到7.4版本,所以只能自己打RPM包,来方便部署

准备条件

找一台能访问外网的服务器,操作系统最好和生产的服务器一样,进行rpm制作,本文后面会将自制的rpm放上来。

1. openssh-8.4p1.tar.gz源码包

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

2. x11-ssh-askpass-1.2.4.1.tar.gz 源码包

wget https://src.fedoraproject.org/repo/pkgs/openssh/x11-ssh-askpass-1.2.4.1.tar.gz/8f2e41f3f7eaa8543a2440454637f3c3/x11-ssh-askpass-1.2.4.1.tar.gz

rpm-build以及编译打包环境搭建

# 安装必要环境
yum install rpm-build zlib-devel openssl-devel gcc perl-devel pam-devel

# 创建目录
mkdir -p /root/rpmbuild/SOURCES
mkdir -p /root/rpmbuild/SPECS

cp /root/openssh-8.4p1.tar.gz /root/rpmbuild/SOURCES/
cp /root/x11-ssh-askpass-1.2.4.1.tar.gz /root/rpmbuild/SOURCES/

tar -zxf openssh-8.4p1.tar.gz -C /opt

cp /opt/openssh-8.4p1/contrib/redhat/openssh.spec /root/rpmbuild/SPECS/

chown sshd:sshd /root/rpmbuild/SPECS/openssh.spec 

修改openssh.spec 并进行打包

 vim openssh.spec

将原先openssh.spec中的

%global no_x11_askpass 0

%global no_gnome_askpass 0

修改为

%global no_x11_askpass 1

%global no_gnome_askpass 1

并注释掉#BuildRequires: openssl-devel < 1.1 (因为openssl安装的版本都低于1.1 )

这时就可以rpmbuild打包了

rpmbuild -ba openssh.spec

压缩并下载生成的rpm包

cd /root/rpmbuild/RPMS/x86_64

tar -zcvf openssh-8.4p1_rpm_package.tar.gz *.rpm

sz openssh-8.4p1_rpm_package.tar.gz 

升级openssh 8.4p1进行验证

在另外一台CentOS7.6机器上升级openssh版本

升级前的版本openssh7.4p1

1. 上传解压openssh-8.4p1_rpm_package.tar.gz

cd /opt
tar -zxvf openssh-8.4p1_rpm_package.tar.gz

解压出来的如下4个rpm

openssh-8.4p1-1.el7.x86_64.rpm    
openssh-clients-8.4p1-1.el7.x86_64.rpm    
openssh-server-8.4p1-1.el7.x86_64.rpm
openssh-debuginfo-8.4p1-1.el7.x86_64.rpm

2. 备份配置后rpm -Uvh升级到openssh8.4p1

mkdir /etc/sshconfig_backup
cp /etc/ssh/sshd_config /etc/sshconfig_backup/
cp /etc/pam.d/sshd /etc/sshconfig_backup/pam.d_sshd
# rpm -Uvh openssh*.rpm进行手动升级
rpm -Uvh openssh*.rpm

3. 还原配置文件

cp /etc/sshconfig_backup/sshd_config /etc/ssh/sshd_config 
cp /etc/sshconfig_backup/pam.d_sshd /etc/pam.d/sshd

# 并加上PermitRootLogin yes允许root用户登录
sed -i "s/#PermitRootLogin yes/PermitRootLogin yes/g" /etc/ssh/sshd_config

# 查看配置文件确认PermitRootLogin配置正确
cat /etc/ssh/sshd_config | grep PermitRootLogin

# 删除/etc/ssh/目录下相关key文件,否则重启sshd服务会报错
rm -rf /etc/ssh/ssh_host_*

service sshd restart

4. 验证openssh版本信息

遇到的问题

如果在安装OpenSSH包过程中遇到这种问题:

libcrypto.so.10(libcrypto.so.10)(64bit) is needed by openssh-server-8.4p1-1.el7.x86_64

请先部署一下openssl

PS

欢迎使用在线免费资源导航网站,可以自定义个人&团队的资源门户,提升工作学习效率。https://www.navigationline.cn

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值