1、年底客户一般会批量扫描服务器漏洞信息,最近客户反馈说我公司的Tomcat存在漏洞,漏洞情况如下:
从上图可知,只有升级至7.0.104版本以上才能解决漏洞:
通过http://blog.nsfocus.net/网站输入漏洞编号来查询相关漏洞及其处理方式。
[root@32 bin]# sh version.sh
Using CATALINA_BASE2: /usr/local/tomcat
Using CATALINA_HOME2: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr/local/jdk/
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Server version: Apache Tomcat/7.0.79
Server built: Jun 26 2017 16:25:20 UTC
Server number: 7.0.79.0
OS Name: Linux
Architecture: amd64
JVM Version: 1.7.0_56-b13
JVM Vendor: Oracle Corporation
本次我们升级至7.0.106版本。本次是小版本升级。
需要去官网下载tomcat版本。 官网地址:https://tomcat.apache.org/download-70.cgi
下周后传送到linux服务器上并解压:
[root@32 src]# ls
tomcat7.0.106.tar.gz
[root@32 src]# tar zxvf tomcat7.0.106.tar.gz
注释:tomcat版本升级有两种方式:
一是把tomcat新版本 tomcat/lib bin 这两个个目录复制到新版本的目录下,然后启动既可。
二是把tomcat旧版本的 conf目录及相关的war拷贝到目录下,因为需要用到conf目录下server.xml文件。然后启动即可。
[root@cbmp-33 conf]# ls
catalina.policy tomcat-users.xml catalina.properties logging.properties
Catalina context.xml server.xml web.xml
server.xml 系统启动加载核心文件,里面有网站模块这些信息。
tomcat-users.xml tomcat 管理站点,默认是8080,看war包是否正常启动等。
[root@cbmp-32 conf]# tail tomcat-users.xml
-->
<role rolename="manager"/>
<role rolename="tomcat"/>
<role rolename="probeuser"/>
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<user username="tocmat" password="tomcat" roles="manager-script,manager-gui,tomcat,manager,probeuser,poweruserplus,poweruser"/>
</tomcat-users>
拷贝并替换需要升级的目录: 需要先备份原先的bin和lib目录
[root@cbmp-33 tomcat]# mv bin bin_2020_12_14 #原来bin需要备份
[root@cbmp-33 tomcat]# mv lib lib_2020_12_14 #原来lib需要备份
[root@cbmp-33 tomcat]# cd /usr/local/src
[root@cbmp-33 src]# mv tomcat tocmat7.0.106
[root@cbmp-33 src]# cp tomcat7.0.106 /usr/local/
[root@cbmp-33 src]# cd /usr/local/tomcat7_106/
[root@cbmp-33 tomcat7_106]# cp bin lib /usr/lccal/tomcat/
启动tomcat,普通用户来启动:
[root@32 tomcat7_106]# sudo su - tomcat -c '/usr/local/tomcat/bin/startup.sh'
############
需要的配置如下:
/usr/sbin/usermod -L tomcat
chown -R tomcat:tomcat /usr/local/tomcat
启动时发现有提示报错:Failed to start connector [Connector[AJP/1.3-8009]]
org.apache.catalina.LifecycleException: service.getName(): "Catalina"; 协议处理器启动失败
看启动是启动连接AJP协议失败:修改 conf/server.xml配置文件:把以下内容注释掉,再次启动。
[root@32 conf]# vim server.xml
<!-- Define an AJP 1.3 Connector on port 8009 -->
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /-->
再次重新启动:
看日记发现所有war都已经部署完成了,HA负载两台服务器上的war包,发现ha上的war包状态并没有起来。
查看catalina.out的日记报错信息如下:org.apache.coyote.AbstractProcessor parseHost
信息: [\] 是无效主机注意:更多的请求解析错误将以DEBUG级别日志进行记录。
java.lang.IllegalArgumentException
一直在不停的报这个错误。
需要先看war是不是正常都起来了。默认8080端口是显示的tomcat/webapps的目录,需要显示需要把war包放到这个目录下。
每个war都有自己的端口,也可以直接加端口来访问war,但是war的目录下要有probe这个war包才能正常显示的。如下:
证明war是正常启动的,况且再catalina.out日记里也显示war包部署完成。
在看ha的状态显示是不正常,也是ha无法正常负载的。
catalina.out日记里还是在报这个错误:org.apache.coyote.AbstractProcessor parseHost
信息: [\] 是无效主机注意:更多的请求解析错误将以DEBUG级别日志进行记录。
java.lang.IllegalArgumentException
一开始怎么也没想到查看HA的配置,一直在找tomcat的错误,尝试很多次,一直在报这个错误。因为旧版本的都是能正常使用的。
一直到网上找到这篇文件才想到了,链接如下:https://blog.csdn.net/miss_du/article/details/109502587
赶紧去查了HA的配置:也对比了和其他项目上的HA配置的区别,果然发现了问题:
#原来配置:
[root@32 logs]# cd /usr/local/haproxy/
[root@32 haproxy]# vim haproxy.cfg
listen xxx模块
bind *:10002
mode http
balance roundrobin
option httplog
option dontlognull
option httpchk GET /xxx模块/healthCheck HTTP/1.1\r\nHost:\
http-check expect status 200
# option httpchk GET /index.html
server BOSS_1 1.1.1.1:10002 cookie 1 check inter 2000 rise 3 fall 3
server BOSS_2 2.2.2.2:10002 cookie 2 check inter 2000 rise 3 fall 3
新的配置
[root@32 logs]# cd /usr/local/haproxy/
[root@32 haproxy]# vim haproxy.cfg
listen xxx模块
bind *:10002
mode http
balance roundrobin
option httplog
option dontlognull
option httpchk GET /xxx模块/healthCheck
http-check expect status 200
# option httpchk GET /index.html
server BOSS_1 1.1.1.1:10002 cookie 1 check inter 2000 rise 3 fall 3
server BOSS_2 2.2.2.2:10002 cookie 2 check inter 2000 rise 3 fall 3
发现tomcat对 / 斜杠比较敏感。把HTTP/1.1\r\nHost:\这行去掉后,再重启tomcat即正常了,状态也起来。
一开始未曾往这方面想,一直百度错误org.apache.coyote.AbstractProcessor parseHost
信息: [\] 是无效主机注意:更多的请求解析错误将以DEBUG级别日志进行记录。
但未搜索到答案。
如果你也遇到相同的问题,需要能帮助到你哈。
来源:oschina
链接:https://my.oschina.net/yuanhaohao/blog/4795420