给系统打补丁升级漏洞,俗称服务升级,自己心得篇

需要升级的服务,tomcat、nginx、openssh

这里我自己总结一下,所谓的打补丁,升级,就是公司的服务器版本比较低,都是需要升级的,没有再最新版本,他们公司自己内部的系统就会扫描出来各种各样的漏洞,需要你去打补丁,如果这个时候你一个一个去打补丁,会有上百上千个根本补不完,最好的方法就是给他们服务升级到最新版本,一劳永逸。

需要准备环境

第一,如果是局域网的话,可能是没有网,你需要提前准备这些服务的war包,提前下好,还有编译环境什么的,都有需要提前下载到自己的优盘里面。
第二,他们服务能不能停你也不知道,所以你就需要问他们能不能停服务,不能停就需要等到他们下班,你再去升级。

升级案例一 tomcat升级

原本版本tomca-8.5版本------升级到10.4
先查看tomcat有没有在运行
在这里插入图片描述

查看tomcat版本

[root@k8s-master bin]# pwd
/usr/local/tomcat/bin
[root@k8s-master bin]# ./version.sh
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr/local/java
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Server version: Apache Tomcat/8.5.46
Server built:   Sep 16 2019 18:16:19 UTC
Server number:  8.5.46.0
OS Name:        Linux
OS Version:     3.10.0-1160.49.1.el7.x86_64
Architecture:   amd64
JVM Version:    1.8.0_121-b13
JVM Vendor:     Oracle Corporation
[root@k8s-master bin]#

先停止服务

./shutdown.sh

在这里插入图片描述

打包现有Tomcat目录下logs和webapps目录

cd
cd apache-tomcat-8.5
tar cvf logs.tar logs
tar cvf webapps.tar webapps

备份现有Tomcat目录

cd
mv apache-tomcat-8.5 apache-tomcat-8.5.bak

准备tomcat最新版war包,没有去官网下载

jdk就不用下载啦,一般有老版本jdk默认都是给配置好的
在这里插入图片描述

上传Tomcat安装包并解压

在这里插入图片描述

cd
tar xvf apache-tomcat-10.0.14.tar.gz -C /usr/local

环境变量我这里没有配置,因为上面老版本已经配置啦

vim /etc/profile
source /etc/profile

JAVA_HOME=/usr/local/java
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME PATH

查看一下jdk版本,这一步可以省略

[root@k8s-master tomcat]# java -version
java version "1.8.0_121"
Java(TM) SE Runtime Environment (build 1.8.0_121-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode)

迁移原项目及日志

先移动到老版本目录下,把默认发布目录以及日志都进行打包一下

cd apache-tomcat-8.5.46.bak
mv webapps webapps_bak

在这里插入图片描述

再进入新版的tomcat下面

cp /apache-tomcat-6.0.18_bak/webapps.tar ./
cp /apache-tomcat-6.0.18_bak/logs.tar ./
tar xvf webapps.tar
tar xvf logs.tar

在这里插入图片描述

启动验证

[root@k8s-master bin]# pwd
/usr/local/tomcat/bin
[root@k8s-master bin]# ./startup.sh
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr/local/java
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:
Tomcat started.

在这里插入图片描述

查看版本

./version.sh
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr/local/java
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:
Server version: Apache Tomcat/10.0.14
Server built:   Dec 2 2021 22:01:36 UTC
Server number:  10.0.14.0
OS Name:        Linux
OS Version:     3.10.0-1160.49.1.el7.x86_64
Architecture:   amd64
JVM Version:    1.8.0_121-b13
JVM Vendor:     Oracle Corporation

在这里插入图片描述

如果有需要改端口可以进行修改

[root@k8s-master conf]# pwd
/usr/local/tomcat/conf
[root@k8s-master conf]# ls
Catalina             context.xml           logging.properties  tomcat-users.xsd
catalina.policy      jaspic-providers.xml  server.xml          web.xml
catalina.properties  jaspic-providers.xsd  tomcat-users.xml
[root@k8s-master conf]# vim server.xml

在这里插入图片描述

升级案例二 openssh升级

离线升级CentOS7.x的openssh8.8p1详解
先查看原先的版本

