zoukankan      html  css  js  c++  java
  • centos7.5升级openssh7.4到7.9

    漏洞扫描工具扫描出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
    
  • 相关阅读:
    MVB设备分类
    MVB帧
    也说析构---C++
    oracle中以dba_、user_、v$_、all_、session_、index_开头
    查看Oracle的表中有哪些索引(用user_indexes和user_ind_columns)
    Spark_总结五
    Spring编程式和声明式事务实例讲解
    缓存穿透,缓存击穿,缓存雪崩解决方案分析
    redis持久化2
    redis的持久化方式
  • 原文地址:https://www.cnblogs.com/liao-lin/p/10286722.html
Copyright © 2011-2022 走看看