漏洞扫描工具扫描出openssh用户枚举漏洞,搜索资料得知无补丁和升级包,解决这个漏洞得安装漏洞修复之后的版本version>7.8。

环境

linux版本: CentOS Linux release 7.5.1804

ssh版本: OpenSSH_7.4p1

升级前准备

  • 备份

    • 备份ssh配置

      mkdir -p /bak

      cp -ar /etc/ssh /bak

    • 备份老版本的openssh软件包

      [root@localhost soft]# rpm -qa|grep openssh

      openssh-7.4p1-16.el7.x86_64

      openssh-server-7.4p1-16.el7.x86_64

      openssh-clients-7.4p1-16.el7.x86_64

      可以去网上下载,这里上传的云盘:

      链接: https://pan.baidu.com/s/1K9PRWji99IeSoWc6O6rcfw 提取码: ex5v

      下载openssh7.4.zip, 将这些文件全部上传至要升级的服务器。

    • 安装telnet服务,防止ssh升级后登录不上

      网盘里telnet.zip解压安装即可:

      [root@localhost telnet_dir]# ls
      telnet-0.17-64.el7.x86_64.rpm telnet-server-0.17-64.el7.x86_64.rpm xinetd-2.3.15-13.el7.x86_64.rpm [root@localhost telnet_dir]# rpm -iv --force --nodeps *.rpm [root@localhost telnet_dir]# chkconfig xinetd on
      注意:正在将请求转发到“systemctl enable xinetd.service”。 [root@localhost telnet_dir]# chkconfig telnet on
      注意:正在将请求转发到“systemctl enable telnet.socket”。
      Created symlink from /etc/systemd/system/sockets.target.wants/telnet.socket to /usr/lib/systemd/system/telnet.socket. [root@localhost telnet_dir]# systemctl start telnet.socket [root@localhost telnet_dir]# systemctl start xinetd # 测试telnet是否连接正常,默认配置不支持root登录,最好建一个普通用户登录,再su到root,升级完成再userdel -r 删除用户即可,也可以更改配置允许root通过telnet登录。
      [root@localhost telnet_dir]# useradd tom
      [root@localhost telnet_dir]# passwd tom
      进行远程telnet连接测试

构建openssh7.9p1的rpm包

这里为了更省事,防止网络等环境问题,构建openssh的rpm包进行安装。上面从我的网盘链接里下载了openssh.zip文件的可以忽略这一步,因为openssh.zip里面已经构建好了openssh7.9p1的rpm包,直接进行升级安装即可。

[root@localhost ~]# mkdir -p /usr/src/redhat/{SOURCES,SPECS}

[root@localhost ~]# cd /usr/src/redhat/SOURCES/

[root@localhost SOURCES]# wget https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-7.9p1.tar.gz

[root@localhost SOURCES]# tar -zvxf openssh-7.9p1.tar.gz openssh-7.9p1/contrib/redhat/openssh.spec

[root@localhost SOURCES]# mv openssh-7.9p1/contrib/redhat/openssh.spec ../SPECS/

[root@localhost SOURCES]# chown sshd:sshd /usr/src/redhat/SPECS/openssh.spec

[root@localhost SOURCES]# cp /usr/src/redhat/SPECS/openssh.spec  /usr/src/redhat/SPECS/openssh.spec_def

[root@localhost SOURCES]# sed -i -e "s/%define no_gnome_askpass 0/%define no_gnome_askpass 1/g" /usr/src/redhat/SPECS/openssh.spec

[root@localhost SOURCES]# sed -i -e "s/%define no_x11_askpass 0/%define no_x11_askpass 1/g" /usr/src/redhat/SPECS/openssh.spec

[root@localhost SOURCES]# mkdir -p ~/rpmbuild/SOURCES/

[root@localhost SOURCES]# cp /usr/src/redhat/SOURCES/openssh-7.9p1.tar.gz ~/rpmbuild/SOURCES/

