news 2026/9/24 17:40:21

实操——修复OpenSSH远程代码执行漏洞

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
实操——修复OpenSSH远程代码执行漏洞

文章目录

  • 说明
  • 修复步骤
    • 1.安装telnet服务
    • 2.升级openssh
      • 2.1 **开始安装openssl**
      • **2.2 安装openssh**

说明

首先openssh漏洞,需要升级openssh,所以在升级过程中我们是无法用ssh连接过去的;所以我们需要先安装telnet 来进行连接。

参考文章:

https://www.cnblogs.com/nmap/p/10779658.html

修复步骤

1.安装telnet服务

给需要修复的系统安装telnet服务,方便在ssh不能用的时候连接

安装telnet-server以及xinetd

[root@linux-node3 ~]# yum install xinetd telnet-server -yLoaded plugins: fastestmirror Loading mirror speeds from cached hostfile * base: mirrors.163.com * epel: mirrors.aliyun.com * extras: mirrors.cn99.com * updates: mirrors.cn99.com Package2:xinetd-2.3.15-13.el7.x86_64 already installed and latest version Package1:telnet-server-0.17-64.el7.x86_64 already installed and latest version Nothing todo

配置telnet

现在很多centos7版本安装telnet-server以及xinetd之后没有一个叫telnet的配置文件了。

如果下面telnet文件不存在的话,可以跳过这部分的更改

[root@linux-node3 ~]# ll /etc/xinetd.d/telnetls: cannot access /etc/xinetd.d/telnet: No suchfileor directory

如果下面文件存在,请更改配置telnet可以root登录,设置disable = no

[root@rhel yum.repos.d]# cat /etc/xinetd.d/telnet# default: on# description: The telnet server serves telnet sessions; it uses \# unencrypted username/password pairs for authentication.servicetelnet{disable=no flags=REUSE socket_type=streamwait=no user=root server=/usr/sbin/in.telnetd log_on_failure+=USERID}[root@rhel yum.repos.d]# vim /etc/xinetd.d/telnet

配置telnet登录的终端类型,在/etc/securetty文件末尾增加一些pts终端,如下 ***如果不加,会登录不了

[root@linux-node3 ~]# vim /etc/securetty#文件末尾增加一些pts终端pts/0 pts/1 pts/2 pts/3[root@linux-node3 ~]# tail -5 /etc/securettyxvc0 pts/0 pts/1 pts/2 pts/3

启动telnet服务,并设置开机自动启动

#查看是否已安装了xinetdrpm-qaxinetd#(安装xinetd,然后启动)yum-yinstallxinetd#(启动xinetd守护进程,如有unit not found 说明xinetd未安装),或者 /etc/init.d/xinetd restartservicexinetd start centos6执行# iptables防火墙会阻止telnet,所以需要在iptables允许,用如下命令# 当你启动telnet服务后,你可以用netstat –tunlp命令来查看telnet服务所使用的端口,可以发现有23。使用下面命令开启这些端口:serviceiptables stop# //关闭防火墙# 开放23访问端口 ---telnet的默认端口iptables-IINPUT-ptcp--dport23-jACCEPTiptables-IINPUT-pudp--dport23-jACCEPT#保存serviceiptables save#重启防火墙serviceiptables start# 或者来点狠的,直接关闭防火墙!serviceiptables stop centos7执行# 重启防火墙servicefirewalld start#添加防火墙firewall-cmd--permanent--add-port=23/tcp firewall-cmd--permanent--add-port=23/udp#重启防火墙(修改配置后要重启防火墙)firewall-cmd--reload# 重启防火墙servicefirewalld restart#查看防火墙规则firewall-cmd --list-all[root@linux-node3 ~]# systemctl enable xinetd[root@linux-node3 ~]# systemctl enable telnet.socketCreated symlink from /etc/systemd/system/sockets.target.wants/telnet.socket to /usr/lib/systemd/system/telnet.socket.[root@linux-node3 ~]# systemctl start telnet.socket[root@linux-node3 ~]# systemctl start xinetdsystemctlenablexinetd systemctlenabletelnet.socket systemctl start telnet.socket systemctl start xinetd[root@linux-node3 ~]# netstat -lntp|grep 23tcp600:::23 :::* LISTEN1/systemd

切换到telnet方式登录,以后的操作都在telnet终端下操作,防止ssh连接意外中断造成升级失败

telnet方式登录 ,也可用其他机器直接 telnet XXX.XXX.XXX.XX ,然后输入用户名和密码登录

telnet使用root登陆报“Login incorrect”

应该修改/etc/pam.d/下的remote文件第一行

[root@ pam.d]#cd/etc/pam.d/catremote#%PAM-1.0auth required pam_securetty.so 把第一行给注释掉再试试[root@ pam.d]# cat remote#%PAM-1.0#auth required pam_securetty.so

