记一次手动将OpenSSH从7.4升级到9.8的过程

打印 上一主题 下一主题

主题 1031|帖子 1031|积分 3093

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
配景

OpenSSH远程代码实行漏洞(CNVD-2024-29805)

漏洞介绍
OpenSSH是加拿大OpenBSD计划组的一套用于安全访问远程计算机的连接工具。该工具是SSH协议的开源实现,支持对所有的传输举行加密,可有效阻止窃听、连接挟制以及其他网络级的攻击。该漏洞源于信号处理程序中存在竞争条件,攻击者利用该漏洞可以在无需认证的情况下远程实行恣意代码并得到体系控制权。
危害影响
OpenSSH 8.5p1版本至9.8p1之前版本均受该漏洞影响。
8.5p1 <= OpenSSH < 9.8p1
修复建议
目前,OpenSSH官方已发布新版本修复了该漏洞,建议用户及时确认产品版本,尽快接纳修补步伐。官方更新版本下载链接:
https://www.openssh.com/txt/release-9.8
相关介绍

OpenSSH 是 SSH(Secure Shell)协议的实现,用于在不安全的网络上提供安全的通信手段。它广泛用于远程登录、远程下令实行和安全文件传输。
OpenSSH 提供了很多工具,包括 ssh(用于登录到远程呆板)、scp 和 sftp(用于文件传输),以及 sshd(SSH 守护进程)。
它确保通信的秘密性和完整性,防止中心人攻击。
OpenSSL 是一个强盛的加密库,提供了各种加密算法、哈希函数和加密协议(例如 TLS/SSL)的实现。
它被广泛用于掩护网络通信,确保数据在传输过程中不会被窃听或篡改。
OpenSSL 提供了加密息争密功能、密钥生成和管理、数字证书处理等。
zlib 的作用
数据压缩:
OpenSSH 利用 zlib 来压缩息争压缩传输的数据。通过压缩数据,可以镌汰传输的数据量,从而提高传输速率和服从,尤其是在带宽有限的网络情况中。
镌汰带宽利用:
压缩可以显著镌汰 SSH 会话中数据传输所需的带宽。这对于必要传输大量数据的场景(例如文件传输或远程实行大量下令)特殊有用。
提高传输服从:
对于文本数据,压缩效果尤其显着。通过镌汰传输的数据量,可以提高传输服从,并镌汰传输时间。
安装 telnet-server

避免ssh关闭后无法远程。
rpm -q telnet-server
#查抄是否安装了telnet服务端
rpm -q telnet
#查抄是否安装了telnet客户端
离线模式:通过有网主机下载
sudo yum install yum-utils
mkdir telnet-server-install
cd telnet-server-install
yumdownloader --resolve telnet-server
可通过ftp上传后安装
cd ~/telnet-server-install
sudo rpm -ivh *.rpm
   下载 telnet-server 及其所有依赖包到当前目录。
  或直接安装
yum install telnet -y
启动
systemctl enable telnet.socket
#设置开机启动该
systemctl start telnet.socket
#打开服务
防火墙开放telnet 或 开放23端口
sudo firewall-cmd --permanent --add-service=telnet
sudo firewall-cmd --reload
利用telnet ip地址举行连接登录
允许root登录
默认体系不允许root用户利用telnet远程登陆
echo ‘pts/0’ >>/etc/securetty
echo ‘pts/1’ >>/etc/securetty
可通过别的主机实验:
  1. [root@standby opt]# telnet 10.10.10.171
  2. Trying 10.10.10.171...
  3. Connected to 10.10.10.171.
  4. Escape character is '^]'.
  5. Kernel 3.10.0-1160.el7.x86_64 on an x86_64
  6. localhost login: root
  7. Password:
  8. Last failed login: Thu Jul  4 13:56:07 CST 2024 from ::ffff:10.10.10.42 on pts/0
  9. There were 3 failed login attempts since the last successful login.
  10. Last login: Thu Jul  4 10:30:43 from 172.20.1.1
