Tomcat安全.docx

上传人:b****6 文档编号:6049029 上传时间:2023-01-03 格式:DOCX 页数:20 大小:29.13KB
下载 相关 举报
Tomcat安全.docx_第1页
第1页 / 共20页
Tomcat安全.docx_第2页
第2页 / 共20页
Tomcat安全.docx_第3页
第3页 / 共20页
Tomcat安全.docx_第4页
第4页 / 共20页
Tomcat安全.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

Tomcat安全.docx

《Tomcat安全.docx》由会员分享,可在线阅读,更多相关《Tomcat安全.docx(20页珍藏版)》请在冰豆网上搜索。

Tomcat安全.docx

Tomcat安全

1Tomcat安全

1.1背景介绍

Tomcat是一个免费的开源的Serlvet容器,它是Apache基金会的Jakarta项目中的一个核心项目,由Apache,Sun和其它一些公司及个人共同开发而成。

由于有了Sun的参与和支持,最新的Servlet和Jsp规范总能在Tomcat中得到体现。

尽管Tomcat的Web服务器功能较少,但是,Tomcat容易架设、容易移植、与其他服务器兼容性极好,相对于其它以C、C++所编写的Web服务器,Tomcat比较能忍受远程缓冲区溢出的攻击。

因为Tomcat的Java虚拟机是位于网络及操作系统之间,它可以防止几乎所有类型的缓冲区溢出攻击。

此外,Tomcat的运行速度也比较快,足以运行今日大多数的企业网站。

因此,Tomcat服务器的应用也是极为广泛的。

在使用Tomcat服务器时,我们要避免错误的配置引起的安全问题,同时,也使用更合理的配置或插件来加强Tomcat的安全防护。

eCity平台定制化的Tomcat是基于apache-tomcat-6.0.18进行修改,在”..\工具\05Tomcat安全”中提供,修改内容都有批注,其它产品可以借鉴。

1.2Tomcat安全配置规范

Tomcat安全配置规范包括以下几部分

1.2.1版本部署运行的策略

1.2.1.1及时更新补丁或升级系统,使用最新最稳定的安全版本

说明:

系统的最原始攻击来自其本身的漏洞,因此一定要做好其漏洞的防护。

搜索Tomcat最新最稳定的安全版本和安全补丁,下载并安装。

该规则主要针对发布版本,至于现网正在运行的版本,需要评估更新Tomcat版本对产品产生的影响,并酌情把握。

实施指导:

下载最新最稳定的版本(以下提供的均为官方网址)

1.在http:

//tomcat.apache.org/whichversion.html上,查看Servlet和JSP规范对应的Tomcat版本,以及各版本的详细说明,以方便选择最合适的版本。

2.在http:

//tomcat.apache.org/download-**.cgi上下载最新最稳定的安全版本。

目前仅推荐60和55系列的版本,即将网址中的**符号替换成60或者55。

其他系列的版本已经归档,并且不再能得到支持。

安装步骤(以下皆以Tomcat6.0.20为例)

1.Window安装:

#在http:

//tomcat.apache.org/download-60.cgi上下载apache-tomcat-6.0.20.exe程序

#执行./apache-tomcat-6.0.20.exe

#配置安装目录

#进入Configuration配置界面

#修改默认端口8080为其他不宜猜测的端口

#修改默认管理员用户名admin

#配置管理员密码为强口令

#配置Java虚拟机路径为可用jre路径(建议版本在1.5以上)

#进入安装等待状态

2.Unix安装

#在http:

//tomcat.apache.org/download-60.cgi上,下载“BinaryDistributions→Core”路径下的tar.gz

#gzip-dapache-tomcat-6.0.20.tar.gz

#tar-xvfapache-tomcat-6.0.20.tar

#cd./apache-tomcat-6.0.20/bin

#./startup.sh

如需配置管理员,可以在./conf/tomcat-user.xml文件中修改默认密码为强口令:

//修改XXXX为强口令

补丁

在安全报告http:

//tomcat.apache.org/security.html上,查找产品当前使用的版本所存在的安全漏洞,并根据安全报告中漏洞的威胁级别,以及产品本身的应用场景,选择下载补丁还是升级系统。

备注:

