找回密码
 注册
首页 ≡≡网络技术≡≡ 服务器 Ubuntu 18.04.6 升级 OpenSSH 教程

linux Ubuntu 18.04.6 升级 OpenSSH 教程

灰儿 2023-5-16 11:09:04
Ubuntu 18.04.6 升级 OpenSSH 教程

本次升级路径为OpenSSH_7.6p1至openssh-9.3p1,OpenSSL 1.0.2n至openssl-3.1.0,升级跨度比较大。

openssh下载地址:https://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/
openssl下载地址:https://ftp.openssl.org/source/old/
————————————————
参考教程:https://cloud.tencent.com/developer/article/2070526

1. 安装Telent防止ssh出问题无法远程服务器
升级ssh若有操作不当的容易引起不能远程登录主机,不能远程意味着要去机房操作,建议先开启telnet服务。可以成功升级以后再关闭telnet服务。在线与离线并没有差异,区别就是在线下载安装包还是先下载安装包上传,一般离线部署居多。

服务器上安装并开启telent服务参考:
sudo apt-get install telnet                  #安装telnet客户端
sudo apt-get install telnetd                #安装telnet服务端
sudo apt-get install openbsd-inetd    #安装网络守护进程
/etc/init.d/openbsd-inetd restart     # 重新启动服务
netstat -anpt|grep 23                       # 查看telnet服务的默认端口23是否启动
netstat -a | grep telnet                     # 查看服务,显示服务器正在监听
telnet ip                                            # 测试是否成功登陆

服务器对访问主机IP开放防火墙   ufw allow from 192.168.xx.xx to any port 23
主机上安装telent客户端。
远程测试:telent 服务器ip,输入服务器账号和密码即可。

2. 下载安装包
安装依赖
sudo apt update 更新库sudo apt install zlib1g libpam0g-dev  libssl-dev   安装依赖

在安装Openssl前,由于是由1.1.1x至3.1.0,跨度较大,其中主机内缺少3.1.0版本所需的几个perl库,升级OpenSSH的过程需要依赖ZLIB、OpenSSL,所以需先将升级包下载到服务器。

安装顺序也有讲究,请参考如下步骤操作:
zlib-1.2.13.tar.gz,openssl-3.1.0.tar.gz,openssh-9.3p1.tar.gz 。
安装包下载(也可以下载到本地电脑在上传到服务器)

wget http://www.zlib.net/zlib-1.2.13.tar.gz
wget https://www.openssl.org/source/openssl-3.1.0.tar.gz
wget http://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-9.3p1.tar.gz

下载之后挨个解压。 tar -zxvf xxx.gz

3. zlib库文件的解压安装
打开终端命令工具后
首先进入当前用户主目录: cd /home/xqf222/
执行创建文件夹命令: mkdir zlib
然后进入新建的文件夹:cd zlib
之后解压文件文件到当前目录:tar xvf /home/xqf222/下载/zlib-1.2.13.tar.gz
进入子目录:cd /home/xqf222/zlib/zlib-1.2.13/
执行命令1: ./configure
执行命令2: make
执行命令3: sudo make install
完成zlib的编译和安装
————————————————

通过 gcc -v 可以查看当前 gcc 版本#安装
sudo apt-get install gcc

4. 安装OpenSSL
tar -zxvf openssl-3.1.0.tar.gz
cd /openssl-3.1.0/
# 配置编译参数,指定shared zlib
./config shared zlib
# 指定8个CPU进行编译,可以根据自己服务器的情况指定,也可以直接使用make编译
make -j 8
sudo make install

#备份原来的openssl
        mv /usr/bin/openssl /usr/bin/openssl.bak
        mv /usr/include/openssl /usr/include/openssl.bak

#因为源码安装默认安装的位置是 /usr/local/ssl 需要将创建软链接到系统位置
        ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl
        ln -s /usr/local/ssl/include/openssl /usr/include/openssl

#将openssl 的lib 库添加到系统
        echo "/usr/local/ssl/lib" > /etc/ld.so.conf.d/openssl.conf
        如果echo不行,可以直接使用vim添加

