BigCloud Enterprise Linux 8和Rocky Linux 8升级OpenSSH步骤

简介: 本文介绍了在BigCloud Enterprise Linux 8.2/8.6和Rocky Linux 8.10上升级OpenSSH的详细步骤。首先配置Telnet服务和GCC编译器以确保远程登录安全,接着备份旧版OpenSSH并下载、编译、安装最新版本(如9.9p1)。然后创建新的sshd系统服务配置文件,调整配置并启动服务。最后验证升级效果,关闭不必要的Telnet服务,并处理可能的防火墙和SELinux问题。通过这些步骤可有效修复低版本OpenSSH带来的高危漏洞。

之前陆续整理过好几次升级openssh的文章,随着时间的推移,也该更新了,正好当下这个升级需求比较多,尤其是安全扫描时往往大部分高危漏洞来自于低版本的openssh,升级后可以解决大部分漏洞。

根据最近的实践,以下操作适应于如下linux版本:
BigCloud Enterprise Linux 8.2/8.6
Rocky Linux 8.10
bclinux/bc-linux/bc linux

一、配置telnet服务、gcc编译器

目的:确保不会因为升级ssh失误导致无法远程登陆主机
■ 确认telnet服务是否已经安装
yum info telnet*
■ 如果没有安装telnet-server
yum install telnet-server -y
■ linux7
安装了telnet-server后,可直接启动telnet-server,不必配置xinetd
systemctl start telnet.socket
■ 此时测试能否远程telnet登陆服务器,确认telnet服务生效后,就可以进行下一步
■ 安装openssh需gcc编译器,确认是否安装
yum info gcc
如没有安装,则安装:
yum install gcc

二、安装新版本zlib【可选】

一般linux8版本的zlib库版本不需要升级

三、安装新版本openssl【可选】

一般linux8版本的openssl库版本不需要升级

四、备份老版本openssh

tar cvf /root/sshd20250210.tar /usr/lib/systemd/system/sshd*
mv /usr/lib/systemd/system/sshd-keygen.target{,.ori}
mv /usr/lib/systemd/system/sshd.service{,.ori}
mv /usr/lib/systemd/system/sshd.socket{,.ori}
mv /usr/lib/systemd/system/sshd-keygen@.service{,.ori}
mv /usr/lib/systemd/system/sshd@.service{,.ori}
mv /etc/ssh{,.ori}

五、安装新版本openssh

1、官网下载最新版本源码

【版本9.9p1】
www.openssh.com
最新版本国内镜像地址见下一步。

2、配置、编译、安装

wget https://mirrors.aliyun.com/pub/OpenBSD/OpenSSH/portable/openssh-9.9p1.tar.gz
tar xvfz openssh-*.tar.gz
cd openssh-9.9p1
./configure --prefix=/usr/local --sysconfdir=/etc/ssh --with-pam --with-zlib --with-md5-passwords
此时可能会报错:
checking for openssl... /usr/bin/openssl
configure: error: *** working libcrypto not found, check config.log
则需安装 openssl-devel:yum install -y openssl-devel
或者报错:找不到pam文件头,则安装pam-devel包即可:
yum install pam-devel -y
make
make install

注:prefix指定安装路径/usr/local;sysconfdir指定配置文件路径;with-zlib指定新版本zlib路径;with-pam指定启用pam支持;with-ssl-dir指定openssl路径

六、配置新的sshd系统服务

1、生成新的服务配置文件,3个

cat > /usr/lib/systemd/system/sshd-keygen.service << EOF
[Unit]
Description=OpenSSH Server Key Generation
ConditionPathExists=|!/etc/ssh/ssh_host_rsa_key
ConditionPathExists=|!/etc/ssh/ssh_host_ecdsa_key
ConditionPathExists=|!/etc/ssh/ssh_host_ed25519_key
ConditionPathExists=|!/etc/ssh/ssh_host_dsa_key
PartOf=sshd.service sshd.socket

[Service]
ExecStart=/usr/local/bin/ssh-keygen
Type=oneshot
RemainAfterExit=yes
EOF

---

cat > /usr/lib/systemd/system/sshd.service << EOF
[Unit]
Description=OpenSSH server daemon
After=network.target sshd-keygen.service
Wants=sshd-keygen.service

[Service]
EnvironmentFile=/etc/sysconfig/sshd
ExecStart=/usr/local/sbin/sshd -D $OPTIONS
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
RestartSec=42s

[Install]
WantedBy=multi-user.target
EOF

---

cat > /usr/lib/systemd/system/sshd.socket << EOF
[Unit]
Description=OpenSSH Server Socket
Conflicts=sshd.service

[Socket]
ListenStream=22
Accept=yes

[Install]
WantedBy=sockets.target
EOF

将3个服务配置文件属性改为644
chmod 644 /usr/lib/systemd/system/sshd*

2、修改sshd配置

