您的位置:首页 > 运维架构 > Tomcat

tomcat安全加固配置手册

2017-03-09 00:00 633 查看

第1章概述

1.1目标

现有的Web服务体系架构缺少有效的安全性支持,所以需要一个安全框架模型来解决Web服务中的各种安全问题。Web服务器是应用的载体,如果这个载体出现安全问题,那么运行在其中的Web应用程序的安全就得不到保障了。本文主要描述ApacheTomcat的安全加固和配置工作,最终用以指导系统实施。

1.2预期读者

本文档用于指导系统工程师进行系统实施工作,架构师和系统工程师应该通读本文档,选择适当方式用于自己的系统。

第2章产品介绍

Tomcat是一个HTTP服务器,是Sun透过JavaCommunityProcess开发的、对广泛使用的Servlet和JavaServerPage(JSP)技术的正式参考实作。Servlet和JSP技术用于建构HTTP服务器应用程序。虽然Servlet技术中加入了许多特性(包括存取安全性、Session管理和执行绪控制)。JSP技术提供了一种处理动态生成的HTML页面的简便方法,这些HTML页面被直接编译成Servlet以用于快速执行时作业。Tomcat除了上述的两种技术保障安全之外,还可以通过配置Tomcat的参数以增加安全性。

第3章Tomcat的安全加固配置

3.1Tomcat版本统一

查看目前系统部署的Tomcat是否为统一的版本,切换到$CATALINA_HOME\bin目录下:

Linux:

[root@srv-dfh526tomcat6-spaceservice]#cdbin/

[root@srv-dfh526bin]#./version.sh

UsingCATALINA_BASE:/soft/tomcat6-spaceservice

UsingCATALINA_HOME:/soft/tomcat6-spaceservice

UsingCATALINA_TMPDIR:/soft/tomcat6-spaceservice/temp

UsingJRE_HOME:/usr/local/jdk6

UsingCLASSPATH:/soft/tomcat6-spaceservice/bin/bootstrap.jar

Serverversion:ApacheTomcat/6.0.33

Serverbuilt:Aug16201102:16:34

Servernumber:6.0.33.0

OSName:Linux

OSVersion:2.6.32-279.el6.x86_64

Architecture:amd64

JVMVersion:1.6.0_32-b05

JVMVendor:SunMicrosystemsInc.

Windows:

D:\tools\apache-tomcat-6.0.30\apache-tomcat-6.0.30\bin>version.bat

UsingCATALINA_BASE:"D:\tools\apache-tomcat-6.0.30\apache-tomcat-6.0.30"

UsingCATALINA_HOME:"D:\tools\apache-tomcat-6.0.30\apache-tomcat-6.0.30"

UsingCATALINA_TMPDIR:"D:\tools\apache-tomcat-6.0.30\apache-tomcat-6.0.30\temp"

UsingJRE_HOME:"D:\Java\jdk1.8.0"

UsingCLASSPATH:"D:\tools\apache-tomcat-6.0.30\apache-tomcat-6.0.30\bin\b

ootstrap.jar"

Serverversion:ApacheTomcat/6.0.30

Serverbuilt:January1020111752

Servernumber:6.0.30.0

OSName:Windows7

OSVersion:6.1

Architecture:amd64

JVMVersion:1.8.0-ea-b121

JVMVendor:OracleCorporation

D:\tools\apache-tomcat-6.0.30\apache-tomcat-6.0.30\bin>

3.2Tomcat帐号安全

将$CATALINA_HOME\conf\tomcat-users.xml中文件的所有用户都注释掉,配置如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
<?xmlversion='1.0'encoding='utf-8'?>
<tomcat-users>
<!—
<rolerolename="tomcat"/>
<rolerolename="role1"/>
<rolerolename="manager"/>
<rolerolename="admin"/>
<userusername="tomcat"password="tomcat"roles="tomcat"/>
<userusername="both"password="tomcat"roles="tomcat,role1"/>
<userusername="role1"password="tomcat"roles="role1"/>
<userusername="admin"password="admin"roles="manager"/>
-->
</tomcat-users>
如果业务需要内置的Tomcat用户,则需要给其分配合理的权限,密码设置符合密码策略,Tomcat角色类型如下:

role1:具有读权限;

tomcat:具有读和运行权限;

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

manager:具有远程管理权限。

如果使用启用了Tomcat用户,则需要设置Tomcat定时登出,将$CATALINA_HOME\conf\server.xml配置如下:

1
2
3
4
5
6
7
8
9
10
11
<Connectorport="8080"
protocol="HTTP/1.1"
maxHttpHeaderSize="8192"
maxThreads="150"
minSpareThreads="25"
maxSpareThreads="75"
enableLookups="false"
redirectPort="8443"
acceptCount="100"
connectionTimeout="30000"
disableUploadTimeout="true"/>
加固检查:

