暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Tomcat安全配置规范

原创 Henry 2023-07-05
944

一、 账号

编号:1

要求内容

应按照用户分配账号。避免不同用户间共享账号。

操作指南

1、参考配置操作

修改tomcat/conf/tomcat-users.xml配置文件,修改或添加帐号。

<user username=”tomcat” password=” Manager!@34” roles=”manager”>

2、补充操作说明

1、根据不同用户,取不同的名称。

2、Tomcat 从5.5这个版本及以后发行的版本默认都不存在admin.xml配置文件。

检测方法

1、判定条件

各账号都可以登录Tomcat Web服务器为正常

2、检测操作

访问http://ip:8080/manager/html管理页面,进行Tomcat服务器管理


 

编号:2

要求内容

应删除或锁定与设备运行、维护等工作无关的账号。

操作指南

1、参考配置操作

修改tomcat/conf/tomcat-users.xml配置文件,删除与工作无关的帐号。

例如tomcat1与运行、维护等工作无关,删除tomcat1帐号。

检测方法

1、判定条件

被删除的与工作无关的账号tomcat1不能正常登陆。

2、检测操作

访问http://ip:8080/manager/html管理页面,使用删除帐号进行登陆尝试。

 

编号:3

要求内容

禁用超级用户启用tomcat

操作指南

1、参考配置操作

在普通用户的模式下,运行tomcat的启动脚本

检测方法

1、判定条件

2、检测操作

查看当前系统的tomcat进程,确认程序启动时使用的身份。

 

二、口令

要求内容

对于采用静态口令认证技术的设备,口令长度至少8位,并包括数字、小写字母、大写字母和特殊符号4类中至少3类。

操作指南

1、参考配置操作

 在tomcat/conf/tomcat-user.xml配置文件中设置密码

<user username=”tomcat” password=”Manager!@34” roles=”manager”>

2、补充操作说明

口令要求:长度至少8位,并包括数字、小写字母、大写字母和特殊符号4类中至少3类。

检测方法

1、判定条件

检查tomcat/conf/tomcat-user.xml配置文件中的帐号口令是否符合移动通过配置口令复杂度要求。

2、检测操作

(1)人工检查配置文件中帐号口令是否符合;

(2)使用tomcat弱口令扫描工具定期对Tomcat Web服务器进行远程扫描,检查是否存在弱口令帐号。

3、补充说明

对于使用弱口令扫描工具进行检查时应注意扫描的线程数等方面,避免对服务器造成不必要的资源消耗;选择在服务器负荷较低的时间段进行扫描检查。

 

三、授权

编号1:

要求内容

在设备权限配置能力内,根据用户的业务需要,配置其所需的最小权限。

操作指南

1、参考配置操作

编辑tomcat/conf/tomcat-user.xml配置文件,修改用户角色权限

授权tomcat具有远程管理权限:

<user username=”tomcat” password=”Manager!@34”

roles=”admin,manager”>

2、补充操作说明

Tomcat用户角色分为:role1,tomcat,admin,manager四种。

role1:具有读权限;

tomcat:具有读和运行权限;

admin:具有读、运行和写权限;

manager:具有远程管理权限。

注:Tomcat 6.0.18版本只有admin和manager两种用户角色,且admin用户具有manager管理权限。

 

检测方法

1、判定条件

登陆远程管理页面,使用tomcat账号进行登陆,登陆成功。

2、检测操作

登陆http://ip:8080/manager/html页面,使用tomcat账号登陆,进行远程管理。

 

编号:2

要求内容

禁用manager功能

操作指南

1、参考配置操作

将以下目录$CATALINA_HOME/server/webapps/manager,移除到非$CATALINA_HOME/server/webapps目录

检测方法

1、判定条件

2、检测操作

查看$CATALINA_HOME/server/webapps/manager是否存在

 

四、日志要求

 

要求内容

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

操作指南

1、参考配置操作

编辑server.xml配置文件,在<HOST>标签中增加记录日志功能

将以下内容的注释标记< ! --    -- >取消

<valve classname=”org.apache.catalina.valves.AccessLogValve”

Directory=”logs” prefix=”localhost_access_log.” Suffix=”.txt”

Pattern=”common” resloveHosts=”false”/>

2、补充操作说明

classname: This MUST be set to

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

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

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

Suffix: 文件后缀名

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

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

检测方法

1、判定条件

查看logs目录中相关日志文件内容,记录完整

2、检测操作

查看localhost_access_log.2010-xx-xx.txt中相关日志记录

3、补充说明

 

编号:2

要求内容

启用访问模块审计、错误信息日志功能

操作指南

