openssh5.3升级7.7p1和8.0

centos openssh5.3升级openssh7.7p1或者8.0

OpenSSH(OpenBSD Secure Shell)是OpenBSD计划组所维护的一套用于安全访问远程计算机的连接工具。该工具
是SSH协议的开源实现,支持对所有的传输进行加密,可有效阻止窃听、连接劫持以及其他网络级的攻击。sshd是
其中的一个独立守护进程。OpenSSH 7.2p2及之前版本的sshd中的session.c文件中的‘do_setup_env’函数存在安全漏洞。
当程序启用UseLogin功能并且PAM被配置成读取用户主目录中的.pam_environment文件时,本地攻击者可借助/bin/login
程序的特制的环境变量利用该漏洞获取权限;sshd中的session.c文件中存在CRLF注入漏洞。远程攻击者可借助特制的
X11转发数据利用该漏洞绕过既定的shell-command限制。

升级步骤

  1. 升级准备

    1. 准备需要安装的软件,上传到所需升级的服务器

      1. openssl-1.0.2s.tar.gz # 官方下载地址: https://www.openssl.org/source/
      2. openssh-7.7p1.tar.gz 或者8.0p1 看需求 # 官方下载地址: https://fastly.cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/
      3. zlib-1.2.11.tar.gz # 官方下载地址: http://www.zlib.net/
    2. 为避免服务器升级过程中出现无法连接的问题,安装telnet

      1. 检查是否安装服务

        rpm -qa telnet-server
        rpm -qa xinetd
      2. 安装telnet

        yum install -y telnet-server
      3. 修改配置文件

        vi /etc/xinetd.d/telnet

        disable=yes改成disable=no

      4. 重启服务

        service xinetd restart

      5. 添加登录用户

        默认不允许使用root账号登录

        useradd 用户名

        passwd 用户名

      6. 测试telnet

        telnet ip或者域名

    3. 安装编译器

      yum install -y gcc openssl-devel pam-devel rpm-build
  2. zlib

    1. 查看是否安装(如果已经安装可以不安装)

      rpm -qa zlib
    2. 安装zlib

      cd {上传目录}
      tar xf zlib-1.2.11.tar.gz
      cd zlib-1.2.11 
      ./configure –prefix=/usr/local/zlib 
      make 
      make install 
    3. 构建静态库

      ./configure 
      make test 
      make install
    4. 构建共享库

      make clean 
      ./configure -shared
      make test 
      make install 
      cp zutil.h /usr/local/include 
      cp zutil.c /usr/local/include 
  3. openssl

    1. 查看是否安装(如果已经安装可以不安装)

      rpm -qa openssl
    2. 升级openssl

      cd {上传目录}
      tar xf openssl-1.0.2s.tar.gz 
      cd openssl-1.0.2s 
      ./config shared zlib #一定要加上shared 参数,要不在安装openssh的时候就无法找到 
      make 
      make install 
    3. 备份原来的openssl

      mv /usr/bin/openssl /usr/bin/openssl.bak 
      mv /usr/include/openssl /usr/include/openssl.bak 
    4. 建立软连接

      因为源码安装默认安装的位置是 /usr/local/ssl 需要将创建软链接到系统位置

      ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl 
      ln -s /usr/local/ssl/include/openssl /usr/include/openssl 
    5. 将openssl的Lib库添加到系统设置

      echo "/usr/local/ssl/lib" > /etc/ld.so.conf.d/openssl.conf
    6. 应用新添加的设置

      ldconfig 
  4. openssh

    1. 备份原ssh文件

      mv /etc/init.d/sshd /etc/init.d/sshd.old 
      cp -r /etc/ssh /etc/ssh.old
    2. 卸载原openssh

      yum remove -y openssh-server openssh-client 
    3. 安装openssh

      1. 7.7p1
      tar xf openssh-7.7p1.tar.gz 
      cd openssh-7.7p1 
      ./configure -prefix=/usr -sysconfdir=/etc/ssh -with-md5-passwords -with-pam -with-zlib -with-ssl-dir=/usr/local/ssl -with-privsep-path=/var/lib/sshd #需要指定openssl的安装路径 
      make 
      make install 
      1. 安装8.0p1
       tar xf openssh-8.0p1.tar.gz
       cd openssh-8.0p1
       ./configure --prefix=/usr --sysconfdir=/etc/ssh --with-pam --with-zlib --with-md5-passwords --with-tcp-wrappers
      #如果没报错则执行安装命令
      make && make install
    4. 查看当前版本

      ssh -V 
      
  5. 恢复之前的配置

    1. 使用原来的sshd配置文件

      cd /etc/ssh 
      mv sshd_config sshd_config.default 
      cp ../ssh.old/sshd_config ./
    2. 使用原来的/etc/init.d/ssh

      mv /etc/init.d/sshd.old /etc/init.d/sshd
    3. 重启服务

      service sshd restart
  6. 删除telnet

    1. 关闭telnet服务

      vi /etc/xinetd.d/telnet

      disable=no改成disable=yes

    2. 重启xinetd服务 使设置生效

      service xinetd restart

    3. 删除telnet-server包

      yum remove -y telnet-server

常见问题

升级之后ssh无法登录的问题

  1. 启动服务时候报错:

    Unsupported option GSSAPIAuthentication Unsupported option GSSAPICleanupCredentials

    这个报错信息会造成密码输入正确也没办法ssh登录

  2. 解决方法:

    cd /etc/ssh
    vi sshd_config

注销sshd的配置文件(sshd_config)的如下配置:

#GSSAPIAuthentication yes ​ #GSSAPICleanupCredentials yes

然后重启服务:service sshd restart

安装新openssh的时候出现提示

  1. 执行命令:

    ./configure -prefix=/usr -sysconfdir=/etc/ssh -with-md5-passwords -with-pam -with-zlib -with-ssl-dir=/usr/local/ssl -with-privsep-path=/var/lib/sshd

  2. 报错信息:

    configure: error: PAM headers not found

  3. 解决办法:

    yum -y install pam*

重启sshd时候问题

  1. 报错信息

    Starting sshd: /usr/sbin/sshd: error while loading shared libraries: libcrypto.so.1.0.0: failed to map segment from shared object: Permission denied

  2. 解决办法

    1. 禁用SELinux后恢复

    2. 临时关闭,启动sshd:

      setenforce 0

    service sshd start

    
    
    
    3. 永久关闭:
    
    `vi /etc/selinux/config`
    
    将SELINUX=enforcing改为SELINUX=disabled,保存重启即可
    
    
    

找不到所需的编译器

  1. 报错信息

    [root@localhost openssh-8.0p1]# ./configure --prefix=/usr --sysconfdir=/etc/ssh --with-pam --with-zlib --with-md5-passwords --with-tcp-wrappers
    configure: WARNING: unrecognized options: --with-tcp-wrappers
    checking for cc... no
    checking for gcc... no
    configure: error: in `/home/sshUpdate/openssh-8.0p1':
    configure: error: no acceptable C compiler found in $PATH
    See `config.log' for more details`
  2. 解决办法

    yum install -y gcc openssl-devel pam-devel rpm-build

无法使用密钥免密登录问题

每个账号有自己的允许的publickey列表,不能统一设置

你可能感兴趣的:(运维)