创建用户,因为root用户一般都不支持远程登录
先创建普通用户

useradd   用户名
passwd    改密码
[root@k8s-master openssh]# ssh -V
OpenSSH_8.8p1, OpenSSL 1.1.1h  22 Sep 2020

第一点,升级openssh,要先升级openssl,这是必须的
第二点,最好使用telnet连接,不然你的ssh升级过程中出现错误,你会连不上服务器
在这里插入图片描述

安装telnet

为了防止升级失败,在升级之前安装telnet服务,通过Telnet连接服务器进行升级
1.1、安装telnet-server以及xinetd

yum install xinetd telnet-server -y
vim /etc/xinetd.d/telnet

下面编写的内容无需修改

service telnet
{
    disable = yes
    flags       = REUSE
    socket_type = stream
    wait        = no
    user        = root
    server      = /usr/sbin/in.telnetd
    log_on_failure  += USERID
}

配置telnet登录的终端类型,在/etc/securetty文件末尾增加一些pts终端,如下

vim /etc/securetty
pts/0
pts/1
pts/2
pts/3

动态查看一下最后5行
tail -5 /etc/securetty
在这里插入图片描述

启动

systemctl enable xinetd
systemctl enable telnet.socket
systemctl start telnet.socket
systemctl start xinetd
netstat -lntp|grep 23

如果出现报错

netstat可能会报错,原因是没有安装net-tools工具包
yum install net-tools -y

再次查看
在这里插入图片描述

切换到telnet方式登录,以后的操作都在telnet终端下操作,防止ssh连接意外中断造成升级失败

在这里插入图片描述

2、升级准备工作

2.1、查看系统版本和ssh版本

cat /etc/redhat-release
ssh -V

在这里插入图片描述

需要将openssh升级到最新版本

直接yum安装即可

yum install openssh -y

在这里插入图片描述

安装需要的依赖包

yum -y install gcc gcc-c++ kernel-devel zlib*

在这里插入图片描述

安装包准备

3.1、下载安装包

 zlib-1.2.11.tar.gz 下载地址:http://www.zlib.net/zlib-1.2.11.tar.gz     
 也可以直接下载:wget http://www.zlib.net/zlib-1.2.11.tar.gz
openssl-1.1.1h.tar.gz 下载地址:https://www.openssl.org/source/openssl-1.1.1h.tar.gz  
也可以直接下载:wget https://www.openssl.org/source/openssl-1.1.1h.tar.gz
openssh-8.4p1.tar.gz 下载地址:http://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-8.4p1.tar.gz  
也可以直接下载:wget http://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-8.4p1.tar.gz

查看安装包:
在这里插入图片描述

解压安装包,我习惯将安装包解压到/usr/local/下面

tar -zxf openssl-1.1.1h.tar.gz -C /usr/local/
tar -zxf openssh-8.8p1.tar.gz -C /usr/local/
tar -zxf zlib-1.2.11.tar.gz -C /usr/local/
ll /usr/local

在这里插入图片描述

安装 openssl-1.1.1h.tar.gz

[root@k8s-master openssh]# cd /usr/local/openssl-1.1.1h/
[root@k8s-master openssl-1.1.1h]# ./config --prefix=/usr/local/ -d shared

在这里插入图片描述

[root@k8s-master openssl-1.1.1h]# make && make install  #如果不行先make,再执行 make install

查看上一步是否执行成功

[root@k8s-master openssl-1.1.1h]# echo $?
0

#注
#make成功标识
在这里插入图片描述
查看上一步是否执行成功

[root@k8s-master openssl-1.1.1h]# echo $?
0

#make install 成功标识
在这里插入图片描述

注: -v或–verbose:用此选项时,ldconfig将显示正在扫描的目录及搜索到的动态链接库,还有它所创建的连接的名字.

[root@k8s-master openssl-1.1.1h]# echo '/usr/local/ssl/lib' >> /etc/ld.so.conf
[root@k8s-master openssl-1.1.1h]# ldconfig -v

在这里插入图片描述

安装openssh-8.8p1.tar.gz

mv /etc/ssh /etc/ssh.bak
cd /usr/local/openssh-8.8p1/
./configure --prefix=/usr/local/openssh --sysconfdir=/etc/ssh --with-ssl-dir=/usr/local/ssl