一般不建议直接打补丁,建议升级到当前系列已被评估过的最新最稳定的安全版本。

1.2.1.2用于运行Tomcat的用户必须是一个没有特权的用户:

既无权访问非必须的文件,又不能执行非必须的程序

说明:

缺省情况下,Java运行时根据运行它的用户授予安全权限。

当Tomcat以系统管理员身份或作为系统服务运行时,Java运行时取得了系统用户或系统管理员所具有的全部权限。

这样一来,Java运行时就取得了所有文件夹中所有文件的全部权限。

并且Servlets(JSP在运行过程中要转换成Servlets)取得了同样的权限。

所以Java代码可以调用JavaSDK中的文件API列出文件夹中的全部文件,删除任何文件,最大的危险在于以系统权限运行一个程序。

该安全配置项需要每个产品都要严格执行。

实施指导:

Window环境:

1.新建普通用户tomcatuser,确定新用户tomcatuser不属于管理员组。

2.设置权限:

为tomcatuser用户添加Tomcat安装目录的读、写、执行的权限;为tomcatuser用户添加应用程序(例如webapps)目录的只读权限;如果某些应用程序需要写权限,请单独为其配置tomcatuser的写权限。

3.打开“控制面板→管理工具→服务”,在本地服务中找到“ApacheTomcat”,打开其属性,在“登录”页签中配置帐户为tomcatuser。

4.以tomcatuser用户重新登录后启动Tomcat服务器,或者在DOS窗口以RUNAS命令启用tomcatuser帐号,打开Tomcat服务。

Linux环境:

1.专门为Tomcat建立一个单独的用户和用户组。

#groupaddtomcatgroup

#useradd–gtomcatgrouptomcatuser–ptomcatuser

2.设置权限:

为tomcatuser用户添加Tomcat安装目录的读、写、执行的权限;为tomcatuser用户添加应用程序(例如webapps)目录的只读权限;如果某些应用程序需要写权限,请单独为其配置tomcatuser的写权限。

3.以tomcatuser用户登录后启动Tomcat服务器。

1.2.1.3删除Tomcat默认管理控制台或管理员帐户

说明:

默认情况下,Tomcat存在管理控制台,其地址一般为http:

//[IP]:

[Port]/admin。

管理台的应用文件,在$tomcat\server\webapps下,有admin和manager两个应用。

其用户密码,在$tomcat\conf/tomcat-users.xml中定义。

在$tomcat\webapps下的admin.xml和manager.xml文件,定义了可以通过访问/admin和/manager进入控制台的通道。

默认情况下,可以轻易的登录tomcat管理台,造成严重安全问题。

该安全配置项需要每个产品都要严格执行。

实施指导:

方法一:

本方法适用于完全不需要使用默认控制台及相关功能的应用场景。

1.删除$tomcat\webapps下admin.xml和manager.xml文件;

2.删掉$tomcat\conf/tomcat-users.xml中的用户密码;

3.删除$tomcat\server\webapps下的admin和manager两个应用;

4.删除$tomcat\webapps下的admin和manager两个应用。

方法二:

本方法适用于需要保留默认控制台和相关程序的应用场景。

1.在$tomcat目录下新建一个myapps;

2.在myapps下新建一个ROOT目录;

3.修改配置文件$tomcat\conf\server.xml,将appBase的值修改为myapps:

1.2.1.4删除安装过程文件、缺省安装的管理帮助文件及用户测试类的非必需文件

说明:

默认的示例或测试应用容易被远程访问或执行,给系统带来相当的危害。

该安全配置项需要每个产品都要严格执行。

实施指导:

1.删除安装过程文件:

//安装后删除

apache-tomcat-6.0.20.*//以6.0.20版本为例

2.删除非必需的管理应用和帮助应用:

$tomcat\webapss\*

Tomcat6之前的版本的版本还需要删除以下目录:

$tomcat\server\webapps\*

3.删除系统示例程序和网页:

$tomcat\examples//安装时可以选择不安装这部分

4.删除用户测试类的非必需文件。

1.2.1.5禁用应用程序自动部署功能

说明:

默认情况下,tomcat启动时,会自动部署$appBase下面的所有应用。

