openssh升级方案

2023-10-10

一、升级背景: 漏洞扫描显示linux服务器openssh有高危漏洞,需要进行修复。openssh是远程登录到linux服务器 的重要工具,要修复此漏洞需升级到最高版本(2021年5月中旬最新版本为8.6p1)。

二、升级说明: 1、所有升级文件均从官网下载。 2、linux服务器系统为Centos7可适用此方案。 3、Centos7系统需要有yum源,方便解决依赖关系问题。如无法实现,则需上传同系统版本安装映 像文件,作为本地yum源。 4、安装过程受网络影响极大,一旦出现不可抗因素致网络断开,可能会导致升级中断,无法远程 连接,出现此情况需现场人员配合解决。 5、升级过程出现问题需现场人员根据回退方案进行恢复操作。

三、升级过程: (0)安装并启用telnet 1、安装telnet yum install telnet-server telnet xinet 2、修改配置文件 vi /etc/xinetd.d/telnet

disable= no //将yes改为no #让root可以登录 #mv /etc/securetty /etc/securetty.bak 重启服务 service xinetd restart 3、启动相应服务,然后使用telnet登录到服务器 systemctl start telnet.socket systemctl start xinetd chkconfig –list (一)配置yum源 1、上传与生产环境相同的centos7版本的iso和openssh8.6p1的安装包到服务器。

2、挂载iso 创建iso存放目录和挂载目录,并上传iso镜像文件到iso存放目录/mnt/iso下 mkdir /mnt/iso mkdir /mnt/cdrom mv CentOS-7.6-x86_64-DVD-1810.iso /mnt/iso/ 挂载iso镜像到挂载目录/mnt/cdrom下 mount -o loop /mnt/iso/CentOS-7.6-x86_64-DVD-1810.iso /mnt/cdrom 使用df -h命令查询挂载是否成功 df -h

3、备份原本地源 进入repos配置目录 cd /etc/yum.repos.d/ 创建备份文件夹 mkdir repobak 移动配置文件到repobak文件夹中 mv *.repo repobak/

4、新建光盘源配置文件 vi CentOS-Media.repo 输入下列内容

  [c7-media]
name=CentOS-$releasever - Media
baseurl=file:///mnt/cdrom/

  gpgcheck=0
enabled=1

5、测试安装源 yum clean all yum makecache (二)升级openssh版本到8.6p1 1、下载或上传安装包openssh-8.6p1.tar.gz到/root目录下 进入安装包所在文件夹 cd /root/linshi

2、关闭Selinux setenforce 0 sed -i “s/SELINUX=enforcing/SELINUX=disabled/g” /etc/selinux/config

3、安装依赖关系 yum install -y gcc pam-devel rpm-build wget zlib-devel openssl-devel net-tools tar -xvf openssh-8.6p1.tar.gz cd openssh-8.6p1

4、卸载旧版openssh rpm -qa |grep openssh ps:下一步骤为删除原有ssh,但不会影响现在进行的ssh会话,所以整个操作过程不要断开ssh会话, 否则无法再次连接,只能由现场人员进行回退后重新操作(推荐使用telnet进行升级)。 for i in $(rpm -qa |grep openssh);do rpm -e $i –nodeps;done

5、设置、编译、安装 ./configure –prefix=/usr –sysconfdir=/etc/ssh –with-md5-passwords –with-pam –with-tcp-wrappers –with-ssl-dir=/usr/local/ssl/lib –without-hardening mv /etc/ssh /etc/ssh.old cp contrib/redhat/sshd.pam /etc/pam.d/sshd #编译 make #安装 make install

6、设置自启动 复制启动脚本到/etc/init.d cp contrib/redhat/sshd.init /etc/init.d/sshd chkconfig –add sshd chkconfig sshd on chkconfig –list|grep sshd sed -i “32a PermitRootLogin yes” /etc/ssh/sshd_config #重启ssh服务 service sshd restart

7、检查升级情况 ssh -V 输出版本号为“OpenSSH_8.6p1”,说明更新成功

(三)关闭telnet 关闭服务 systemctl stop telnet.socket systemctl stop xinetd #root可以登录 #mv /etc/securetty.bak /etc/securetty

卸载telnet yum remove telnet-server xinetd

ps:此时ssh是可以连接状态,不要断开连接防止修改出错无法连接服务器。测试新端口是否打开 telnet 127.0.0.1 22 #出现如下显示表示端口正常打开 Trying 127.0.0.1… Connected to 127.0.0.1. Escape character is ‘^]’. SSH-2.0-OpenSSH_8.6 使用远程工具新开窗口,连接新端口测试修改是否成功,如有问题马上使用之前的连接进行检查修改。

(四)回退方案 1、挂载iso文件作为yum源 mount -o loop /mnt/iso/CentOS-7.6-x86_64-DVD-1810.iso /mnt/cdrom 2、安装openssh yum install openssh* 3、启动ssh service sshd start 4、重新连接ssh,然后从(二)4开始做。