Tomcat系统加固规范

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介:

1  账号管理、认证授权

1.1.1 通用说明

1.      密码复杂性要求:长度至少8位,并包括数字、小写字母、大写字母和特殊符号4类。

2.      Tomcat版本用户角色分为:role1tomcatadminmanager四种。

l  role1:具有读权限;

l  tomcat:具有读和运行权限;

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

l  manager:具有远程管理权限;

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

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

 

1.1.2 9C-Tomcat-01-01-01(必选)

编号

9C-Tomcat-01-01-01

名称

为不同的管理员分配不同的账号

实施目的

应按照用户分配账号,避免不同用户间共享账号,密码配置强密码,提高安全性。

问题影响

账号混淆,权限不明确,存在用户越权使用的可能,密码简单存在暴力破解风险。

系统当前状态

记录tomcat/conf/tomcat-users.xml文件

实施步骤

1、检查方法:

l  默认通过http://ip:8080/manager/html可以访问tomcat manager

l  默认通过http://ip:8080/admin可以访问tomcat admin

 

2、参考配置操作

修改tomcat/conf/tomcat-users.xml配置文件,修改或添加帐号。(tomcat7 默认配置如下:)

<role  rolename="tomcat"/>

  <role rolename="role1"/>

  <role rolename="admin"/>

  <role rolename="manager"/>

  <role  rolename="manager-gui"/>

  <user username="tomcat"  password="复杂的口令" roles="tomcat"/>

  <user username="both"  password="复杂的口令" roles="tomcat,role1"/>

  <user username="role1"  password="复杂的口令" roles="role1"/>

  <user username="admin"  password="复杂的口令"   roles="manager-gui"/>

<user username="tomcat" password="复杂的口令" roles="manager-script"/>

操作要求:在tomcat_home下建立systembackup目录,备份tomcat-users.xml至该目录。然后将所有password修改为强密码,需符合密码复杂性要求。

2、补充操作说明

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

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

回滚方案

还原tomcat/conf/tomcat-users.xml文件

判断依据

依据需求分配用户账号,如无要求初始化安装执行

实施风险

重要等级

备注


1.1.3 9C-Tomcat-01-01-02(必选)

编号

9C-Tomcat-01-01-02

名称

删除文档和示例程序

实施目的

删除系统默认安装的文档目录和示例程序目录,减少系统安全隐患。

问题影响

允许非法利用系统默认目录

系统当前状态

打开tomcat_home/webapps,检查是否存在默认文档,如:docs和examples文件夹

实施步骤

操作要求:在tomcat_home下建立systembackup目录,备份系统默认文档至该目录。删除系统默认管理目录,如:docsexamplesManagerhost-managerroot文件夹

l  删除tomcat_home/webapps下的managerhost-manager目录。

l  删除tomcat_home/webapps下的admin目录和ROOT目录。

l  删除tomcat_home/webapps下的Docs目录和examples目录

 

 

回退方案

从systembackup提取后还原  

判断依据

初始安装执行

实施风险

重要等级

备注


 

 

1.1.4 9C-Tomcat-01-01-05(必选)

编号

9C-Tomcat-01-01-05

名称

设置shutdown字符串

实施目的

防止恶意用户telnet8005端口后,发送shutdown命令停止tomcat服务

问题影响

被恶意利用,停止服务

系统当前状态

打开tomcat_home/conf/server.xml,查看是否设置了复杂的字符串

<Server port=”8005”  shutdown=”SHUTDOWN”>

实施步骤

1、操作要求:tomcat_home下建立systembackup目录,备份server.xml至该目录

l  修改shutdown默认字符串,要求同强密码设置要求。

回退方案

从systembackup目录下还原该文件

判断依据

业务测试正常

实施风险

重要等级

备注


 

1.1.5 9C-Tomcat-01-01-06(必选)

编号

9C-Tomcat-01-01-06

名称

设置运行身份

实施目的

linux下以特定用户运行服务,增强安全性

问题影响

默认root系统管理员权限,被恶意利用后,

系统当前状态

检查tomcat的启动脚本或服务,确认是否以tomcat身份运行。理论上tcp 1024端口之后,均可使用特定用户运行

实施步骤

1、操作要求:

l  创建tomcat组:groupadd tomcat

l  创建tomcat用户并加入tomcat组:useradd tomcat –g  tomcat

l  tomcat身份启动服务

回退方案

判断依据

业务测试正常

实施风险

重要等级

备注


 

 

2  日志配置

2.1.1 9C-Tomcat-02-01-01(可选)

编号

9C-Tomcat-02-01-01

名称

启用日志记录功能

实施目的

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

问题影响

无法对用户的登陆进行日志记录

系统当前状态

查看server.xml

实施步骤

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.2008-10-22.txt前面的前缀就是这个localhost_access_log

Suffix: 文件后缀名

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

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

回退方案

还原server.xml

判断依据

判定条件

登录测试,检查相关信息是否被记录

查看server.xml文件

实施风险

重要等级

备注


 

3  通信协议

3.1.1 9C-Tomcat-03-01-01(可选)

编号

9C-Tomcat-03-01-01

名称

HTTPS协议

实施目的

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

问题影响

增加数据库数据传输安全隐患

系统当前状态

查看tomcat/conf/server.xml

实施步骤

