zoukankan      html  css  js  c++  java
  • CentOS 7 升级openssl和openssh

    1.升级环境

    OS版本:Centos 7.8

    openssh和openssl 版本:

    [root@localhost media]# ssh -V
    OpenSSH_7.4p1, OpenSSL 1.0.2k-fips 26 Jan 2017

    升级目标:

    openssl 1.0.2k --> openssl 1.1.1k

    openssh 7.4p1 --> openssh 8.6p1 

    以下所有操作均在root用户下完成。

    2.安装telnet 

    防止openssh升级出现问题,连不上服务器,建议开启telnet服务。

    # 查看是否安装telnet服务
    rpm -qa | grep telnet
    rpm -qa | grep xinetd


    # 若没有安装,使用yum安装
    yum -y install telnet* 
    yum -y install xinetd
     
    #使服务开机自启
    systemctl enable xinetd.service
    systemctl enable telnet.socket
     
    #开启服务
    systemctl start telnet.socket  
    systemctl start xinetd
     
     vi /etc/securetty
    在最后添加两行
    pts/0
    pts/1
     
    systemctl restart xinetd

    # 确认下是否启动成功
    netstat -plnt |grep 23  

    3.升级OpenSSl
    3.1 查看原版本
    [root@localhost media]# openssl version -a
     
    3.2 解压安装

    安装系统包

    [root@localhost media]# yum -y install net-tools perl gcc gcc++ make

    解压安装

    [root@localhost media]# tar zxvf openssl-1.1.1k-20210525.tar.gz 

     [root@localhost media]# cd openssl-1.1.1k/

    [root@localhost openssl-1.1.1k]# ./config --prefix=/usr/local/openssl   #检查环境

    [root@localhost openssl-1.1.1k]# ./config -t
    [root@localhost openssl-1.1.1k]# make && make install     #编译安装

    3.3 检查更新函数库
    cd /usr/local
    ldd /usr/local/openssl/bin/openssl

    1 [root@localhost openssl-1.1.1k]# cd /usr/local/
    2 [root@localhost local]# ldd /usr/local/openssl/bin/openssl
    3 linux-vdso.so.1 => (0x00007ffe03d81000)
    4 libssl.so.1.1 => not found
    5 libcrypto.so.1.1 => not found
    6 libdl.so.2 => /lib64/libdl.so.2 (0x00007faf28080000)
    7 libpthread.so.0 => /lib64/libpthread.so.0 (0x00007faf27e64000)
    8 libc.so.6 => /lib64/libc.so.6 (0x00007faf27a96000)
    9 /lib64/ld-linux-x86-64.so.2 (0x00007faf28284000)

    [root@localhost local]# echo "/usr/local/openssl/lib" >> /etc/ld.so.conf    #添加所缺函数库

    [root@localhost local]# ldconfig -v        #更新函数库
    [root@localhost local]# openssl/bin/openssl version      #查看新安装的版本

     3.4 增加openssl软连接
    [root@localhost local]# which openssl           #查看旧版本openssl命令在哪里
    [root@localhost local]# mv /bin/openssl /usr/bin/openssl.old      #将旧版本openssl移除
    [root@localhost local]# ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl           #新版本制作软链接
    [root@localhost local]# openssl version         最后查看版本,更新完毕

    1 [root@localhost local]# openssl version
    2 OpenSSL 1.0.2k-fips  26 Jan 2017

    3.5 删除旧版openssl

    #检查系统中旧版openssl软件

    1 [root@localhost local]# rpm -qa |grep openssl  
    2 openssl098e-0.9.8e-29.el7.centos.3.x86_64
    3 openssl-libs-1.0.2k-19.el7.x86_64
    4 openssl-1.0.2k-19.el7.x86_64
    5 xmlsec1-openssl-1.2.20-7.el7_4.x86_64

    我们需要卸载  openssl-1.0.2k-19.el7.x86_64

    [root@localhost local]# rpm -e --nodeps openssl-1.0.2k-19.el7.x86_64

    卸载旧版本后,需要重新为新版做软连接:

    [root@localhost local]# ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl 

    4.升级openssh

    4.1 解压安装包

    [root@localhost media]# tar zxvf openssh-8.6p1-20210419.tar.gz
     
    4.2 移除旧版本
    [root@localhost media]# mv /etc/ssh /etc/ssh.old
    注意:移除之后,不能退出当前会话;若退出,只能通过telnet登录了。

    4.3 安装系统包

    [root@localhost media]# yum -y install zlib-devel pam-devel openssl-devel
     
    4.4 编译安装

    [root@localhost media]# cd openssh-8.6p1/
    [root@localhost openssh-8.6p1]#./configure --prefix=/usr/local/openssh --sysconfdir=/etc/ssh --with-pam --with-ssl-dir=/usr/local/openssl --with-md5-passwords --mandir=/usr/share/man --with-zlib=/usr/local/zlib --without-hardening

    config过程中遇到的错误:

    报错1:configure: error: *** zlib.h missing

    需安装:

    yum -y install zlib-devel
     
     报错2:configure: error: PAM headers not found 
    需安装:

    yum -y install pam-devel

    报错3:find openssl head...ERROR

    原因是旧版本的openssl在系统里,需要卸载掉,需要卸载openssl。

    处理过程:

    参考步骤3.5.

    开始编译安装:

    [root@localhost openssh-8.6p1]# make && make install

    4.5 修改启动脚本

    # 拷贝启动脚本
    [root@localhost openssh-8.6p1]# cp ./contrib/redhat/sshd.init /etc/init.d/sshd

    # 修改启动脚本
    [root@localhost openssh-8.6p1]# vi /etc/init.d/sshd

    # 按下图修改,需要注意,此路径是你安装新版本openssh的路径,根据你的实际情况修改:
    SSHD=/usr/local/openssh/sbin/sshd

     

    sed -i 's#/usr/sbin/sshd#/usr/local/openssh/sbin/sshd#' /etc/init.d/sshd

    #配置sshd开机启动

    [root@localhost openssh-8.6p1]# chkconfig --add sshd
    [root@localhost openssh-8.6p1]# chkconfig --level 2345 sshd on
    [root@localhost openssh-8.6p1]# chkconfig --list

    4.6 修改sshd配置文件/etc/ssh/sshd_config 
     
    [root@localhost openssh-8.6p1]# echo "PermitRootLogin yes" >> /etc/ssh/sshd_config             #直接用root登录终端

    [root@localhost openssh-8.6p1]# echo 'X11Forwarding yes' >> /etc/ssh/sshd_config                 #设置是否允许X11转发

    [root@localhost openssh-8.6p1]# echo "PasswordAuthentication yes" >> /etc/ssh/sshd_config #是否允许密码验证

    4.7 卸载原有ssh
    for i in $(rpm -qa |grep openssh);do rpm -e $i --nodeps;done
    提示警告:
     
    [root@localhost openssh-8.6p1]#  for i in $(rpm -qa |grep openssh);do rpm -e $i --nodeps;done
    warning: /etc/ssh/moduli saved as /etc/ssh/moduli.rpmsave
    warning: /etc/ssh/sshd_config saved as /etc/ssh/sshd_config.rpmsave
    warning: /etc/ssh/ssh_config saved as /etc/ssh/ssh_config.rpmsave

    注意:如果卸载旧版本过程中,配置文件没有自动备份,需要从前面的/etc/ssh.old中把对应的文件cp到原来的位置。同时注意当前ssh端口是否为默认端口。

    将警告中被修改的文件名字再改回来
    [root@localhost openssh-8.6p1]# mv /etc/ssh/sshd_config.rpmsave /etc/ssh/sshd_config

    [root@localhost openssh-8.6p1]# mv /etc/ssh/ssh_config.rpmsave /etc/ssh/ssh_config

    [root@localhost openssh-8.6p1]# mv /etc/ssh/moduli.rpmsave /etc/ssh/moduli

     4.8 替换相关命令,并重启sshd服务
    [root@localhost openssh-8.6p1]# cp -arp /usr/local/openssh/bin/* /usr/bin/    #替换相关命令

    [root@localhost openssh-8.6p1]# service sshd restart                                    #重启sshd服务
     
    验证升级后版本

    1 [root@localhost openssh-8.6p1]# ssh -V
    2 OpenSSH_8.6p1, OpenSSL 1.1.1k 25 Mar 2021

    4.9 关闭telnet

    #关闭telnet服务

    systemctl stop telnet.socket

    systemctl stop xinetd


    #关闭telnet服务开机自启

    systemctl disable xinetd.service

    systemctl disable telnet.socket

  • 相关阅读:
    Suricata的输出
    Setting up IPS/inline for Linux in Suricata
    Suricata的初始化脚本
    Suricata的Reputation
    Suricata的配置
    Suricata的性能
    Suricata里的规则与Snort区别之处
    Suricata的命令行解释
    [转]ASP.NET 成员资格 Part.1(API)
    [转]ASP.NET MVC4+BootStrap 实战(一)
  • 原文地址:https://www.cnblogs.com/caoyibin/p/15121011.html
Copyright © 2011-2022 走看看