输入帐号和密码都无法登录



3.3除webapps应用

除了需要部署上去的应用,其余位于$CATALINA_HOME\webapps文件夹中的应用如docs、examples、host-manager、manager和ROOT。

注:若无业务必要,请执行删除上述的应用包。

加固检查:

输入:http://localhost:8080/manager/html

出现的页面空白



3.4禁止Tomcat目录列表

确保$CATALINA_HOME\conf\web.xml中listings的值为false:

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

3.5设置Cookie的HttpOnly属性

因为目前框架中没有为Cookie添加HttpOnly属性,所以可以在Tomcat中设置。

第一步,在$CATALINA_HOME\conf\context.xml文件中添加useHttpOnly="true"配置如下:

1
2
3
<ContextuseHttpOnly="true">
<WatchedResource>WEB-INF/web.xml</WatchedResource>
</Context>
第二步,在项目应用的web.xml中配置上:

1
2
3
4
5
6
<session-config>
<cookie-config>
<http-only>true</http-only>
<secure>true</secure>
</cookie-config>
</session-config>
加固检查:

可以通过firebug查看cookie,出现HttpOnly属性



3.6配置shutdown端口

在$CATALINA_HOME\conf\server.xml中“<Serverport="8005"shutdown="SHUTDOWN">”配置有允许任何人只要telnet到服务器的8005端口,输入"SHUTDOWN",然后回车,服务器立即就被关掉了。从安全的角度上考虑,需要把这个shutdown指令改成一个别人不容易猜测的字符串。而且这个修改不影响shutdown.bat或shutdown.sh的执行。配置如下:

<Serverport="未被占用的端口"shutdown="较为复杂的字符串">

注:配置的端口需要大于1024。

加固检查:

使用telnet127.0.0.18005进入,输入“SHUTDOWN”,Tomcat不会被关闭。

3.7隐藏Tomcat版本信息

在默认配置下,当应用出现异常时,客户端会显示Tomcat的版本信息。攻击者可以根据Tomcat版本信息选择漏洞库攻击,所以需要将Tomcat的版本信息隐藏,将$CATALINA_HOME\lib\catalina.jar\org\apache\catalina\util中的配置ServerInfo.properties如下:

1
2
3
server.info=需要展现的信息如SmartCity
server.number=SmartCity
server.built=20140101
加固检测:

输入一个异常的URL看看出现的异常页面是否出现类似(无Tomcat的版本信息)如下内容:



3.8关闭war自动部署

默认的配置war放在$CATALINA_HOME\webapps中会自动部署,所以关闭war自动部署防止被植入木马等恶意程序。将$CATALINA_HOME\conf\server.xml配置如下:

1
2
3
4
5
6
<Hostname="localhost"
appBase="webapps"
unpackWARs="false"
autoDeploy="false"
xmlValidation="false"
xmlNamespaceAware="false">
加固检查:

将一个war文件放进$CATALINA_HOME\webapps,启动Tomcat后,war文件不会被部署。

3.9Tomcat启动权限

场景一:新部署的应用

#若系统中已经存在该用户,则不需要重写创建