2.升级openssh

2.1开始安装openssl

安装依赖包

升级需要几个组件,有些是和编译相关的等

[root@linux-node3 ~]# yum install -y gcc gcc-c++ glibc make autoconf openssl openssl-devel pcre-devel pam-develLoaded plugins: fastestmirror Loading mirror speeds from cached hostfile * base: mirrors.163.com * epel: mirrors.aliyun.com * extras: mirrors.cn99.com * updates: mirrors.cn99.com Package gcc-4.8.5-36.el7_6.1.x86_64 already installed and latest version Package gcc-c++-4.8.5-36.el7_6.1.x86_64 already installed and latest version Package glibc-2.17-260.el7_6.4.x86_64 already installed and latest version Package1:make-3.82-23.el7.x86_64 already installed and latest version Package autoconf-2.69-11.el7.noarch already installed and latest version Package1:openssl-1.0.2k-16.el7_6.1.x86_64 already installed and latest version Package1:openssl-devel-1.0.2k-16.el7_6.1.x86_64 already installed and latest version Package pcre-devel-8.32-17.el7.x86_64 already installed and latest version Package pam-devel-1.1.8-22.el7.x86_64 already installed and latest version Nothing todo

安装pam和zlib等(后面的升级操作可能没用到pam,安装上也没啥影响,如果不想安装pam请自行测试)

[root@linux-node3 ~]# yum install -y pam* zlib*

下载openssh包和openssl的包


下载最新版本,下载箭头指的包

OpenSSH: Portable Release

Index of /pub/OpenBSD/OpenSSH/portable/ (edgecast.com)

https://ftp.openssl.org/source/

开始安装openssl


个人习惯把安装包或者工具之类的放下面目录。根据个人喜好随便放,不影响安装

yum-yinstallzlib yum-yinstallgcc pam-devel zlib-devel yum-yinstallgcc openssl-devel[root@linux-node3 ~]# mkdir /opt/tools -p[root@linux-node3 ~]# cd /opt/tools/[root@linux-node3 /data/tools]# lltotal5224-rw-r--r--1root root5348369Apr2712:19 openssl-1.0.2r.tar.gz#解压文件 文件名按实际文件写[root@linux-node3 /data/tools]# tar -zxvf openssl-1.0.2r.tar.gz[root@linux-node3 /data/tools]# lltotal5228drwxr-xr-x20root root4096Apr2712:20 openssl-1.0.2r -rw-r--r--1root root5348369Apr2712:19 openssl-1.0.2r.tar.gz[root@linux-node3 /data/tools]# cd[root@linux-node3 ~]## 现在是系统默认的版本,等会升级完毕对比下[root@linux-node3 ~]# openssl versionOpenSSL1.0.2k-fips26Jan2017[root@linux-node3 ~]#

备份下面2个文件或目录(如果存在的话就执行)

[root@linux-node3 ~]# ll /usr/bin/openssl-rwxr-xr-x1root root555248Mar1218:12 /usr/bin/openssl[root@linux-node3 ~]# mv /usr/bin/openssl /usr/bin/openssl_bak[root@linux-node3 ~]# ll /usr/include/openssltotal1864-rw-r--r--1root root6146Mar1218:12 aes.h -rw-r--r--1root root63204Mar1218:12 asn1.h -rw-r--r--1root root24435Mar1218:12 asn1_mac.h -rw-r--r--1root root34475Mar1218:12 asn1t.h -rw-r--r--1root root38742Mar1218:12 bio.h -rw-r--r--1root root5351Mar1218:12 blowfish.h......[root@linux-node3 ~]# mv /usr/include/openssl /usr/include/openssl_bak[root@linux-node3 ~]#

编译安装新版本的openssl

配置、编译、安装3个命令一起执行

&&符号表示前面的执行成功才会执行后面的

[root@linux-node3 ~]# cd /opt/tools/openssl-1.0.2r/[root@linux-node3 /data/tools/openssl-1.0.2r]#./config--prefix=/usr/local/openssl shared zlibmakemakeinstallecho$?

以上命令执行完毕,echo $?查看下最后的make install是否有报错,0表示没有问题

下面2个文件或者目录做软链接 (刚才前面的步骤mv备份过原来的)

ln-s/usr/local/openssl/bin/openssl /usr/bin/opensslln-s/usr/local/openssl/include/openssl /usr/include/openssl[root@linux-node3 ~]# ll /usr/bin/openssllrwxrwxrwx1root root26Apr2712:31 /usr/bin/openssl ->/usr/local/ssl/bin/openssl[root@linux-node3 ~]# ll /usr/include/openssl -ldlrwxrwxrwx1root root30Apr2712:31 /usr/include/openssl ->/usr/local/ssl/include/openssl

