当前位置: 首页 > news >正文

centos7 升级openssl 与升级openssh 安装卸载 telnet-server

前言: 服务器被安全扫描,扫出了漏洞需要修复,根据提示将openssh升级为9.8p1的版本,同时需要升级openssl,但是升级openssh可能会导致ssh连接失败,从而无法继续操作,特别是远程机房尤为危险,一不小心便要进入机房原地操作,所以安装 telnet-server 做备用链接,但是 telnet-server 不是安全链接,所以升级完成后需要关闭 telnet-server

一、 安装包准备

  • 1.1 openssl下载: https://openssl-library.org/source/
  • 1.2 openssh阿里云镜像下载:https://mirrors.aliyun.com/openssh/
    选择需要更新的版本下载,我这里openssl 是 3.0版本,openssh 为 9.8p1的版本,telnet-server 为 yum自动选择版本安装;

二、 安装telnet-server 做备用链接(如果是本地虚拟机,或者不考虑ssh链接失败的可能,可忽略这一步)

  • 安装前提醒说明一下,Telnet本身是有如下缺陷的:

    • 没有口令保护,远程用户的登陆传送的帐号和密码都是明文,很容易截获,没有强力认证过程,只是验证帐户和密码。
    • 没有完整性检查。传送的数据没有办法知道是否完整的未被篡改过的,传送的数据是明文。
      为了避免不必要的安全风险,在升级完成 openssh 后,本文会引导卸载telnet-server。
  • 2.1 使用 cat /etc/passwd 命令查看服务器是否有非root管理员账号,如果没有则添加并将管理员账号并设置密码,且允许该账号登录root账号 示例: sysadmin Sysadmin!123

# /etc/sudoers 文件 查看是否有其他非root账号
cat /etc/passwd# 没有则添加 sysadmin 账号
adduser sysadmin
# 设置账号密码为 Sysadmin!123
passwd sysadmin
# 会提示输入密码,输入后会提示已修改密码成功# 允许 sysadmin 登录root账号  /etc/sudoers 文件 中需要有 sysadmin ALL=(ALL:ALL) ALL
cat /etc/sudoers
# 没有登录需要的账号则添加 sysadmin ALL=(ALL:ALL) ALL 已有请忽略
vi /etc/sudoers

在这里插入图片描述

  • 2.2 安装telnet
# 检查是否有安装
rpm -qa telnet
rpm -qa telnet-server
rpm -qa xinetd
# 安装对应包
yum install telnet-server
yum install telnet
yum install -y xinetd
# xinetd 是 telnet-server 的守护进程,需要按照 xinetd 才能远程控制#telnet 是控制 23 端口,防火墙释放 23端口
firewall-cmd --zone=public --add-port=23/tcp --permanent
# 重启防火墙
firewall-cmd --reload# 如果是新安装的 telnet-server 需要配置 telnet-server 参数
cat << EOF > /etc/xinetd.d/telnet
service telnet
{flags = REUSEsocket_type = streamwait = nouser = rootserver = /usr/sbin/in.telnetdlog_on_failure += USERIDdisable = no
}
EOF# 启动 telnet-server
systemctl start telnet.socket
# 启动 xinetd
systemctl start xinetd# 验证 telnet 服务状态
systemctl status telnet.socket
# 验证 xinetd 服务状态
systemctl status xinetd -l

服务都是已启动状态,尝试远程使用 telnet 登录
在这里插入图片描述

  • 2.3 远程访问:(我这儿是局域网)
    在这里插入图片描述
  • 如果连不上,检查是否是开启了防火墙,需要将端口 23 加入防火墙白名单(连上了请忽略)
#查看所有放行的端口
firewall-cmd --list-ports --permanent
# 如果没有端口23,开启端口 23
firewall-cmd --zone=public --add-port=23/tcp --permanent# 重启防火墙
firewall-cmd --reload

成功登录 root 账号后,可以完成命令操作则 telnet-server 安装完成

# 连接登录后,需要输入账号
sysadmin
# 根据提示输入密码
Sysadmin!123
# 登入后切换到root账号(注意root账号是最高权限,操作需谨慎)
su
# 输入 root 账号密码,进入系统,能成功进入系统,表示备用链接已完成安装

在这里插入图片描述

三、 升级 openssl

  • 3.1 先使用 openssl version 命令查看OpenSSL版本,版本符合要求则不升级
    在这里插入图片描述
  • 3.2 如需要升级,将安装包放到 /usr/local/ 目录下解压
