【统信UOS下升级openssh及openssl】

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

提示:升级原因及项目环境:

升级原因:政企项目所属国产服务器下,需要使用openSSH方能远程连接服务器,在一次等保测评的时候由于openSSH版本过低扫描出远程服务存在安全隐患的漏洞,需要对openSSH进行远程升级操作。

项目环境:

# 查询操作系统
lsb_release -a

1、服务器操作系统:UnionTech OS Server 20(基于国产开源Deepin系统开发,Deepin系统基于大型社区开源系统Debian系统开发,所以与Ubuntu系统类似,本次升级方案也适用于Ubuntu)

2、版本更新:openSSH8.3p1 -> openSSH9.1p1


提示:以下是本篇文章正文内容,下面案例可供参考

一、openssh及openssl简介

OpenSSH和OpenSSL是两个常用的开源软件包,用于提供安全的网络通信和加密功能。

OpenSSH是一个用于安全登录和远程 shell 会话的工具集,基于SSH(Secure Shell)协议。它能够加密所有的网络通信,包括密码、文件和远程命令等。OpenSSH还提供了 SFTP(SSH File Transfer Protocol)和SCP(Secure Copy Protocol)等文件传输协议,使文件传输也能够进行安全加密。

OpenSSL是一个开源的加密工具包,提供了一系列密码学功能,包括对称加密、非对称加密、数字签名、密钥交换等。OpenSSL还提供了 SSL/TLS 协议的实现,用于在网络通信中建立安全的连接。它可以用于开发安全的网络应用程序,如网站服务器、邮件服务器、VPN 等。

OpenSSH和OpenSSL在许多操作系统中都有广泛的应用。它们具有安全、可靠、稳定的特性,并且经过了长时间的发展和优化,被广泛认可并广泛使用。

二、准备操作

1.镜像仓库

注意:如果确保你的网络是没问题的,那这步骤可以跳过openssh以及openssl的资源链接:

  1. openssl官方下载地址: https://www.openssl.org/source/
  2. openssh官方下载地址:https://fastly.cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/
  3. zlib官方下载地址: http://www.zlib.net/
  4. telnet安装包地址:http://ports.ubuntu.com/pool/main/n/netkit-telnet/telnet_0.17-41_arm64.deb
  5. openbsd-inetd下载地址:https://launchpad.net/ubuntu/+source/openbsd-inetd/
  6. Debian官网的libpam0g-dev下载地址:http://ftp.de.debian.org/debian/pool/main/p/pam/
  7. 建议使用apt包管理器,配置镜像源仓库:清华大学开源软件镜像站
    https://mirrors.tuna.tsinghua.edu.cn/

vim /etc/apt/sources.list 添加如下镜像地址:

#debian 9.x (stretch) 阿里云镜像仓库
deb https://mirrors.aliyun.com/debian-archive/debian stretch main contrib non-free
#deb https://mirrors.aliyun.com/debian-archive/debian stretch-proposed-updates main non-free contrib
deb https://mirrors.aliyun.com/debian-archive/debian stretch-backports main non-free contrib
deb https://mirrors.aliyun.com/debian-archive/debian-security stretch/updates main contrib non-free
deb-src https://mirrors.aliyun.com/debian-archive/debian stretch main contrib non-free
#deb-src https://mirrors.aliyun.com/debian-archive/debian stretch-proposed-updates main contrib non-free
deb-src https://mirrors.aliyun.com/debian-archive/debian stretch-backports main contrib non-free
deb-src https://mirrors.aliyun.com/debian-archive/debian-security stretch/updates main contrib non-free

或清华源
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse

Ubuntu由于没有公钥,无法验证下列签名。 公钥就是:3B4FE6ACC0B21F32(实际看自己的是什么)
输入以下命令:
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 公钥

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 3B4FE6ACC0B21F32

更新apt
apt update 

1、打开终端并以 root 用户登录,正式开始安装openssl和openssh,以下步骤如果出现权限问题需要用sudo

2、由于远程升级openSSH存在断连的风险,所以为了避免升级时openSSH无法使用需要先安装另外一个远程控制与管理的服务,安装telnet:

// 1、安装openbsd-inetd和telnetd,如果已经安装过了,会提示已经安装过了,直接执行下面的步骤就可以了。
apt-get install openbsd-inetd telnetd telnet

// 离线上传安装包需要解压
dpkg -i telnet_0.17-41_arm64.deb
dpkg -i openbsd-inetd_0.20221205-1_arm64.deb

// 安装完之后,查看inetd.conf
####cat /etc/inetd.conf | grep telnet
输出: telnet stream tcp nowait telnetd /usr/sbin/tcpd /usr/sbin/in.telnetd

// 2、重启服务
####/etc/init.d/openbsd-inetd restart

// 3、查看服务状态
/etc/init.d/openbsd-inetd status

// 4、查看telnet服务的默认端口是否启动
netstat -anpt|grep 23

// 5、测试是否成功登陆
telnet 127.0.0.1

// 6、停止服务(openSSH升级重启后,需要停止telnet并卸载)
/etc/init.d/openbsd-inetd stop
systemctl stop openbsd-inetd

// 7、卸载该服务的安装
apt-get remove openbsd-inetd
apt-get remove telnetd
// 或卸载软件包(配置文件一起删除)
dpkg -P openbsd-inetd
dpkg -P telnetd

// 8、查询服务是否卸载完全
dpkg -l | grep telnetd
dpkg -l | grep openbsd-inetd

