一、概述

openssh最近爆出安全漏洞,需要升级到9.8以上版本,生产环境当前版本是8.8,自己搭建的虚拟机是默认的7.4,于是决定先从7.4升级到8.8,再从8.8升级到9.8,完成漏洞修复

二、升级步骤

1、查看当前版本
[root@localhost ~]# ssh -V
OpenSSH_7.4p1, OpenSSL 1.0.2k-fips  26 Jan 2017

2、安装依赖
yum install -y gcc make zlib-devel openssl-devel pam-devel

3、卸载openssh
rpm -qa|grep openssh
rpm -e openssh-server --nodeps
rpm -e openssh-clients --nodeps
rpm -e openssh

4、下载openssh8.8
cd /usr/local/src
wget https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-8.8p1.tar.gz
tar -zxvf openssh-8.8p1.tar.gz
cd openssh-8.8p1

5、备份原来的配置
mv /etc/ssh /etc/ssh.bak
mv /usr/lib/systemd/system/sshd.service  /usr/lib/systemd/system/sshd.service.bak

6、编译并安装OpenSSH 8.8
./configure --prefix=/usr/ --sysconfdir=/etc/ssh  --with-openssl-includes=/usr/local/ssl/include --with-ssl-dir=/usr/local/ssl   --with-zlib   --with-md5-passwords   --with-pam
make && make install

7、替换配置
cd /usr/local/src/openssh-8.8p1
cp -a ./contrib/redhat/sshd.init /etc/init.d/sshd

chmod +x /etc/init.d/sshd
chkconfig --add sshd
chkconfig sshd on
systemctl daemon-reload
systemctl restart sshd

8、配置还原
手动更新/etc/ssh/sshd_config

9、重启sshd服务
systemctl restart sshd

10、查看版本
[root@localhost openssh-8.8p1]# ssh -V
OpenSSH_8.8p1, OpenSSL 1.0.2k-fips  26 Jan 2017

11、两个配置注意点
1)默认是UsePAM yes,现在变更成#UsePAM no,所以取消注释,然后修改为yes就可以了。
2)默认是#PermitRootLogin yes,现在变更成#PermitRootLogin prohibit-password,当然这也是为了安全考虑,若要求root直接远程登录可以修改为PermitRootLogin yes就可以了。

三、报错处理

发起新连接的时候

openssh7.4升级到8.8_ci

原先连接的查看后台日志

openssh7.4升级到8.8_重启_02

怀疑是SELinux的问题
发现SELinux配置是默认的enforcing
临时更改:setenforce 0
发现可以连接了,继续排查,发现将UsePAM no配置并重启后,即使SELinux是enforcing也可以连接

openssh7.4升级到8.8_重启_03