• 升级openssh踩得坑


    升级背景:

      项目中使用的系统为CentOS6.8,经过漏洞扫描后发现openssh高危漏洞,具体描述如下:OpenSSH 7.2p2之前版本, sshd/ session.c/ do_setup_env函数存在安全漏洞, 启用了UseLogin功能且PAM配置为读取用户主目录内的 .pam_environment文件后, 本地用户通过触发/bin/login程序构造的环境, 可提升其权限。

      很复杂……,话不多说,直接升级到7.4p1版本。

    升级过程:

    -------升级前的准备:

    1.上传软件包openssl-1.0.2k.tar.gz     openssh-7.4p1.tar.gz

    2.安装telnet服务,防止升级出现问题。

    yum -y install telnet-server*
    

      

    3.关闭防火墙,防止telnet无法连接

    service iptables stop && chkconfig iptables off
    
    vi /etc/xinetd.d/telnet  将其中disable字段的yes改为no以启用telnet服务
    
    mv /etc/securetty /etc/securetty.old    #允许root用户通过telnet登录
    
    service xinetd start                     #启动telnet服务
    
    chkconfig xinetd on        #避免升级过程中服务器意外重启后无法远程登录系统
    

      

    4.安装编译所需工具包     

    yum -y install gcc pam-devel zlib-devel
    

      

    -------升级openssl

    #############备份当前ssl#############
    
    find / -name openssl
    

      

    将上条命令找到的文件备份,命令格式如下

    #mv  文件名  文件名.old(根据实际结果操作)

    备份如下两个库文件,因系统内部分工具(如yumwget等)依赖此库

    cp  /usr/lib64/libcrypto.so.10  /usr/lib64/libcrypto.so.10.old
    
    cp  /usr/lib64/libssl.so.10  /usr/lib64/libssl.so.10.old
    

      

    ############卸载当前ssl##############

    #rpm -qa | grep openssl         ###查询当前ssl版本
    
    #rpm -e --nodeps 上条命令查询结果粘贴到此处
    

      

    ############解压安装新版本ssl#########

    tar -zxvf openssl-1.0.2k.tar.gz
    
    cd openssl-1.0.2k
    
    ./config --prefix=/usr --openssldir=/etc/ssl --shared zlib    
    
    make && make test && make install
    
    openssl version -a  ##查看是否升级成功
    

      

      

    --------升级openssh

    ############备份当前ssh#############

    mv /etc/ssh /etc/ssh.old
    

      

    ############卸载当前ssh#############

    rpm -qa | grep openssh(查询结果如下,不一定与实际环境相同)
    
    #openssh-clients-5.3p1-111.el6.x86_64
    
    #openssh-server-5.3p1-111.el6.x86_64
    
    #openssh-5.3p1-111.el6.x86_64
    
    #openssh-askpass-5.3p1-111.el6.x86_64
    

      

    卸载命令如下:

    rpm -e --nodeps openssh-5.3p1-111.el6.x86_64
    
    rpm -e --nodeps openssh-server-5.3p1-111.el6.x86_64
    
    rpm -e --nodeps openssh-clients-5.3p1-111.el6.x86_64
    
    rpm -e --nodeps openssh-askpass-5.3p1-111.el6.x86_64
    
    rpm -qa | grep openssh   ###查询是否成功
    

      

    ############安装前环境配置############

    install  -v -m700 -d /var/lib/sshd
    
    chown  -v root:sys /var/lib/sshd
    

      

    ############解压安装新版本ssh#########

    tar -zxvf openssh-7.4p1.tar.gz
    
    cd openssh-7.4p1
    
    ./configure --prefix=/usr  --sysconfdir=/etc/ssh  --with-md5-passwords  --with-pam  --with-zlib --with-openssl-includes=/usr --with-privsep-path=/var/lib/sshd
    
    make && make install
    

      

    ####安装后环境配置(在编译目录执行####

    echo 'X11Forwarding yes' >> /etc/ssh/sshd_config
    
    echo "PermitRootLogin yes" >> /etc/ssh/sshd_config
    
    cp -p contrib/redhat/sshd.init /etc/init.d/sshd
    
    chmod +x /etc/init.d/sshd
    
    chkconfig  --add  sshd
    
    chkconfig  sshd  on
    
    chkconfig  --list  sshd
    
    service sshd restart(如果失败可用telnet连接启动服务)
    

      

    ###############安装成功后操作##############

    yum remove telnet-server* -y
    
    mv /etc/securetty.old /etc/securetty
    
    chkconfig  xinetd off
    
    service xinetd stop
    
    service iptables start
    
    chkconfig iptables on
    

      

    注意:一定要卸载telnet,这个软件存在危险,别背锅了……

    踩到的坑:

      升级途中遇到两个坑都是因为 /usr/lib64/libcrypto.so.10 这个文件,由于没有备份这个文件(心急了,运维还是要稳……),导致重启后系统起不来,很慌……(重启是因为升级了内核),在启动页面按ESC发现卡在缺少这个文件报错的环境,这个时候用上了运维基础操作(单用户模式),进入单用户模式后从别的机器中拷贝这个文件后重启正常。

    自我反省:

      基础的运维说简单其实很简单,说难其实也很难。简单的是技术,难的是心态。生活中也是这样,做什么都要全力以赴,切不可觉得无所谓,常在河边走,哪有不湿鞋……

  • 相关阅读:
    Jenkins的多个任务并串联参数传递
    jenkins任务构建失败重试插件Naginator Plugin
    通过hive向写elasticsearch的写如数据
    Elasticsearch中的索引管理和搜索常用命令总结
    Elasticsearch安装
    运行 Spark on YARN
    Jenkins console输出乱码???
    spark的standlone模式安装和application 提交
    多种排序算法整理
    结构型模式(二)
  • 原文地址:https://www.cnblogs.com/ltlinux/p/9472518.html
Copyright © 2020-2023  润新知