[root@localhost SOURCES]# cd /usr/src/redhat/SPECS/

[root@localhost SPECS]# rpmbuild -ba openssh.spec

[root@localhost SPECS]# ll /root/rpmbuild/RPMS/x86_64/openssh-*
-rw-r--r-- 1 root root 496204 1月 17 13:31 /root/rpmbuild/RPMS/x86_64/openssh-7.9p1-1.el7.x86_64.rpm
-rw-r--r-- 1 root root 548576 1月 17 13:31 /root/rpmbuild/RPMS/x86_64/openssh-clients-7.9p1-1.el7.x86_64.rpm
-rw-r--r-- 1 root root 2508852 1月 17 13:31 /root/rpmbuild/RPMS/x86_64/openssh-debuginfo-7.9p1-1.el7.x86_64.rpm
-rw-r--r-- 1 root root 391696 1月 17 13:31 /root/rpmbuild/RPMS/x86_64/openssh-server-7.9p1-1.el7.x86_64.rpm 参考:https://blog.csdn.net/qq_42609381/article/details/82855043
# 编译过程遇到的错误:
错误:构建依赖失败: openssl-devel < 1.1 被 openssh-7.9p1-1.el7.x86_64 需要
解决:[root@localhost SPECS]# vim openssh.spec 注释掉 BuildRequires: openssl-devel < 1.1 这一行 错误:configure: error: PAM headers not found
RPM 构建错误: /var/tmp/rpm-tmp.OB3GHI (%build) 退出状态不好
解决: yum install pam-devel 错误:坏文件:/root/rpmbuild/SOURCES/x11-ssh-askpass-1.2.4.1.tar.gz: 没有那个文件或目录
解决:
wget http://ftp.riken.jp/Linux/momonga/6/Everything/SOURCES/x11-ssh-askpass-1.2.4.1.tar.gz
cp x11-ssh-askpass-1.2.4.1.tar.gz  /root/rpmbuild/SOURCES/

