本文仅针对CentOS7.8版本,其他版本未测试,安装包文件放置在/home/openssh目录下,某些命令包含此路径。
1. 漏洞信息
OpenSSH(OpenBSD Secure Shell)是OpenBSD计划组的一套用于安全访问远程计算机的连接工具。该工具是SSH协议的开源实现,支持对所有的传输进行加密,可有用阻止窃听、连接劫持以及其他网络级的攻击。
- 7.7及之前版本中存在竞争条件问题漏洞。该漏洞源于网络系统或产品在运行过程中,并发代码需要互斥地访问共享资源时,对于并发访问的处置惩罚不妥。
- 8.3p1及之前版本中的scp的scp.c文件存在操纵系统命令注入漏洞。该漏洞源于外部输入数据构造操纵系统可实行命令过程中,网络系统或产品未正确过滤其中的特殊字符、命令等。攻击者可使用该漏洞实行非法操纵系统命令。
- 7.6之前的版本中的sftp-server.c文件的‘process_open’函数存在安全漏洞,该漏洞源于程序在只读模式下没有正确的阻止写入操纵。攻击者可使用该漏洞创建长度为零的文件。
- 5.7版本至8.3版本的客户端中存在信息泄露漏洞。攻击者可使用该漏洞获取信息。
- 7.8及之前版本中的auth-gss2.c文件存在信息泄露漏洞。该漏洞源于网络系统或产品在运行过程中存在设置等错误。未授权的攻击者可使用漏洞获取受影响组件敏感信息。
2. 情况说明
- # 系统版本
- CentOS Linux release 7.8.2003 (Core)
- # 当前OpenSSH版本
- OpenSSH_7.4p1, OpenSSL 1.0.2k-fips 26 Jan 2017
复制代码 3.依赖安装
3.1 在线安装
- # X.用于编译zlib【亲测不用安装】可忽略
- yum install gcc gcc-c++ make -y
- # 1.用于编译openssl【需要联网】
- yum install perl-CPAN perl-ExtUtils-CBuilder perl-ExtUtils-MakeMaker -y
复制代码
3.2 离线安装
- # 1.【已下载】的26个依赖文件
- perl-IPC-Cmd-0.80-4.el7.noarch.rpm
- pyparsing-1.5.6-9.el7.noarch.rpm
- gdbm-devel-1.10-8.el7.x86_64.rpm
- perl-Test-Harness-3.28-3.el7.noarch.rpm
- perl-ExtUtils-Manifest-1.61-244.el7.noarch.rpm
- perl-version-0.99.07-6.el7.x86_64.rpm
- perl-Perl-OSType-1.003-3.el7.noarch.rpm
- perl-Module-Load-Conditional-0.54-3.el7.noarch.rpm
- libdb-devel-5.3.21-25.el7.x86_64.rpm
- perl-Module-Load-0.24-3.el7.noarch.rpm
- perl-ExtUtils-MakeMaker-6.68-3.el7.noarch.rpm
- perl-local-lib-1.008010-4.el7.noarch.rpm
- perl-Data-Dumper-2.145-3.el7.x86_64.rpm
- perl-Digest-1.17-245.el7.noarch.rpm
- perl-Module-Metadata-1.000018-2.el7.noarch.rpm
- perl-Digest-SHA-5.85-4.el7.x86_64.rpm
- perl-Locale-Maketext-1.23-3.el7.noarch.rpm
- perl-Params-Check-0.38-2.el7.noarch.rpm
- perl-ExtUtils-ParseXS-3.18-3.el7.noarch.rpm
- systemtap-sdt-devel-4.0-13.el7.x86_64.rpm
- perl-devel-5.16.3-299.el7_9.x86_64.rpm
- perl-ExtUtils-CBuilder-0.28.2.6-299.el7_9.noarch.rpm
- perl-Locale-Maketext-Simple-0.21-299.el7_9.noarch.rpm
- perl-ExtUtils-Install-1.58-299.el7_9.noarch.rpm
- perl-Module-CoreList-2.76.02-299.el7_9.noarch.rpm
- perl-CPAN-1.9800-299.el7_9.noarch.rpm
- # 2.安装
- rpm -ivh *.rpm
复制代码 4.备份卸载
这里肯定要注意,假如使用的是工具连接的服务器,此时最好多打开几个窗口,sshd服务制止之后旧连接可以使用但是无法建立新的连接,也可以安装telnet进行服务器连接(使用telnet后云服务器报恶意文件,查看之后都是telnet的用户创建的,能不用的话尽量照旧不要用,毕竟又打开了一个可能遭遇暴力破解的端口)。
4.1 备份
- # 1.停止ssh服务
- systemctl stop sshd
- # 2.备份ssh文件
- cp -r /etc/ssh /etc/ssh.old
- cp -p /usr/bin/ssh /usr/bin/ssh.bak
- cp -p /usr/sbin/sshd /usr/sbin/sshd.bak
- cp -p /usr/bin/ssh-keygen /usr/bin/ssh-keygen.bak
复制代码 4.2 卸载旧版本
- # 1.查询原有ssh包并卸载
- rpm -qa | grep openssh
- openssh-7.4p1-23.el7_9.x86_64
- openssh-clients-7.4p1-23.el7_9.x86_64
- openssh-server-7.4p1-23.el7_9.x86_64
- # 2.卸载
- rpm -e --nodeps openssh-7.4p1-23.el7_9.x86_64
- rpm -e --nodeps openssh-clients-7.4p1-23.el7_9.x86_64
- rpm -e --nodeps openssh-server-7.4p1-23.el7_9.x86_64
- # 合并脚本
- rpm -e --nodeps $(rpm -qa | grep openssh)
- # 3.验证
- rpm -qa | grep openssh
复制代码 5.安装
5.1 zlib
直接下载或官网下载后上传zlib-1.3.1.tar.gz文件:
- # 1.下载
- wget https://zlib.net/current/zlib.tar.gz
- # 2.解压文件
- tar -zxvf zlib.tar.gz
- cd zlib-1.3.1
- # 3.编译安装zlib
- ./configure --prefix=/usr/local/zlib
- make && make install
复制代码 5.2 ssl
直接下载或官网下载后上传openssl-3.2.0.tar.gz文件:
- # 0.直接下载【根据版本需要进行下载】
- wget https://www.openssl.org/source/old/3.2/openssl-3.2.0.tar.gz
- # 1.解压文件
- tar -zxvf openssl-3.2.0.tar.gz
- cd openssl-3.2.0
-
- # 2.编译安装
- # --prefix指定编译到的目录 --shared作用是生成动态链接库(即.so库)
- ./config --prefix=/usr/local/ssl --shared
- # 编译安装ssl【10分钟左右】
- make && make install
-
- # 3.路径写入etc/ld.so.conf
- # 这里有网友遇到过问题(32位系统兼容问题) 命令已修复从lib64改为lib 这样64位和32位置系统都能可以正常使用
- echo '/usr/local/ssl/lib64' >> /etc/ld.so.conf
- # echo '/usr/local/ssl/lib' >> /etc/ld.so.conf
- # 4.刷新库文件
- ldconfig -v
复制代码 5.3 openssh
5.3.1 安装
直接下载或官网下载后上传openssh-9.7p1.tar.gz:
- # 0.直接下载【最新版本】注意跟下载后上传的版本不是一样的
- wget https://ftp.openbsd.org/pub/OpenBSD/OpenSSH/openssh-9.7.tar.gz
- # 1.解压
- tar -zxvf openssh-9.7p1.tar.gz
- cd openssh-9.7p1
- # 2.编译安装【3分钟左右】
- ./configure --prefix=/usr/local/ssh --with-zlib=/usr/local/zlib --with-ssl-dir=/usr/local/ssl
- make -j 4 && make install
复制代码
- -j 4: 这是一个选项,用于指定同时实行的编译任务数(即并行度)。这里的数字 4 表现允许同时运行4个编译任务。启用多任务并行编译可以明显加速编译速率,特别是对于大型项目或具有多个相互独立模块的软件。通过使用 -j 参数,系统可以使用多核处置惩罚器的上风,同时处置惩罚多个编译任务,从而缩短团体编译时间。
5.3.2 设置
- # 1.ssh允许root登录 需要密码进行验证
- echo 'PermitRootLogin yes' >> /usr/local/ssh/etc/sshd_config
- echo 'PubkeyAuthentication yes' >>/usr/local/ssh/etc/sshd_config
- echo 'PasswordAuthentication yes' >>/usr/local/ssh/etc/sshd_config
-
- # 2.将编译安装的新配置文件拷贝到原路径下
- cp /usr/local/ssh/bin/ssh /usr/bin/ssh
- cp /usr/local/ssh/sbin/sshd /usr/sbin/sshd
- cp /usr/local/ssh/bin/ssh-keygen /usr/bin/ssh-keygen
- cp /usr/local/ssh/etc/sshd_config /etc/ssh/sshd_config
- cp /usr/local/ssh/etc/ssh_host_ecdsa_key.pub /etc/ssh/ssh_host_ecdsa_key.pub
-
- # 3.拷贝启动脚本
- cp -p /opt/openssh/openssh-9.7p1/contrib/redhat/sshd.init /etc/init.d/sshd
- # 4.给sshd添加可执行权限
- chmod +x /etc/init.d/sshd
- # 5.设置开机自启
- systemctl enable sshd
- # 6.重新启动sshd服务
- systemctl restart sshd
- # 7.查看sshd服务状态
- systemctl status sshd
- # 8.查看ssh版本是否升级成功,可以查看到已经是9.5版本了
- ssh -V
- OpenSSH_9.7p1, OpenSSL 3.2.0 23 Nov 2023
复制代码 至此新版本升级成功。感谢以下博主的分享:
https://blog.csdn.net/morecccc/article/details/134758892
https://www.cnblogs.com/wjsqqj/p/17925907.html
6.脚本整理
- # 1.依赖安装
- rpm -ivh *.rpm
- # 2.停止sshd服务
- systemctl stop sshd
- # 3.删除已安装的openssh
- rpm -e --nodeps $(rpm -qa | grep openssh)
- # 4.zlib安装
- tar -zxvf zlib.tar.gz
- cd zlib-1.3.1
- ./configure --prefix=/usr/local/zlib
- make && make install
- # 5.ssl安装
- tar -zxvf openssl-3.2.0.tar.gz
- cd openssl-3.2.0
- ./config --prefix=/usr/local/ssl --shared
- make && make install
- echo '/usr/local/ssl/lib64' >> /etc/ld.so.conf
- ldconfig -v
- # 6.openssh安装
- tar -zxvf openssh-9.7p1.tar.gz
- cd openssh-9.7p1
- ./configure --prefix=/usr/local/ssh --with-zlib=/usr/local/zlib --with-ssl-dir=/usr/local/ssl
- make -j 4 && make install
- # 7.ssh配置
- echo 'PermitRootLogin yes' >> /usr/local/ssh/etc/sshd_config
- echo 'PubkeyAuthentication yes' >>/usr/local/ssh/etc/sshd_config
- echo 'PasswordAuthentication yes' >>/usr/local/ssh/etc/sshd_config
-
- # 2.将编译安装的新配置文件拷贝到原路径下
- cp /usr/local/ssh/bin/ssh /usr/bin/ssh
- cp /usr/local/ssh/sbin/sshd /usr/sbin/sshd
- cp /usr/local/ssh/bin/ssh-keygen /usr/bin/ssh-keygen
- cp /usr/local/ssh/etc/sshd_config /etc/ssh/sshd_config
- cp /usr/local/ssh/etc/ssh_host_ecdsa_key.pub /etc/ssh/ssh_host_ecdsa_key.pub
- cp -p /opt/openssh/openssh-9.7p1/contrib/redhat/sshd.init /etc/init.d/sshd
- chmod +x /etc/init.d/sshd
- systemctl enable sshd
- systemctl restart sshd
- systemctl status sshd
复制代码 7.文件资源
链接:https://pan.baidu.com/s/1tUBYK4WzCiJBcCqQDOtQhw?pwd=8tfv
提取码:8tfv
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |