0%

tomcat安全配置

使用session的httpOnly

修改tomcat配置文件夹下的server.xml文件
tomcat/conf/server.xml,在Host配置节加入如下代码:

1
<Context path="xxx" useHttpOnly="true"/>

说明: xxx代表应用的部署路径

关闭目录浏览功能

修改tomcat配置文件夹下的web.xml文件
tomcat/conf/web.xml如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
<servlet>
<servlet-name>default</servlet-name>
<servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<init-param>
<param-name>listings</param-name>
<param-value>false</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>

参数说明

  • debug: 控制消息的显示级别,通常使用0和1,数字越高级别越大。默认是0。
  • listings: 控制是否显示目录下的所有文件。默认false,不显示。
  • readonly: 控制是否是只读,不可被修改的。默认为true,不可修改。

删除所有不需要的功能和文件,如example等

删除不需要的文件夹

tomcatwebapp目录下的所有无用文件夹都删除,包括但不仅包括docs, examples, host-manager, manager, ROOT

删除managerhost-manager功能

修改tomcat配置文件conf/server.xml如下:
删除:

1
2
3
4
5
6
7
8
<GlobalNamingResources>
<Resource name="UserDatabase"
auth="Container"
type="org.apache.catalina.UserDatabase"
description="User database that can be updated and saved"
factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
pathname="conf/tomcat-users.xml"/>
</GlobalNamingResources>

删除:

1
<Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/>

删除响应头中版本信息

通常tomcat的响应头信息如下:

需要改掉这些信息防止恶意根据对应版本的漏洞进行攻击。

  1. 进入tomcat的lib目录找到catalina.jar文件

  2. 使用命令unzip catalina.jar,解压jar包得到文件夹META-INForg

  3. 进入org/apache/catalina/util 编辑配置文件ServerInfo.properties

  4. 修改以下字段为你想要的信息

    1
    2
    3
    server.info=server
    server.number=1.0
    server.built=day
  5. 将修改后的信息压缩回jar包

    1
    2
    cd  /tomcat/lib
    jar -uvf catalina.jar org/apache/catalina/util/ServerInfo.properties
  6. 修改/conf/server.xml

    在connector配置节增加server属性

    1
    2
    <Connector xxxxx
    server="Server 1.0"/>
  7. 重启tomcat