(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=”runway”

protocol=”TLS”/>

/Connector>

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

(3)重新启动tomcat服务

回退方案

还原tomcat/conf/server.xml

判断依据

1、  判定条件

查看tomcat/conf/server.xml

2、检测操作

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

实施风险

重要等级

备注


 

3.1.2 9C-Tomcat-03-01-02(可选)

编号

9C-Tomcat-03-01-02

名称

更改tomcat服务器默认端口

实施目的

更改tomcat服务器默认端口,增加系统安全性

问题影响

不安全性增加

系统当前状态

查看tomcat/conf/server.xml

实施步骤

1、参考配置操作

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

 

 

回退方案

还原tomcat/conf/server.xml

判断依据

1、判定条件

查看tomcat/conf/server.xml

2、检测操作

登陆http://ip:8800

 

 

实施风险

重要等级

备注


 

4  设备其他安全要求

4.1.1 9C-Tomcat-04-01-01(可选)

编号

9C-Tomcat-04-01-01

名称

登录超时

实施目的

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

问题影响

被恶意攻击者盗用

系统当前状态

查看tomcat/conf/server.xml

实施步骤

参考配置操作

编辑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" />

 

 

回退方案

还原tomcat/conf/server.xml

判断依据

1、判定条件

查看tomcat/conf/server.xml

2、检测操作

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

 

 

实施风险

重要等级

备注


 

4.1.2 9C-Tomcat-04-01-02(可选)

编号

9C-Tomcat-04-01-02

名称

Tomcat错误页面重定向

实施目的

更改Tomcat错误页面重定向页面,增加系统安全性

问题影响

不安全性增加

系统当前状态

查看tomcat/conf/web.xml

实施步骤

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,且会打印出出错信息。

 

 

回退方案

还原tomcat/conf/web.xml

判断依据

1、判定条件

查看tomcat/conf/web.xml

2、检测操作

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

实施风险

重要等级

备注


 

4.1.3 9C-Tomcat-04-01-03(必选)

编号

9C-Tomcat-04-01-03

名称

禁止tomcat列表显示文件

实施目的

禁止tomcat列表显示文件,增加系统安全性

问题影响

不安全性增加

系统当前状态

查看tomcat/conf/web.xml

实施步骤

1、参考配置操作

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

 (2)重新启动tomcat服务

回退方案

还原tomcat/conf/web.xml

判断依据

1、判定条件

查看tomcat/conf/web.xml

2、检测操作

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

实施风险

重要等级

备注





















本文转自leonardos51CTO博客,原文链接:http://blog.51cto.com/leomars/1571506,如需转载请自行联系原作者



相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
7月前
|
Arthas 监控 Java
Arthas 可以用于监控和诊断在 Windows 系统下部署的 Tomcat 服务
Arthas 可以用于监控和诊断在 Windows 系统下部署的 Tomcat 服务
881 2
|
Java 应用服务中间件 Linux
百度搜索:蓝易云【Linux系统Tomcat安装与配置。】
Tomcat是一个开源的Java Servlet容器,它实现了Java Servlet和JavaServer Pages(JSP)规范。在Linux系统上安装和配置Tomcat可以为Java Web应用程序提供服务。
95 0
|
2月前
|
Java Shell 应用服务中间件
Mac系统下配置环境变量:Javajdk、maven、tomcat 环境变量配置及对应配置文件
这篇文章介绍了如何在Mac系统下配置Java JDK、Maven和Tomcat的环境变量,包括配置文件的选择、解决环境变量在zsh shell中无效的问题、查看和设置系统环境变量的方法,以及JDK和Maven的下载、配置和测试步骤。
1589 1
Mac系统下配置环境变量:Javajdk、maven、tomcat 环境变量配置及对应配置文件
|
7月前
|
前端开发 Java 关系型数据库
基于ssm框架旅游网旅游社交平台前后台管理系统(spring+springmvc+mybatis+maven+tomcat+html)
基于ssm框架旅游网旅游社交平台前后台管理系统(spring+springmvc+mybatis+maven+tomcat+html)
|
6月前
|
缓存 安全 前端开发
(转)浅谈tomcat优化(内存,并发,缓存,安全,网络,系统等)
(转)浅谈tomcat优化(内存,并发,缓存,安全,网络,系统等)
|
7月前
|
JSON 前端开发 Java
管理系统总结(前端:Vue-cli, 后端Jdbc连接mysql数据库,项目部署tomcat里)
管理系统总结(前端:Vue-cli, 后端Jdbc连接mysql数据库,项目部署tomcat里)
|
Java 应用服务中间件
百度搜索:蓝易云【Debian11系统编译安装Tomcat教程。】
以上是在Debian 11系统上编译安装Tomcat的基本步骤。请根据实际情况进行相应的调整和配置。
90 0
|
关系型数据库 MySQL Java
Linux系统jdk&Tomcat&MySQL安装以及J2EE后端接口部署
Linux系统jdk&Tomcat&MySQL安装以及J2EE后端接口部署
77 0
|
Java 应用服务中间件 Linux
百度搜索:蓝易云【Centos8 stream系统编译安装Tomcat教程。】
以上是在CentOS 8 Stream系统上编译安装Tomcat的基本教程。请注意,具体的配置和参数可能因您的需求而有所不同,您可以根据自己的情况进行调整。同时,请确保在执行任何操作之前备份重要的文件和配置。
248 1
|
Java 应用服务中间件 Linux
HTTPS && Tomcat && Servlet && 博客系统 && 软件测试的概念 && Linux
HTTPS && Tomcat && Servlet && 博客系统 && 软件测试的概念 && Linux
62 0