例如,当$appBase的值为webapps时,那么任意一个应用,只要被放进webapps目录下,在tomcat启动时,都会被发布。

这有可能导致恶意或者未经测试的应用程序被自动部署在服务器上。

因此,这里必须禁用掉Tomcat的自动部署功能。

实施指导:

修改配置文件$tomcat/conf/server.xml如下:

autoDeploy="false"//自动部署

deployOnStartup="false"//在启动时自动部署

备注:

1.如果server.xml文件中不存在deployOnStartup参数,则必须手工添加,因为该参数的默认值是true。

格式位置如下:

2.关闭自动部署功能后,Tomcat不会自动发布$appBase目录下的web应用。

对需要发布的Web应用,需要手工部署。

手工部署的推荐方法,是在server.xml文件的Host标签内新建一个context,格式如下:

reloadable="false"//只在启动时加载该Web应用WEB-INF的lib和classes

docBase="D:

\myapp" //应用程序的路径

workDir="D:

\myapp\work"//该web应用的工作目录

/>

1.2.2基本配置的安全策略

1.2.2.1禁用不必要的http方法:

DELETE、PUT、TRACE等

说明:

Tomcat服务器提供默认http方法包括GET、HEAD、POST、PUT、DELETE、OPTIONS。

在这些方法中,PUT、DELETE方法很少被使用到,并且极易被利用来进行攻击。

在配置前,需要了解产品是否会使用到这些HTTP方法,如果用不到这些方法,则必须禁用。

开放这些方法会被APPSCAN等工具扫描出来,并被评为中级安全风险。

实施指导:

1.禁用DELETE和PUT的方法:

在$tomcat/conf/web.xml检查readonly参数的值是否为true:

readonly

true

备注:

如果不存在readonly参数,则不用配置,因为该参数的默认值为true;如果配置了该参数,则需要确保参数值为true。

2.禁用Trace的方法:

在$tomcat/conf/server.xml禁用trace方法,即配置allowTrace为false:

备注:

如果不存在aloowTrace参数,则不用配置,因为该参数的默认值为false;如果配置了该参数,需要确保参数值为false。

3.在$tomcat/conf/web.xml文件的节中增加以下内容:

