Advertisement

2021年4月Centos7 更新OpenSSH 至 OpenSSH_8.6

阅读量:

由于对旧版本的OpenSSH执行了安全检查后发现了潜在漏洞, 因此需要升级OpenSSH至最新版本。实际上认为升级操作相对简单, 依仗网上的指导未能完成操作。于是乎决定撰写一份较为详尽的操作指南, 探讨这一技术难点所在

环境

升级前的环境如下:

项目 Value
操作系统 CentOS Linux release 7.9.2009 (Core)
软件 OpenSSH_7.4p1, OpenSSL 1.0.2k-fips 26 Jan 2017

升级准备

下载

可以通过以下途径获取文件:openssh-8.6p1.tar.gz;同时可通过该链接获取最新版本:https://openbsd.hk/pub/OpenBSD/OpenSSH/portable/

在这里插入图片描述

openssl-1.1.1k.tar.gz
https://ftp.openssl.org/source/

把文件上传到将要升级的服务器。

我的文件位置如下:

复制代码
    [root@localhost tmp]# pwd
    /tmp
    [root@localhost tmp]# ls
    openssh-8.6p1.tar.gz
    openssl-1.1.1k.tar.gz

留一手

在已经建立的SSH通道下,即使卸载SSH服务,现有的会话仍能正常运行。尽管卸载了SSH服务,但原有的会话依然有效。但是,若试图开启新的SSH通道则无法成功。具体原理尚不明确,这是通过实际操作得出的结论。

在进行ssh升级的过程中,已经连接上的SSH连接不会断开。
如果您的操作本身就是基于SSH远程访问的,建议最好多准备一个通道,以确保不会因SSH升级失败而导致服务器中断。

请注意升级执行前的相关事宜;特别提醒您在操作前确保自身能够通过多种方式远程访问服务器。例如:请务必确认您不仅可以通过SSH还应具备其他远程访问服务器的方式。

请注意升级执行前的相关事宜;特别提醒您在操作前确保自身能够通过多种方式远程访问服务器。例如:请务必确认您不仅可以通过SSH还应具备其他远程访问服务器的方式。

  • 端口 Telnet 服务 可以参考《CentOS7 安装 配置 Telnet 服务器》<>
    • 远程 连接 VNC 服务器 可以参考 《Centos7 安装 配置 VNC 服务器 - Xfce 篇》 <>

如果不想那么麻烦,建议在升级之前多连接几个ssh会话,备用。

安装依赖项软件包(后续升级需要)

复制代码
    yum install -y gcc gcc-c++ glibc make autoconf openssl openssl-devel pcre-devel  pam-devel 
    yum install -y pam* zlib*

注脚(仅针对非zsh用户的注释)

升级openssl

在执行某个操作之前,请确保当前系统的日期和时间是正确的吗?因为我之前就是因为设置的时间不正确导致安装出现问题而浪费了宝贵的时间。

复制代码
    cd /tmp
    tar -zxvf openssl-1.1.1k.tar.gz
    cd openssl-1.1.1k
    ./config --prefix=/usr/local/openssl
    # 如果为0则没有报错,如果报错则要解决错误
    echo $?
    make
    # 如果为0则没有报错,如果报错则要解决错误
    echo $?
    make install
    # 如果为0则没有报错,如果报错则要解决错误
    echo $?
    #备份
    mv /usr/bin/openssl /usr/bin/openssl.bak
    # 创建软链接
    ln -sf /usr/local/openssl/bin/openssl /usr/bin/openssl
    # Write in openssl Search Path for Library Files
    echo "/usr/local/openssl/lib" >> /etc/ld.so.conf
    # Set up/etc/ld.so.conf Take effect
    ldconfig -v 
    # 查询openssl版本
    openssl version

此时我们已经成功安装了openssl了

复制代码
    [root@localhost openssl-1.1.1k]# openssl version
    OpenSSL 1.1.1k  25 Mar 2021

升级openssh

安装

复制代码
    #备份ssh目录
    cp -r /etc/ssh /etc/ssh.bak
    cd /tmp
    tar -zxvf openssh-8.6p1.tar.gz
    cd openssh-8.6p1
    ./configure --prefix=/usr --sysconfdir=/etc/ssh  --with-openssl-includes=/usr/local/openssl/include --with-ssl-dir=/usr/local/openssl   --with-zlib   --with-md5-passwords   --with-pam
    # 如果为0则没有报错,如果报错则要解决错误
    echo $?
    make && make install
    # 如果为0则没有报错,如果报错则要解决错误
    echo $?

赋权:

复制代码
    chmod 600 /etc/ssh/ssh_host_rsa_key /etc/ssh/ssh_host_ecdsa_key /etc/ssh/ssh_host_ed25519_key

配置

复制代码
    vim /etc/ssh/sshd_config

相关配置修改成下面这样子

复制代码
    PasswordAuthentication yes
    UseDNS no
    PermitRootLogin yes

为了让root能够进行登录操作。为此需要对#PermitRootLogin字段进行相应的配置调整。具体来说需要更改PermitRootLogin项中的prohibit-password设置并移除注释标记将该字段设为yes状态这样就能实现root用户的登录权限了

其他操作

复制代码
    cd /tmp/openssh-8.6p1
    #备份
    mv /etc/init.d/sshd /etc/init.d/sshd.bak
    # 使用新版本的执行文件
    cp -a contrib/redhat/sshd.init /etc/init.d/sshd
    # 不管它不存在
    cp -a contrib/redhat/sshd.pam /etc/pam.d/sshd.pam
    # 添加非root用户安装所需的执行权限
    sudo chmod +x /etc/init.d/sshd
    # 将sshd服务设置为启动
    chkconfig --add sshd
    #允许sshd服务自启动
    systemctl enable sshd
    # 删除或删除原始的sshd文件。 否则,会影响sshd服务重启
    mv /usr/lib/systemd/system/sshd.service /tmp

验证

复制代码
    #查看服务运行级别
    chkconfig sshd
    #验证启动是否正常
    /etc/init.d/sshd restart   
    /etc/init.d/sshd stop 
    /etc/init.d/sshd start
    systemctl restart sshd 
    systemctl stop sshd
    systemctl start sshd

检验

本地查版本

理论上这样查只是查客启端的版本信息。

复制代码
    ssh -V
    OpenSSH_8.6p1, OpenSSL 1.1.1k  25 Mar 2021

安全工具查版本信息

Nmap安全检测

通过指定-p参数可设置目标端口号;通过-sV参数可获取该服务版本的信息;目标IP地址为x.x.x.x。

运行扫描脚本nmap -p 22 -sV x.x.x.x$
在扫描过程中识别出目标系统,在其上打开了端口号22,并发现该服务是SSH功能,并支持OpenSSH版本8.6

我的扫描结果如下:

复制代码
    $ nmap -p 22 -sV 172.16.184.5                             [17:14:39]
    Starting Nmap 7.91 ( https://nmap.org ) at 2021-04-23 17:14 CST
    Nmap scan report for 172.16.184.5
    Host is up (0.00069s latency).
    
    PORT   STATE SERVICE VERSION
    22/tcp open  ssh     OpenSSH 8.6 (protocol 2.0)
    
    Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
    Nmap done: 1 IP address (1 host up) scanned in 4.56 seconds

说明服务端也成功升级到OpenSSH 8.6,我们已经成功升级啦!

参考

https://programmer.ink/think/centos7-upgrades-openssh-to-openssh_8.0p1.html

全部评论 (0)

还没有任何评论哟~