1、参考配置操作

2、补充操作说明

编辑server.xml配置文件,在<HOST>标签中增加记录日志功能

将以下内容的注释标记< ! --    -- >取消

<valve classname=”org.apache.catalina.valves.AccessLogValve”

Directory=”logs” prefix=”localhost_access_log.” Suffix=”.txt”

Pattern=”common” resloveHosts=”false”/>

 

检测方法

1、判定条件

2、检测操作

3、补充说明

检查server.xml配置文件,在<HOST>标签中,查看以下内容是否被注释标记< ! --    -- >取消

<valve classname=”org.apache.catalina.valves.AccessLogValve”

Directory=”logs” prefix=”localhost_access_log.” Suffix=”.txt”

Pattern=”common” resloveHosts=”false”/>

 

 

五、HTTP加密协议

要求内容

对于通过HTTP协议进行远程维护的设备,设备应支持使用HTTPS等加密协议。

操作指南

1、参考配置操作

(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=”runway1@”

protocol=”TLS”/>

/Connector>

其中keystorePass的值为生成keystore时输入的密码

(3)重新启动tomcat服务

检测方法

1、判定条件

使用https方式登陆tomcat服务器页面,登陆成功

2、检测操作

使用https方式登陆tomcat服务器管理页面

六、 更改默认管理端口

要求内容

使用HTTP协议的设备,更改tomcat服务器默认端口

操作指南

1、参考配置操作

(1)修改tomcat/conf/server.xml配置文件,更改默认管理端口到xx

 <Connector

port="xx"  maxHttpHeaderSize="8192" maxThreads="150"

minSpareThreads="25" maxSpareThreads="75"、

enableLookups="false" redirectPort="8443" acceptCount="100"

 connectionTimeout="300" disableUploadTimeout="true" />

(2)重启tomcat服务

 2、补充操作说明

 

检测方法

1、判定条件

使用xx端口登陆页面成功

2、检测操作

登陆http://ip:xx

3、补充说明

 

七、错误页面重定向

要求内容

Tomcat错误页面重定向

操作指南

1、参考配置操作

(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服务

(3)要求错误页面不能太大

检测方法

1、判定条件

指向指定错误页面

2、检测操作

URL地址栏中输入http://ip:8800/manager12345

 

八、 目录列出

要求内容

禁止tomcat列表显示文件

操作指南

1、参考配置操作

(1) 编辑tomcat/conf/web.xml配置文件,
<init-param>
        <param-name>listings</param-name>
        <param-value>true</param-value>
    </init-param>
把true改成false

 (2)重新启动tomcat服务

检测方法

1、判定条件

当WEB目录中没有默认首页如index.html,index.jsp等文件时,不会列出目录内容

2、检测操作

直接访问http://ip:8800/webadd

 

九、系统Banner信息

要求内容

修改系统Banner信息

操作指南

1、参考配置操作

修改catalina.jar中Serverinfo.properties中的以下参数(修改以掩饰真实版本信息):

server.build=<BuildDate>  

server.number=X

 

检测方法

1、判定条件

2、检测操作

检查catalina.jar中Serverinfo.properties中的参数

 

十、连接数设置

要求内容

根据机器性能和业务需求,设置最大最小连接数。

操作指南

1、参考配置操作

编辑server.xml文件,样例如下:
 <Connector   port="8080"  
      maxThreads="150"    
      minSpareThreads="25"    
      maxSpareThreads="75"  
      acceptCount="100"  
      />

maxThreads="150"  表示最多同时处理150个连接  
  minSpareThreads="25"   表示即使没有人使用也开这么多空线程等待  
  maxSpareThreads="75"  表示如果最多可以空75个线程

acceptCount="100"  当同时连接的人数达到maxThreads时,还可以接收排队的连接,超过这个连接的则直接返回拒绝连接

检测方法

1、判定条件

2、检测操作

此项设置,需根据应用的具体情况,分别配置相应的参数。

3、补充说明

 

十一、禁用非法HTTP方法

要求内容

禁用PUT、DELETE等危险的HTTP 方法;

操作指南

1、参考配置操作

编辑web.xml文件中配置

org.apache.catalina.servlets.DefaultServlet的

<init-param>

<param-name>readonly</param-name>

<param-value>false</param-value>

</init-param>

readonly参数默认是true,即不允许delete和put操作。

2、补充操作说明

检测方法

1、判定条件

2、检测操作

检查web.xml文件中配置

org.apache.catalina.servlets.DefaultServlet的<init-param>

<param-name>readonly</param-name>

<param-value>true</param-value>

</init-param>

其中param-value为true,则符合要求。

 

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论