赞
踩
我们用的服务器操作系统是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(由于我的服务器缺乏这些环境,且部署起来很费劲,本教程将不采用编译部署的方式)
由于官方适用于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
- # 安装必要环境
- 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
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
- cd /root/rpmbuild/RPMS/x86_64
-
- tar -zcvf openssh-8.4p1_rpm_package.tar.gz *.rpm
-
- sz openssh-8.4p1_rpm_package.tar.gz
在另外一台CentOS7.6机器上升级openssh版本
升级前的版本openssh7.4p1
- 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
- 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
- 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
如果在安装OpenSSH包过程中遇到这种问题:
libcrypto.so.10(libcrypto.so.10)(64bit) is needed by openssh-server-8.4p1-1.el7.x86_64
请先部署一下openssl
欢迎使用在线免费资源导航网站,可以自定义个人&团队的资源门户,提升工作学习效率。https://www.navigationline.cn
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。