cd /usr/local/
tar -xvf openssl-3.4.0.tar.gz
# 解压完成后进入解压后的文件夹cd openssl-3.4.0
配置config 说明:--prefix:指定安装目录
--openssldir:指定配置文件目录
shared:作用是生成动态连接库
zlib:使用静态的zlib压缩库
# 配置安装
./config --prefix=/usr/local/openssl --openssldir=/usr/local/openssl shared zlib
  • 如果报错,查看缺少什么插件,安装后继续
    在这里插入图片描述
# 缺少 perl-IPC-Cmd 使用yum 安装
yum -y install perl-IPC-Cmd
# 缺少 perl-Data-Dumper
yum install perl-Data-Dumper
# 安装完成后,重新执行配置
./config --prefix=/usr/local/openssl --openssldir=/usr/local/openssl shared zlib
  • 3.3 配置成功后按开始安装
    在这里插入图片描述
# 开始安装
make
make install
# 可能会出现 缺少openssl开发依赖包,则安装
yum -y install openssl-devel
# 执行完成后,重新执行 make & make install

在这里插入图片描述
安装成功
在这里插入图片描述- 3.4 备份旧版本配置

mv /usr/bin/openssl /usr/bin/old_241114_openssl
mv /usr/lib64/openssl /usr/lib64/old_241114_openssl
mv /usr/include/openssl /usr/include/old_241114_openssl
# 删除旧版本的库连接
rm -f /usr/lib64/libssl.so.10
rm -f /usr/lib64/libcrypto.so.10
  • 3.5 配置启动
#依次执行
ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl
ln -s /usr/local/ssl/lib64/libssl.so.3 /usr/lib64/libssl.so.3
ln -s /usr/local/ssl/lib64/libcrypto.so.3 /usr/lib64/libcrypto.so.3echo "/usr/local/ssl/lib64" >> /etc/ld.so.confldconfig# 创建软链接ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
ln -s /usr/local/openssl/include/openssl /usr/include/openssl
ln -s /usr/local/openssl/lib64/libssl.so.3 /usr/lib64/libssl.so.3
ln -s /usr/local/openssl/lib64/libcrypto.so.3 /usr/lib64/libcrypto.so.3
# 添加OpenSSL动态链接库 下面两个配置,先执行第一个,如果后续出问题再回来尝试第二个
echo "/usr/local/openssl/lib" >> /etc/ld.so.conf
# 如果按照openssh 找不到 ssl 库,试试这一个 库的位置跟不同的 openssl 版本有关
# echo "/usr/local/ssl/lib64" >> /etc/ld.so.conf
# 更新库缓存
ldconfig
# 查看OpenSSL版本验证安装是否成功
openssl version

在这里插入图片描述
openssl 安装完成

四、 升级 openssh

  • 4.1 将下载的openssh 包放在 /usr/local/ 目录下解压
cd /usr/local/
# 解压
tar -zxvf openssh-9.8p1.tar.gz
  • 4.2 卸载旧版本openSSH,注意:卸载完后千万不能断开,断开就连不上了,卸载后其他人也无法通过ssh链接(真断开了就使用最开始安装的telnet连接也能继续操作)