复制代码
大概还必要添加下 pts/3 和 pts/4
输入正确的密码还是不能登录
主机端实行:tail /var/log/secure
看到了access denied: tty ‘pts/3’ is not secure !
再添加一个
echo ‘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 install gcc gcc-c++ make -y
#编译安装zlib
./configure --prefix=/usr/local/zlib
make && make install
安装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
完成后输出:
  1. 已安装:
  2.   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                                      
  3. 作为依赖被安装:
  4.   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-299.el7_9         perl-ExtUtils-Manifest.noarch 0:1.61-244.el7     
  5.   perl-ExtUtils-ParseXS.noarch 1:3.18-3.el7   perl-IPC-Cmd.noarch 1:0.80-4.el7                   perl-Locale-Maketext.noarch 0:1.23-3.el7       perl-Locale-Maketext-Simple.noarch 1:0.21-299.el7_9   perl-Module-CoreList.noarch 1:2.76.02-299.el7_9  
  6.   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            
  7.   perl-Test-Harness.noarch 0:3.28-3.el7       perl-devel.x86_64 4:5.16.3-299.el7_9               perl-local-lib.noarch 0:1.008010-4.el7         perl-version.x86_64 3:0.99.07-6.el7                   pyparsing.noarch 0:1.5.6-9.el7                  
  8.   systemtap-sdt-devel.x86_64 0:4.0-13.el7
复制代码
#–prefix指定编译到的目录,"shared"作用是生成动态链接库(即.so库)
./config --prefix=/usr/local/ssl --shared
完成后输出:
  1. [root@localhost openssl-3.2.2]# ./config --prefix=/usr/local/ssl --shared
  2. Configuring OpenSSL version 3.2.2 for target linux-x86_64
  3. Using os-specific seed configuration
  4. Created configdata.pm
  5. Running configdata.pm
  6. Created Makefile.in
  7. Created Makefile
  8. Created include/openssl/configuration.h
  9. **********************************************************************
  10. ***                                                                ***
  11. ***   OpenSSL has been successfully configured                     ***
  12. ***                                                                ***
  13. ***   If you encounter a problem while building, please open an    ***
  14. ***   issue on GitHub <https://github.com/openssl/openssl/issues>  ***
  15. ***   and include the output from the following command:           ***
  16. ***                                                                ***
  17. ***       perl configdata.pm --dump                                ***
  18. ***                                                                ***
  19. ***   (If you are new to OpenSSL, you might want to consult the    ***
  20. ***   'Troubleshooting' section in the INSTALL.md file first)      ***
  21. ***                                                                ***
  22. **********************************************************************
复制代码
#编译安装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 stop sshd
   切勿关闭远程
  #备份ssh文件
cp -r /etc/ssh /etc/ssh.old
#查询原有ssh包并卸载
rpm -qa | grep openssh
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 remove openssh-7.4p1-21.el7.x86_64
#再次查看已经没有了
rpm -qa | grep openssh
卸载后输出:
  1. 删除:
  2.   openssh.x86_64 0:7.4p1-21.el7                                                                                                                                                                                                                        
  3. 作为依赖被删除:
  4.   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                  fence-agents-all.x86_64 0:4.2.1-41.el7                  
  5.   fence-agents-apc.x86_64 0:4.2.1-41.el7                 fence-agents-bladecenter.x86_64 0:4.2.1-41.el7                     fence-agents-brocade.x86_64 0:4.2.1-41.el7                       fence-agents-drac5.x86_64 0:4.2.1-41.el7               
  6.   fence-agents-hpblade.x86_64 0:4.2.1-41.el7             fence-agents-ilo-moonshot.x86_64 0:4.2.1-41.el7                    fence-agents-ilo-mp.x86_64 0:4.2.1-41.el7                        fence-agents-ilo-ssh.x86_64 0:4.2.1-41.el7              
  7.   fence-agents-rsa.x86_64 0:4.2.1-41.el7                 fence-agents-rsb.x86_64 0:4.2.1-41.el7                             fence-agents-wti.x86_64 0:4.2.1-41.el7                           firstboot.x86_64 0:19.12-1.el7                          
  8.   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                     
  9.   gnome-keyring-pam.x86_64 0:3.28.2-1.el7                gnome-shell.x86_64 0:3.28.3-30.el7                                 gnome-shell-extension-alternate-tab.noarch 0:3.28.1-14.el7       gnome-shell-extension-apps-menu.noarch 0:3.28.1-14.el7  
  10.   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
  11.   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                  
  12.   initial-setup.x86_64 0:0.3.9.45-1.el7.centos           initial-setup-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.4p1-21.el7                    
  13.   pulseaudio-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                           
  14. 完毕!
  15. [root@localhost src]# rpm -qa | grep openssh
  16. [root@localhost src]#
