当前位置:   article > 正文

Centos7.x离线升级OpenSSH步骤_centos离线升级openssh

centos离线升级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以及编译打包环境搭建

  1. # 安装必要环境
  2. yum install rpm-build zlib-devel openssl-devel gcc perl-devel pam-devel
  3. # 创建目录
  4. mkdir -p /root/rpmbuild/SOURCES
  5. mkdir -p /root/rpmbuild/SPECS
  6. cp /root/openssh-8.4p1.tar.gz /root/rpmbuild/SOURCES/
  7. cp /root/x11-ssh-askpass-1.2.4.1.tar.gz /root/rpmbuild/SOURCES/
  8. tar -zxf openssh-8.4p1.tar.gz -C /opt
  9. cp /opt/openssh-8.4p1/contrib/redhat/openssh.spec /root/rpmbuild/SPECS/
  10. 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包

  1. cd /root/rpmbuild/RPMS/x86_64
  2. tar -zcvf openssh-8.4p1_rpm_package.tar.gz *.rpm
  3. sz openssh-8.4p1_rpm_package.tar.gz

升级openssh 8.4p1进行验证

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

升级前的版本openssh7.4p1

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

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

解压出来的如下4个rpm

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

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

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

3. 还原配置文件

  1. cp /etc/sshconfig_backup/sshd_config /etc/ssh/sshd_config
  2. cp /etc/sshconfig_backup/pam.d_sshd /etc/pam.d/sshd
  3. # 并加上PermitRootLogin yes允许root用户登录
  4. sed -i "s/#PermitRootLogin yes/PermitRootLogin yes/g" /etc/ssh/sshd_config
  5. # 查看配置文件确认PermitRootLogin配置正确
  6. cat /etc/ssh/sshd_config | grep PermitRootLogin
  7. # 删除/etc/ssh/目录下相关key文件,否则重启sshd服务会报错
  8. rm -rf /etc/ssh/ssh_host_*
  9. 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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/285700
推荐阅读
相关标签
  

闽ICP备14008679号