yum remove -y openssh# 清理残余文件,配置也会消失,做好备份
rm -rf /etc/ssh/*
  • 4.3 编译安装
./configure --prefix=/usr/local/openssh --with-zlib=/usr/local/zlib --with-ssl-dir=/usr/local/openssl
# 安装
make
make install

configure 完成
在这里插入图片描述
make install 完成
在这里插入图片描述

  • 4.4 以上操作都没有报错,则可以开始配置登录
#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
# 修改默认端口 注意改回未升级时的端口,如果是新端口则需要设置防火墙,见第一步安装 telnet 时端口防火墙设置方法
echo 'Port 22' >>/usr/local/openssh/etc/sshd_config#将编译安装的新配置文件 拷贝到原路径下,拷贝前记得对比 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

在这里插入图片描述
注意: 如果没有启动成功,千万不要断开链接,断开后就连不上了,要排查哪儿错了,解决问题后再启动成功再断开(PS:如果安装了第一步,可以使用telnet连接)

  • 4.5 查看OpenSSH版本,显示新版本就是升级成功了,如果显示还是旧的话断开重连一下再查看版本,可能没刷新,重新登录还是没有,重复安装步骤,查看是否哪儿报错未及时处理
ssh -V

在这里插入图片描述
版本都是你需要的版本,则完成安装(我这儿安装了两台不同需求的服务器,截图的版本有些不能对应上,请忽略)

五、关闭 telnet-server 避免不安全的漏洞

  • 为了避免elnet本身的缺陷对服务器引发不安全漏洞,确定openssh安装完成后,关闭telnet服务端。
  • 5.1 修改xinetd配置
# 修改为disable=yes
vi /etc/xinetd.d/telnet 

在这里插入图片描述

  • 5.2 重启xinetd服务,关闭telnet-server 连接
# 重启xinetd服务
systemctl restart xinetd.service# 检查telnet服务是否已关闭(如已关闭则会显示telnet = off)
chkconfig --list |grep telnet# 检查23端口是否已关闭
netstat -tlun |grep 23

在这里插入图片描述

  • 5.3 删除telnet-server包 (可以只删除服务端,保留用户端,看实际需求)
# 只删除服务端,不删除客户端,方便以后重新安装,而且用户端可以连接其他 telnet 服务端
yum remove telnet-server -y 
# 彻底删除所有依赖包
# rpm -e telnet-server--nodeps 
  • 5.4 测试外部主机链接 telnet 已经无法在连接
    在这里插入图片描述
  • 5.5 如果操作了防火墙,需要移除端口 23 的白名单
# 移除指定端口:
firewall-cmd --permanent --remove-port=23/tcp# 重启防火墙
firewall-cmd --reload# 查看所有放行的端口中是否没有端口 23
firewall-cmd --list-ports --permanent

完成

欢迎点赞收藏一键三连!

相关文章:

centos7 升级openssl 与升级openssh 安装卸载 telnet-server

前言&#xff1a; 服务器被安全扫描&#xff0c;扫出了漏洞需要修复&#xff0c;根据提示将openssh升级为9.8p1的版本&#xff0c;同时需要升级openssl&#xff0c;但是升级openssh可能会导致ssh连接失败&#xff0c;从而无法继续操作&#xff0c;特别是远程机房尤为危险&#…...

C++知识点总结(57):STL综合

STL综合 一、数据结构1. 队列2. 映射 二、队列例题1. 约瑟夫环&#xff08;数据加强&#xff09;2. 打印队列3. 小组队列4. 日志统计 2.0 三、映射真题1. 眼红的 Medusa2. 美食评委 一、数据结构 1. 队列 功能代码定义queue<tp>q入队.push(x)出队.pop()队头.front()队尾…...

mac2019环境 Airflow+hive+spark+hadoop本地环境安装

1 环境介绍 本地安装可分为两个部分&#xff0c;mac软件环境&#xff0c; python开发环境 ps: 安装过程参考chatgpt、csdn文章 1.1 mac软件环境 目标安装的的软件是hive、apache-spark、hadoop&#xff0c;但是这三个软件又依赖java(spark依赖&#xff09;、ssh&#xff08…...

如何使用EasyExcel生成多列表组合填充的复杂Excel示例

作者&#xff1a;Funky_oaNiu 一、&#xff08;需求&#xff09;生成的表格效果&#xff1a;二、搞一个模板文件三、建立对应的表格实体类四、开始填充五、Vue3前端发起请求下载六、官方文档及AI问答 一、&#xff08;需求&#xff09;生成的表格效果&#xff1a; 其中只有顶部…...

【MySQL】MySQL在Centos环境安装

&#x1f525;个人主页&#xff1a; Forcible Bug Maker &#x1f525;专栏&#xff1a; MySQL 目录 &#x1f308;前言&#x1f525;卸载不要的环境&#x1f525;检查系统安装包&#x1f525;卸载这些默认安装包&#x1f525;获取mysql官方yum源&#x1f525;安装mysql yum源…...

JDBC-Mysql 时区问题详解

目录 一、前置准备 1.1 版本号列表 1.2 Sql脚本 1.3 application.yaml配置 1.4 数据库时区设置 二、java Date类型与&#xff08;jdbcType&#xff09;TIMESTAMP类型的转换 2.1 jdbc对serverTimeZone的处理 2.2 java Date转&#xff08;jdbcType&#xff09;TIMESTAMP …...

前端页面一些小点

案例一&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>快递单号查询</title><…...

Postman接口测试(断言、关联、参数化、输出测试报告)

基本界面展示 Get、Post请求 Postman断言 使用postman来判断预期结果与实际结果是否一致 响应状态码断言 响应包含字符串 断言判断字符串的格式 关联 用于解决http请求之间存在依赖关系 依赖&#xff1a;一个http请求的响应结果中的数据&#xff0c;被另一个请求使用 登…...

redis和mongodb等对比分析

Redis 和 MongoDB 都是非常流行的 NoSQL 数据库,它们在数据存储模型、性能、扩展性等方面有很大的差异。下面是 Redis 和 MongoDB 的对比分析: 1. 数据模型 Redis: 键值存储:Redis 是一个内存数据结构存储,它支持多种数据类型,如字符串、哈希、列表、集合、有序集合等。…...

如何在 WordPress 中轻松强制所有用户退出登录

作为一名长期管理 WordPress 网站的站长&#xff0c;我深知维护网站安全性的重要性。尤其是在面对会员网站或付费内容平台时&#xff0c;确保所有用户的登录状态是最新的&#xff0c;是维持网站正常运营的关键之一。今天&#xff0c;我就分享一下如何通过简单的步骤&#xff0c…...

移除元素(leetcode 27)

给定一个数组&#xff0c;在数组中删除等于这个目标值的元素&#xff0c;然后返回新数组的大小 数组理论&#xff1a; 数组是一个连续的类型相近的元素的一个集合&#xff0c;数组上的删除是覆盖&#xff0c;只能由后面的元素进行覆盖&#xff0c;而不能进行真正意义上的地理位…...

html5表单属性的用法

文章目录 HTML5表单详解与代码案例一、表单的基本结构二、表单元素及其属性三、表单的高级应用与验证四、表单布局与样式 HTML5表单详解与代码案例 HTML5表单是网页中用于收集用户输入并提交到服务器的重要元素&#xff0c;广泛应用于登录页面、客户留言、搜索产品等场景。本文…...

使用 Ant Design Vue 自定渲染函数customRender实现单元格合并功能rowSpan

使用 Ant Design Vue 自定渲染函数customRender实现单元格合并功能rowSpan 背景 在使用Ant Design Vue 开发数据表格时&#xff0c;我们常常会遇到需要合并单元格的需求。 比如&#xff0c;某些字段的值可能会在多行中重复出现&#xff0c;而我们希望将这些重复的单元格合并为…...

相机光学(四十四)——ALL-PD和PDAF

1.PDAF&#xff08;Phase Detection Auto Focus&#xff09; PDAF是相位检测自动对焦技术的缩写&#xff0c;它是一种在数码相机和智能手机摄像头中使用的自动对焦技术。   PDAF的原理是根据CIS&#xff08;CMOS图像传感器&#xff09;不同像素的相位差信息&#xff0c;判断出…...

Opengl光照测试

代码 #include "Model.h" #include "shader_m.h" #include "imgui.h" #include "imgui_impl_glfw.h" #include "imgui_impl_opengl3.h" //以上是放在同目录的头文件#include <glad/glad.h> #include <GLFW/glfw3.…...

OpenSIP2.4.11 向 FreeSWITCH 注册

应朋友要求做了个简单的测试&#xff0c;花费时间不过半小时&#xff0c;记录如下&#xff1a; OpenSIPS IP 地址&#xff1a;192.168.31.213 FreeSWITCH IP 地址&#xff1a;192.168.31.166 加载 uac_registrant 模块&#xff08;这个模块依赖 uac_auth 模块&#xff0c;得…...

【C++】深入理解 C++ 优先级队列、容器适配器与 deque:实现与应用解析

个人主页: 起名字真南的CSDN博客 个人专栏: 【数据结构初阶】 &#x1f4d8; 基础数据结构【C语言】 &#x1f4bb; C语言编程技巧【C】 &#x1f680; 进阶C【OJ题解】 &#x1f4dd; 题解精讲 目录 前言&#x1f4cc; 1. 优先级队列、容器适配器和 deque 概述✨1.1 什么是优…...

Android 开发与救砖工具介绍

Android 开发与救砖工具介绍 在 Android 开发和设备维护中&#xff0c;fastboot、adb 和 9008 模式是三个非常重要的工具和模式。它们各自有不同的用途和操作方式&#xff0c;对于开发者和技术支持人员来说&#xff0c;了解它们的功能和使用方法是必不可少的。 1. Fastboot …...

vue2和vue3:diff算法的区别?

Vue 2 和 Vue 3 在 diff 算法方面的主要区别是&#xff1a; Vue 2 使用普通的 diff 算法&#xff0c;它会遍历所有的节点进行比对。 Vue 3 引入了 patch flag 的概念&#xff0c;并且对 diff 算法进行了优化&#xff0c;比如在相同层级的节点间不会去递归比对已经被移除的节点…...

后端返回大数问题

这个问题并不难,但是在开发的时候没有注意到 后端返回了一个列表数据,包含id,这个id是一个大数,列表进入详情,需要将id传入到详情页面详情页面内部通过id获取数据一直404,id不正确找问题,从路由传参到请求数据发现id没有问题,然后和后端进行联调,发现后端返回的id和我获取的id…...

Python爬虫实战:研究MechanicalSoup库相关技术

一、MechanicalSoup 库概述 1.1 库简介 MechanicalSoup 是一个 Python 库,专为自动化交互网站而设计。它结合了 requests 的 HTTP 请求能力和 BeautifulSoup 的 HTML 解析能力,提供了直观的 API,让我们可以像人类用户一样浏览网页、填写表单和提交请求。 1.2 主要功能特点…...

第19节 Node.js Express 框架

Express 是一个为Node.js设计的web开发框架&#xff0c;它基于nodejs平台。 Express 简介 Express是一个简洁而灵活的node.js Web应用框架, 提供了一系列强大特性帮助你创建各种Web应用&#xff0c;和丰富的HTTP工具。 使用Express可以快速地搭建一个完整功能的网站。 Expre…...

MPNet:旋转机械轻量化故障诊断模型详解python代码复现

目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...

19c补丁后oracle属主变化,导致不能识别磁盘组

补丁后服务器重启&#xff0c;数据库再次无法启动 ORA01017: invalid username/password; logon denied Oracle 19c 在打上 19.23 或以上补丁版本后&#xff0c;存在与用户组权限相关的问题。具体表现为&#xff0c;Oracle 实例的运行用户&#xff08;oracle&#xff09;和集…...

边缘计算医疗风险自查APP开发方案

核心目标:在便携设备(智能手表/家用检测仪)部署轻量化疾病预测模型,实现低延迟、隐私安全的实时健康风险评估。 一、技术架构设计 #mermaid-svg-iuNaeeLK2YoFKfao {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg…...

循环冗余码校验CRC码 算法步骤+详细实例计算

通信过程&#xff1a;&#xff08;白话解释&#xff09; 我们将原始待发送的消息称为 M M M&#xff0c;依据发送接收消息双方约定的生成多项式 G ( x ) G(x) G(x)&#xff08;意思就是 G &#xff08; x ) G&#xff08;x) G&#xff08;x) 是已知的&#xff09;&#xff0…...

Python爬虫(二):爬虫完整流程

爬虫完整流程详解&#xff08;7大核心步骤实战技巧&#xff09; 一、爬虫完整工作流程 以下是爬虫开发的完整流程&#xff0c;我将结合具体技术点和实战经验展开说明&#xff1a; 1. 目标分析与前期准备 网站技术分析&#xff1a; 使用浏览器开发者工具&#xff08;F12&…...

JDK 17 新特性

#JDK 17 新特性 /**************** 文本块 *****************/ python/scala中早就支持&#xff0c;不稀奇 String json “”" { “name”: “Java”, “version”: 17 } “”"; /**************** Switch 语句 -> 表达式 *****************/ 挺好的&#xff…...

Vue ③-生命周期 || 脚手架

生命周期 思考&#xff1a;什么时候可以发送初始化渲染请求&#xff1f;&#xff08;越早越好&#xff09; 什么时候可以开始操作dom&#xff1f;&#xff08;至少dom得渲染出来&#xff09; Vue生命周期&#xff1a; 一个Vue实例从 创建 到 销毁 的整个过程。 生命周期四个…...

MyBatis中关于缓存的理解

MyBatis缓存 MyBatis系统当中默认定义两级缓存&#xff1a;一级缓存、二级缓存 默认情况下&#xff0c;只有一级缓存开启&#xff08;sqlSession级别的缓存&#xff09;二级缓存需要手动开启配置&#xff0c;需要局域namespace级别的缓存 一级缓存&#xff08;本地缓存&#…...