// 9、删除该服务的配置文件
dpkg --purge telnetd
dpkg --purge openbsd-inetd

三、升级步骤

1.升级openSSL

代码如下(示例):

// 2、安装 libpam0g-dev(已安装请忽略,重点强调:ubuntu下是安装libpam0g-dev ,不装下面安装会报错PAM headers not found)
apt-get install libpam0g-dev

// 或者离线上传安装包需要解压
dpkg -i libpam0g-dev_1.5.2-6_arm64.deb

// 1、下载源代码存档(无法访问,则去官网下载安装包上传到服务器)
wget https://www.zlib.net/zlib-1.2.13.tar.gz

// 2、解压下载的安装包
tar -xvf zlib-1.2.13.tar.gz

// 3、进入文件夹zlib
cd zlib-1.2.13

// 4、修改配置
./configure --prefix=/usr/local/zlib

// 5、安装
make && make install

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

// 7、从下载的包中提取文件(去官网下载安装包上传到服务器)
tar -xvf openssl-1.0.2o.tar.gz

// 8、进入文件夹openssl
cd openssl-1.0.2o

// 9、修改配置(一定要加上shared 参数,要不在安装openssh的时候就无法找到,最好指定安装路径,不然找不到安装好的openssl在哪)
./config --prefix=/usr/local/openssl shared zlib

// 10、安装
make && make install

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

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

// 13、使新添加的lib 被系统找到
ldconfig

// 14、查看openssl版本(如果能正常显示openssl最新的版本,证明安装成功)
openssl version -a

2、升级openSSH

// 1、备份原openssh文件
mv /etc/init.d/ssh /etc/init.d/ssh.old
cp -r /etc/ssh /etc/ssh.old

// 2、卸载原openssh
apt-get remove openssh-server openssh-client

// 3、安装 libpam0g-dev(已安装请忽略,重点强调:ubuntu下是安装libpam0g-dev ,不装下面安装会报错PAM headers not found)
apt-get install libpam0g-dev

// 执行./configure报错:checking whether the c compiler works... no
apt-get install build-essential
// 执行./configure报错:zlib没有安装
apt-get install zlib1g-dev


// 或者离线上传安装包需要解压
dpkg -i libpam0g-dev_1.5.2-6_arm64.deb

// 4、从下载的包中提取文件(去官网下载安装包上传到服务器)
tar xf openssh-9.1p1.tar.gz

// 5、进入文件夹openssh
cd openssh-9.1p1

// 6、修改配置(需要指定openssl的安装路径)
#####./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

// 7、安装(重点:如果这个config过程中报错configure: error: PAM headers not found,说明一开始的pam依赖没装好)
make && make install

// 8、可查看当前SSH的版本,到目前所有升级就已经完成了
ssh -V

// 9、下面进行还原ssh配置
cd /etc/ssh

// 10.还原sshd_config
mv sshd_config sshd_config.default
####cp ../ssh.old/sshd_config ./

// 11、使用原来的/etc/init.d/ssh
mv /etc/init.d/ssh.old /etc/init.d/ssh

// (9.1版本内置了sftp)修改/etc/ssh/sshd_config文件,注释掉
#Subsystem sftp /usr/lib/openssh/sftp-server
添加字段 Subsystem sftp internal-sftp

// 查找sshd_config配置文件报错
/usr/sbin/sshd -T

// 如
line 89 Bad configuration option: StrictHostKeyChecking

line 91 Bad configuration option: UserKnownHostsFile

// 然后执行,修改对应行,这里去掉就行了,根据正常的sshd_config来改
sudo vi /etc/ssh/sshd_config

// 12、取消注销指定服务
systemctl unmask ssh

// 13、重启服务
systemctl restart sshd

// 14、查看服务
systemctl status sshd

// 14、停止服务
systemctl stop sshd

四、将ssh升级完后,重新进行ssh IP,遇到的问题以及解决方案

问题1:

/etc/ssh/ssh_config line 55: Unsupported option “gssapiauthentication”
/etc/ssh/ssh_config line 56: Unsupported option “gssapidelegatecredentials”

解决办法:修改/etc/ssh/ssh_config 注释掉这两个地方
注释位置

问题2:

Unable to negotiate with xxx.xx.xxx.xx port 22: no matching host key type found. Their offer: ssh-rsa,ssh-dss

解决办法:
vim ~/.ssh/config,有就修改,没有就新增

添加一行:
HostKeyAlgorithms +ssh-dss

然后重启sshd: service sshd restart

问题3:

如果出现这类问题 :直接删除掉~/.ssh/known_hosts文件,或者备份改名就可以ssh了
在这里插入图片描述

问题4:

systemctl status ssh

查看ssh运行状态时,有报错
pam_deepin_authentication(sshd:auth): Failed to call ‘FindUserByName’: com.deepin.DBus.Error.Unnamed>

解决办法:
systemctl restart dbus

问题5:

dpkg: 处理软件包 libc6:arm64 (–configure)时出错
已安装 libc6:arm64软件包 post-installation 脚本 子进程返回错误状态 1
在处理时有错误发生
libc6:arm64
E: Sub-process /usr/bin/dpkg returned an error code (1)

执行如下命令

cd /var/lib/dpkg
sudo mv info info.baksudo
sudo mkdir info

总结

提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了统信UOS下升级openssh及openssl,更多情况还请查阅其他文献。

  • 17
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值