命令行执行下面2个命令加载新配置

echo"/usr/local/openssl/lib">>/etc/ld.so.conf ldconfig#重新加载文件openssl version

查看确认版本。没问题

# 或者 openssl version -a # //查看是否升级成功[root@testssh ~]# openssl versionOpenSSL1.1.1g21Apr2020

2.2 安装openssh

上传openssh的tar包并解压

yum-yinstallgcc openssl-devel zlib-devel# 备份当前openssh (无需卸载当前版本)servicesshd stop ---备份前先停止ssh服务# 进行mv备份以下文件:mv/etc/init.d/sshd /etc/init.d/sshd.bakmv/etc/ssh /etc/ssh.bakmv/usr/sbin/sshd /usr/sbin/sshd.bakmv/usr/bin/ssh /usr/bin/ssh.bak[root@testssh ~]# cd /opt/tools/[root@testssh tools]# lltotal7628-rw-r--r--1root root1597697Apr1807:02 openssh-8.0p1.tar.gz drwxr-xr-x20root root4096Apr2323:12 openssl-1.0.2r -rw-r--r--1root root5348369Feb2622:34 openssl-1.0.2r.tar.gz -rwxr-xr-x1root root853040Apr112018sshd[root@testssh tools]# tar -zxvf openssh-8.0p1.tar.gz[root@testssh tools]# cd openssh-8.0p1可能文件默认显示uid和gid数组都是1000,这里重新授权下。不授权可能也不影响安装(请自行测试)[root@testssh tools]# chown -R root.root /opt/tools/openssh-8.2p1

命令行删除原先ssh的配置文件和目录

然后配置、编译、安装

注意下面编译安装的命令是一行

./configure--prefix=/usr/local/openssh--sysconfdir=/etc/ssh --with-pam --with-ssl-dir=/usr/local/openssl --with-md5-passwords--mandir=/usr/share/man --with-zlib 其中:--with-ssl-dir=是openssl的安装路径 如果报:configure: error: PAM headers not found 执行命令:yum-yinstallpam-devel 然后再 ./configure 一次makemakeinstall# 安装完毕 检查下结果echo$?

安装完毕 检查下结果

修改配置文件最终为如下内容,其他的不要动

vim/etc/ssh/sshd_config#注释掉这行:PermitRootLogin prohibit-password#新建一行 添加: 恢复root 用户登录 看情况恢复PermitRootLoginyesUseDNS no[root@linux-node3 ~]# grep "^PermitRootLogin" /etc/ssh/sshd_configPermitRootLoginyes[root@linux-node3 ~]# grep "UseDNS" /etc/ssh/sshd_configUseDNS no

从原先的解压的包中拷贝一些文件到目标位置(如果目标目录存在就覆盖)

(可能下面的ssh.pam文件都没用到,因为sshd_config配置文件貌似没使用它,请自行测试。我这边是拷贝了)

cp-acontrib/redhat/sshd.init /etc/init.d/sshdcp-acontrib/redhat/sshd.pam /etc/pam.d/sshd.pamchmod+x /etc/init.d/sshdcp/usr/local/openssh/sbin/sshd /usr/sbin/sshdcp/usr/local/openssh/bin/ssh /usr/bin/[root@linux-node3 /data/tools/openssh-8.0p1]# chkconfig --add sshd[root@linux-node3 /data/tools/openssh-8.0p1]# systemctl enable sshd

把原先的systemd管理的sshd文件删除或者移走或者删除,不移走的话影响我们重启sshd服务

[root@linux-node3 ~]# mv /usr/lib/systemd/system/sshd.service /opt/

设置sshd服务开机启动

[root@linux-node3 ~]# chkconfig sshd onNote: Forwarding request to'systemctl enable sshd.socket'.Created symlink from /etc/systemd/system/sockets.target.wants/sshd.socket to /usr/lib/systemd/system/sshd.socket.

接下来测试启停服务。都正常

以后管理sshd通过下面方式了[root@linux-node3 ~]# /etc/init.d/sshd restartRestarting sshd(via systemctl):[OK][root@linux-node3 ~]#[root@linux-node3 ~]#[root@linux-node3 ~]# netstat -lntpActive Internet connections(only servers)Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp000.0.0.0:220.0.0.0:* LISTEN31800/sshd tcp600:::22 :::* LISTEN31800/sshd tcp600:::23 :::* LISTEN1/systemd[root@linux-node3 ~]# /etc/init.d/sshd stopStopping sshd(via systemctl):[OK][root@linux-node3 ~]# netstat -lntpActive Internet connections(only servers)Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp600:::23 :::* LISTEN1/systemd[root@linux-node3 ~]# /etc/init.d/sshd startStarting sshd(via systemctl):[OK]

