记录兼职运维的一天

news/2024/11/14 12:34:10/文章来源:https://www.cnblogs.com/chopper-poet/p/18355383

1.背景

7月底部门的运维大哥离职了,奈何又没有新运维接替,至于为什么没有补位,懂得都懂,按老大的意思是先让开发一人顶一块,8月底争取补上。

打心底我有点排斥这事,但是人到中年又有什么办法呢,上有老下有小,唯有苟。

分派给我的部分是服务器漏洞的修复,小弟虽然懂几个linux命令但是在“漏洞修复”这个词面前还是有点苍白,只能祈祷这个月没有工单过来了,但是怕什么来什么,第二天就来了一个工单,大概看下是什么内容。

 

 

 

2.补充点知识

大概看了一下有两类漏洞需要处理,分别是:

1.openssh 版本过低;

2.MySql版本过低。

这几台机器的操作系统是Centos 7.9,网上搜了一下对于Centos系统的软件升级大概有以下几种:

方法一   手动编译安装法:此方法仅仅针对源码包进行安装,该方法需要借助的工具gcc以及gcc_c++工具,在安装的时候一定要先安装好这两个工具才可以进行下一步安装。步骤一:获得软件包以后,将软件包解压。解压步骤要看具体压缩的是什么格式,根据格式应用对应的解压工具进行解压。步骤二:cd到软件包内的bin目录下。步骤三:执行编译命令:make,该步骤的目的是将源文件编译成为二进制文件,以便下一步安装。步骤四:执行安装命令:make install。安装软件操作。如果想安装到 tool目录下,可以执行:make install /tool/编译法的优点就是利于找到文件夹以及源文件,方便与后期的卸载。缺点当该软件包需要依赖包的时候需要解决依赖包的问题才可以装上软件,相对比较麻烦。方法二  RPM安装方式:找到软件的RPM包的时候,执行rpm -ivh xxx.rpm,即可安装软件。rpm包只是将源码包打压成为了rpm文件格式,使用rpm工具进行安装。安装的时候同样会收到依赖包以及系统环境的影响。和手动编译安装法相比,rpm的优势在于升级和卸载。如果有更高级的kk.rpm包时,执行命令:rpm -uvh kk.rpm 即可升级软件,不像编译法先卸载再安装。卸载软件rpm -e kk.rpm,即可卸载。方法三  yum源安装方法:该方法需要借助到网络,访问到yum源才可以进行安装。如果是需要访问互联网上的yum源,则需要链接互联可以使用此方法进行访问。很多企业为了本地运行环境的安全性来考虑,一般禁止链接互联网。以通过yum源安装mysql为例:执行命令 yum install -y mysql  即可通过yum方式进行安装。通过yum 方式卸载 ,命令:yum remove mysql,即可卸载mysql。用该方法安装软件,yum源很重要,可以自己配置一个yum源,也可以使用互联网上面的yum源。推荐使用互联网上面的开源yum源,如果自己搭建yum源,其中的工具包比较难以收集全。更改或者设置yum源在文件yum.repo文件中进行更改。https://forum.huawei.com/enterprise/zh/thread/580933440356892672

个人感觉后两种最简单,相当于别人已经制作好了软件包只需要自己安装一下就好,但悲催的是找不到openssh最新版本的包,只能硬着头皮尝试自己通过源码编译,相比而言Mysql就舒服一点,官方有现成的包。 

3.升级openssh

对于一个新手来说,开始之前总会先找一系列补救措施,以备不时之需,下面是我搜集的一些免死金牌。

3.1 开启telnet

有网友说先把telnet打开,以防openssh升级失败导致机器失联(当然也可以硬着头皮去找虚拟机管理员,控制台终归是能进去的)。

yum install -y telnet* xinetd
vim /etc/pam.d/remote
#注释掉auth required pam_securetty.so这一行
systemctl start xinetd.service
systemctl start telnet.socket
systemctl enable telnet.socke

