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

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

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

1. 用户账号与口令安全

修改默认账号口令

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

参考配置操作

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

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

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

[[261794]]

补充操作说明

“强壮的口令”要求为口令长度至少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配置文件,在标签中增加记录日志功能。

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

  1. <valve classname=”org.apache.catalina.valves.AccessLogValve”Directory=”logs” prefix=”localhost_access_log.” Suffix=”.txt”  
  2. Pattern=”common” resloveHosts=”false”/> 

补充操作说明

  1. classname: This MUST be set to 
  2. 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

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

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

c.重新压缩catalina.jar

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

判定条件

Telent ip :80 端口

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

5.禁止目录遍历

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

参考配置操作

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

  1. <init-param> 
  2. <param-name>listings</param-name
  3. <param-value>true</param-value> 
  4. </init-param> 

 

把true改成false

(2)重新启动tomcat服务

判定条件

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

检测操作

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

6.错误信息自定义

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

参考配置操作

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

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

  1. <error-page> 
  2. <error-code>404</error-code> 
  3. <location>/noFile.htm</location> 
  4. </error-page> 
  5. …………… 
  6. <error-page> 
  7. <exception-type>java.lang.NullPointerException</exception-type> 
  8. <location>/error.jsp</location> 
  9. </error-page> 

 

***个<error-page></error-page>之间的配置实现了将404未找到jsp网页的错误导向noFile.htm页面,也可以用类似方法添加其多的错误代码导向页面,如403,500等。

第二个<error-page></error-page>之间的配置实现了当jsp网页出现java.lang.NullPointerException导常时,转向error.jsp错误页面,还需要在第个jsp网页中加入以下内容:

  1. <%@ page errorPage="/error.jsp" %> 

典型的error.jsp错误页面的程序写法如下:

  1. <%@ page contentType="text/html;charset=GB2312"%> 
  2. <%@ page isErrorPage="true"%> 
  3. <html> 
  4. <head><title>错误页面</title></head> 
  5. <body>出错了:</p> 错误信息: <%= exception.getMessage() %><br> 
  6. Stack Trace is : <pre><font color="red"><% 
  7. java.io.CharArrayWriter cw = new java.io.CharArrayWriter(); 
  8. java.io.PrintWriter pw = new java.io.PrintWriter(cw,true); 
  9. exception.printStackTrace(pw); 
  10. out.println(cw.toString()); 
  11. %></font></pre> 
  12. </body> 
  13. </html> 

当出现NullPointerException异常时tomcat会把网页导入到error.jsp,且会打印出出错信息。

(2)重新启动tomcat服务

判定条件

指向指定错误页面

检测操作

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

7.更改默认管理端口

更改tomcat服务器默认端口

参考配置操作

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

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

(2)重启tomcat服务

补充操作说明

判定条件

使用8800端口登陆页面成功

检测操作

登陆http://ip:8800

8.超时自动登出

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

参考配置操作

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

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

判定条件

30秒自动登出。

检测操作

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

9.通讯加密

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

参考配置操作

(1)使用JDK自带的keytool工具生成一个证书

  1. $JAVA_HOME/bin/keytool -genkey –alias tomcat –keyalg RSA 
  2. -keystore /path/to/my/.keystore 

(2)修改tomcat/conf/server.xml配置文件,更改为使用https方式,增加如下行:

  1. <Connector classname="org.apache.catalina.http.HttpConnector" 
  2.  
  3. port="8443" minProcessors="5" maxprocessors="100" enableLookups="true" 
  4.  
  5. acceptCount="10" debug="0" scheme="https" secure="true" 
  6.  
  7. clientAuth="false" keystoreFile="/path/to/my/.keystore" 
  8.  
  9. keystorePass="runway" protocol="TLS"/> 

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

(3)重新启动tomcat服务

判定条件

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

检测操作

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

责任编辑:武晓燕 来源: 今日头条
相关推荐

2019-03-20 15:21:28

Web漏洞Tomcat

2019-07-01 10:48:13

Tomcat中间件TPM

2011-05-24 15:10:48

2021-02-11 08:21:02

中间件开发CRUD

2018-07-29 12:27:30

云中间件云计算API

2018-02-01 10:19:22

中间件服务器系统

2016-11-11 21:00:46

中间件

2015-01-14 10:24:45

2012-11-30 10:21:46

移动中间件

2009-06-16 15:55:06

JBoss企业中间件

2023-06-29 10:10:06

Rocket MQ消息中间件

2023-10-24 07:50:18

消息中间件MQ

2012-11-01 15:16:22

金蝶中间件研究院院长

2021-06-15 10:01:02

应用系统软件

2011-10-24 07:41:38

SOA中间件应用服务器

2018-05-08 16:33:31

中间件RPC企业

2018-05-02 16:23:24

中间件RPC容器

2020-02-10 15:30:51

数据库MySQLDAL

2015-08-11 11:16:36

淘宝中间件

2014-06-20 09:18:54

Dustjs中间件
点赞
收藏

51CTO技术栈公众号