升级

  • 卸载当前版本的openssh

    rpm -e `rpm -qa |grep openssh`
    如果有依赖:
    rpm -e `rpm -qa |grep openssh` --nodeps
  • 删除/etc/ssh/下所有文件(注意检查是否备份)

    rm -rf /etc/ssh/*
  • rpm安装openssh7.9p1

    unzip openssh.zip
    rpm -iv --force --nodeps *.rpm
  • 配置服务

    设置开机启动:
    chkconfig sshd on 编辑ssh配置文件:
    vim /etc/ssh/sshd_config
    配置: PasswordAuthentication yes
    如果要允许root用户ssh登录需要配置:PermitRootLogin yes 服务重启
    service sshd restart 验证连接和版本
    ssh -V

    可以直接恢复之前的ssh配置文件看能否成功,我这里直接恢复之前的配置文件可以启动但无法连接,我注释掉GSS和PAM后可以连接。

  #GSSAPIAuthentication yes
#GSSAPICleanupCredentials no
#UsePAM yes

卸载telnet

升级完成之后如果需要卸载telnet,进行如下步骤即可(卸载之前确保ssh连接已经没有问题):

systemctl stop xinetd
systemctl stop telnet.socket
chkconfig xinetd off
chkconfig telnet off
rpm -e `rpm -qa|egrep "telnet|xinetd"` # 最后删除之前测试telnet新建的普通用户
userdel -r tom

centos7.5升级openssh7.4到7.9的更多相关文章

  1. centos7.2升级openssh7.9p1

    Centos7.2版本yum升级openssh版本最高到7.4,想要升级到更高的版本需要重新编译 一.查看当前openssh版本: [root@localhost ~]# ssh -VOpenSSH_ ...

  2. linux 实现centos7在线升级最新版本内核

    Kernel  (内核)是操作系统的核心,掌握所有硬件设备的控制权,也就是说,你所希望计算机帮你完成的各项工作,都需要通过内核的帮助才能完成,当然,如果我们想完成的某个功能是内核没有的,则内核不会操控 ...

  3. centos7 docker升级到最新稳定版本

    原文:centos7 docker升级到最新稳定版本 一.前言 docker的版本分为社区版docker-ce和企业版dokcer-ee社,区版是免费提供给个人开发者和小型团体使用的,企业版会提供额外 ...

  4. centos7内核升级及curl访问https证书过期处理

    centos7内核升级及curl访问https证书过期处理 先看下当前系统的linux内核版本 uname -r 3.10.0-229.el7.x86_64 升级步骤 1.rpm --import h ...

  5. centos7.6 升级openssh openssl

    centos7.3和centos7.6升级完毕测试登录ssh以及重启后登录ssh均无问题. 前期请自行配置好yum源(如果不会请百度) 整个过程不需要卸载原先的openssl包和openssh的rpm ...

  6. centos7 离线升级/在线升级操作系统内核

    目录 一.前言 二.系统环境 三.系统内核下载网址 四.centos7离线升级系统内核 1.先查看系统环境 2.离线升级系统内核 五.在线升级系统内核 一.前言 CentOS(Community EN ...

  7. centos7.6升级ssh7.9、安装PHP7.2、Nginx1.15.9、PHP加密扩展php_screw1.5

    1.centos7 安装PHP7.2版本 #查询是否安装过php yum list installed | grep php yum provides php #移除php yum remove ph ...

  8. centos7内核升级

    默认centos7的内核版本是3.10,升级的原因是为了测试openvswitch的vlan技术,默认openvswitch的2.3版本是允许centos7默认内核3.10支持,下面是软件与内核版本对 ...

  9. linux升级openssh7.4sp1

    1.准备相关的包 openssh下载地址:http://mirror.internode.on.net/pub/OpenBSD/OpenSSH/portable/ openssl相关包下载:http: ...

随机推荐

  1. LeetCode 171 Excel Sheet Column Number 解题报告

    题目要求 Given a column title as appear in an Excel sheet, return its corresponding column number. For e ...

  2. LeetCode 169 Majority Element 解题报告

    题目要求 Given an array of size n, find the majority element. The majority element is the element that a ...

  3. SQL行转列与列转行(转)

    原文: http://blog.csdn.net/jx_870915876/article/details/52403472 add by zhj: 本文是以MySQL为例说明的,但其实它适用于所有关 ...

  4. .net core mysql ef

    利用nuget添加以下引用 MySql.Data.EntityFrameworkCore         Pomelo.EntityFrameworkCore.MySql         Micros ...

  5. zookeeper的使用demo(c#/java)

    Zookeeper 作为一个分布式的服务框架,主要用来解决分布式集群中应用系统的一致性问题,它能提供基于类似于文件系统的目录节点树方式的数据存储,但是 Zookeeper 并不是用来专门存储数据的,它 ...

  6. .net连接数据库递归

    private void Form1_Load(object sender, EventArgs e) { List<Regions> regions = GetRegions().Whe ...

  7. Vue学习之路---No.3(分享心得,欢迎批评指正)

    同样的,我们先来回顾一下昨天学习的内容: 1.利用v-once来组织双向绑定 2.filter{}过滤器的使用(详情请看上一章) 3.computed(计算属性),利用computed属性实现filt ...

  8. 初识JDBC

    1,概念: JDBC(Java DateBase Connective) ,即利用Java语言操作数据库语言 2,示例:Mysql中的JDBC 1,新建一个Dynamic Web Projectx项目 ...

  9. windows之电脑开机出现 this product is covered by one or more of the following prtents

    电脑开机出现 this product is covered by one or more of the following prtents 有次意外断电后就每次都出现这个提示,然后要等检查完才能进入 ...

  10. java基础语法-内部类与匿名内部类

    1.成员内部类(声明在类内部&&方法之外) class Person{ String name = "韩梅梅"; int age; class Bird{ Stri ...