Tomcat安全加固

Posted 日行一善

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Tomcat安全加固相关的知识,希望对你有一定的参考价值。

1.禁止自动部署
描述
配置自动部署,容易被部署恶意或未经测试的应用程序,应将其禁用

加固建议
修改Tomcat 根目录下的配置文件conf/server.xml,将host节点的autoDeploy属性设置为“false”,如果host的deployOnStartup属性(如没有deployOnStartup配置可以忽略)为“true”,则也将其更改为“false”

2.删除项目无关文件和目录
描述
Tomcat安装提供了示例应用程序、文档和其他可能不用于生产程序及目录,存在极大安全风险,建议移除

加固建议
请删除Tomcat示例程序和目录、管理控制台等,即从Tomcat根目录的webapps目录,移出或删除docs、examples、host-manager、manager目录。

3.Tomcat目录权限检测
描述
在运行Tomcat服务时,避免使用root用户运行,tomcat目录(catalina.home、 catalina.base目录)所有者应改为非root的运行用户

加固建议
使用chown -R <Tomcat启动用户所属组>:<Tomcat启动用户> <Tomcat目录>修改tomcat目录文件所有者,如chown -R tomcat:tomcat /usr/local/tomcat

4.Tomcat进程运行权限检测
描述
在运行Internet服务时,最好尽可能避免使用root用户运行,降低攻击者拿到服务器控制权限的机会。

加固建议
创建低权限的账号运行Tomcat,操作步骤如下:
--新增tomcat用户
useradd tomcat

--将tomcat目录owner改为tomcat
chown -R tomcat:tomcat /opt/tomcat

-- 停止原来的tomcat服务
--切换到tomcat用户
su - tomcat

--重新启动tomcat
/opt/tomcat/bin/startup.sh

5.禁止显示异常调试信息
描述
当请求处理期间发生运行时错误时,ApacheTomcat将向请求者显示调试信息。建议不要向请求者提供此类调试信息。

加固建议
在Tomcat根目录下的conf/web.xml文件里面的web-app添加子节点:<error-page><exception-type>java.lang.Throwable</exception-type><location>/error.jsp</location></error-page>,在webapps目录下创建error.jsp,定义自定义错误信息

6.开启日志记录
描述
Tomcat需要保存输出日志,以便于排除错误和发生安全事件时,进行分析和定位

加固建议
1、修改Tomcat根目录下的conf/server.xml文件。
2、取消Host节点下Valve节点的注释(如没有则添加)。

<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log" suffix=".txt" pattern="%h %l %u %t &quot;%r&quot; %s %b" />

3、重新启动Tomcat

7.禁止Tomcat显示目录文件列表
描述
Tomcat允许显示目录文件列表会引发目录遍历漏洞

加固建议
修改Tomcat 跟目录下的配置文件conf/web.xml,将listings的值设置为false。

<param-name>listings</param-name> <param-value>false</param-value>

8.避免为tomcat配置manager-gui弱口令
描述
tomcat-manger是Tomcat提供的web应用热部署功能,该功能具有较高权限,会直接控制Tomcat应用,应尽量避免使用此功能。如有特殊需求,请务必确保为该功能配置了强口令

加固建议
编辑Tomcat根目录下的配置文件conf/tomcat-user.xml,修改user节点的password属性值为复杂密码, 密码应符合复杂性要求:

1、长度8位以上
2、包含以下四类字符中的三类字符:
英文大写字母(A 到 Z)
英文小写字母(a 到 z)
10 个基本数字(0 到 9)
非字母字符(例如 !、$、#、%、@、^、&)
3、避免使用已公开的弱密码,如:abcd.1234 、admin@123等

9.限制服务器平台信息泄漏
描述
限制服务器平台信息泄漏会使攻击者更难确定哪些漏洞会影响服务器平台。

加固建议
1、进入Tomcat安装主目录的lib目录下,比如
cd /usr/local/tomcat7/lib
2、执行:jar xf catalina.jar org/apache/catalina/util/ServerInfo.properties,修改文件ServerInfo.properties中的server.info和server.number的值,如分别改为:Apache/11.0.92、11.0.92.0
3、执行:jar uf catalina.jar org/apache/catalina/util/ServerInfo.properties
4、重启Tomcat服务

10.AJP协议文件读取与包含严重漏洞
描述
Apache Tomcat文件包含漏洞(CNVD-2020-10487/CVE-2020-1938)。该漏洞是由于Tomcat AJP协议存在缺陷而导致,攻击者利用该漏洞可通过构造特定参数,读取服务器webapp下的任意文件。若目标服务器同时存在文件上传功能,攻击者可进一步实现远程代码执行。漏洞影响非常严重,请及时采取防护措施修复。

加固建议
可使用以下方式修复加固

1.升级到以下安全版本进行防护

| 版本号 | 下载地址 | | ---- | ---- | | Apache Tomcat 7.0.100 | http://tomcat.apache.org/download-70.cgi | | Apache Tomcat 8.5.51 | http://tomcat.apache.org/download-80.cgi | | Apache Tomcat 9.0.31 | http://tomcat.apache.org/download-90.cgi |

2.若不需使用AJP协议,可直接关闭AJP Connector,或将监听地址改为仅监听本机localhost

编辑配置文件server.xml,将AJP协议的Connector注释掉或删除,并重启服务。

<!--<Connectorport="8009" protocol="AJP/1.3"redirectPort="8443" />-->

11.控制台弱口令检查
描述
tomcat-manger是Tomcat提供的web应用热部署功能,该功能具有较高权限,会直接控制Tomcat应用,应尽量避免使用此功能。如有特殊需求,请务必确保为该功能配置了强口令

加固建议
编辑Tomcat根目录下的配置文件conf/tomcat-user.xml,修改user节点的password属性值为复杂口令, 口令应符合复杂性要求:

1、长度8位以上
2、包含以下四类字符中的三类字符:
英文大写字母(A 到 Z)
英文小写字母(a 到 z)
10 个基本数字(0 到 9)
非字母字符(例如 !、$、#、%、@、^、&)
3、避免使用已公开的弱口令,如:abcd.1234 、admin@123等

本文版权归作者所有,欢迎转载,请务必添加原文链接。

以上是关于Tomcat安全加固的主要内容,如果未能解决你的问题,请参考以下文章

TOMCAT安全加固手册

Tomcat安装部署和安全加固优化以及反向代理应用

Tomcat安装部署和安全加固优化以及反向代理应用

Tomcat安全加固

tomcat安全加固和规范

应急响应Tomcat安全加固