1
2
3
4
5
6
7
8
9
10
11
12
13
[root@localhost~]#groupadddfhapp
[root@localhost~]#useradd-d/home/dfhapp-gdfhappdfhapp
#创建的密码需要符合密码策略要求
[root@localhost~]#passwddfhapp
更改用户tomcat的密码。
新的密码:
无效的密码:过于简单化/系统化
无效的密码:过于简单
重新输入新的密码:
passwd:所有的身份验证令牌已经成功更新。
[root@localhost/]#cd/
[root@localhost/]#mkdir/soft
[root@localhost/]#chown-Rdfhapp:dfhapp/soft/
1
2
3
4
5
6
7
8
9
10
11
12
#切换用户
[root@localhost/]#sudfhapp
[dfhapp@localhost/]$cd/soft/
[dfhapp@localhostsoft]$wgethttp://mirror.esocc.com/apache/tomcat/tomcat-6/v6.0.39/bin/apache-tomcat-6.0.39.zip
[dfhapp@localhostsoft]$unzipapache-tomcat-6.0.39.zip
[dfhapp@localhostsoft]$mvapache-tomcat-6.0.39tomcat-demo
[dfhapp@localhostsoft]$cdtomcat-demo/
[dfhapp@localhosttomcat-demo]$chmod750*
[dfhapp@localhosttomcat-demo]$chmod-R540bin/*
[dfhapp@localhosttomcat-demo]$chmod-R540lib/*
[dfhapp@localhosttomcat-demo]$chmod-R640conf/*
[dfhapp@localhosttomcat-demo]$cdbin/
1
2
3
4
5
6
7
#启动Tomcat
[dfhapp@localhostbin]$./startup.sh
UsingCATALINA_BASE:/soft/tomcat-demo
UsingCATALINA_HOME:/soft/tomcat-demo
UsingCATALINA_TMPDIR:/soft/tomcat-demo/temp
UsingJRE_HOME:/usr
UsingCLASSPATH:/soft/tomcat-demo/bin/bootstrap.jar
场景二:已存在应用

#若系统中已经存在该用户,则不需要重写创建

1
2
3
4
5
6
7
8
9
10
[root@localhost~]#groupadddfhapp
[root@localhost~]#useradd-d/home/dfhapp-gdfhappdfhapp
#创建的密码需要符合密码策略要求
[root@localhost~]#passwddfhapp
更改用户tomcat的密码。
新的密码:
无效的密码:过于简单化/系统化
无效的密码:过于简单
重新输入新的密码:
passwd:所有的身份验证令牌已经成功更新。
#关闭应用线程,标红的线程号需要一致

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[root@yuanyuan2/]#ps-ef|greptomcat_demo
root49171616:08pts/100:00:54/usr/bin/java-Djava.util.logging.config.file=/apache/tomcat_demo/conf/logging.properties-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager-server-Xms256m-Xmx512m-XX:PermSize=64M-XX:MaxPermSize=256m-Djava.endorsed.dirs=/apache/tomcat_demo/endorsed-classpath/apache/tomcat_demo/bin/bootstrap.jar-Dcatalina.base=/apache/tomcat_demo-Dcatalina.home=/apache/tomcat_demo-Djava.io.tmpdir=/apache/tomcat_demo/temporg.apache.catalina.startup.Bootstrapstart
root50664858016:22pts/100:00:00greptomcat_demo
[root@yuanyuan2/]#kill-94917
#删除缓存目录,不然无法降权
[root@yuanyuan2~]#cd/apache/tomcat_demo/
[root@yuanyuan2tomcat_demo]#rm-rfwork/Catalina/
[root@yuanyuan2tomcat_demo]#rm-rfconf/Catalina/
[root@localhost/]#chown-Rdfhapp:dfhapp/data/
#切换用户
[root@localhost/]#sudfhapp
[dfhapp@yuanyuan2/]$cd/apache/tomcat_demo/
#重新赋权限
[dfhapp@localhosttomcat-demo]$chmod750*
[dfhapp@localhosttomcat-demo]$chmod-R540bin/*
[dfhapp@localhosttomcat-demo]$chmod-R540lib/*
[dfhapp@localhosttomcat-demo]$chmod-R640conf/*
[dfhapp@localhosttomcat-demo]$cdbin/
1
2
3
4
5
6
7
#启动Tomcat
[dfhapp@localhostbin]$./startup.sh
UsingCATALINA_BASE:/soft/tomcat-demo
UsingCATALINA_HOME:/soft/tomcat-demo
UsingCATALINA_TMPDIR:/soft/tomcat-demo/temp
UsingJRE_HOME:/usr
UsingCLASSPATH:/soft/tomcat-demo/bin/bootstrap.jar
注:(1)上述的dfhapp组名和用户可以根据需要更改。

(2)如果需要上传文件到服务容器中的可以将存放目录设置为750.,命令如下。

1
[tomcat@localhostimage]$chmod-R750get/
(3)鉴于Tonmcat的赋权操作是重复的,所以可以建立一个shell文件,存放在Tonmcat的根目录下进行赋权。

1
2
3
4
5
6
7
8
9
10
[tomcat@yuanyuan2tomcat_demo]$pwd
/apache/tomcat_demo
#创建tomcat.sh脚本
[tomcat@yuanyuan2tomcat_demo]$vimtomcat.sh
chmod750*
chmod-R540bin/*
chmod-R540lib/*
chmod-R640conf/*
[tomcat@yuanyuan2tomcat_demo]$chmod755tomcat.sh
[tomcat@yuanyuan2tomcat_demo]$./tomcat.sh
Tomcat中各个文件的权限:

1
2
3
4
5
6
7
8
9
10
11
12
13
[tomcat@localhosttomcat-demo]$ll
总用量124
drwxr-x---.2tomcattomcat40961月2722:42bin
drwxr-x---.3tomcattomcat40964月220:52conf
drwxr-x---.2tomcattomcat40961月2722:42lib
-rwxr-x---.1tomcattomcat576951月2722:42LICENSE
drwxr-x---.2tomcattomcat40964月220:52logs
-rwxr-x---.1tomcattomcat7831月2722:42NOTICE
-rwxr-x---.1tomcattomcat93601月2722:42RELEASE-NOTES
-rwxr-x---.1tomcattomcat167071月2722:42RUNNING.txt
drwxr-x---.2tomcattomcat40961月2722:42temp
drwxr-x---.8tomcattomcat40964月220:52webapps
drwxr-x---.3tomcattomcat40964月220:52work
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: