0x01 基本配置

1 删除默认目录

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

2 隐藏tomcat版本信息

修改$CATALINA_HOME/conf/server.xml,在Connector节点添加server字段,示例如下
<Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
               server="WVS1.1"
    <!-- A "Connector" using the shared thread pool-->

3 自定义错误页面

修改tomcat/ conf/web.xml,自定义40x、50x等容错页面,防止信息泄露。
(1)配置tomcat/conf/web.xml文件:
在最后</web-app>一行之前加入以下内容:
<error-page> 
<error-code>404</error-code>
<location>/noFile.htm</location> 
</error-page>
……………
<error-page>
<exception-type>java.lang.NullPointerException</exception-type>
<location>/ error.jsp</location> 
</error-page>
       第一个<error-page></error-page>之间的配置实现了将404未找到jsp网页的错误导向noFile.htm页面,也可以用类似方法添加其多的错误代码导向页面,如403,500等。
          第二个<error-page></error-page>之间的配置实现了当jsp网页出现java.lang.NullPointerException导常时,转向error.jsp错误页面,还需要在第个jsp网页中加入以下内容:
<%@ page errorPage="/error.jsp" %>
典型的error.jsp错误页面的程序写法如下:
<%@ page contentType="text/html;charset=GB2312"%>
<%@ page isErrorPage="true"%>
<html>
<head><title>错误页面</title></head>
<body>出错了:</p> 错误信息: <%= exception.getMessage() %><br>
Stack Trace is : <pre><font color="red"><%
java.io.CharArrayWriter cw = new java.io.CharArrayWriter();
java.io.PrintWriter pw = new java.io.PrintWriter(cw,true);
exception.printStackTrace(pw);
out.println(cw.toString());
%></font></pre>
</body>
</html>
当出现NullPointerException异常时tomcat会把网页导入到error.jsp,且会打印出出错信息。

(2)重新启动tomcat服务

4 更改tomcat服务器默认端口

1、参考配置操作
(1)修改tomcat/conf/server.xml配置文件,更改默认管理端口到8800
 <Connector
port="8888"  maxHttpHeaderSize="8192" maxThreads="150" 
minSpareThreads="25" maxSpareThreads="75"、
enableLookups="false" redirectPort="8443" acceptCount="100"
 connectionTimeout="300" disableUploadTimeout="true" />
(2)重启tomcat服务
 2、补充操作说明

② 备注事项,登陆http://127.0.0.1:8888  ,进行验证配置。

0X02 安全配置

1 用户权限

在服务器设备权限配置范围内,根据我们的业务需要,配置其所需的最小权限。同时应删除或锁定与设备运行、维护等工作无关的账号。例如admin, 666等。还有使用单独的账号允许,不能使用与系统账号一样的账号密码。
1、Tomcat 4.x和5.x版本用户角色分为:role1,tomcat,admin,manager四种。
role1:具有读权限;
tomcat:具有读和运行权限;
admin:具有读、运行和写权限;
manager:具有远程管理权限。
Tomcat 6.0.18版本只有admin和manager两种用户角色,且admin用户具有manager管理权限。
2、Tomcat 4.1.37和5.5.27版本及以后发行的版本默认除admin用户外其他用户都不具有manager管理权限。
① 建议配置
编辑tomcat/conf/tomcat-user.xml配置文件,修改用户角色权限 ,例如
<tomcat-users>
<!--
  <role rolename="tomcat"/>
  <role rolename="role1"/>
  <user username="tomcat" password="tomcat" roles="tomcat"/>
  <user username="both" password="tomcat" roles="tomcat,role1"/>
  <user username="role1" password="tomcat" roles="role1"/>
-->
</tomcat-users>
② 登陆http://ip:8080/manager/html页面,使用tomcat账号进行本地登录,进行验证配置。

2 口令安全要求

对于采用静态口令认证技术的设备,口令长度至少8位,并包括数字、小写字母、大写字母和特殊符号4类中至少2类。
① 建议配置
 在tomcat/conf/tomcat-user.xml配置文件中设置密码
<user username=”root” password=”root123456” roles=”admin”>
② 备注事项
      检查tomcat/conf/tomcat-user.xml配置文件中的帐号口令是否符合移动通过配置口令复杂度要求。
(1)人工检查配置文件中帐号口令是否符合;
(2)使用tomcat弱口令扫描工具定期对Tomcat Web服务器进行远程扫描,检查是否存在弱口令帐号。

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