3.2 虚拟机快照

虚拟机一般都提供了快照功能,简单理解为备份和还原功能,系统被搞坏了以后可以快速恢复。

3.3 提前模拟

毕竟是新手,对着客户环境直接开大太冒失,不妨找台内网的测试机器或者自己安装虚拟机模拟一下,做到心中有数。

3.4 开始编译

逐个下载源码包,openssh依赖zlib和openssl,编译openssh之前需要先把zlib和openssl编译。

#统一在/opt/ssh-upgrade/source/ 目录操作
#openssh 下载&解压
wget 'http://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-9.8p1.tar.gz'
tar zxvf openssh-9.8p1.tar.gz
#openssl 下载&解压
wget https://www.openssl.org/source/old/1.1.1/openssl-1.1.1w.tar.gz
tar zxvf openssl-1.1.1w.tar.gz
#zlib下载&解压
wget https://zlib.net/fossils/zlib-1.3.1.tar.gz
tar zxvf zlib-1.3.1.tar.gz
#编译zlib
cd /opt/ssh-upgrade/source/zlib-1.3.1configure可能会出现的错误
Checking for gcc...
Compiler error reporting is too harsh for ./configure (perhaps remove -Werror).
** ./configure aborting.这时需要安装软件
yum install -y gcc gcc-c++./configure --prefix=/opt/ssh-upgrade/zlib
make && make install
#编译openssl
#备份配置
cp -rf /etc/ssl/ /opt/ssh-upgrade/config_bak/sslcd /opt/ssh-upgrade/source/openssl-1.1.1w./config --prefix=/opt/ssh-upgrade/openssl/ --openssldir=/opt/ssh-upgrade/openssl/ shared
make && make installln -sf /opt/ssh-upgrade/openssl/bin/openssl /usr/bin/openssl
ln -sf /opt/ssh-upgrade/openssl/include/openssl /usr/include/openssl
echo '/opt/ssh-upgrade/openssl/lib' >> /etc/ld.so.conf.d/ssh-upgrade.conf
ldconfig
#编译openssh
#备份配置
cp -rf /etc/ssh/ /opt/ssh-upgrade/config_bak/sshcd /opt/ssh-upgrade/source/openssh-9.8p1
./configure --prefix=/opt/ssh-upgrade/openssh/ --sysconfdir=/opt/ssh-upgrade/openssh/ssh/ --with-openssl-includes=/opt/ssh-upgrade/openssl/include/ --with-ssl-dir=/opt/ssh-upgrade/openssl/ --with-zlib=/opt/ssh-upgrade/zlib/ --with-md5-passwords --without-openssl-header-check
make && make install
ln -sf /opt/ssh-upgrade/openssh/sbin/sshd /usr/sbin/sshd
ln -sf /opt/ssh-upgrade/openssh/bin/ssh /usr/bin/ssh
ln -sf /opt/ssh-upgrade/openssh/bin/ssh-add /usr/bin/ssh-add
ln -sf /opt/ssh-upgrade/openssh/bin/ssh-agent /usr/bin/ssh-agent
ln -sf /opt/ssh-upgrade/openssh/bin/ssh-keygen /usr/bin/ssh-keygen
ln -sf /opt/ssh-upgrade/openssh/bin/ssh-keyscan /usr/bin/ssh-keyscan
#还原配置
cp -rf /opt/ssh-upgrade/config_bak/ssh /etc/ssh/
# 加入开机启动之类的
chkconfig --add sshd
chkconfig sshd on
systemctl enable sshd.socket
systemctl restart sshd
systemctl status sshd