【make install时自动生成新sshd配置文件】
参考原sshd配置/etc/ssh/sshd_config,修改新sshd配置
如下命令行操作,确认端口号,打开PAM支持:

sed -i "s/#UsePAM no/UsePAM yes/g" /etc/ssh/sshd_config
打开root登录:
sed -i "s/#PermitRootLogin prohibit-password/PermitRootLogin yes/g" /etc/ssh/sshd_config

3、启动sshd服务

systemctl daemon-reload
systemctl restart sshd
systemctl enable sshd

4、其他修改

■ 确认升级后的版本
telnet localhost 22

■ 验证可以远程ssh登陆以后,可以关闭telnet服务
systemctl stop telnet.socket
systemctl disable telnet.socket
如果不能远程登录,一般是因为防火墙和SELINUX设置问题,可以关闭防火墙和关闭SELINUX:
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
永久关闭selinux,修改/etc/selinux/config 文件:
sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config

■ ssh客户端程序更新
mv /usr/bin/ssh /usr/bin/ssh.old
ln -s /usr/local/bin/ssh /usr/bin/ssh

目录
相关文章
|
2月前
|
应用服务中间件 Linux nginx
【Azure App Service】基于Linux创建的App Service是否可以主动升级内置的Nginx版本呢?
基于Linux创建的App Service是否可以主动升级内置的Nginx版本呢?Web App Linux 默认使用的 Nginx 版本是由平台预定义的,无法更改这个版本。
144 77
|
16天前
|
Java Linux 应用服务中间件
在Rocky Linux 9上安装JDK并配置环境变量!
本教程介绍在Rocky Linux 9上安装JDK并配置环境变量的完整步骤。首先更新系统,清理旧版本JDK相关包及残留文件,确保环境干净。接着搜索并安装所需版本的JDK(如OpenJDK 17),验证安装是否成功。然后查找JDK安装路径,配置全局环境变量`JAVA_HOME`和`PATH`,最后验证环境变量设置。按照此流程操作,可顺利完成Java开发环境搭建,支持多版本切换(如JDK 8/11/17)。生产环境请谨慎操作,避免影响现有服务。
76 21
|
2月前
|
Linux 数据库
Red Hat Enterprise Linux(RHEL)
Red Hat(红帽)是一家美国的软件公司,专注于开发开源软件产品。公司成立于1993年,总部位于美国北卡罗来纳州的罗利市。目前,Red Hat已成为全球最大的开源解决方案提供商和商业Linux主要供应商。 Red Hat由Bob Young和Marc Ewing共同创立。Marc Ewing最初创建了自己的Linux发行版,并将其命名为红帽Linux。1995年,Bob Young收购了Marc Ewing的企业,两者合并成为红帽软件公司。此后,红帽Linux逐渐发展成为一款备受欢迎的Linux发行版。 特点
59 10
Red Hat Enterprise Linux(RHEL)
|
2月前
|
数据管理 Linux iOS开发
Splunk Enterprise 9.4.1 (macOS, Linux, Windows) 发布 - 机器数据管理和分析
Splunk Enterprise 9.4.1 (macOS, Linux, Windows) 发布 - 机器数据管理和分析
29 0
Splunk Enterprise 9.4.1 (macOS, Linux, Windows) 发布 - 机器数据管理和分析
|
5月前
|
人工智能 Java 关系型数据库
Red Hat Enterprise Linux 9.5 发布下载,新增功能亮点概述
Red Hat Enterprise Linux 9.5 发布下载,新增功能亮点概述
235 4
Red Hat Enterprise Linux 9.5 发布下载,新增功能亮点概述
|
5月前
|
Rust NoSQL Linux
Rocky Linux 9.5 正式版发布 - RHEL 100% 1:1 兼容免费发行版
Rocky Linux 9.5 正式版发布 - RHEL 100% 1:1 兼容免费发行版
409 2
Rocky Linux 9.5 正式版发布 - RHEL 100% 1:1 兼容免费发行版
|
5月前
|
NoSQL Linux PHP
如何在不同操作系统上安装 Redis 服务器,包括 Linux 和 Windows 的具体步骤
本文介绍了如何在不同操作系统上安装 Redis 服务器,包括 Linux 和 Windows 的具体步骤。接着,对比了两种常用的 PHP Redis 客户端扩展:PhpRedis 和 Predis,详细说明了它们的安装方法及优缺点。最后,提供了使用 PhpRedis 和 Predis 在 PHP 中连接 Redis 服务器及进行字符串、列表、集合和哈希等数据类型的基本操作示例。
215 4
|
5月前
|
存储 安全 数据管理
如何在 Rocky Linux 8 上安装和配置 Elasticsearch
本文详细介绍了在 Rocky Linux 8 上安装和配置 Elasticsearch 的步骤,包括添加仓库、安装 Elasticsearch、配置文件修改、设置内存和文件描述符、启动和验证 Elasticsearch,以及常见问题的解决方法。通过这些步骤,你可以快速搭建起这个强大的分布式搜索和分析引擎。
145 5