记录兼职运维的一天

打印 上一主题 下一主题

主题 541|帖子 541|积分 1623


1.配景

7月底部门的运维大哥离职了,奈何又没有新运维接替,至于为什么没有补位,懂得都懂,按老大的意思是先让开发一人顶一块,8月底争取补上。
打心底我有点排斥这事,但是人到中年又有什么办法呢,上有老下有小,唯有苟。
分派给我的部门是服务器漏洞的修复,小弟虽然懂几个linux下令但是在“漏洞修复”这个词面前还是有点苍白,只能祈祷这个月没有工单过来了,但是怕什么来什么,第二天就来了一个工单,大概看下是什么内容。
 

 

 
2.补充点知识

大概看了一下有两类漏洞必要处理,分别是:
1.openssh 版本过低;
2.MySql版本过低。
这几台呆板的操纵系统是Centos 7.9,网上搜了一下对于Centos系统的软件升级大概有以下几种:
  1. 方法一   手动编译安装法:此方法仅仅针对源码包进行安装,该方法需要借助的工具gcc以及gcc_c++工具,在安装的时候一定要先安装好这两个工具才可以进行下一步安装。
  2.            步骤一:获得软件包以后,将软件包解压。解压步骤要看具体压缩的是什么格式,根据格式应用对应的解压工具进行解压。
  3.            步骤二:cd到软件包内的bin目录下。
  4.            步骤三:执行编译命令:make,该步骤的目的是将源文件编译成为二进制文件,以便下一步安装。
  5.            步骤四:执行安装命令:make install。安装软件操作。如果想安装到 tool目录下,可以执行:make install /tool/
  6.            编译法的优点就是利于找到文件夹以及源文件,方便与后期的卸载。缺点当该软件包需要依赖包的时候需要解决依赖包的问题才可以装上软件,相对比较麻烦。
  7. 方法二  RPM安装方式:找到软件的RPM包的时候,执行rpm -ivh xxx.rpm,即可安装软件。rpm包只是将源码包打压成为了rpm文件格式,使用rpm工具进行安装。安装的时候同样会收到依赖包以及系统环境的影响。
  8.            和手动编译安装法相比,rpm的优势在于升级和卸载。如果有更高级的kk.rpm包时,执行命令:rpm -uvh kk.rpm 即可升级软件,不像编译法先卸载再安装。卸载软件rpm -e kk.rpm,即可卸载。
  9. 方法三  yum源安装方法:该方法需要借助到网络,访问到yum源才可以进行安装。如果是需要访问互联网上的yum源,则需要链接互联可以使用此方法进行访问。很多企业为了本地运行环境的安全性来考虑,一般禁止链接互联网。
  10.            以通过yum源安装mysql为例:执行命令 yum install -y mysql  即可通过yum方式进行安装。通过yum 方式卸载 ,命令:yum remove mysql,即可卸载mysql。
  11.            用该方法安装软件,yum源很重要,可以自己配置一个yum源,也可以使用互联网上面的yum源。推荐使用互联网上面的开源yum源,如果自己搭建yum源,其中的工具包比较难以收集全。
  12.             更改或者设置yum源在文件yum.repo文件中进行更改。
  13. https://forum.huawei.com/enterprise/zh/thread/580933440356892672
复制代码
个人感觉后两种最简单,相当于别人已经制作好了软件包只必要自己安装一下就好,但悲催的是找不到openssh最新版本的包,只能硬着头皮尝试自己通过源码编译,相比而言Mysql就惬意一点,官方有现成的包。 
3.升级openssh

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

有网友说先把telnet打开,以防openssh升级失败导致呆板失联(固然也可以硬着头皮去找假造机管理员,控制台终归是能进去的)。
  1. yum install -y telnet* xinetd
  2. vim /etc/pam.d/remote
  3. #注释掉auth required pam_securetty.so这一行
  4. systemctl start xinetd.service
  5. systemctl start telnet.socket
  6. systemctl enable telnet.socke
复制代码
3.2 假造机快照

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

究竟是新手,对着客户环境直接开大太冒失,不妨找台内网的测试呆板或者自己安装假造机模拟一下,做到胸有定见。
3.4 开始编译

逐个下载源码包,openssh依赖zlib和openssl,编译openssh之前必要先把zlib和openssl编译。
  1. #统一在/opt/ssh-upgrade/source/ 目录操作
  2. #openssh 下载&解压
  3. wget 'http://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-9.8p1.tar.gz'
  4. tar zxvf openssh-9.8p1.tar.gz
  5. #openssl 下载&解压
  6. wget https://www.openssl.org/source/old/1.1.1/openssl-1.1.1w.tar.gz
  7. tar zxvf openssl-1.1.1w.tar.gz
  8. #zlib下载&解压
  9. wget https://zlib.net/fossils/zlib-1.3.1.tar.gz
  10. tar zxvf zlib-1.3.1.tar.gz