复制代码
升级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
完成后输出:
  1. OpenSSH has been configured with the following options:
  2.                      User binaries: /usr/local/openssh/bin
  3.                    System binaries: /usr/local/openssh/sbin
  4.                Configuration files: /usr/local/openssh/etc
  5.                    Askpass program: /usr/local/openssh/libexec/ssh-askpass
  6.                       Manual pages: /usr/local/openssh/share/man/manX
  7.                           PID file: /var/run
  8.   Privilege separation chroot path: /var/empty
  9.             sshd default user PATH: /usr/bin:/bin:/usr/sbin:/sbin:/usr/local/openssh/bin
  10.                     Manpage format: doc
  11.                        PAM support: no
  12.                    OSF SIA support: no
  13.                  KerberosV support: no
  14.                    SELinux support: no
  15.                    libedit support: no
  16.                    libldns support: no
  17.   Solaris process contract support: no
  18.            Solaris project support: no
  19.          Solaris privilege support: no
  20.        IP address in $DISPLAY hack: no
  21.            Translate v4 in v6 hack: yes
  22.                   BSD Auth support: no
  23.               Random number source: OpenSSL internal ONLY
  24.              Privsep sandbox style: seccomp_filter
  25.                    PKCS#11 support: yes
  26.                   U2F/FIDO support: yes
  27.               Host: x86_64-pc-linux-gnu
  28.           Compiler: cc -std=gnu11
  29.     Compiler flags: -g -O2 -pipe -Wall -Wextra -Wpointer-arith -Wuninitialized -Wsign-compare -Wformat-security -Wsizeof-pointer-memaccess -Wno-pointer-sign -Wno-unused-parameter -Wno-unused-result -fno-strict-aliasing -D_FORTIFY_SOURCE=2 -ftrapv -fno-builtin-memset -fstack-protector-strong -fPIE  
  30. Preprocessor flags: -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
  31.       Linker flags: -L/usr/local/ssl/lib64 -L/usr/local/zlib/lib  -Wl,-z,relro -Wl,-z,now -Wl,-z,noexecstack -fstack-protector-strong -pie
  32.          Libraries: -ldl -lutil  -lresolv
  33.      +for channels: -lcrypto  -lz
  34.          +for sshd: -lcrypt
复制代码
make && make install
#ssh允许root登录、必要密码举行验证
echo ‘PermitRootLogin yes’ >>/usr/local/openssh/etc/sshd_config
echo ‘PubkeyAuthentication yes’ >>/usr/local/openssh/etc/sshd_config
echo ‘PasswordAuthentication yes’ >>/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 enable sshd
#重新启动sshd服务
systemctl restart sshd
#查看sshd服务状态
systemctl status sshd
#查看ssh版本是否升级乐成,可以查看到已经是9.5版本了
ssh -V
OpenSSH_9.8p1, OpenSSL 3.2.2 4 Jun 2024
到此 OpenSSH 升级完成,还望各人多多指点。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

慢吞云雾缓吐愁

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表