Tomcat 被爆漏洞,部署在阿里云上的应用该怎么办?

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: 最近很多同学都听说了 Tomcat 的关于 AJP 的漏洞,国家信息安全漏洞共享平台(CNVD) 也对此进行披露,同时该漏洞综合评级被评为“高危”,这篇文章主要用来描述,如果确认您部署在阿里云上的应用受到了影响,该如何处理。

最近很多同学都听说了 Tomcat 的关于 AJP 的漏洞,国家信息安全漏洞共享平台(CNVD) 也对此进行披露,同时该漏洞综合评级被评为“高危”,这篇文章主要用来描述,如果确认您部署在阿里云上的应用受到了影响,该如何处理。

漏洞编号:CNVD-2020-10487/CVE-2020-1938

第一种方式:直接升级 Tomcat 版本

根据官方描述,最好的方式是将 Tomcat 升级到最新版本:Tomcat7 升至 7.0.100、Tomcat8 升至 8.5.51、Tomcat 9 升至 9.0.31。

这种方式最为彻底,但是缺点也很显而易见:由于这种做法属于更换底层的基础设施,如果您是生产应用,建议将风险控制在可控范围之内再进行。

第二种方式:修改配置

由于此漏洞只会对于 AJP 协议的 Connector 有影响,默认情况下 AJP 协议是打开的,但是 AJP 必须结合 httpd 一起工作才能起作用,如果您的应用中没有使用到 httpd,是可以关闭的,关闭的方式为:

  1. 打开配置文件 conf/server.xml: vim ${CATALINA_HOME}/conf/server.xml
  2. 找到 <Connector port="8009" protocol="AJP/1.3" 后,注销配置文件中的相关配置,保存退出。
  3. 重启应用

如果您的应用中确实使用到了 AJP 协议的话,建议您在 Connector 的配置中,加入 secret 和 secretRequired 配置项,与此同时,需要配合修改前面的 httpd 的配置;具体操作方式可搜索 httpd 和 Tomcat AJP 的配置进行修改。

这种方式,不需要升级 Tomcat 版本,但需要对我们的 Tomcat 和 httpd (如果使用到了)的配置都进行修改;同时,如果集群很大的话,修改系统级别的配置会带来不确定的风险,建议结合一些运维工具批量进行。

第三种方式,关闭不必要的端口暴露

如果不幸端口确实打开了,而又不便去修改机器上的配置时;我们可以通过使用阿里云安全组策略,添加禁用ECS 上 对 8009(默认) 的端口访问的规则,或只对部分授信的 IP 放行来达到目的。

这种方式可以快速的封堵此漏洞,且不需要动机器上的配置,只需要对 ECS 有权限的运维同学就能完成操作,避免了不必要的业务回归。但是 ECS 安全组规则具有很高的维护成本,久而久之如果管理不好的话,可能会带来额外的排查诊断的的成本。

部署在阿里云 EDAS/SAE 上的应用如何操作

漏洞出来之后,EDAS/SAE 团队第一时间审查了我们所提供的 Tomcat 版本,包括 EDAS/SAE Container 和社区版本的 Apache Tomcat,针对 ECS 集群和 Kubernetes 集群我们得出的结论和建议是:

  1. 如果您使用的是 FatJar 的方式部署的话,将不会收到任何影响。
  2. 如果您使用的是 War 包部署的话,请参见一下表格:

应用类型 ECS 集群 Kubernetes 集群没有绑定8009端口暴露 Kubernetes 集群已有绑定8009端口暴露
EDAS/SAE Container(HSF) 应用 不受影响 不受影响 不受影响
Spring Cloud 应用 不受影响 不受影响 需重新部署应用
Dubbo 应用 不受影响 不受影响 需重新部署应用
镜像部署 N/A 不受影响 在镜像中按第一或第二种方式修复后,重做镜像部署应用