不出意外的话意外就发生了,网络闪断了一下,然后这台机器连不上了,因为是用内网的测试机器练手,所以即没开telnet也没找管理员做快照,只能硬着头皮找管理员用控制台进入机器看看啥情况,管理员猜测是ssh服务没有成功启动导致,但是通过systemctl status sshd发现服务没有问题,那大概率就是配置问题了,网上说的比较多的是/etc/ssh/sshd_config中的PermitRootLogin yes没有打开导致,但是查看配置也没有问题,内心深处有一个声音若隐若现“重启一把看看”,然并卵。  

3.5 复盘

冷静下来之后,我逐条检查之前执行过的命令,其中有一个细节引起了我的怀疑,一起来看下。

./configure --prefix=/opt/ssh-upgrade/openssh/ --sysconfdir=/opt/ssh-upgrade/openssh/ssh/ --with-openssl-includes=/opt/ssh-upgrade/openssl/include/ --with-ssl-dir=/opt/ssh-upgrade/openssl/ --with-zlib=/opt/ssh-upgrade/zlib/ --with-md5-passwords --without-openssl-header-check

--sysconfdir=/opt/ssh-upgrade/openssh/ssh/,这个参数指定了配置文件的位置为/opt/ssh-upgrade/openssh/ssh/,所以我将最开始备份的配置文件恢复回/etc/ssh/自然是没用,那解决方案也就很简单了,将/opt/ssh-upgrade/openssh/ssh/sshd_config中的PermitRootLogin yes打开即可。

网上找的资料一定要弄懂,不要稀里糊涂的执行。

4.升级MySql

MySql的升级相对来说就简单一点了,有现成的软件包,下载了执行就好。

4.1 下载5.7.44的安装包

https://cdn.mysql.com/archives/mysql-5.7/mysql-5.7.44-1.el7.x86_64.rpm-bundle.tar

4.2 备份

配置文件和数据

cp /etc/my.cnf /data/back/my.cnf_0807mysqldump -uroot -p'xxx' --all-databases>/data/back/sqlfiles_0807.sql

4.3 停止数据库

systemctl stop mysqld

4.4 使用Uvh升级  

rpm -Uvh mysql-community-common-5.7.44-1.el7.x86_64.rpm --nodeps
rpm -Uvh mysql-community-libs-5.7.44-1.el7.x86_64.rpm --nodeps
rpm -Uvh mysql-community-libs-compat-5.7.44-1.el7.x86_64.rpm --nodeps
rpm -Uvh mysql-community-devel-5.7.44-1.el7.x86_64.rpm --nodeps
rpm -Uvh mysql-community-client-5.7.44-1.el7.x86_64.rpm --nodeps
rpm -Uvh mysql-community-server-5.7.44-1.el7.x86_64.rpm --nodeps

4.5 启动mysqld

service mysqld restart

 

4.6 检查更新

mysql_upgrade -uroot -p

参考https://dev.mysql.com/doc/refman/5.7/en/mysql-upgrade.html

4.7 重启mysql

systemctl restart mysqld

 

5.写在最后

本来挺多感慨和负面情绪想抒发一下的,但是真正把事情做完的时候好像又是一种“不以物喜,不以己悲”的心态,老了?怂了?和自己和解了?
人到中年,懂得都懂!  

 

  

  

  

  

 

  

 

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

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

相关文章

Teamcenter数据库-获取组别

1、select pg.*,isnull(pn.PIPL10N_NAME_4,pn_EN.PIPL10N_NAME_4) cn_group_name fromPPOM_GROUP pgleft joinPL10N_NAME pn on pg.puid = pn.puid and pn.PIPL10N_NAME_7 = ZH_CNleft joinPL10N_NAME pn_EN on pg.puid = pn_EN.puid and pn_EN.PIPL10N_NAME_7 = EN_US

预见未来科技,尽在指尖滑动间——手机产品模型可视化

在这个日新月异的数字时代,手机已不仅仅是通讯工具,它更是我们生活方式的延伸,是连接世界的窗口,是创意与科技的完美结晶。想象一下,在浩瀚的数字海洋中,一款尚未面世的手机,通过高精度的3D建模技术,以逼真无比的方式展现在你眼前。屏幕上的每一个像素都跃动着生命的活…

