首页/新闻资讯/正文详情

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

发布时间:2026/9/24 17:40:24 来源:云帆数科 栏目:资讯中心
实操——修复OpenSSH远程代码执行漏洞
文章目录说明修复步骤1.安装telnet服务2.升级openssh2.1 **开始安装openssl****2.2 安装openssh**说明首先openssh漏洞需要升级openssh所以在升级过程中我们是无法用ssh连接过去的所以我们需要先安装telnet 来进行连接。参考文章https://www.cnblogs.com/nmap/p/10779658.html修复步骤1.安装telnet服务给需要修复的系统安装telnet服务方便在ssh不能用的时候连接安装telnet-server以及xinetd[rootlinux-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文件不存在的话可以跳过这部分的更改[rootlinux-node3 ~]# ll /etc/xinetd.d/telnetls: cannot access /etc/xinetd.d/telnet: No suchfileor directory如果下面文件存在请更改配置telnet可以root登录设置disable no[rootrhel 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{disableno flagsREUSE socket_typestreamwaitno userroot server/usr/sbin/in.telnetd log_on_failureUSERID}[rootrhel yum.repos.d]# vim /etc/xinetd.d/telnet配置telnet登录的终端类型在/etc/securetty文件末尾增加一些pts终端如下 ***如果不加会登录不了[rootlinux-node3 ~]# vim /etc/securetty#文件末尾增加一些pts终端pts/0 pts/1 pts/2 pts/3[rootlinux-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-port23/tcp firewall-cmd--permanent--add-port23/udp#重启防火墙(修改配置后要重启防火墙)firewall-cmd--reload# 重启防火墙servicefirewalld restart#查看防火墙规则firewall-cmd --list-all[rootlinux-node3 ~]# systemctl enable xinetd[rootlinux-node3 ~]# systemctl enable telnet.socketCreated symlink from /etc/systemd/system/sockets.target.wants/telnet.socket to /usr/lib/systemd/system/telnet.socket.[rootlinux-node3 ~]# systemctl start telnet.socket[rootlinux-node3 ~]# systemctl start xinetdsystemctlenablexinetd systemctlenabletelnet.socket systemctl start telnet.socket systemctl start xinetd[rootlinux-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.so2.升级openssh2.1开始安装openssl安装依赖包升级需要几个组件有些是和编译相关的等[rootlinux-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请自行测试[rootlinux-node3 ~]# yum install -y pam* zlib*下载openssh包和openssl的包下载最新版本下载箭头指的包OpenSSH: Portable ReleaseIndex 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[rootlinux-node3 ~]# mkdir /opt/tools -p[rootlinux-node3 ~]# cd /opt/tools/[rootlinux-node3 /data/tools]# lltotal5224-rw-r--r--1root root5348369Apr2712:19 openssl-1.0.2r.tar.gz#解压文件 文件名按实际文件写[rootlinux-node3 /data/tools]# tar -zxvf openssl-1.0.2r.tar.gz[rootlinux-node3 /data/tools]# lltotal5228drwxr-xr-x20root root4096Apr2712:20 openssl-1.0.2r -rw-r--r--1root root5348369Apr2712:19 openssl-1.0.2r.tar.gz[rootlinux-node3 /data/tools]# cd[rootlinux-node3 ~]## 现在是系统默认的版本等会升级完毕对比下[rootlinux-node3 ~]# openssl versionOpenSSL1.0.2k-fips26Jan2017[rootlinux-node3 ~]#备份下面2个文件或目录如果存在的话就执行[rootlinux-node3 ~]# ll /usr/bin/openssl-rwxr-xr-x1root root555248Mar1218:12 /usr/bin/openssl[rootlinux-node3 ~]# mv /usr/bin/openssl /usr/bin/openssl_bak[rootlinux-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......[rootlinux-node3 ~]# mv /usr/include/openssl /usr/include/openssl_bak[rootlinux-node3 ~]#编译安装新版本的openssl配置、编译、安装3个命令一起执行符号表示前面的执行成功才会执行后面的[rootlinux-node3 ~]# cd /opt/tools/openssl-1.0.2r/[rootlinux-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[rootlinux-node3 ~]# ll /usr/bin/openssllrwxrwxrwx1root root26Apr2712:31 /usr/bin/openssl -/usr/local/ssl/bin/openssl[rootlinux-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 # //查看是否升级成功[roottestssh ~]# openssl versionOpenSSL1.1.1g21Apr20202.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[roottestssh ~]# cd /opt/tools/[roottestssh 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[roottestssh tools]# tar -zxvf openssh-8.0p1.tar.gz[roottestssh tools]# cd openssh-8.0p1可能文件默认显示uid和gid数组都是1000这里重新授权下。不授权可能也不影响安装请自行测试[roottestssh 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[rootlinux-node3 ~]# grep ^PermitRootLogin /etc/ssh/sshd_configPermitRootLoginyes[rootlinux-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.pamchmodx /etc/init.d/sshdcp/usr/local/openssh/sbin/sshd /usr/sbin/sshdcp/usr/local/openssh/bin/ssh /usr/bin/[rootlinux-node3 /data/tools/openssh-8.0p1]# chkconfig --add sshd[rootlinux-node3 /data/tools/openssh-8.0p1]# systemctl enable sshd把原先的systemd管理的sshd文件删除或者移走或者删除不移走的话影响我们重启sshd服务[rootlinux-node3 ~]# mv /usr/lib/systemd/system/sshd.service /opt/设置sshd服务开机启动[rootlinux-node3 ~]# chkconfig sshd onNote: Forwarding request tosystemctl enable sshd.socket.Created symlink from /etc/systemd/system/sockets.target.wants/sshd.socket to /usr/lib/systemd/system/sshd.socket.接下来测试启停服务。都正常以后管理sshd通过下面方式了[rootlinux-node3 ~]# /etc/init.d/sshd restartRestarting sshd(via systemctl):[OK][rootlinux-node3 ~]#[rootlinux-node3 ~]#[rootlinux-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[rootlinux-node3 ~]# /etc/init.d/sshd stopStopping sshd(via systemctl):[OK][rootlinux-node3 ~]# netstat -lntpActive Internet connections(only servers)Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp600:::23 :::* LISTEN1/systemd[rootlinux-node3 ~]# /etc/init.d/sshd startStarting sshd(via systemctl):[OK]使用systemd方式也行[rootlinux-node3 ~]# systemctl stop sshd[rootlinux-node3 ~]# netstat -lntpActive Internet connections(only servers)Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp600:::23 :::* LISTEN1/systemd[rootlinux-node3 ~]# systemctl start sshd[rootlinux-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[rootlinux-node3 ~]# systemctl restart sshd[rootlinux-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[rootlinux-node3 ~]#测试版本。都正常[rootlinux-node3 ~]# ssh -VOpenSSH_8.0p1, OpenSSL1.0.2r26Feb2019[rootlinux-node3 ~]#[rootlinux-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服务关闭了[rootlinux-node3 ~]# systemctl disable xinetd.serviceRemoved symlink /etc/systemd/system/multi-user.target.wants/xinetd.service.[rootlinux-node3 ~]# systemctl stop xinetd.service[rootlinux-node3 ~]# systemctl disable telnet.socket[rootlinux-node3 ~]# systemctl stop telnet.socket[rootlinux-node3 ~]# netstat -lntp添加开机启动脚本 ******由于云平台主机开机可能无法启动ssh需要添加开机启动脚本vim/etc/rc.d/rc.local#centos6/etc/init.d/sshd restart#centos7添加如下内容systemctl start sshd# 由于centos7的开机启动没有执行权限需要授权chmodx /etc/rc.d/rc.local

