openssh版本升级实战(修补ssh漏洞)基于RedHat8.4版本测试--已成功升级

升级前具有漏洞的的版本


通过命令查看目前系统的ssh和sshd版本:

ssh -V
sshd -V

注意:由于ssh是远程连接服务器的功能,在进行下面操作升级openssh前,请打开多个连接会话保持,如升级失败,可通过已连接的会话进行回滚操作。

开始升级

1、安装操作系统依赖包:

yum install -y telnet gcc zlib-devel

2、下载最新版openssh和openssl:

1)、openssh下载网址:https://www.openssh.com/releasenotes.html

安装包地址:Index of /pub/OpenBSD/OpenSSH/portable/

举例最新为:OpenSSH9.8p1

2)、由于openssh依赖openssl,所以需要安装新版openssl,从OpenSSH9.4p1开始要求openssl>=1.1.1版本

openssl下载网址:https://www.openssl.org/source/

安装包地址[ Old Releases ] - /source/old/index.html

举例最新:openssl-1.1.1w版本

3)、上传下载的安装包:openssl-1.1.1w.tar.gz和openssh-9.8p1.tar.gz

3、编译升级openssl-1.1.1w

1)、进入到openssl-1.1.1w.tar.gz文件所在的目录,执行编译安装命令:

tar -xzvf openssl-1.1.1w.tar.gz
cd openssl-1.1.1w
mkdir -p /usr/openssh/openssl1.1.1w
./config --prefix=/usr/openssh/openssl1.1.1w
make
make install
ll /usr/openssh/openssl1.1.1w
cd ..
rm -rf openssl-1.1.1w*

2)、修改配置文件:

编辑/etc/profile配置文件(vi /etc/profile),设置环境变量,在profile文件最后添加如下两行:

export LD_LIBRARY_PATH=/usr/openssh/openssl1.1.1w/lib:$LD_LIBRARY_PATH
export PATH=/usr/openssh/openssh9.8p1/bin:/usr/openssh/openssh9.8p1/sbin:/usr/openssh/openssl1.1.1w/bin:$PATH

3)、保存配置退出后,然后执行如下命令,确认openssl版本为1.1.1w:

source /etc/profile
openssl version

4、编译升级openssh-9.8p1

1)、进入到openssh-9.8p1.tar.gz文件所在的目录,执行编译安装命令:

tar -xzvf openssh-9.8p1.tar.gz
cd openssh-9.8p1
mkdir -p /usr/openssh/openssh9.8p1
./configure --prefix=/usr/openssh/openssh9.8p1 --with-ssl-dir=/usr/openssh/openssl1.1.1w
make
make install

2)、修改配置文件:

vi /usr/openssh/openssh9.8p1/etc/sshd_config

#允许root登录,默认值prohibit-password表示root用户只能通过公私钥的方式登录,不能以密码的方式登录

PermitRootLogin yes:允许root用户通过SSH登录到系统(最最最重要这个一定要设置,不然你重启sshd服务之后就不能远程连接了)

PubkeyAuthentication yes:启用公钥身份验证

PasswordAuthentication yes:启用密码身份验证

PermitRootLogin yes
PubkeyAuthentication yes
PasswordAuthentication yes 

3)、创建sshd服务自启动文件:

vi /usr/lib/systemd/system/sshd9.service

文件内容添加一下内容:

[Unit]
Description=OpenSSH server daemon
After=network.target

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

[Install]
WantedBy=multi-user.target

4)、停用原sshd服务,并备份相关文件

systemctl stop sshd.service
systemctl disable sshd.service

备份文件:

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/

5)、启动新的sshd服务:

systemctl daemon-reload
systemctl start sshd9.service
systemctl status sshd9.service
systemctl enable sshd9.service

5、测试验证

重新连接一个新的窗口来测试新sshd是否可以正常连接,并测试版本号,最后重启服务器测试是否可以重启成功:

sshd -V
ssh -V

版本号正确,且能连接上,说明升级成功!

注意:升级完openssh后,有一些比较老的远程连接工具可能就无法连接上了(由于密钥等问题),例如secureCRT7等,报错例如“Key exchange failed”

两种解决方式:

1、升级secureCRT至新版本,或用其它工具,例如:MobaXterm_Personal等

2、更新服务端配置文件:

vi /usr/openssh/openssh9.8p1/etc/sshd_config

#在配置文件最后添加如下两行:

HostKeyAlgorithms=+ssh-rsa,ssh-dss
KexAlgorithms=+diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1

然后重启sshd服务:

systemctl restart sshd9.service

相关推荐

  1. OpenSSL升级版本

    2024-07-11 03:44:02       54 阅读
  2. ssh版本升级

    2024-07-11 03:44:02       23 阅读
  3. 升级openssl到3.X版本

    2024-07-11 03:44:02       46 阅读
  4. Linux升级opensslopenssl-1.1.1版本

    2024-07-11 03:44:02       35 阅读
  5. centos7升级openssl3.0.13版本

    2024-07-11 03:44:02       35 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-11 03:44:02       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-11 03:44:02       71 阅读
  3. 在Django里面运行非项目文件

    2024-07-11 03:44:02       58 阅读
  4. Python语言-面向对象

    2024-07-11 03:44:02       69 阅读

热门阅读

  1. QT入门详解含源码)

    2024-07-11 03:44:02       27 阅读
  2. 前端程序员常用快捷键

    2024-07-11 03:44:02       24 阅读
  3. React@16.x(54)Redux@4.x(3)- reducer

    2024-07-11 03:44:02       25 阅读
  4. Linux 安装 docker-compose

    2024-07-11 03:44:02       20 阅读
  5. PostgreSQL

    2024-07-11 03:44:02       20 阅读
  6. Perl词法切分器:文本解析的瑞士军刀

    2024-07-11 03:44:02       18 阅读
  7. 解决Spring Boot中的安全漏洞与防护策略

    2024-07-11 03:44:02       20 阅读