文章目录
背景相关概述安装安装Telnet 服务器安装zlib 备份和卸载openssl 升级旧版本的OpenSSH OpenSSH
背景
漏洞简介
OpenSSH 是加拿大OpenBSD 项目组提供的一组连接工具,用于安全地访问远程计算机。该工具是SSH协议的开源实现,支持对所有通信进行加密,可以有效防止窃听、连接劫持和其他网络级攻击。该漏洞是由于信号处理程序中的竞争条件造成的,该条件可能允许攻击者远程执行任意代码并在未经身份验证的情况下控制系统。
有害的影响
OpenSSH 版本8.5p1 到9.8p1 均受此漏洞影响。
8.5p1=OpenSSH 9.8p1
修复建议
OpenSSH现已正式发布新版本修复了该漏洞。建议用户检查产品版本并尽快打补丁。官方更新版本下载链接:
https://www.openssh.com/txt/release-9.8
相关介绍
OpenSSH 是SSH(安全外壳)协议的实现,用于在不安全的网络上提供安全的通信方法。广泛用于远程登录、远程命令执行和安全文件传输。
OpenSSH 提供了许多工具,包括ssh(用于登录远程计算机)、scp 和sftp(用于文件传输)以及sshd(SSH 守护进程)。
确保通信的机密性和完整性并防止中间人攻击。
OpenSSL 是一个功能强大的加密库,提供各种加密算法、哈希函数和加密协议(例如TLS/SSL)的实现。
它广泛用于保护网络通信并确保数据在传输过程中不会被窃听或篡改。
OpenSSL 提供加密和解密功能、密钥生成和管理、数字证书处理等。
zlib的作用
数据压缩:
OpenSSH 使用zlib 来压缩和解压缩传输的数据。压缩数据可以减少发送的数据量,提高传输速度和效率,尤其是在带宽有限的网络环境中。
减少带宽使用。
压缩显着减少了在SSH 会话中传输数据所需的带宽。这在需要传输大量数据的场景下尤其有用,例如文件传输或远程执行大量命令。
提高传输效率:
对于文本数据,压缩效果尤其明显。减少传输的数据量可以提高传输效率并减少传输时间。
安装 telnet-server
避免关闭SSH后无法远程连接。
rpm -q Telnet 服务器
#检查Telnet服务器是否安装
rpm -q 远程登录
#检查是否安装了Telnet客户端
离线模式:通过联网主机下载。
sudo yum 安装yum-utils
mkdir telnet 服务器安装
cd telnet 服务器安装
yumdownloader –解析Telnet 服务器
可以通过FTP上传安装
cd ~/telnet 服务器安装
sudo rpm -ivh *.rpm
下载telnet-server及其所有依赖包到当前目录。
或者直接安装
yum 安装telnet-y
开始
systemctl 启用telnet.socket
#设置开始
systemctl 启动telnet.socket
#开放服务
防火墙打开Telnet或者打开23端口
sudo 防火墙-cmd –permanent –add-service=telnet
sudo 防火墙-cmd –reload
使用Telnet IP 地址连接并登录
允许root登录
系统默认不允许root用户通过Telnet远程登录。
回显“pts/0”/etc/securetty
回显“pts/1”/etc/securetty
您可以通过其他主机尝试。
[root@standby选项]# telnet 10.10.10.171
正在尝试10.10.10.171.
连接到10.10.10.171。
转义字符是“^]”。
x86_64 上的内核3.10.0-1160.el7.x86_64
本地主机登录: root
密码:
上次登录失败: Thu Jul 4 13:56:07 CST 2024 至:ffff:10.10.10.42 (pts/0)
自上次成功登录以来,已经有3 次登录尝试失败。
最后登录: 7 月4 日星期四10:30:43 来自172.20.1.1
您可能还需要添加pts/3 和pts/4。
即使输入正确密码也无法登录
在主机端运行:tail /var/log/secure
访问被拒绝: tty \’pts/3\’ 不安全!
再添加一张
回显“pts/3”/etc/securetty
重新启动Telnet 并再次登录,一切都会正常。
安装zlib
安装zlib:https://www.zlib.net/fossils/
cd /usr/local/src/
wget https://www.zlib.net/fossils/zlib-1.3.1.tar.gz
#解压文件
tar zxvf zlib-1.3.tar.gz
cd zlib-1.3
#安装预依赖项
yum 安装gcc gcc-c++ make -y
#编译并安装zlib
./configure –prefix=/usr/local/zlib
进行安装
安装openssl
安装openssl:https://www.openssl.org/source/
cd /usr/local/src/
wget https://www.openssl.org/source/openssl-3.2.2.tar.gz
#解压文件
tar zxvf openssl-3.2.0.tar.gz
cd openssl-3.2.0
#安装对应的预依赖
yum install -y perl-CPAN perl-ExtUtils-CBuilder perl-ExtUtils-MakeMaker
完成后输出:
:已安装
perl-CPAN.noarch 0:1.9800-299.el7_9 perl-ExtUtils-CBuilder.noarch 1:0.28.2.6-299.el7_9 perl-ExtUtils-MakeMaker.noarch 0:6.68-3.el7
作为依赖项安装:
gdbm-devel.x86_64 0:1.10-8.el7 libdb-devel.x86_64 0:5.3.21-25.el7 perl-Digest-SHA.x86_64 1:5.85-4.el7 perl-ExtUtils-Install.noarch 0:1.58-29 el 7_9 l-ExtUtils -清单.noarch 0:1.61-244.el7
Perl-Extutils-parsexs.noarch 1:3.18-3.el7 Perl-CMD.NOARCH 1:0.80-4.el7 Perl-Locale-maketext.noarch 033601.el7 CALE-MAKETEXT-SIMPLE.NOARCH 1:0.21-299.el7 _9 perl-Module-CoreList .noarch 1:2.76.02-299.el7_9
perl-Module-Load.noarch 1:0.24-3.el7 perl-Module-Load-Conditional.noarch 0:0.54-3.el7 perl-Module-Metadata.noarch 0:1.000018-2.el7 perl-Params-Check.noarch 1:0.38-2.el7 perl-Perl-OSType.noarch 0:1.003-3.el7
派珀演唱0:1.5.6-9.el7
systemtap-sdt-devel.x86_64 0:4.0-13.el7
#prefix 指定编译到的目录。 “shared”用于生成动态链接库(即.so库)。
./config –prefix=/usr/local/ssl –shared
完成后输出:
[root@localhost openssl-3.2.2]# ./config –prefix=/usr/local/ssl –shared
为目标linux-x86_64 配置OpenSSL 版本3.2.2
使用特定于操作系统的种子配置
创建configdata.pm
运行configdata.pm
创建Makefile.in
生成文件已创建
创建了include/openssl/configuration.h
****************************************************** * **********************
*** ***
*** OpenSSL 已成功配置***
*** ***
*** 如果您在构建过程中遇到任何问题,请打开***。
*** GitHub 上的问题https://github.com/openssl/openssl/issues ***
*** 在: 中包含以下命令的输出***
*** ***
*** perl configdata.pm –dump ***
*** ***
***(如果您是OpenSSL 新手,请参阅***。
***请先参阅INSTALL.md 文件的“故障排除”部分)***
*** ***
****************************************************** * **********************
#编译并安装SSL。这个安装过程比较长,大约需要10分钟。
make make install (安装需要一些时间。)
# 将路径写入etc/ld.so.conf
echo ‘/usr/local/ssl/lib64’ /etc/ld.so.conf
备份并卸载老版本OpenSSH
#备份SSH配置文件
cp -p /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
cp -p /usr/sbin/sshd /usr/sbin/sshd.bak
cp -p /usr/bin/ssh /usr/bin/ssh.bak
cp -p /usr/bin/ssh-keygen /usr/bin/ssh-keygen.bak
cp -p /etc/ssh/ssh_host_ecdsa_key.pub /etc/ssh/ssh_host_ecdsa_key.pub.bak
#停止SSH服务
systemctl 停止sshd
切勿关闭遥控器
#备份ssh文件
cp -r /etc/ssh /etc/ssh.old
#查询并卸载原来的ssh包
rpm -qa grep openssh | rpm -qa grep openssh | rpm -qa grep openssh | rpm -qa grep openssh | rpm
openssh-server-7.4p1-21.el7.x86_64
openssh-7.4p1-21.el7.x86_64
openssh-clients-7.4p1-21.el7.x86_64
#根据查询结果卸载原来的OpenSSH包
删除yum openssh-7.4p1-21.el7.x86_64
#已经消失了,请再检查一下
rpm -qa grep openssh | rpm -qa grep openssh | rpm -qa grep openssh | rpm -qa grep openssh | rpm
卸载后输出:
删除:
openssh.x86_64 0:7.4p1-21.el7
作为依赖项: 删除
anaconda-core.x86_64 0:21.48.22.159-1.el7.centos anaconda-gui.x86_64 0:21.48.22.159-1.el7.centos anaconda-tui.x86_64 0:21.48.22.159-1.el7.centos -代理- all.x86_64 0:4.2 .1-41.el7
栅栏代理-apc.x86_64 0:4.2.1-41.el7 栅栏代理-bladecenter.x86_64 0:4.2.1-41.el7 栅栏代理-brocade.x86_64 0:4.2.1-41.el7 栅栏代理-drac5.x86_64 0: 4.2.1-41.el7
栅栏代理-hpblade.x86_64 0:4.2.1-41.el7 栅栏代理-ilo-moonshot.x86_64 0:4.2.1-41.el7 栅栏代理-ilo-mp.x86_64 0:4.2.1-41.el7 栅栏代理- ilo-ssh.x86_64 0:4.2.1-41.el7
栅栏代理-rsa.x86_64 0:4.2.1-41.el7 栅栏代理-s86_64 0:4.2.1-41.l7 栅栏代理-wti.x86_64 033604.2.1-41.l7 FIRSTBOOT.X 0:19.12-1。艾丽7号
gdm.x86_64 1:3.28.2-23.el7 gnome-classic-session.noarch 0:3.28.1-14.el7 gnome-initial-setup.x86_64 0:3.28.0-2.el7 gnome-keyring.x86_64 0:3.28.2-1 .el7
gnome-keyring-pam.x86_64 0:3.28.2-1.el7 gnome-shell.x86_64 0:3.28.3-30.el7 gnome-shell-扩展-alternate-tab.noarch 0:3.28.1-14.el7 gnome-shell-扩展-应用程序菜单.noarch 0:3.28.1-14.el7
gnome-shell-extension-common.noarch 0:3.28.1-14.el7 gnome-shell-extension-horizontal-workspaces.noarch 0:3.28.1-14.el7 gnome-shell-extension-launch-new-instance.noarch 0:3.28.1 -14.el7 gnome-shell-extension-places-menu.noarch 0:3.28.1-14.el7
gnome-shell-extension-top-icons.noarch 0:3.28.1-14.el7 gnome-shell-extension-user-theme.noarch 0:3.28.1-14.el7 gnome-shell-extension-window-list.noarch 0:3.28.1 -14.el7 gnome-tweak-tool.noarch 0:3.28.1-7.el7
初始设置.x86_64 0:0.3.9.45-1.el7.centos 初始设置-gui.x86_64 0:0.3.9.45-1.el7.centos openssh-clients.x86_64 0:7.4p1-21.el7 openssh-server.x86_64 0:7.4 p 1-21 。埃尔7
脉冲音频-gdm-hooks.x86_64 0:10.0-5.el7 python-meh.noarch 0:0.25.3-1.el7 python-meh-gui.noarch 0:0.25.3-1.el7
完成!
[root@localhost src]# rpm -qa grep openssh | rpm
[root@localhost 源]#
升级OpenSSH
cd /usr/local/src/
wget http://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-9.8p1.tar.gz
减压
tar zxvf openssh-9.8p1.tar.gz
cd openssh-9.8p1
#编译安装openssh并指定zlib和ssl路径
./configure –prefix=/usr/local/openssh –with-zlib=/usr/local/zlib –with-ssl-dir=/usr/local/ssl
完成后输出:
OpenSSH 由以下选项组成:
用户二进制文件: /usr/local/openssh/bin
系统二进制文件: /usr/local/openssh/sbin
配置文件: /usr/local/openssh/etc
Askpass 程序: /usr/local/openssh/libexec/ssh-askpass
手册页: /usr/local/openssh/share/man/manX
PID 文件: /var/run
权限分离chroot path: /var/empty
sshd 默认用户PATH: /usr/bin:/bin:/usr/sbin:/sbin:/usr/local/openssh/bin
联机帮助页格式: 文档
PAM 支持: 否
OSF SIA 支持: 否
KerberosV 支持: 否
SELinux 支持: 否
libedit support: 否
libldns 支持: 否
Solaris 进程合同支持: 否
Solaris 项目支持: 否
Solaris 权限支持: 否
$DISPLAY IP 地址hack: 否
将v4 转换为v6 hack: 是
BSD 身份验证支持: 否
随机数source: OpenSSL 仅限内部
Privsep 沙箱style: seccomp_filter
PKCS#11 支持: 是
U2F/FIDO 支持: 是
Host: x86_64-pc-linux-gnu
编译器: cc -std=gnu11
编译器标志: -g -O2 -pipe -Wall -Wextra -Wpointer-arith -Wuninitialized -Wsign-compare -Wformat-security -Wsizeof-pointer-memaccess -Wno-pointer-sign -Wno-unused-parameter -Wno-unused-结果-fno-strict-aliasing -D_FORTIFY_SOURCE=2 -ftrapv -fno-builtin-memset -fstack-protector-strong -fPIE
预处理器标志: -I/usr/local/ssl/include -I/usr/local/zlib/include -D_XOPEN_SOURCE=600 -D_BSD_SOURCE -D_DEFAULT_SOURCE -D_GNU_SOURCE -DOPENSSL_API_COMPAT=0x10100000L
链接器标志: -L/usr/local/ssl/lib64 -L/usr/local/zlib/lib -Wl,-z,relro -Wl,-z,now -Wl,-z,noexecstack -fstack-protector-strong -馅饼
库: -ldl -lutil -lresolv
+: 通道-lcrypto -lz
+sshd: -lcrypt
进行安装
#ssh允许root登录并需要密码进行验证
echo ‘PermitRootLogin 是’ /usr/local/openssh/etc/sshd_config
echo ‘PubkeyAuthentication yes’ /usr/local/openssh/etc/sshd_config
echo ‘密码验证是’ /usr/local/openssh/etc/sshd_config
#将新编译安装的配置文件复制到原来的路径
cp /usr/local/openssh/etc/sshd_config /etc/ssh/sshd_config
cp /usr/local/openssh/sbin/sshd /usr/sbin/sshd
cp /usr/local/openssh/bin/ssh /usr/bin/ssh
cp /usr/local/openssh/bin/ssh-keygen /usr/bin/ssh-keygen
cp /usr/local/openssh/etc/ssh_host_ecdsa_key.pub /etc/ssh/ssh_host_ecdsa_key.pub
#复制启动脚本
cp -p contrib/redhat/sshd.init /etc/init.d/sshd
#给sshd添加可执行权限
chmod +x /etc/init.d/sshd
#设置开机自动启动
使用systemctl 启用sshd
#重启sshd服务
重新启动systemctl sshd
#显示SSHD服务状态
systemctl 状态sshd
查看#ssh版本是否升级成功,可以看到已经是9.5版本了。
ssh-V
OpenSSH_9.8p1、OpenSSL 3.2.2 2024 年6 月4 日
至此,OpenSSH升级完成。任何进一步的建议将不胜感激。
#以上手动将OpenSSH从7.4升级到9.8的过程信息是从网上获取的,仅供参考。相关信息请参见官方公告。
原创文章,作者:CSDN,如若转载,请注明出处:https://www.sudun.com/ask/92850.html