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

本文涉及的产品
Serverless 应用引擎 SAE,800核*时 1600GiB*时
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
简介: 最近很多同学都听说了 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 不受影响 在镜像中按第一或第二种方式修复后,重做镜像部署应用


相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
2月前
|
网络协议 Java 应用服务中间件
tomcat配置域名及HTTPS
tomcat配置域名及HTTPS
|
2月前
|
Java 应用服务中间件 Windows
【应用服务 App Service】App Service 中部署Java项目,查看Tomcat配置及上传自定义版本
【应用服务 App Service】App Service 中部署Java项目,查看Tomcat配置及上传自定义版本
|
8天前
|
应用服务中间件 Docker 容器
docker应用部署---Tomcat的部署配置
这篇文章介绍了如何使用Docker部署Tomcat服务器,包括搜索和拉取Tomcat镜像、创建容器并设置端口映射和目录映射,以及如何创建一个HTML页面并使用外部机器访问Tomcat服务器。
docker应用部署---Tomcat的部署配置
|
5月前
|
安全 网络协议 应用服务中间件
tomcat 状态页 及常见配置
tomcat 状态页 及常见配置
|
2月前
|
缓存 Java 应用服务中间件
SpringMVC入门到实战------七、SpringMVC创建JSP页面的详细过程+配置模板+实现页面跳转+配置Tomcat。JSP和HTML配置模板的差异对比(二)
这篇文章详细介绍了在SpringMVC中创建JSP页面的全过程,包括项目的创建、配置、Tomcat的设置,以及如何实现页面跳转和配置模板解析器,最后还对比了JSP和HTML模板解析的差异。
SpringMVC入门到实战------七、SpringMVC创建JSP页面的详细过程+配置模板+实现页面跳转+配置Tomcat。JSP和HTML配置模板的差异对比(二)
|
2月前
|
Java 应用服务中间件 开发工具
[App Service for Windows]通过 KUDU 查看 Tomcat 配置信息
[App Service for Windows]通过 KUDU 查看 Tomcat 配置信息
|
2月前
|
Java 应用服务中间件 Windows
【App Service for Windows】为 App Service 配置自定义 Tomcat 环境
【App Service for Windows】为 App Service 配置自定义 Tomcat 环境
|
5月前
|
XML Java 应用服务中间件
Tomcat_servlet部署、编译、配置、打包
Tomcat_servlet部署、编译、配置、打包
66 0
|
3月前
|
应用服务中间件
入职必会-开发环境搭建23-IDEA配置Tomcat
IDEA配置Tomcat分为两部分: 1. IDEA集成本地Tomcat 2. IDEA中使用Tomcat部署Web项目 在配置IntelliJ IDEA中的Tomcat时,首先需要打开IDEA,选择菜单中的Run -> Edit Configurations,在左侧菜单中找到+并点击,然后选择Tomcat Server下的Local(注意不要选择错了,下方还有个TomEE Server,不是选这个)。接下来,输入一个自定义的名字作为Tomcat的配置名称,点击Configure...配置Tomcat的安装路径。这样IDEA就配置好了Tomcat。
|
2月前
|
Java 应用服务中间件 Apache
在 Debian 服务器上安装和配置 Apache Tomcat 的方法
在 Debian 服务器上安装和配置 Apache Tomcat 的方法
26 0