/*

OPTIONS

PUT

DELETE

TRACE

1.2.2.2禁用webdav

说明:

WebDAV(Web-basedDistributedAuthoringandVersioning)是基于HTTP1.1的一个通信协议。

它为HTTP1.1添加了一些扩展(就是在GET、POST、HEAD等几个HTTP标准方法以外添加了一些新的方法),使得应用程序可以直接将文件写到WebServer上,并且在写文件时候可以对文件加锁,写完后对文件解锁,还可以支持对文件所做的版本控制。

这存在一定的安全问题。

Tomcat本身是支持WebDAV的,虽然需要进行配置才可以启用。

该安全配置项需要每个产品都要严格执行。

实施指导:

在配置文件$tomcat/conf/web.xml中,确保下面的配置节点不存在或者处于注释状态:

webdav

org.apache.catalina.servlets.WebdavServlet

...

1.2.2.3禁用Symboliclinks

说明:

Symboliclinks是用来解决不同的web应用程序之间共享文件的一种方式。

这会造成应用之间的相互影响,一个应用的安全漏洞,有可能影响到所有关联的应用,因此,这种方式在安全方面存在极大隐患。

该安全配置项需要每个产品都要严格执行。

实施指导:

1.在配置文件$tomcat/conf/server.xml中,确保每个context节点都没有allowLinking属性

2.在配置文件$tomcat/conf/context.xml中,确保每个context节点都没有allowLinking属性

3.在每个web应用的WEB-INF下检查是否存在context.xml文件,如果存在,请检查并确保每个context节点都没有allowLinking属性

1.2.2.4定制Tomcat出错信息

说明:

Tomcat在找不到网页时,会报404错误,错误页面上会附带当前服务器版本号。

黑客可以通过版本号,查询当前Tomcat服务器的默认配置信息,以及该版本的安全漏洞。

定制化的错误文件可以参考”..\工具\05Tomcat安全”目录中的error.htm文件。

实施指导:

在配置文件$tomcat/conf/web.xml的倒数第二行(即之前的那一行)添加如下内容:

400

/error.htm

401

/error.htm

402

/error.htm

403

/error.htm

404

/error.htm

405

/error.htm

406

/error.htm

407

/error.htm

413

/error.htm

414

/error.htm

500

/error.htm

501

/error.htm

备注:

可以在error.htm文件中自定义出错提示信息,error.htm的大小必须大于512个字节,否则IE会自动调用自己的友好提示界面。

特别提醒,禁止给响应吗302配置错误页面,否则所有重定向都将指向该错误页面。

的配置值是自定义错误页面相对于当前Web应用的根目录的路径,需要根据自定义错误页面的实际路径配置。

1.2.2.5关闭Tomcat的目录列表功能

说明:

缺省情况下,访问tomcat下的一个web应用,如果输入是一个目录名,而且该目录下没有一个可用的welcome文件,那么tomcat会将该目录下的所有文件列出来,这种敏感信息泄露是严格禁止的。

Tomcat5.0以后的版本出于安全考虑,默认的是关闭目录列表,但是为了程序调试方便,部分程序员也有可能开启这一功能。

因此,要确认该项配置是否正确。

实施指导:

在配置文件$tomcat/conf/web.xml中修改listing参数的值为false:

listings

false

1.2.2.6更改Tomcat服务器默认端口

说明:

Tomcat服务器提供一些默认端口,这些公开的端口很容易被黑客捕获利用,进而威胁到服务器和应用等。

需要注意产品的安装规划,安装规划中的端口规划不能为这些默认端口。

实施指导:

修改$home/conf/server.xml文件,更改默认端口为其他,例如:

1.//默认端口8005

2.

connectionTimeout="20000"

redirectPort="6743"/>//默认端口8443

3.//默认端口8009

1.2.2.7限制http请求的消息主体的大小

说明:

此指令给了服务器管理员更大的可控性,以控制客户端不正常的请求行为。

在配置该属性前,需要了解业务是否有大数据量传输的可能性,如果有传输大数据的功能点,需要酌情提高消息主体的大小或者去掉该限制。

实施指导:

在配置文件$tomcat/conf/server.xml中的每个Connector的“maxPostSize”属性为10240:

connectionTimeout="20000"maxPostSize="10240"

redirectPort="8443"/>

备注:

推荐请求体大小限制为10240Byte,如果产品有特殊需求,可以进行相应调整。

1.2.2.8禁止配置Tomcat的网络连接超时时间为0或-1

说明:

connectionTimeout为网络连接超时时间毫秒数,当配置为0或-1时,表示永不超时,在受到DOS攻击时,很快就会导致最大连接数被完全占用,进而导致Tomcat服务器无法访问。

因此这里禁止配置connectionTimeout为0和-1,通常推荐的超时时间为20s和30s。

特殊情况下,请根据具体性能需求进行调优。

实施指导:

在配置文件$tomcat/conf/server.xml中的每个Connector的“connectionTimeout”属性为20000:

connectionTimeout="20000"maxPostSize="10240"

redirectPort="8443"/>

备注:

如果产品有特殊性能需求,可以进行相应调整。

1.2.2.9配置Tomcat的会话超时时间为10分钟

说明:

Tomcat服务器提供的默认超时时间为30分钟,这个时间过长,除了导致空闲连接消耗的处理资源损失外,受攻击的时间窗也相应变长。

在配置会话超时是时间时,也是充分考虑用户的易用性,当模块较多但超时时间较短的产品,会给用户造成频繁退出的现象,使用起来感受较差,如eCity平台各个模块的默认会话超时时间就不能设置过短。

实施指导:

修改$tomcat下所有的web.xml配置文件如下:

10//将30修改为10

1.2.2.10关闭会话回收功能

说明:

如果每个请求都建立一个自己的façade,那么该功能可以进行详细的列表录入,但是,该功能也有可能将这些请求的信息泄露给没有创建façade的其他请求。

实施指导:

在启动脚本$TOMCAT/bin/catalina.sh文件的启动分支语句中添加如下命令:

-Dorg.apache.catalina.connector.RECYCLE_FACADES=false

备注:

该参数仅出现在Tomcat6.0及其

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 自然科学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1