Tomcat安全加固规范


yum install tomcat-webapps tomcat-admin-webapps #用此命令下载tomcat

1 缩略语

HTTP HyperText Transfer Protocol 超文本传输协议

2 安全配置要求

1

3.1 账号

编号:1
要求内容 应按照用户分配账号。避免不同用户间共享账号。
操作指南 1、参考配置操作
修改 /etc/tomcat/tomcat-users.xml配置文件,修改或添加帐号。

<user username=”tomcat”password=” Manager!@34”roles=”manager”>可忽略
<role rolename="manager"/>
<role rolename="manager-gui"/>
<role rolename="admin"/>
<role rolename="admin-gui"/>
<user username="admin" password="admin" roles="admin-gui,admin,manager-gui,manager"/>

2
用户名是admin,密码是admin登录。
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 配置文件,删除与工作无关的帐号。
例如domcat与运行、维护等工作无关,删除domcatl帐号。
检测方法 1、判定条件
被删除的与工作无关的账号tomcatl不能正常登陆。
2、检测操作
访问 http://ip:8080/manager/html 管理页面,使用删除帐号进行登陆尝试。
编号:3
要求内容 禁用超级用户启用tomcat
操作指南 1、参考配置操作在普通用户的模式下,运行tomcat 的启动脚本
检测方法 1、判定条件
2、检测操作 查看当前系统的tomcat 进程,确认程序启动时使用的身份。

3.2 口令

要求内容 对于采用静态口令认证技术的设备,口令长度至少8位,并包括数字、小写字母、大写字母和特殊符号4类中至少3类。
操作指南 1、参考配置操作
在tomcat/conf/tomcat-user.xml配置文件中设置密码

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

2、补充操作说明
口令要求;长度至少8位,并包括数字、小写字母、大写字母和特殊符号4类中至少3类。
1、判定条件
检查tomcat/conf/tomcal-user.xml 配置文件中的帐号口令是否符合配置口令复杂度要求。
2、检测操作
(1)人工检查配置文件中帐号口令是否符合:
(2)使用 tomcat 弱口令扫描工具定期对 Tomcat Web 服务器进行远程扫猜,检查是否存在弱口令帐号。
3、补充说明
使用弱口令扫描工具进行检查时应注意扫描的线程数,避免对服务器造成不必要的资源消耗,选择在服务器负荷较低的时间段进行扫描检查。

3.3 授权

编号l:
要求内容 在设备权限配置能力内,根据用户的业务需要,配置其所需的最小权限。
操作指南 1、参考配置操作
编辑 somcat/conf/tomcat-user.xml 配置文件,修改用户角色权限授权 somcat 具有远程管理权限:
<user username=tomcat”password="Manger!@34"roles-"admin,manager”
2、补充操作说明
Tomcat 用户角色分为:rolel,tomcat,admin,manager四种,

rolel:具有读权限;
tamcat:兵有读和运行权限;
admin:具有读、运行和写权限:
manager:具有忘程管理权限。

注: Tamcat6.0.18 版本只有 admin 和 manager 两种用户角色,Ⅱ1 admin用户具有manager管理权限,
检测方法 1、判定条件
登陆远程管理页面,使用tomcat 账号进行登陪,登陆成功。
2、检测操作
登陆 http://ip:8080/manager/html 页面,使用 tomcat 账号登陆,进行运程管理。
编号:2
要求内容:禁用manager功能
操作指南 1、参考配置操作
将以下月录 C A T A L I N A H O M E / s e r v e r / w e b a p p s / m a n a g e r CATALINA_HOME/server/webapps/manager,移除到非 CATALINA_HOME/server/webupps 目录中,用mv移到本地处改名
检测方法 1、判定条件
2、检测操作
查看SCATALINA_HOME/scrverwebapps/manager 是否存在

3.4 日志

编号:1
要求内容 设备应配置日志功能,对用户登录进行记家,记录内容包括用户登录使用的乘号,登录是否成功,登录时间,以及远程登录时,用户使用的IP 地址。
操作指南 1、参考配量操作
编辑 server.xml 配置文件,在标签中增加记录日志功能
将以下内容的注释标记<!-- – >取消

<valveclassname=”org.apache.catalina.valves.AccessLog Valve”
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-x-xxtxt 中相关日志记录
3.补充说明
编号:2
要求内容 启用访问模块审计、错误信息日志功能
操作指南 1、参考配置操作
2、补充操作说明
编辑 scrverxml 配置文件,在标签中增加记录日志功能
将以下内容的注释标记<!- -->取消
<valveclassname=”org.apache.catalina.valves.AccessLog Valve”
Directory="logs”prefix=”localhost_access_log.”Suffix=”.txt”
Pattern=”common”resloveHosts=”false”/>
检测方法 1、判定条件
2、检测操作
3、补充说明
检查server.xml配置文件,在标签中,查看以下内容是否被注
释标记<!-- -->取消
<valveclassname=”org.apache.catalina.valves.AccessLog Valve”
Directory=”logs”prefix=”localhost_access_log.”Suffix=”.txt”
Pattern=”common”resloveHosts=”false”/>

3.5 HTTP 加密协议 不做