复制代码
  1. #编译zlib
  2. cd /opt/ssh-upgrade/source/zlib-1.3.1
  3. configure可能会出现的错误
  4. Checking for gcc...
  5. Compiler error reporting is too harsh for ./configure (perhaps remove -Werror).
  6. ** ./configure aborting.
  7. 这时需要安装软件
  8. yum install -y gcc gcc-c++
  9. ./configure --prefix=/opt/ssh-upgrade/zlib
  10. make && make install
复制代码
  1. #编译openssl
  2. #备份配置
  3. cp -rf /etc/ssl/ /opt/ssh-upgrade/config_bak/ssl
  4. cd /opt/ssh-upgrade/source/openssl-1.1.1w
  5. ./config --prefix=/opt/ssh-upgrade/openssl/ --openssldir=/opt/ssh-upgrade/openssl/ shared
  6. make && make install
  7. ln -sf /opt/ssh-upgrade/openssl/bin/openssl /usr/bin/openssl
  8. ln -sf /opt/ssh-upgrade/openssl/include/openssl /usr/include/openssl
  9. echo '/opt/ssh-upgrade/openssl/lib' >> /etc/ld.so.conf.d/ssh-upgrade.conf
  10. ldconfig
复制代码
  1. #编译openssh
  2. #备份配置
  3. cp -rf /etc/ssh/ /opt/ssh-upgrade/config_bak/ssh
  4. cd /opt/ssh-upgrade/source/openssh-9.8p1
  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
  6. make && make install
  7. ln -sf /opt/ssh-upgrade/openssh/sbin/sshd /usr/sbin/sshd
  8. ln -sf /opt/ssh-upgrade/openssh/bin/ssh /usr/bin/ssh
  9. ln -sf /opt/ssh-upgrade/openssh/bin/ssh-add /usr/bin/ssh-add
  10. ln -sf /opt/ssh-upgrade/openssh/bin/ssh-agent /usr/bin/ssh-agent
  11. ln -sf /opt/ssh-upgrade/openssh/bin/ssh-keygen /usr/bin/ssh-keygen
  12. ln -sf /opt/ssh-upgrade/openssh/bin/ssh-keyscan /usr/bin/ssh-keyscan
  13. #还原配置
  14. cp -rf /opt/ssh-upgrade/config_bak/ssh /etc/ssh/
  15. # 加入开机启动之类的
  16. chkconfig --add sshd
  17. chkconfig sshd on
  18. systemctl enable sshd.socket
  19. systemctl restart sshd
  20. systemctl status sshd
复制代码
不出意外的话意外就发生了,网络闪断了一下,然后这台呆板连不上了,因为是用内网的测试呆板练手,以是即没开telnet也没找管理员做快照,只能硬着头皮找管理员用控制台进入呆板看看啥情况,管理员猜测是ssh服务没有乐成启动导致,但是通过systemctl status sshd发现服务没有题目,那大概率就是配置题目了,网上说的比力多的是/etc/ssh/sshd_config中的PermitRootLogin yes没有打开导致,但是检察配置也没有题目,心田深处有一个声音若隐若现“重启一把看看”,然并卵。  
3.5 复盘

冷静下来之后,我逐条检查之前执行过的下令,其中有一个细节引起了我的怀疑,一起来看下。
  1. ./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 备份

配置文件和数据
  1. cp /etc/my.cnf /data/back/my.cnf_0807
  2. mysqldump -uroot -p'xxx' --all-databases>/data/back/sqlfiles_0807.sql
复制代码
4.3 停止数据库

systemctl stop mysqld
4.4 使用Uvh升级  
  1. rpm -Uvh mysql-community-common-5.7.44-1.el7.x86_64.rpm --nodeps
  2. rpm -Uvh mysql-community-libs-5.7.44-1.el7.x86_64.rpm --nodeps
  3. rpm -Uvh mysql-community-libs-compat-5.7.44-1.el7.x86_64.rpm --nodeps
  4. rpm -Uvh mysql-community-devel-5.7.44-1.el7.x86_64.rpm --nodeps
  5. rpm -Uvh mysql-community-client-5.7.44-1.el7.x86_64.rpm --nodeps
  6. 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.写在末了

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

 
  
  
  
  

 
  
 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

商道如狼道

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表