Linux:升级OpenSSL和OpenSSH

原因是现有版本存在安全漏洞,需要升级到新版本

原有版本和升级后的版本

bash 复制代码
OpenSSL 1.0.2k-fips  26 Jan 2017
->
OpenSSL 1.1.1w  11 Sep 2023


OpenSSH_7.4p1, OpenSSL 1.0.2k-fips  26 Jan 2017
->
OpenSSH_9.5p1, OpenSSL 1.1.1w  11 Sep 2023

目录

查看现有版本

bash 复制代码
# 查看系统版本
# cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)


# 查看OpenSSL版本
# openssl version
OpenSSL 1.0.2k-fips  26 Jan 2017


# 查看OpenSSH版本
# ssh -V
OpenSSH_7.4p1, OpenSSL 1.0.2k-fips  26 Jan 2017

安装 telnet

防止因卸载OpenSSH而导致无法登录主机

bash 复制代码
# 安装 telnet
yum -y install telnet telnet-server

# 启动 telnet
systemctl enable telnet.socket

systemctl is-enabled telnet.socket

systemctl start telnet.socket

# 关闭安全文件
mv /etc/security /etc/security.bak

确认openssh升级成功,连接无异常后卸载telnet服务

bash 复制代码
systemctl stop telnet.socket

systemctl disable telnet.socket

# 升级完毕后,开启安全文件
mv /etc/security.bak /etc/security

yum -y remove telnet telnet-server

安装OpenSSH依赖包

bash 复制代码
yum -y install gcc keyutils-libs rpm-build krb5-devel libcom_err-devel libselinux-devel pam-* openssl-devel pkgconfig vsftpd zlib*

下载安装包

https://www.openssl.org/source/old/

https://www.openssh.com/portable.html#downloads

安装OpenSSL

bash 复制代码
wget https://www.openssl.org/source/old/1.1.1/openssl-1.1.1w.tar.gz

tar -zxvf openssl-1.1.1w.tar.gz

cd openssl-1.1.1w

./config shared --prefix=/usr/local/openssl-1.1.1w

make && make install

# 检查安装情况
/usr/local/openssl-1.1.1w/bin/openssl version
OpenSSL 1.1.1w  11 Sep 2023

安装OpenSSH

bash 复制代码
wget https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-9.5p1.tar.gz

tar -zxvf openssh-9.5p1.tar.gz

cd openssh-9.5p1

./configure --prefix=/usr/local/openssh-9.5p1 --with-ssl-dir=/usr/local/openssl-1.1.1w

make && make install

# 检查安装情况
/usr/local/openssh-9.5p1/sbin/sshd -V
OpenSSH_9.5p1, OpenSSL 1.1.1w  11 Sep 2023

修改配置(重要)

bash 复制代码
# /usr/local/openssh-9.5p1/etc/sshd_config
# 允许root以密码的方式登录
PermitRootLogin yes

开机自启

bash 复制代码
# /usr/lib/systemd/system/sshd9.service
[Unit]
Description=OpenSSH server daemon
After=network.target

[Service]
Type=simple
Environment=LD_LIBRARY_PATH=/usr/local/openssl-1.1.1w/lib
ExecStart=/usr/local/openssh-9.5p1/sbin/sshd -D -f /usr/local/openssh-9.5p1/etc/sshd_config
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
RestartSec=42s

[Install]
WantedBy=multi-user.target

停止原sshd服务

bash 复制代码
systemctl stop sshd.service

systemctl disable sshd.service

备份sshd

bash 复制代码
mkdir /home/ssh-old-bak
mv /etc/ssh /home/ssh-old-bak/
mv /usr/sbin/sshd /home/ssh-old-bak/
mv /usr/lib/systemd/system/sshd-keygen.service /home/ssh-old-bak/
mv /usr/lib/systemd/system/sshd.service /home/ssh-old-bak/
mv /usr/lib/systemd/system/sshd@.service /home/ssh-old-bak/
mv /usr/lib/systemd/system/sshd.socket /home/ssh-old-bak/

启动新版本sshd9服务

bash 复制代码
systemctl daemon-reload
systemctl start sshd9.service
systemctl status sshd9.service
systemctl enable sshd9.service

问题和解决办法

问题1:openssl 查看version出现报错

bash 复制代码
# 执行查看版本的时候,提示 libssl.so.1.1 找不到
/usr/local/openssl-1.1.1w/bin/openssl version

/usr/local/openssl-1.1.1w/bin/openssl: error while loading shared libraries: libssl.so.1.1: cannot open shared object file: No such file or directory

## 解决办法
ln -s /usr/local/openssl-1.1.1w/lib/libssl.so.1.1 /usr/lib64/libssl.so.1.1
ln -s /usr/local/openssl-1.1.1w/lib/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1

参考文章

相关推荐
上辈子杀猪这辈子学IT10 分钟前
【Zookeeper集群搭建】安装zookeeper、zookeeper集群配置、zookeeper启动与关闭、zookeeper的shell命令操作
linux·hadoop·zookeeper·centos·debian
minihuabei15 分钟前
linux centos 安装redis
linux·redis·centos
EasyCVR38 分钟前
萤石设备视频接入平台EasyCVR多品牌摄像机视频平台海康ehome平台(ISUP)接入EasyCVR不在线如何排查?
运维·服务器·网络·人工智能·ffmpeg·音视频
lldhsds1 小时前
书生大模型实战营第四期-入门岛-1. Linux前置基础
linux
wowocpp2 小时前
ubuntu 22.04 硬件配置 查看 显卡
linux·运维·ubuntu
山河君2 小时前
ubuntu使用DeepSpeech进行语音识别(包含交叉编译)
linux·ubuntu·语音识别
鹏大师运维2 小时前
【功能介绍】信创终端系统上各WPS版本的授权差异
linux·wps·授权·麒麟·国产操作系统·1024程序员节·统信uos
筱源源2 小时前
Elasticsearch-linux环境部署
linux·elasticsearch
萨格拉斯救世主2 小时前
jenkins使用slave节点进行node打包报错问题处理
运维·jenkins
川石课堂软件测试2 小时前
性能测试|docker容器下搭建JMeter+Grafana+Influxdb监控可视化平台
运维·javascript·深度学习·jmeter·docker·容器·grafana