Tomcat配置安全优化

1.删除默认目录

安装完tomcat后,删除$CATALINA_HOME/webapps下默认的所有目录文件

rm -rf /usr/local/tomcat/webapps/*

2.用户管理

如果不需要通过web部署应用,建议注释或删除tomcat-users.xml下用户权限相关配置

<!--
  <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"/>
-->

3.隐藏tomcat版本信息

方法一:修改$CATALINA_HOME/conf/server.xml,在Connector节点添加server字段,示例如下

    <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" 
               server="WS1.0"/>

访问测试:

# curl -I 127.0.0.1:8080
HTTP/1.1 200 OK
Content-Type: text/html;charset=ISO-8859-1
Transfer-Encoding: chunked
Date: Thu, 29 Mar 2018 03:16:36 GMT
Server: WS1.0

网页测试:

 
测试结果显示并没隐藏Tomcat版本信息。

方法二:进入apache-tomcat目录lib下,找到catalina.jar,使用vim工具依次找到org/apache/catalina/util下的ServerInfo.properties

server.info=Apache Tomcat
server.number=
server.built=

用户也可自定义修改server.info字段和server.number字段,示例修改如下所示

server.info=WS/1.0
server.number=1.0
server.built=Feb 7 2018 18:52:33 UTC

4.关闭自动部署

如果不需要自动部署,建议关闭自动部署功能。

在$CATALINA_HOME/conf/server.xml中的host字段,修改unpackWARs=”false” autoDeploy=”false”。

      <Host name="localhost"  appBase="webapps"
            unpackWARs="false" autoDeploy="false">
       <!--   unpackWARs="true" autoDeploy="true">
       -->

5.自定义错误页面

修改$CATALINA_HOME/conf/web.xml,自定义40x、50x等容错页面,防止信息泄露。

<error-page>
        <error-code>404</error-code>
        <location>/404.html</location>
</error-page>

error-page>
        <error-code>500</error-code>
        <location>/500.html</location>
</error-page>

6.禁止列目录(高版本默认已禁止)

修改$CATALINA_HOME/conf/web.xml

    <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>

7.AJP端口管理

AJP是为 Tomcat 与 HTTP 服务器之间通信而定制的协议,能提供较高的通信速度和效率。如果tomcat前端放的是apache的时候,会使用到AJP这个连接器。前端如果是由nginx做的反向代理的话可以不使用此连接器,因此需要注销掉该连接器。

    <!-- Define an AJP 1.3 Connector on port 8009 -->
    <!-- <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
    -->

8.服务权限控制

tomcat以非root权限启动,应用部署目录权限和tomcat服务启动用户分离,比如tomcat以tomcat用户启动,而部署应用的目录设置为nobody用户750。

9.启用cookie的HttpOnly属性,使用HttpOnly提升Cookie安全性

修改$CATALINA_HOME/conf/context.xml,添加useHttpOnly="true",如下所示

<Context useHttpOnly="true">

    <!-- Default set of monitored resources -->
    <WatchedResource>WEB-INF/web.xml</WatchedResource>

    <!-- Uncomment this to disable session persistence across Tomcat restarts -->
    <!--
    <Manager pathname="" />
    -->

    <!-- Uncomment this to enable Comet connection tacking (provides events
         on session expiration as well as webapp lifecycle) -->
    <!--
    <Valve className="org.apache.catalina.valves.CometConnectionManagerValve" />
    -->

</Context>
启用安全cookie,防止xss跨站点攻击,tomcat6开始支持此属性,此处在context.xml中添加启用配置,context.xml配置即调用时生效不需要重启tomcat

配置cookie的secure属性,在web.xml中sesion-config节点配置cookie-config,此配置只允许cookie在加密方式下传输。

    <session-config>
        <session-timeout>30</session-timeout>
        <cookie-config>
                <secure>true</secure>
        </cookie-config>
    </session-config>

原文地址:http://blog.51cto.com/dengaosky/2092572

时间: 2024-12-16 04:00:57

Tomcat配置安全优化的相关文章

tomcat配置和优化

介绍 1.tomcat是一个解析jsp程序的软件 2.jdk用来编译 3.Apache是一个web服务器环境程序,启用它可以作为web服务器使用不过只支持静态网页,不支持动态网页,如asp.jsp.php.cgi 4.如果要在Apache环境下运行jsp就需要一个解释器来执行jsp网页,而这个jsp解释器就是Tomcat 5.那为什么还要JDK呢?因为jsp需要连接数据库的话就要jdk来提供连接数据库的驱程,所以要运行jsp的web服务器平台就需要APACHE+TOMCAT+JDK tomcat

tomcat 配置及优化

tomcat7 配置详解http://www.jianshu.com/p/0042d976bb39 tomcat6 配置详解 http://www.jianshu.com/p/0042d976bb39 tomcat配置优化 1. Tomcat优化其实就是对server.xml优化(开户线程池,调整http connector参数) 搜索[<Executor name="tomcatThreadPool"],开启并调整为 <Executor name="tomcat

tomcat配置及优化

jdk安装 su - root mkdir jdk cd jdk wget https://mirror.its.sfu.ca/mirror/CentOS-Third-Party/NSG/common/x86_64/jdk-7u76-linux-x64.rpm rpm -ivh jdk-7u76-linux-x64.rpm 环境变量 vi /etc/profile export JAVA_HOME=/usr/java/jdk1.7.0_76 export CLASSPATH=$JAVA_HOME

Tomcat配置优化

TOMCAT配置优化一. Tomcat下使用Log4j 接管 catalina.out 日志文件生成方式,按天存放,解决catalina.out日志文件过大问题1.准备jar包:log4j-1.2.16.jar , tomcat-juli.jar, tomcat-juli-adapters.jar 注意:tomcat-juli.jar, tomcat-juli-adapters.jar 需要根据不同tomcat的版本去相应下载(从http://archive.apache.org/dist/to

Nginx与Tomcat安装、配置与优化

Nginx与Tomcat安装.配置与优化 Nginx的安装与使用 Nginx是一款优秀的反向代理服务器 安装: rpm(或者是pkg安装),是预编译好的程序包安装 yum(或者apt-get)安装,自动联网下载安装包,自动管理依赖关系 编译安装 检查和安装依赖项 yum -y install gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel configure make && make install 启动.停止.重启: 安

优化tomcat配置(从内存、并发、缓存4个方面)优化

Tomcat内存优化 Tomcat内存优化主要是对 tomcat 启动参数优化,我们可以在 tomcat 的启动脚本 catalina.sh 中设置 java_OPTS 参数. JAVA_OPTS参数说明 -server 启用jdk 的 server 版: -Xms Java虚拟机初始化时的最小内存: -Xmx java虚拟机可使用的最大内存: -XX: PermSize 内存永久保留区域 -XX:MaxPermSize 内存最大永久保留区域 服务器参数配置 现公司服务器内存一般都可以加到最大2

tomcat的配置和优化

tomcat的内存使用配置,最大连接数配置.如何修改配置呢,在/tomcat的/bin/下面有个脚本文件catailna.sh. 如果 windows 是bat设置tomcat的使用内存,其实就是设置jvm的使用参数. 一.Tomcat内存优化 Tomcat内存优化主要是对 tomcat 启动参数优化,我们可以在 tomcat 的启动脚本 catalina.sh 中设置 JAVA_OPTS 参数. 1.JAVA_OPTS参数说明 Java代码 -server  启用jdk 的 server 版:

Tomcat 5常用优化和配置

Tomcat 5常用优化和配置 1.JDK内存优化:Tomcat默认可以使用的内存为128MB,Windows下,在文件{tomcat_home}/bin/catalina.bat,Unix下,在文件{tomcat_home}/bin/catalina.sh的前面,增加如下设置:JAVA_OPTS='-Xms[初始化内存大小] -Xmx[可以使用的最大内存] 一般说来,你应该使用物理内存的 80% 作为堆大小.2.连接器优化:在tomcat配置文件server.xml中的配置中,和连接数相关的参

如何优化tomcat配置(从内存、并发、缓存4个方面)优化

一.Tomcat内存优化 Tomcat内存优化主要是对 tomcat 启动参数优化,我们可以在 tomcat 的启动脚本 catalina.sh 中设置 java_OPTS 参数.  JAVA_OPTS参数说明  -server 启用jdk 的 server 版:  -Xms java虚拟机初始化时的最小内存:  -Xmx java虚拟机可使用的最大内存:  -XX: PermSize 内存永久保留区域  -XX:MaxPermSize 内存最大永久保留区域  服务器参数配置 现公司服务器内存一