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

完成

欢迎点赞收藏一键三连!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/473057.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PETR/PETRv2/StreamPETR论文阅读

1. PETR PETR网络结构如下&#xff0c;主要包括image-backbone&#xff0c;3D Coordinates Generator&#xff0c;3D Position Encoder&#xff0c;transformer Decoder四个模块。 把N 个视角的图像输入到骨干网络中以提取 2D 多视图特征。在 3D 坐标生成器中&#xff0c;首先…

若点集A=B则A必能恒等变换地变为B=A这一几何常识推翻直线(平面)公理

黄小宁 关键词&#xff1a;“更无理”复数 复平面z各点z的对应点z1的全体是z1面。z面平移变为z1面就使x轴⊂z面沿本身平移变为ux1轴。R可几何化为R轴&#xff0c;R轴可沿本身平移变为R′轴&#xff0c;R′轴可沿本身平移变为R″轴&#xff0c;...。直线公理和平面公理使几百年…

在Node.js中如何使用TypeScript

第一步&#xff1a;创建一个Node.js项目的package.json文件 npm init -y第二步&#xff1a;添加TypeScript、添加node.d.ts npm install typescript -D npm install types/node -D第三步&#xff1a;初始化一个tsconfig.json文件 npx tsc --init --rootDir src --outDir lib…

海康大华宇视视频平台EasyCVR私有化视频平台服务器选购主要参数有哪些?

在构建现代服务器和视频监控系统时&#xff0c;选择合适的硬件配置和关键技术是确保系统性能和稳定性的基础。服务器选购涉及到多个关键参数&#xff0c;这些参数直接影响到服务器的处理能力、数据存储、网络通信等多个方面。 同时&#xff0c;随着视频监控技术的发展&#xf…

async 和 await的使用

一、需求 点击按钮处理重复提交&#xff0c;想要通过disabled的方式实现。 但是点击按钮调用的方法里有ajax、跳转、弹窗等一系列逻辑操作&#xff0c;需要等方法里流程都走完&#xff0c;再把disabled设为false&#xff0c;这样下次点击按钮时就可以继续走方法里的ajax等操作…

【Pikachu】XML外部实体注入实战

若天下不定&#xff0c;吾往&#xff1b;若世道不平&#xff0c;不回&#xff01; 1.XXE漏洞实战 首先写入一个合法的xml文档 <?xml version "1.0"?> <!DOCTYPE gfzq [<!ENTITY gfzq "gfzq"> ]> <name>&gfzq;</name&…

g++与gdb简单学习

本文的内容由智谱清言产生 ------ 使用g编译C程序 使用gdb设置断点&#xff0c;反汇编代码&#xff0c;单步执行 int main() {int a 1;a;return 0; } 1.编译程序&#xff1a;使用 g 编译器将 C 源代码编译成 IA-32 可执行文件。 这可以通过添加 -m32 标志来实现&#xff0…

【小白可懂】微信小程序---课表渲染

结果展示&#xff1a;&#xff08;代码在最后&#xff09; WeChat_20241116174431 项目简介 在数字化校园建设的大背景下&#xff0c;为了更好地服务于在校师生&#xff0c;我们开发了一款基于微信小程序的课表管理系统。该系统采用了现代化的前端技术和优雅的设计风格&#x…

【实验11】卷积神经网络(2)-基于LeNet实现手写体数字识别

&#x1f449;&#x1f3fc;目录&#x1f448;&#x1f3fc; &#x1f352;1. 数据 1.1 准备数据 1.2 数据预处理 &#x1f352;2. 模型构建 2.1 模型测试 2.2 测试网络运算速度 2.3 输出模型参数量 2.4 输出模型计算量 &#x1f352;3. 模型训练 &#x1f352;4.模…

Python酷库之旅-第三方库Pandas(221)

目录 一、用法精讲 1036、pandas.DatetimeIndex.to_pydatetime方法 1036-1、语法 1036-2、参数 1036-3、功能 1036-4、返回值 1036-5、说明 1036-6、用法 1036-6-1、数据准备 1036-6-2、代码示例 1036-6-3、结果输出 1037、pandas.DatetimeIndex.to_series方法 10…

