漏洞扫描工具扫描出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. Xposed 在android 6.0上报couldn't load class,找不到xposed_init中配置的入口类

    经测试再android 4.4时是可以直接在android studio中运行debug签名包,在xposed中运行的,但是6.0的机器不好使.解决办法是在运行时使用release版并签名 apply ...

  2. 树状数组-逆序对-HDU6318

    Swaps and Inversions Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others ...

  3. vue 通过自定义指令实现 置顶操作;

    项目需求:要求当前项目每个页面滑到超出一屏的距离时,出现 backTop 按钮,点击则回到最顶端:俗称置顶操作: 因为涉及到的页面较多,每个页面都加肯定显得重复累赘,最终想到了 Vue 的自定义指令  ...

  4. JDK1.8 StampedLock: 解决ReentrantReadWriteLock在读多写少情况下,写线程饥饿问题

    ReentrantReadWriteLock 在沒有任何读写锁时,才可以取得写入锁,这可用于实现了悲观读取(Pessimistic Reading), 即如果执行中进行读取时,经常可能有另一执行要写入 ...

  5. 002-zookeeper 基本配置、安装启动 windows环境

    一. 概述 ZooKeeper是Hadoop的正式子项目,它是一个针对大型分布式系统的可靠协调系统,提供的功能包括:配置维护.名字服务.分布式同步.组服务等.ZooKeeper的目标就是封装好复杂易出 ...

  6. windows下gitbash中使用zip命令

    参考: https://ranxing.wordpress.com/2016/12/13/add-zip-into-git-bash-on-windows/

  7. 接口测试工具-poster

    1.发包工具-火狐浏览器插件 安装:打开火狐浏览器-alt键-工具-附加组件-搜索poster-点击安装-重启火狐浏览器-打开工具下的poster 2.使用 1)GET 1.输入URL 2.填入参数 ...

  8. Javascript循环删除数组中元素的几种方法示例

    发现问题 大家在码代码的过程中,经常会遇到在循环中移除指定元素的需求.按照常规的思路,直接一个for循环,然后在循环里面来个if判断,在判断中删除掉指定元素即可.但是实际情况往往不会像预想的那样顺利运 ...

  9. webpack基础小结。

    想写写webpack的学习体验的小结,加深自己的理解和使用技能,顺便过一下文档(4.0的功能感觉还是满好玩的). 本文主简写描述webpack中对各种文件的简单处理 基本知识点 处理js 加载css文 ...

  10. TypeError: Fetch argument 0.484375 has invalid type <class 'numpy.float32'>, must be a string or Tensor. (Can not convert a float32 into a Tensor or Operation.)

    报错: TypeError: Fetch argument 0.484375 has invalid type <class 'numpy.float32'>, must be a str ...