① 建议配置
(1) 编辑tomcat/conf/web.xml配置文件, 注意原文件和下面的区别。
<init-param>
       <param-name>listings</param-name>
        <param-value>false</param-value>
    </init-param>
 (2)重新启动tomcat服务
② 备注事项
当WEB目录中没有默认首页如index.html,index.jsp等文件时,不会列出目录内容,直接访问http://ip:8800/webadd

4 定时账户自动登出

对于类似web具备字符交互界面的设备,应支持定时账户自动登出。登出后用户需再次登录才能进入系统。

① 建议配置

编辑tomcat/conf/server.xml配置文件,修改为30秒
<Connector
port="8080"  maxHttpHeaderSize="8192" maxThreads="150" 
minSpareThreads="25" maxSpareThreads="75"、
enableLookups="false" redirectPort="8443" acceptCount="100"
 connectionTimeout="6000" disableUploadTimeout="true" />

② 备注事项

登陆tomcat默认页面http://ip:8080/manager/html ,使用管理账号登陆,10分钟无操作或者关闭浏览器自动退出。

5 启用cookie的HttpOnly属性

修改$CATALINA_HOME/conf/context.xml,添加<Context useHttpOnly="true">

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

<session-config>
        <session-timeout>30</session-timeout>

<cookie-config>

<secure> true</secure>

</cookie-config> 
    </session-config>

6 AJP端口管理

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

0x03 其他事项

1 日志记录

应配置日志功能,对用户登录进行记录,记录内容包括用户登录使用的账号,登录是否成功,登录时间,以及远程登录时,用户使用的IP地址。

① 建议配置

编辑server.xml配置文件,在<HOST>标签中增加记录日志功能
将以下内容的注释标记< ! --    -- >取消
<valve classname=”org.apache.catalina.valves.AccessLogValve”
Directory=”logs” prefix=”localhost_access_log.” Suffix=”.txt”
Pattern=”common” resloveHosts=”false”/>

② 备注事项

classname:This MUST be set to

org.apache.catalina.valves.AccessLogValve touse the default access log valve. &<60

Directory:日志文件放置的目录,在tomcat下面有个logs文件夹,那里面是专门放置日志文件的,也可以修改为其他路径;

Prefix: 这个是日志文件的名称前缀,日志名称为localhost_access_log.2008-10-22.txt,前面的前缀就是这个localhost_access_log

Suffix: 文件后缀名

Pattern: common方式时,将记录访问源IP、本地服务器IP、记录日志服务器IP、访问方式、发送字节数、本地接收端口、访问URL地址等相关信息在日志文件中

resolveHosts:值为true时,tomcat会将这个服务器IP地址通过DNS转换为主机名,如果是false,就直接写服务器IP地址

2 HTTPS加密协议

① 建议配置
(1)使用JDK自带的keytool工具生成一个证书
JAVA_HOME/bin/keytool  -genkey –alias tomcat –keyalg  RSA
-keystore /path/to/my/keystore
(2)修改tomcat/conf/server.xml配置文件,更改为使用https方式,增加如下行:
Connector classname=”org.apache.catalina.http.HttpConnector” 
port=”8443”  minProcessors=”5”  maxprocessors=”100” 
enableLookups=”true”  acceptCount=”10”  debug=”0”
scheme=”https” secure=”true” >
Factory classname=”org.apache.catalina.SSLServerSocketFactory”
clientAuth=”false” 
keystoreFile=”/path/to/my/keystore”  keystorePass=”runway”
protocol=”TLS”/>
/Connector>
其中keystorePass的值为生成keystore时输入的密码
(3)重新启动tomcat服务

② 备注事项

使用https方式登陆tomcat服务器页面,如果登陆成功,证明配置成功;如果登陆失败,证明配置失败。