【WPF】Prism学习(三)

Prism Commands 1.复合命令&#xff08;Composite Commanding&#xff09; 这段内容主要介绍了在应用程序中如何使用复合命令&#xff08;Composite Commands&#xff09;来实现多个视图模型&#xff08;ViewModels&#xff09;上的命令。以下是对这段内容的解释&#xff1a; …

【Oracle篇】掌握SQL Tuning Advisor优化工具:从工具使用到SQL优化的全方位指南(第六篇,总共七篇)

&#x1f4ab;《博主介绍》&#xff1a;✨又是一天没白过&#xff0c;我是奈斯&#xff0c;DBA一名✨ &#x1f4ab;《擅长领域》&#xff1a;✌️擅长Oracle、MySQL、SQLserver、阿里云AnalyticDB for MySQL(分布式数据仓库)、Linux&#xff0c;也在扩展大数据方向的知识面✌️…

【一键整合包及教程】AI照片数字人工具EchoMimic技术解析

在数字化时代&#xff0c;人工智能&#xff08;AI&#xff09;正以前所未有的速度改变着我们的生活。EchoMimic&#xff0c;作为蚂蚁集团旗下支付宝推出的开源项目&#xff0c;不仅为数字人技术的发展掀开了新的一页&#xff0c;更为娱乐、教育、虚拟现实、在线会议等多个领域带…

基于Lora通讯加STM32空气质量检测WIFI通讯

目录 目录 前言 一、本设计主要实现哪些很“开门”功能&#xff1f; 二、电路设计原理图 1.电路图采用Altium Designer进行设计&#xff1a; 2.实物展示图片 三、程序源代码设计 四、获取资料内容 前言 随着环境污染问题的日益严重&#xff0c;空气质量的监测与管理已经…

GitLab 降级安装出现 500 错误,如何解决?

本文分享 GitLab 中文版在降级的过程中出现 500 错误的修复方法。 写在前面 强烈不建议大家自行降级&#xff0c;如果真有降级需求&#xff0c;要么自己能力过硬&#xff0c;要么寻求专业服务【https://dl.gitlab.cn/cm33bsfv】&#xff0c;要不出问题很麻烦&#xff01; 问…

2024-11-16 串的存储结构

一、顺序存储。 1.首先定一个静态数组&#xff0c;然后定义i记录串的实际长度。&#xff08;缺点&#xff1a;长度不可变&#xff09; 2.使用malloc申请动态空间&#xff0c;定义指针指向串的地址。&#xff08;需手动ferr&#xff09; 方案一&#xff1a; 数组末尾记录长度 …

PCHMI串口接收实验

插入的唯一一行代码 config1.START((Control)this, System.Reflection.Assembly.GetExecutingAssembly().GetTypes(), null);

代码随想录第46期 单调栈

这道题主要是单调栈的简单应用 class Solution { public:vector<int> dailyTemperatures(vector<int>& T) {vector<int> result(T.size(),0);stack<int> st;st.push(0);for(int i1;i<T.size();i){if(T[i]<T[st.top()]){st.push(i);}else{wh…

Spring 中的 BeanDefinitionParserDelegate 和 NamespaceHandler

一、BeanDefinitionParserDelegate Spring在解析xml文件的时候&#xff0c;在遇到<bean>标签的时候&#xff0c;我们会使用BeanDefinitionParserDelegate对象类解析<bean>标签的内容&#xff0c;包括<bean>标签的多个属性&#xff0c;例如 id name class in…

ODC 如何精确呈现SQL耗时 | OceanBase 开发者工具解析

前言 在程序员或DBA的日常工作中&#xff0c;编写并执行SQL语句如同日常饮食中的一餐一饭&#xff0c;再寻常不过。然而&#xff0c;在使用命令行或黑屏客户端处理SQL时&#xff0c;常会遇到编写难、错误排查缓慢以及查询结果可读性不佳等难题&#xff0c;因此&#xff0c;图形…