前几天我们网友应该收到主机商后台安全提醒,关于Apache Tomcat 存在的安全问题,如果我们有在使用且涉及到其中的几个镜像的话,我们需要及时的完成升级补丁确保服务器WEB系统的安全。主要的原理问题是因为Tomcat AJP协议存在实现缺陷导致相关参数可控,攻击者利用该漏洞可通过构造特定参数,读取服务器webapp下的任意文件。
第一、涉及的镜像版本环境
Tomcat 6.X
Tomcat 7.X<7.0.100
Tomcat 8.x<8.5.51
Tomcat 9.x<9.0.31
根据反馈的信息可以看到涉及到大部分主要的Tomcat版本。
第二、安全升级解决方法
无论我们在使用何种方法,我们都需要对服务器进行备份,包括我们有服务器支持快照备份的,我们就快照备份,以防止出现意外。
A - 如未使用Tomcat AJP协议
如未使用 Tomcat AJP 协议,可以直接将 Tomcat 升级到 9.0.31、8.5.51或 7.0.100 版本进行漏洞修复。
如无法立即进行版本更新、或者是更老版本的用户,建议直接关闭AJPConnector,或将其监听地址改为仅监听本机localhost。
1、编辑 <CATALINA_BASE>/conf/server.xml,找到如下行(<CATALINA_BASE> 为 Tomcat 的工作目录):
<Connector port="8009"protocol="AJP/1.3" redirectPort="8443" />
2、将此行注释掉(也可删掉该行):
<!--<Connectorport="8009" protocol="AJP/1.3"redirectPort="8443" />-->
3、保存后需重新启动Tomcat,规则方可生效。
B - 如果使用了Tomcat AJP协议
建议将Tomcat立即升级到9.0.31、8.5.51或7.0.100版本进行修复,同时为AJP Connector配置secret来设置AJP协议的认证凭证。例如(注意必须将YOUR_TOMCAT_AJP_SECRET更改为一个安全性高、无法被轻易猜解的值):
<Connector port="8009"protocol="AJP/1.3" redirectPort="8443"address="YOUR_TOMCAT_IP_ADDRESS" secret="YOUR_TOMCAT_AJP_SECRET"/>
如无法立即进行版本更新、或者是更老版本的用户,建议为AJPConnector配置requiredSecret来设置AJP协议认证凭证。例如(注意必须将YOUR_TOMCAT_AJP_SECRET更改 为一个安全性高、无法被轻易猜解的值):
<Connector port="8009"protocol="AJP/1.3" redirectPort="8443"address="YOUR_TOMCAT_IP_ADDRESS"requiredSecret="YOUR_TOMCAT_AJP_SECRET" />
同时,如果我们我们服务器有设置安全组的,可以单独设置或者限制非我们使用的端口来限制,这个对于严格控制端口的项目来说问题不大,因为我们就开启自己需要的几个端口。
参考文献:https://www.cnvd.org.cn/webinfo/show/5415