相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
云原生实践公开课
课程大纲 开篇:如何学习并实践云原生技术 基础篇: 5 步上手 Kubernetes 进阶篇:生产环境下的 K8s 实践 相关的阿里云产品:容器服务&nbsp;ACK 容器服务&nbsp;Kubernetes&nbsp;版(简称&nbsp;ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情:&nbsp;https://www.aliyun.com/product/kubernetes
相关文章
|
1天前
|
网络协议 Serverless 应用服务中间件
Serverless 应用引擎操作报错合集之在阿里云函数计算中,服务器调用FC函数时出现 "[Errno -3] Temporary failure in name resolution)" 错误如何解决
Serverless 应用引擎(SAE)是阿里云提供的Serverless PaaS平台,支持Spring Cloud、Dubbo、HSF等主流微服务框架,简化应用的部署、运维和弹性伸缩。在使用SAE过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
11 4
|
1天前
|
Web App开发 缓存 安全
Serverless 应用引擎操作报错合集之在使用阿里云函数计算的过程中遇到“Browser closed unexpectedly”的错误如何解决
Serverless 应用引擎(SAE)是阿里云提供的Serverless PaaS平台,支持Spring Cloud、Dubbo、HSF等主流微服务框架,简化应用的部署、运维和弹性伸缩。在使用SAE过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
11 2
|
1天前
|
Java Serverless 应用服务中间件
Serverless 应用引擎操作报错合集之阿里云函数计算中出现“找不到类”的错误如何解决
Serverless 应用引擎(SAE)是阿里云提供的Serverless PaaS平台,支持Spring Cloud、Dubbo、HSF等主流微服务框架,简化应用的部署、运维和弹性伸缩。在使用SAE过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
9 1
Serverless 应用引擎操作报错合集之阿里云函数计算中出现“找不到类”的错误如何解决
|
2天前
|
人工智能 边缘计算 Kubernetes
阿里云边缘容器云帮助AI推理应用快速落地
2024全球分布式云大会·北京站,阿里云徐若晨演讲内容分享
11 0
|
10天前
|
Java 应用服务中间件 Linux
在阿里云服务器上部署Tomcat详细图文详解
本文介绍了在阿里云服务器上安装和配置JDK和Tomcat的步骤。首先,需要注册阿里云账号并进行实名认证,然后购买并设置服务器。接着,通过File Zilla连接服务器,创建Java和Tomcat的安装目录,并将JDK和Tomcat的tar.gz文件上传到服务器,解压并重命名。之后,配置JDK的环境变量,将catalina.sh复制到/etc/init.d/目录下,并修改相关配置。最后,启动Tomcat并配置安全组规则,确保可以通过公网访问。
|
10天前
|
弹性计算 Java Linux
阿里云服务器搭建部署宝塔详细流程
该内容是一个阿里云服务器和域名的配置指南。首先,需注册阿里云账号并进行企业实名认证。接着,选购服务器如2核2G1兆的Linux系统,并购买域名。完成域名备案后,进行域名解析和ICP备案。然后,通过远程连接登录服务器,重置密码,安装宝塔面板。在安全组中开启宝塔面板随机生成的端口。最后,登录宝塔面板安装LNMP环境,配置数据库如MySQL和Redis,部署JDK、Tomcat,上传前端和后端项目以实现上线。
|
11天前
|
弹性计算 JavaScript Java
阿里云服务器搭建部署宝塔详细流程
以下是内容的摘要: 本文主要介绍了在阿里云上创建和配置服务器环境的步骤,包括注册阿里云账号、实名认证、购买和设置服务器、域名的获取与备案、以及使用宝塔面板安装和配置环境。首先,用户需要注册阿里云账号并进行实名认证,选择合适的服务器配置。接着,购买服务器后,要准备并备案域名,以便通过友好的网址访问网站。在服务器上安装宝塔面板,可以方便地管理和配置LAMP/LNMP/Tomcat/Node.js等应用环境。完成这些步骤后,用户还需要在宝塔面板中安装MySQL、Redis等数据库,部署Java或Vue项目,并配置相关端口。最后,将前端项目打包上传至服务器,并设置站点,即可实现网站的上线。
|
11天前
|
应用服务中间件 Linux 开发工具
如何在阿里云服务器快速搭建部署Nginx环境
以下是内容的摘要: 本文档主要介绍了在阿里云上购买和配置服务器的步骤,包括注册阿里云账号、实名认证、选择和购买云服务器、配置安全组、使用Xshell和Xftp进行远程连接和文件传输,以及安装和配置Nginx服务器的过程。在完成这些步骤后,你将能够在服务器上部署和运行自己的网站或应用。
|
安全 测试技术 应用服务中间件
|
1月前
|
XML 应用服务中间件 Apache
Tomcat AJP连接器配置secretRequired=“true“,但是属性secret确实空或者空字符串,这样的组合是无效的。
Tomcat AJP连接器配置secretRequired=“true“,但是属性secret确实空或者空字符串,这样的组合是无效的。