要求內容 对于通过HTTP 协议进行运程维护的设备,设备应支持使用HTTPS 等
加密协议。
操作擅南 1、参考配置操作
(1)使用JDK 自带的kcy1aol 工具生成一个证书
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”>
Factoryclassname=”org.apache.catalina.SSLServerSocketFactory”
clientAuth="false”
keystoreFile=”/path/to/my/keystore” keystorePass=”runwayl@”
protocol=”TLS”>
/Connector>
其中 keystorePass 的值为生成 keystore时输入的密码
(3)重新启动 tomcat 服务
检测方法 1、判定条件
使用 https 方式登陆 tomcat 服务器页面,登陆成功
2、检测操作
使用 https方式登陆tomcat 服务器管理页面

3.6 更改默认管理端口

要求内容 使用HTTP协议的设备,更改tomcat 服务器默认端口
操作指南 1、參考配置操作
(1)修改domcavconfkserver.xml 配置文件,更改默认管理端口到xx
<Connector
port="xx”maxHttpHeaderSize=“8192” maxThreads=“150”
minSpareThreads=“25” maxSpareThreads=“75”、
enableLookups=“false” redirectPort=“8443” acceptCount=“100”
connectionTimeout=“300” disableUploadTimeout=“true” />
3
(2)重启 tomcat 服务
2、补充操作说明
检测方祛 1、判定条件
使用 xx端口登陆页面成功
2、检测操作
登陆 http://ip:xx
3、补充说明

3.7 错误页面重定向

要求内容 Tomcat 错误页面重定向
操作指南 1、参考配置操作
(1)配置tomca/conf/web.xml文件:
在最后 -行之前加入以下内容:

<error-page>
<error-code>404<error-code>
<location>noFile.htm</location>
<error-page>
.....................
<error-page>
<exception-type>java.lang.NullPointerExceptian</excption-type>
<location>/ error.jsp</location>
<error-page>

4
第一个之间的配置实现了将 404 未找到jsp 网页的错误导向noFile.htm 页面,也可以用类似方法添加其他的错误代码导向页面,如403,500 等.导向页面,如403,500 等.
第二个之间的配置实现了当 jsp 网页出java.langNullPointeException 导常时,转向errorjsp 借误页面,还需要在第个jsp 网页中加入以下内容
<%@ page errorPage=“error.jsp”%>
典型的 error.jsp 错误页面的程序写法如下:
<%page conten’Typc=“text/html;chasct=GB2312”%>
<%@page isErrorPage="true“%>

p-ct 错误页面 出错了: 错误信息: <%=exception.gctMessage() %>
Stack Trace is:
<%
java.io.ChaArrayWriter cw - newjava.io.CharArray Writer):
java.io.PinWriter pw - new java.io.PrintWriter(cw,true);
exception.prin StackTracd(pw);
outp:intin(cw.soSting0);
%>
当出现 NullPointesException 异常时 kamcat 会把网页导入到emorjsp,且 会打印出出错信息。 (2)重新启动 tomcat 服务 (3)要求错误页面不能太大 检测方法 1、判建条件 指向指定错误页面 2、检测操作 URL 地址栏中输入http://ip8800/manager12345

3.8 目录列出

要求内容 禁止omeat 列表显示文件
操作指南 1、參考配置操作
(1) 编辑 tamcatkon/web.xml 配置文件,

<init-pamm>
<puram-name>listings<param-name>
<param-value>true<param-value>
</init-param>

把true 改成 false
5
(2)重新启动tamczt 服务
检测方法 1、判定条件
WEB 日录中没有默认首页如 index.html,indexjsp 等文件时,不会列出目录内容
2、检测操作
直接访月htp://ip:8800/webadd

3.9 系统 Banner 信息

要求内容 修改系统Banner 信息
操作指南 1、参考配置维作
6
修改catalina.jar 中Servarinfe.properties 中的以下参数(修改以掩饰真实版本信息);

serverbuili-<BuildDate>
server.number-X

检测方法 1、判定条件
2、检测操作
检查catalina.jar 中 Serverinfo.propertics 中的参数

3.10 连接数设置

要求内容 根据机器性能和业务需求,设置最大最小连接数
操作指南 1、参配置操作
编辑server.xml 文件,样例如下:
<Cannector port“8080°
maxThreads="15g
minSpareThreads=“25”
maxSpareThreads=“75”
acceptCountw"100°
/>
maxThreads=“150 表示最多同时处理150 个连接
minSpareTheeadsw"25” 表示即使没有人使用也开这么多空线程等待
maxSpareThreads=“75” 表示如果最多可以空75 个线程
acoeplCount="100℃ 当同时连接的人数达到maxThreads 时,还可以接收排队的连接超过这个连按的则直接返国拒绝连接
7
检测方法 1、判定条件
2、检测操作
此项设置,需根据应用的具体情况,分别配置相应的参数。
3、补充说明

3.11 禁用非法 HTTP 方法

要求内容 禁用PUT、DELETE等危险的HTTP 方法:
操作指离 1、参考配置操作
编辑 web.xml 文件中配置
org.apache.catalina.servlets.DefaultServlet 的

<init-param>
<paramname>readonly</param-name>
<puram-value>false<fpaam-value>
</init-param>

8
readonly参数默认是true,即不允许ddlete和put操作,
2、补充操作说明
检测方祛 1、判定条件
2、检测操作
检查 web.xml文件中配置
org.apache.catalina.servlets.DefaultServlet 的

<paramname>readonly</param-name>
<puram-value>false<fpaam-value>

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

发布了26 篇原创文章 · 获赞 0 · 访问量 566

猜你喜欢

转载自blog.csdn.net/Butterfly0011/article/details/104802330