使用systemd方式也行

[root@linux-node3 ~]# systemctl stop sshd[root@linux-node3 ~]# netstat -lntpActive Internet connections(only servers)Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp600:::23 :::* LISTEN1/systemd[root@linux-node3 ~]# systemctl start sshd[root@linux-node3 ~]# netstat -lntpActive Internet connections(only servers)Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp000.0.0.0:220.0.0.0:* LISTEN31958/sshd tcp600:::22 :::* LISTEN31958/sshd tcp600:::23 :::* LISTEN1/systemd[root@linux-node3 ~]# systemctl restart sshd[root@linux-node3 ~]# netstat -lntpActive Internet connections(only servers)Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp000.0.0.0:220.0.0.0:* LISTEN31999/sshd tcp600:::22 :::* LISTEN31999/sshd tcp600:::23 :::* LISTEN1/systemd[root@linux-node3 ~]#

测试版本。都正常

[root@linux-node3 ~]# ssh -VOpenSSH_8.0p1, OpenSSL1.0.2r26Feb2019[root@linux-node3 ~]#[root@linux-node3 ~]# telnet 127.0.0.1 22Trying127.0.0.1... Connected to127.0.0.1. Escape character is'^]'.SSH-2.0-OpenSSH_8.0

如果不是生产机器。可以试着重启机器测试下登录sshd是否正常。我这边测试都没问题

测试没问题后可以把telnet服务关闭了

[root@linux-node3 ~]# systemctl disable xinetd.serviceRemoved symlink /etc/systemd/system/multi-user.target.wants/xinetd.service.[root@linux-node3 ~]# systemctl stop xinetd.service[root@linux-node3 ~]# systemctl disable telnet.socket[root@linux-node3 ~]# systemctl stop telnet.socket[root@linux-node3 ~]# netstat -lntp

添加开机启动脚本 ******由于云平台主机开机可能无法启动ssh,需要添加开机启动脚本

vim/etc/rc.d/rc.local#centos6/etc/init.d/sshd restart#centos7添加如下内容systemctl start sshd# 由于centos7的开机启动没有执行权限,需要授权chmod+x /etc/rc.d/rc.local
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/24 17:39:35

【Cursor+Ollama+本地大模型】Windows

下载安装Ollama并下载本地模型 第一步:下载Ollama 官网下载:https://ollama.com/download/windows 第二步: 安装 1.双击 OllamaSetup.exe 2.点击 “Install” 3.等待安装完成,任务栏右下角出现 羊驼图标 即表示后台服务已启动 验证…

作者头像 李华
网站建设 2026/9/24 17:39:31

Linux下Llama.cpp部署Qwen3-30b

在 CentOS 7 上部署 vLLM Qwen3-30B-A3B-Instruct-2507-GGUF 是一个高难度但可行的任务。结合你 无GPU(VMware虚拟机) 的环境,这需要从源码编译,且需要处理Qwen3 MoE模型的特定兼容性问题。🎯 vLLM 版本选择推荐使用 …

作者头像 李华
网站建设 2026/9/24 17:36:52

海洋科学航次数据缺项在哪一关露头,那一刻还补不补得回去

航次一结束,记录散在几个人手里,某一处缺项常要等到成表才被发现。这一篇要说的只有一件事:缺的地方在哪一关先露头,那时还补不补得回去。真要动手,章节排布这块一项免费能力能把顺序理顺,图表与算式那边另…

作者头像 李华
网站建设 2026/9/24 17:34:54

软著源代码格式要求详解:60页、50行、页眉页码一个都不能错

软著申请被补正,十个里有八个栽在源代码文档上。版权保护中心对源代码的格式要求其实就几条硬指标,但每条都有踩坑点。这篇按审查口径逐条讲清,照着准备基本不会被挑毛病。## 一、硬指标清单1. 页数:前后各连续 30 页,…

作者头像 李华
网站建设 2026/9/24 17:34:25

采购私域电商商城系统,需要注意哪些方面?

引言私域电商已经不再是品牌的营销加分项,而是中小企业沉淀客户、复购增收、搭建自有交易阵地的核心基础设施。很多企业在采购私域商城系统时,容易把目光局限在页面会不会看、营销插件多不多、报价高低这几个表层维度,等到上线运营数月后&…

作者头像 李华
网站建设 2026/9/24 17:34:25

存储器分类:RAM 与 ROM

1. 引言在计算机组成原理里,存储器的分类方式有很多:按存储介质、按存取方式、按信息易失性、按读写功能……其中最经典、也最常被拿来讨论的一种分法,就是按 RAM 和 ROM 来划分。这里说的 RAM / ROM,主要是按读写特性和断电后数据…

作者头像 李华