转载

Tomcat中间件安全基线配置规范

本篇文章较长,但请大家耐心看完,毕竟是小编费劲心思总结的,而且小编相信这篇肯定对大家是有一点帮助的;好了,不打扰大家了,耐心看吧!

1. 用户账号与口令安全

修改默认账号口令

修改默认口令或禁用默认账号

参考配置操作

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

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

<user username=”tomcat” password=”强壮的口令”  
roles=”admin,manager”> 

Tomcat中间件安全基线配置规范

补充操作说明

“强壮的口令”要求为口令长度至少8位,并包括数字、小写字母、大写字母和特殊符号4类中至少2类。

Tomcat 4.x和5.x版本用户角色分为:role1,tomcat,admin,manager四种。

  1. role1:具有读权限;
  2. tomcat:具有读和运行权限;
  3. admin:具有读、运行和写权限;
  4. manager:具有远程管理权限。

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

Tomcat 4.1.37和5.5.27版本及以后发行的版本默认除admin用户外其他用户都不具有manager管理权限。

判定条件

修改后的账号可以登录Tomcat Web服务器为正常。

检测操作

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

2.优化WEB服务账号

设置shutdown为复杂的字符串,防止恶意用户telnet到8005端口后,发送SHUTDOWN命令停止Tomcat服务。

参考配置操作

打开Tomcat_home/conf/server.xml,设置shutdown为复杂的字符串。

<Server port="8005" shutdown="复杂字符不要包括特殊字符,如:冒号、分号、引号等。

判定条件

查看Tomcat_home/conf/server.xml配置文件

<Server port="8005" shutdown="复杂的字符串">

3.日志与审计

增加访问日志审计,记录错误信息和访问信息。

参考配置操作

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

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

<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 to use 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地址

判定条件

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

检测操作

查看localhost_access_log.2018-10-22.log中相关日志记录

4.安全防护

隐藏Tomcat显示版本信息

参考配置操作

a.解压catalina.jar

cd {Tomcat_home}/server/lib 【4.x】 
cd {tomcat_home}/lib【5.5以上】 
jar xf catalina.jar org/apache/catalina/util/ServerInfo.properties 

b.修改server.info行,修改相关的版本信息:server.info=Apache Tomcat

c.重新压缩catalina.jar

jar uf catalina.jar org/apache/catalina/util/ServerInfo.properties 

判定条件

Telent ip :80 端口

执行get head查看是否包含版本信息

5.禁止目录遍历

修改参数文件,禁止目录遍历。

参考配置操作

(1) 编辑tomcat/conf/web.xml配置文件,

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

把true改成false

(2)重新启动tomcat服务

判定条件

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

检测操作

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

6.错误信息自定义

修改错误文件信息内容,防止信息泄漏

参考配置操作

(1)配置tomcat/conf/web.xml文件:

在最后一行之前加入以下内容:

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

判定条件

指向指定错误页面

检测操作

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

7.更改默认管理端口

更改tomcat服务器默认端口

参考配置操作

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

<Connector  
port="8800" maxHttpHeaderSize="8192" maxThreads="150"  
minSpareThreads="25" maxSpareThreads="75"、  
enableLookups="false" redirectPort="8443" acceptCount="100"  
connectionTimeout="300" disableUploadTimeout="true" /> 

(2)重启tomcat服务

补充操作说明

判定条件

使用8800端口登陆页面成功

检测操作

登陆http://ip:8800

8.超时自动登出

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

参考配置操作

编辑tomcat/conf/server.xml配置文件,修改为30秒

<Connector 
port="8080" maxHttpHeaderSize="8192" maxThreads="150" 
minSpareThreads="25" maxSpareThreads="75"、 
enableLookups="false" redirectPort="8443" acceptCount="100" 
connectionTimeout="300" disableUploadTimeout="true" /> 

判定条件

30秒自动登出。

检测操作

登陆tomcat默认页面http://ip:8080/manager/html ,使用管理账号登陆

9.通讯加密

对于通过HTTP协议进行远程维护的设备,设备应支持使用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" 
 
clientAuth="false" keystoreFile="/path/to/my/.keystore" 
 
keystorePass="runway" protocol="TLS"/> 

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

(3)重新启动tomcat服务

判定条件

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

检测操作

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

原文  http://server.51cto.com/sSecurity-594686.htm
正文到此结束
Loading...