相关推荐

Java 锁学习笔记
Java 锁学习笔记

Java 锁学习笔记 1. 为什么需要锁 1.1 多线程为什么会出问题? 多个线程同时操作同一份共享数据时,可能产生数据竞争(Race Condition)。 例如: private int count 0;public void add() {count; }count 看起来只有一行&… · 2026/9/24 17:40:24

AI小白必看:轻松搞懂LLM、Chatbot和Agent
AI小白必看:轻松搞懂LLM、Chatbot和Agent

本文深入浅出地解析了AI领域中的三个核心概念:LLM、Chatbot和Agent。LLM是理解和生成内容的底层模型,相当于AI的“发动机”;Chatbot是基于LLM的对话产品,提供持续交互的界面;Agent则是在Chatbot基础上,能够… · 2026/9/24 17:40:12

小白/程序员必看:大模型+智能体如何赋能制造业,小白也能轻松入门!
小白/程序员必看:大模型+智能体如何赋能制造业,小白也能轻松入门!

本文介绍了“大模型智能体”在制造业中的应用,通过真实案例展示了其在流程工业、装备制造、电子制造等场景的显著效益,包括提升效率、降低成本、提高产品质量等。文章还分析了制造业AI落地的三大死结,以及“双轮驱动”如何破解这些难题&#… · 2026/9/24 17:40:12