tomcat安全配置参考的更多相关文章

  1. Tomcat安装配置

    Tomcat安装配置 很久没有通过博客对学习所得进行记录了. 现在将使用Tomcat的一些经验和心得写到这里,作为记录和备忘.如果有朋友看到,也请不吝赐教. 1.首先是Tomcat的获取和安装. 获取 ...

  2. 腾讯云服务器centos 6.5(jdk+tomcat+vsftp)、腾讯mysql数据库 及 tomcat自启动 配置教程

    1.腾讯云数据库配置 1.考虑到安全性问题,,平常不使用root用户登录,新增一个用户名neil,用来管理项目的数据库 a.首先登录root创建db_AA数据库 b.在root用户下,创建neil用户 ...

  3. Tomcat环境配置部署测试环境及架构

    Tomcat环境配置已经在前面介绍过了,这边就为童鞋们介绍下对于Tomcat的架构是怎么样的! Tomcat的架构包含(bin.conf.lib.logs.temp.wenapps.work)等文件夹 ...

  4. 转:Tomcat安装配置及站点说明

    原文地址:http://www.cnblogs.com/Johness/archive/2012/07/20/2600937.html 1.首先是Tomcat的获取和安装. 获取当然得上Apache的 ...

  5. apache2 tomcat https配置-被忽悠进了CentOS 6

    因为需要让ios应用可以绕过appstore,要找个https的地方放ipa,决定使用已有http server. 首先需要说明的是,apache可以通过反向代理方式将用户的https分发到tomca ...

  6. Tomcat 安全配置与性能优化

    一.Tomcat内存优化 1.JAVA_OPTS参数说明 Tomcat内存优化主要是对 tomcat 启动参数优化,我们可以在 tomcat 的启动脚本 catalina.sh 中设置 JAVA_OP ...

  7. Web —— java web 项目 Tomcat 的配置 与 第一个web 项目创建

    目录: 0.前言 1.Tomcat的配置 2.第一个Web 项目 0.前言 刚刚开始接触web开发,了解的也不多,在这里记录一下我的第一个web项目启动的过程.网上教程很多,使用的java IDE 好 ...

  8. Linux配置tomcat (centos配置java环境 tomcat配置篇 总结三)

    ♣下载安装tomcat7 ♣设置启动和关闭 ♣设置用户名和密码 ♣发布java web项目 声明:这篇教程是建立在前两篇教程的基础上的,所以,还没安装工具和jdk,可以先看这个系列的前面两篇(去到文末 ...

  9. Tomcat 参数配置相关

    Tomcat参数配置相关 by:授客 QQ:1033553122 目的: 对Tomcat配置的点滴学习总结,主要目的在于分析Tomcat与性能相关的一些参数设置,以便性能调优时选择最优配置   环境: ...

随机推荐

  1. https=http+ssl

    TLS/SSL中使用了非对称加密,对称加密以及HASH算法.握手过程的具体描述如下: 浏览器将自己支持的一套加密规则发送给网站. 网站从中选出一组加密算法与HASH算法,并将自己的身份信息以证书的形式 ...

  2. Python内置函数eval

    英文文档: eval(expression, globals=None, locals=None) The arguments are a string and optional globals an ...

  3. oracle_fdw安装及使用(无法访问oracle存储过程等对象)

    通过oracle_fdw可以访问oracle中的一些表和视图,也可以进行修改,尤其是给比较复杂的系统使用非常方便. (但不能使用oracle_fdw来访问oracle的存储过程.包.函数.序列等对象) ...

  4. 对于出现拒绝访问root用户的解决方案

    提示:ERROR 1044 (42000): Access denied for user ''@'localhost' to database 'mysql'   由于使用mysql -u root ...

  5. Scrapy 教程(三)-网站解析

    有经验的人都知道,解析网站需要尝试,看看得到的数据是不是想要的,那么在scrapy中怎么尝试呢? 调试工具-shell 主要用于编写解析器 命令行进入shell scrapy shell url 这个 ...

  6. Vue-cli3 简qian易yi教程

    原文地址 对于没有了解过 vue-cli3 的童鞋,建议先去看看官方的教程: 传送门 新版本的新特性 1. 插件 使用 cli 的插件,可以很快的搭建一个项目的结构.如 axios 的插件 vue-c ...

  7. BZOJ 5317: [Jsoi2018]部落战争

    传送门 写出式子,若存在 $a \in A$,$b \in B$,使得 $b+v=a$,那么此方案会产生冲突 即存在 $a \in A$,$b \in B$,使得 $v=a+(-b)$,设 $C=A+ ...

  8. 坐标轴刻度取值算法-基于魔数数组-源于echarts的y轴刻度计算需求

    本文链接:https://blog.csdn.net/qq_26909801/article/details/96966372数值型坐标轴刻度计算算法前言算法描述上代码代码运行效果结语前言因实习的公司 ...

  9. Django开发环境配置(win10)

    开发工具 pycharm专业版 安装Django pip install Django==2.0 如果不带版本号,默认安装最新版本查看Django 查看版本: python -m django --v ...

  10. Keycode含义

    keycode 是键盘上每一个按键对应的码keycode如下 :keycode 0 = keycode 1 = keycode 2 = keycode 3 = keycode 4 = keycode ...