#使新添加的lib 被系统找到
        ldconfig
#查看openssl版本
        openssl version -a
————————————————


如果在执行make编译命令的时候报错,zlib.h: No such file or directory,如下图。

那么请回到zlib解压缩的源码目录下执行以下操作:

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

成功执行完以上操作后,回到openssl的源码目录下再次编译打包。

备份原来的openssl,创建软链接到系统位置

mv /usr/bin/openssl /usr/bin/openssl.bak
mv /usr/include/openssl /usr/include/openssl.bak
ln -s /usr/local/bin/openssl /usr/bin/openssl
ln -s /usr/local/include/openssl /usr/include/openssl

添加openssl的lib库到系统并使用。

echo "/usr/local/lib" > /etc/ld.so.conf.d/openssl.conf
ldconfig
#ldconfig是一个动态链接库管理命令,其目的为了让动态链接库为系统所共享。 ldconfig的主要用途: 默认搜寻/lilb和/usr/lib,以及配置文件/etc/ld.so.conf内所列的目录下的库文件。


5. 更新 openssh
# 备份原有SSH服务的配置文件
mv /etc/init.d/ssh /etc/init.d/ssh.old
mv /etc/ssh /etc/ssh.old

# 删除已经安装的SSH软件包
apt-get remove openssh-server openssh-client -y

# 解压源码包
tar -zxvf openssh-9.0p1.tar.gz
cd openssh-9.0p1

# 配置编译参数
./configure --prefix=/usr \
--sysconfdir=/etc/ssh \
--with-md5-passwords \
--with-pam --with-zlib \
--with-ssl-dir=/usr/local \
--with-privsep-path=/var/lib/sshd

# 指定参与编译的CPU数量,可以直接使用make补丁定参数
make -j 8

# 安装已经编译成的openssh软件
make install

# 还原原有备份配置文件
cd /etc/ssh
mv sshd_config sshd_config.default
cp ../ssh.old/sshd_config ./
mv /etc/init.d/ssh.old /etc/init.d/ssh
systemctl unmask ssh

# 重新启动SSH服务
systemctl restart ssh
-----------------------------------

6.查看版本
ssh -V

7.重启服务
systemctl restart ssh

————————————————
Ubuntu 18.04.6 服务器中OpenSSH版本较老(OpenSSH_7.6p1),目前存在较多漏洞

#检查Ubuntu 18.04.6的ssh版本
ssh -V
#显示  
OpenSSH_7.6p1 Ubuntu-4ubuntu0.5, OpenSSL 1.0.2n  7 Dec 2017

OpenSSH_7.6p1漏洞列表:
OpenSSH 安全漏洞(CVE-2018-15473)
OpenSSH 安全漏洞(CVE-2018-15919)
OpenSSH 访问控制错误漏洞(CVE-2019-6109)
OpenSSH 访问控制错误漏洞(CVE-2019-6110)
OpenSSH 输入验证错误漏洞(CVE-2019-6111)
OpenSSH 操作系统命令注入漏洞(CVE-2020-15778)
OpenSSH 信息泄露漏洞(CVE-2020-14145)

更早版本漏洞:
OpenSSH LoginGraceTime远程拒绝服务漏洞(CVE-2004-2069)
OpenSSH enables AllowTcpForwarding 安全漏洞(CVE-2004-1653)
OpenSSH GSSAPI认证终止信息泄露漏洞(CVE-2006-5052)
OpenSSH sshd 安全漏洞(CVE-2015-8325)
OpenSSH X11转发安全绕过漏洞(CVE-2016-1908)
OpenSSH 安全漏洞(CVE-2017-15906)










您需要登录后才可以回帖 登录 | 注册
学习中心
站长自定义文字内容,利用碎片时间,随时随地获取优质内容。
Q设计语言 了解更多
Q Design 提供商家设计所需的指导与资源,帮商家快速完成产品设计、降低生产成本。
学习中心
站长自定义文字内容,利用碎片时间,随时随地获取优质内容。
Q设计语言 了解更多
Q Design 提供商家设计所需的指导与资源,帮商家快速完成产品设计、降低生产成本。