Tomcat 安全配置手册

前提 1:CATALINA_HOME 为 tomcat 安装目录!
前提 2:修改任何文件请提前备份!

一 目录安全

1:移除 tomcat 样例目录和帮助文档应用

1) 删除CATALINA_HOME/webapps/manager目录。
2) 删除CATALINA_HOME/webapps/host-manager目录。
3) 删除CATALINA_HOME/webapps/docs目录。

这些 tomcat 自带文件并不包含任何已知的漏洞,但现已证明,它所包含的一些功能可以被攻击者利用。

2:移除 tomcat 样例程序

1) 删除CATALINA_HOME/webapps/ROOT目录。

ROOT 应用带来安全风险的可能性非常小,但它确实含有正在使用的 Tomcat 的版本号。

3:隐藏版本信息

[解压catalina.jar]
cd CATALINA_HOME/lib/
unzip catalina.jar

[修改ServerInfo.properties ,把版本信息删除]
vi org/apache/catalina/util/ServerInfo.properties

server.info=
server.number=
server.built=

[重新压缩到catalina.ja中]
cd CATALINA_HOME/lib/
jar uvf catalina.jar org/apache/catalina/util/ServerInfo.properties

[重启 tomcat]

docs, examples 等目录以及默认的 404 页面会泄露 Tomcat 的版本信息。此外,攻击者可以利用 example 中的部分示例代码读写 session, 有一定潜在危害。。

二 web.xml 安全配置

路径:CATALINA_HOME/conf/web.xml

1:自定义错误页面

在web.xml最后面加上配置(参考图片)
     
    <error-page>
        <error-code>403</error-code>
        <location>/403.jsp</location>
    </error-page>
    <error-page>
        <error-code>404</error-code>
        <location>/404.jsp</location>
    </error-page>
    <error-page>
        <error-code>500</error-code>
        <location>/500.jsp</location>
    </error-page>

减少在错误页面中暴露敏感信息的风险。

Tomcat 安全配置手册

三 server.xml 安全配置

路径:CATALINA_HOME/conf/server.xml

1:SHUTDOWN 字符串修改

找到shutdown="SHUTDOWN",把"SHUTDOWN"改成"ishutdown"

主要用于防止未授权用户关闭 tomcat 服务器。

2:禁止目录列表

找到如下字样,确保值是false

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

禁止目录列表功能可以避免因暴露目标网站的目录结构和敏感文件,最终造成敏感信息丢失。

3:拒绝 TRACE 请求方法

在文件中查找"allowTrace"字样,如果是"allowTrace"不存在或者"allowTrace=false",则没问题,
如果"allowTrace=true",必须改成false

TRACE 方法是 HTTP(超文本传输)协议定义的一种协议调试方法,该方法使得服务器原样返回任何客户端请求的内容(可能会附加路由中间的代理服务器的信息),由于该方法原样返回客户端提交的任意数据,因此,可用来进行跨站脚本(XSS)攻击,这种攻击方式又称为跨站跟踪攻击(XST)。

4:不发送“X-Powered-By”HTTP 响应头

在文件中查找"xpoweredBy"字样,如果是"xpoweredBy"不存在或者"xpoweredBy=false",则没问题,
如果"xpoweredBy=true",必须改成false

X-Powered-By 字段值包含 Servlet 和 JSP 规范版本号、完整的 Tomcat 版本号(比如 Apache Tomcat/8.0)、JVM Vendor 名称,以及 JVM 版本号等信息,禁止发送 Tomcat 服务器发送 X-Powered-By”HTTP 响应头,可以防止恶意攻击者从中获取目标服务器信息。

四 账号安全配置

路径:CATALINA_HOME\conf\tomcat-users.xml

1: 去除 tomcat 的用户配置

确保文件中role和user开头的行是注释状态。参考如下:

<!--
  <role rolename="tomcat"/>
  <role rolename="role1"/>
  <user username="tomcat" password="<must-be-changed>" roles="tomcat"/>
  <user username="both" password="<must-be-changed>" roles="tomcat,role1"/>
  <user username="role1" password="<must-be-changed>" roles="role1"/>
-->

不要使用 tomcat 内置用户。