当你的论文终于定稿,真正的大考才刚刚开始——聊聊aigcbiye的AI PPT功能一个被忽视的真相
当你的论文终于定稿,真正的大考才刚刚开始——聊聊aigcbiye的AI PPT功能一个被忽视的真相

aigcbiye官网 微信公众号搜一搜 aigcbiye 我带了这么多年论文写作,发现一个特别有意思的现象:很多人把论文正文写完,长舒一口气,以为最难的关卡已经过了。然后他们打开PPT,新建一个空白文档,盯着那个闪烁的… · 2026/9/24 18:12:35

Java超市积分管理系统实战:数据库设计与事务处理全解析
Java超市积分管理系统实战:数据库设计与事务处理全解析

简介:面向Java Web学习者和高校毕设学生的超市积分管理系统完整项目资料包,以会员积分、商品管理等典型业务场景为线索,帮助读者掌握从需求分析到编码实现的全流程。压缩包仅18.21MB,共5个文件,其中sql为数据库脚本、d… · 2026/9/24 18:12:28

车载驾驶员疲劳检测实战:轻量模型+鲁棒设计+毕设落地指南
车载驾驶员疲劳检测实战:轻量模型+鲁棒设计+毕设落地指南

简介:本资源是一套面向计算机专业本科生的毕业设计实战项目,聚焦驾驶员疲劳状态识别这一实际安全需求,基于卷积神经网络实现人脸检测、关键特征提取与疲劳判别预警全流程。适用于正在开展毕设、课程设计或期末大作业的学生,也适合… · 2026/9/24 18:12:28

YOLO卫星遥感多类别目标检测数据集:从标注格式到训练调参全攻略
YOLO卫星遥感多类别目标检测数据集:从标注格式到训练调参全攻略

简介:YOLO卫星遥感多类别检测数据集,适合正在学习目标检测或从事遥感影像识别应用的开发者。资源围绕真实场景的高质量卫星影像构建,使用LabelImg标注,标注框规范,同时提供VOC(xml)、COCO&#… · 2026/9/24 18:12:28

2026全球锂电干燥设备行业全景解析:市场扩容、技术迭代与全球化布局机遇
2026全球锂电干燥设备行业全景解析:市场扩容、技术迭代与全球化布局机遇

锂电干燥设备是锂电池制造环节的核心工艺装备,直接决定电芯的水分控制水平,进而影响电池的循环寿命、安全性能与量产良率。随着2026年全球动力电池与储能电池产能持续扩张,锂电干燥设备行业已经从单纯的产能驱动阶段,全面进入“技… · 2026/9/24 18:12:22

asd asd
asd asd

sad sad asd · 2026/9/24 18:12:16

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程
基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

简介:这是一套面向计算机、人工智能、自动化等专业学生与教师的毕业设计级项目资源,围绕YOLOv8实现渔船作业监控系统,可用于毕设、课程设计、大作业或项目立项演示。压缩包共97个文件,约24.21MB,以70个Python源码文件为… · 2026/9/24 0:00:13

1D-CNN时间序列建模实战:从Conv1d原理到工业落地
1D-CNN时间序列建模实战:从Conv1d原理到工业落地

简介:面向时间序列数据建模的一维卷积神经网络完整实现,适合深度学习入门者及需要快速验证时序模型的研究者,能够从音频、文本、传感器或股价等序列中挖掘局部特征与时间依赖。压缩包体积很小,只有3KB,内含3个Python脚… · 2026/9/24 0:00:26

柔软的L:汉语语流中被忽视的舌肌张力控制
柔软的L:汉语语流中被忽视的舌肌张力控制

1. 这个“L”不是字母表里的L,而是舌尖上的L最近在几个方言群和语音教学社群里,反复看到有人发一句:“也说字母L:柔软的长舌”。初看以为是英语发音课笔记,点开才发现全是方言爱好者、播音系学生、语言康复师甚至戏曲演… · 2026/9/24 0:00:44

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码