查看这一步是否执行成功
在这里插入图片描述

[root@k8s-master openssl-1.1.1h]# make && make install  #如果不行先make,再执行 make install

查看上一步是否执行成功

[root@k8s-master openssl-1.1.1h]# echo $?
0

#注
#make
在这里插入图片描述
#make install
在这里插入图片描述

sshd_config文件修改(以实际情况进行修改,源配置文件没有就不用添加)

这个我没有添加,可以省略这一步

echo "X11Forwarding yes" >> /etc/ssh/sshd_config
echo "X11UseLocalhost no" >> /etc/ssh/sshd_config
echo "XAuthLocation /usr/bin/xauth" >> /etc/ssh/sshd_config
echo "UseDNS no" >> /etc/ssh/sshd_config
echo 'PermitRootLogin yes' >> /etc/ssh/sshd_config
echo 'PubkeyAuthentication yes' >> /etc/ssh/sshd_config
echo 'PasswordAuthentication yes' >> /etc/ssh/sshd_config

备份 /etc/ssh 原有文件,并将新的配置复制到指定目录

移动备份一

mv /usr/sbin/sshd /usr/sbin/sshd.bak
cp -rf /usr/local/openssh/sbin/sshd /usr/sbin/sshd

移动备份二

mv /usr/bin/ssh /usr/bin/ssh.bak
cp -rf /usr/local/openssh/bin/ssh /usr/bin/ssh 

移动备份三

mv /usr/bin/ssh-keygen /usr/bin/ssh-keygen.bak
cp -rf /usr/local/openssh/bin/ssh-keygen /usr/bin/ssh-keygen
ssh -V

查看版本ssh -V
在这里插入图片描述

启动sshd

[root@k8s-master openssh-8.8p1]# systemctl stop sshd.service
[root@k8s-master openssh-8.8p1]# rm -rf /lib/systemd/system/sshd.service
[root@k8s-master openssh-8.8p1]# systemctl daemon-reload
[root@k8s-master openssh-8.8p1]# cp /usr/local/openssh-8.8p1/contrib/redhat/sshd.init /etc/init.d/sshd

启动查看状态

/etc/init.d/sshd restart
Restarting sshd (via systemctl):  Warning: sshd.service changed on disk. Run 'systemctl daemon-reload' to reload units.
                                                           [  确定  ]
[root@k8s-master openssh-8.8p1]# systemctl status sshd

在这里插入图片描述

添加开机启动

chkconfig --add  sshd
chkconfig --list sshd

在这里插入图片描述

正常情况是创建的普通用户进行登录,然后切换到root用户

测试一下用其他用户能不能登录 ssh服务

这里解决一下,升级完成之后root用户不能登录的问题

/etc/ssh/sshd_config 
PermitRootLogin

no是禁止登录,yes是允许 
有的公司要求root禁止登录 根据需要调试

在这里插入图片描述

[root@k8s-master openssh-8.8p1]# su ming
[ming@k8s-master openssh-8.8p1]$ ssh root@196.196.196.22
Last login: Sun Dec 19 22:27:53 2021 from 196.196.196.1

在这里插入图片描述

删除Telnet服务

升级完成后删除telnet服务。

systemctl disable xinetd.service
systemctl stop xinetd.service
systemctl disable telnet.socket
systemctl stop telnet.socket
netstat -lntp
yum remove telnet-server xinetd -y

升级openssh遇到的问题总结

问题一启动不起来 sshd

在这里插入图片描述第一,文件权限的问题没有修改
把这几个文件改为600试一下

在这里插入图片描述

修改完成后
执行ssh -t 看看有没有报错
在这里插入图片描述
测试能不能起来
在这里插入图片描述

问题二遇到其用户不能远程登录其他服务器

/etc/ssh
在这里插入图片描述

把配置文件里面都改成 no
在这里插入图片描述
测试成功但是有显示其他
在这里插入图片描述
报的错是这个配置文件下面的59行没有注释掉
在这里插入图片描述
测试完成可以登录,没有其他报错
在这里插入图片描述
重点
在这里插入图片描述

  • 5
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值