Tomcat 基线检查策略
1、Tomcat共享帐号管理
1、参考配置
修改文件$TOMCAT_HOME/conf/tomcat-users.xml,请在tomcat-users标签内新增帐号,如:
<user username="test" password="tomcat!" roles="role1"/>
2、补充操作说明
(1)请根据实际情况配置用户名与密码
2、删除与工作无关账号
参考配置
(1)修改文件$TOMCAT_HOME/conf/tomcat-users.xml,删除无关账号内容,如:
<user username="role1" password="tomcat" roles="role1"/>
补充说明
需要删除账号:both、role1
3、静态口令太简单
1、参考配置
(1)配置密码复杂度
修改文件$TOMCAT_HOME/conf/tomcat-users.xml,修改password的值,如:
<user username="test" password="Manager!@34" roles="role1"/>
2、补充操作说明
口令要求:长度至少8位,并包括数字、小写字母、大写字母和特殊符号4类中至少3类。
4、静态口令生存期
1、参考配置
(1)请定期修改tomcat用户密码
修改文件$TOMCAT_HOME/conf/tomcat-users.xml,修改password的值,如:
<user username="test" password="Manager!@34" roles="role1"/>
5、记录用户登录日志信息
1、参考配置
(1)配置日志功能
修改文件$TOMCAT_HOME/conf/server.xml,
在<HOST>标签中将以下内容的注释标记< ! -- -- >取消
<valve classname=”org.apache.catalina.valves.AccessLogValve”
Directory=”logs” prefix=”localhost_access_log.” Suffix=”.txt”
Pattern=”common” resloveHosts=”false”/>
2、补充操作说明
(1)Directory:日志文件放置的目录,在tomcat下面有个logs文件夹,
那里面是专门放置日志文件的,也可以修改为其他路径
(2)Prefix: 这个是日志文件的名称前缀,
日志名称为localhost_access_log.2008-10-22.txt,前面的前缀就是这个localhost_access_log
(3)Suffix: 文件后缀名
(4)Pattern: common方式时,
将记录访问源IP、本地服务器IP、记录日志服务器IP、访问方式、发送字节数、本地接收端口、访问URL地址等相关信息在日志文件中
6、启用访问模块审计、错误信息日志功能
参考配置
(1)增加记录日志功能
修改文件$TOMCAT_HOME/conf/server.xml,在<HOST>标签中将以下内容的注释标记< ! -- -- >取消
<valve classname=”org.apache.catalina.valves.AccessLogValve”
Directory=”logs” prefix=”localhost_access_log.” Suffix=”.txt”
Pattern=”common” resloveHosts=”false”/>
7、日志需要记录远程访问的IP地址
1、参考配置
(1)配置日志功能
修改tomcat的conf目录下的文件server.xml,在<HOST>标签中将以下内容的注释标记< ! -- -- >取消
<valve classname="org.apache.catalina.valves.AccessLogValve"
directory="logs" prefix="localhost_access_log." Suffix=".txt"
Pattern="common" resloveHosts="false"/>
2、补充操作说明
(1)directory:日志文件放置的目录,在tomcat下面有个logs文件夹,那里面是专门放置日志文件的,也可以修改为其他路径
(2) Prefix: 这个是日志文件的名称前缀,日志名称为localhost_access_log.2008-10-22.txt,前面的前缀就是这个localhost_access_log
(3)Suffix: 文件后缀名
(4)Pattern: common方式时,将记录访问源IP、本地服务器IP、记录日志服务器IP、访问方式、发送字节数、本地接收端口、访问URL地址等相关信息在日志文件中
8、禁止超级用户启动tomcat
参考配置
(1)在普通用户的模式下,运行tomcat的启动脚本,不适用root用户启动
9、启用安全协议https
1、参考配置
(1)使用JDK自带的keytool工具生成一个证书
JAVA_HOME/bin/keytool -genkey –alias tomcat –keyalg RSA -keystore /path/to/my/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"/>
其中keystorePass的值为生成keystore时输入的密码,其他参数请根据实际情况填写
(3)重新启动tomcat服务
10、设置连接超时时间限制
1、参考配置
(1)配置定时自动登出功能
修改tomcat的conf目录下的文件server.xml,在相关内容下,修改connectionTimeout为300秒:
<Connector port="8080" maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="25"
maxSpareThreads="75" enableLookups="false"
redirectPort="8443" acceptCount="100"
connectionTimeout="300" disableUploadTimeout="true" />
请将connectionTimeout值设置为不大于基线配置值的整数,且不为0
2、补充操作说明
(1)请根据实际情况修改,针对每个应用下进行更改
11、检查最大连接数
参考配置
(1)设置连接数
修改tomcat的conf目录下的文件server.xml,配置内容参考如下:
<Connector port="8080"
maxThreads="1024" minSpareThreads="100"
maxSpareThreads="500" acceptCount="100"
/>
maxThreads="1024" 表示最多同时处理1024个连接,请根据实际情况配置不大于基线配置值
12、更改tomcat服务器默认管理端口
参考配置
(1)修改文件$TOMCAT_HOME/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服务
13、Tomcat错误页面重定向
参考配置
(1)配置$TOMCAT_HOME/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)要求错误页面不能太大
14、禁止tomcat列表显示文件
参考配置
(1) 禁止tomcat列表显示文件
修改文件$TOMCAT_HOME/conf/web.xml, 查找下述内容:
<init-param>
<param-name>listings</param-name>
<param-value>true</param-value>
</init-param>
把true改成false,则禁止列表显示文件。
(2)重新启动tomcat服务
15、配置自动登出
参考配置
(1)配置定时自动登出功能
修改文件$TOMCAT_HOME/conf/server.xml配置文件,在相关内容下,修改connectionTimeout为30秒(推荐值,必须小于300秒):
<Connector port="8080" maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="25"
maxSpareThreads="75" enableLookups="false"
redirectPort="8443" acceptCount="100"
connectionTimeout="30" disableUploadTimeout="true" />
(2)补充操作说明:
请将配置文件中未注释掉的所有连接端口Connector port配置项的connectionTimeout后面的时间修改为小于300秒即可。
16、禁用manager功能
参考配置
(1)将以下目录$TOMCAT_HOME/webapps/manager,移除到非$TOMCAT_HOME/webapps目录
17、根据机器性能和业务需求,设置最大最小连接数
参考配置
(1)设置连接数
修改文件$TOMCAT_HOME/conf/server.xml,配置内容参考如下:
<Connector port="8080"
maxThreads="1024" minSpareThreads="100"
maxSpareThreads="500" acceptCount="100"
/>
maxThreads="1024" 表示最多同时处理1024个连接
minSpareThreads="100" 表示即使没有人使用也开这么多空线程等待
maxSpareThreads="500" 表示如果最多可以空500个线程
acceptCount="100" 当同时连接的人数达到maxThreads时,还可以接收排队的连接,超过这个连接的则直接返回拒绝连接
18、禁用PUT、DELETE等危险的HTTP 方法
参考配置
(1)修改文件$TOMCAT_HOME/conf/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操作,修改为false。
最后更新于
这有帮助吗?