数据可视化是什么?带你了解各行业看板!

数据可视化是一种通过图形化手段将数据呈现出来的技术,它将复杂的数据和信息转化为易于理解的图表、地图、仪表盘等视觉元素,使得数据的模式、趋势和关系更加直观地展现出来。通过数据可视化,用户可以快速识别重要信息、发现潜在问题,并做出数据驱动的决策。这种技术不仅提…

Jenkins+gitlab+harbor+docker-compose自动化部署配置

本文主要讲解Jenkins在Linux环境下实现自动化部署项目(提供一种思路) 持续集成与持续部署(CI/CD)流程的实现,需要依赖一系列先进的工具和技术。这些工具不仅提高了开发效率,还确保了代码质量和发布的可靠性。以下是构建CI/CD流程所需的关键工具列表及其作用概述:Jenkins…

手把手教你实现Scrapy-Redis分布式爬虫:从配置到最终运行的实战指南

本文详细讲解了如何通过Scrapy-Redis实现分布式爬虫的全过程,涵盖配置步骤、代码实现以及最终运行的效果展示。通过实战操作,帮助读者快速掌握Scrapy-Redis在分布式爬虫中的应用技巧。1.scrapy-redis的环境准备 pip install scrapy-redis安装完毕之后确保其可以正常导入使用即…

建站过程中很容易让人忽视的三大细节

一个网站的建设是需要专业性、技术性很强的人才能够做的,并不是敲打一些代码、上传一些图片就可以的了,如果在建设网站的时候设计不当,很有可能不会让搜索引擎收录,所以用户也就不可能通过检索来访问网站了。在网站建设中大家都很忽视一些关键的细节,比如:关键词的分布,…

帝国CMS列表页面调用关键字TAG的方法

$nsmalltext=$r[smalltext]; $ntext=strip_tags($nsmalltext);//去除内容简介里的HTML标签 $newtext=esub($ntext,100,...) ;//限制100字 $keyboard=$r[keyboard]; $r_tag=explode(",",$keyboard); $tempid=1;//这里是搜索模板ID for($i=0;$i<count($r_tag);$i++)…

帝国cms数据表删除之后怎么找回来

如果不小心删除了帝国cms数据表,可以尝试以下步骤进行恢复: 1. 从备份中恢复 如果已对数据库进行了备份,则可以从备份中还原数据。确定备份的时间点是否包含要恢复的数据。根据备份类型选择合适的恢复方法,例如使用phpmyadmin、mysqldump或innodb recovery tool。2. 使用“…

暑假集训CSP提高模拟19

暑假集训CSP提高模拟19\(T1\) P173. 数字三角形 \(20pts\)原题: CF1517C Fillomino 2 部分分\(20pts\) :剪枝搜索。点击查看代码 int p[510],c[510],ans[510][510],dx[5]={0,1,-1,0,0},dy[5]={0,0,0,-1,1}; void dfs(int pos,int x,int y,int num,int n) {if(pos==n+1){for(i…

【算法学习】排序算法汇总

冒泡排序 1、冒泡排序简介冒泡排序的英文Bubble Sort,是一种最基础的交换排序。之所以叫做冒泡排序,因为每一个元素都可以像小气泡一样,根据自身大小一点一点向数组的一侧移动冒泡排序的原理:冒泡轮数:每一轮只能将该轮中最大的数排至最后面。即第一轮只能确定将末位上的数…

安装local-path-provisioner基于HostPath动态制备PV

目录一、背景二、安装local-path-provisioner1、地址2、更改 local-path-provisioner 使用的默认存储路径3、创建文件并提权4、创建 NameSpace5、应用 local-path-storage6、验证相关资源状态三、设置 local-path 为default SC四、使用 StorageClass 动态制备 PV1、创建PVC2、创…