设为首页 收藏本站
查看: 1468|回复: 0

[经验分享] Tomcat安全加固配置手册

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-2-2 08:44:51 | 显示全部楼层 |阅读模式
1.1   目标
现有的Web服务体系架构缺少有效的安全性支持,所以需要一个安全框架模型来解决Web服务中的各种安全问题。Web服务器是应用的载体,如果这个载体出现安全问题,那么运行在其中的Web应用程序的安全就得不到保障了。本文主要描述Apache Tomcat的安全加固和配置工作,最终用以指导系统实施。
1.2   预期读者
本文档用于指导系统工程师进行系统实施工作,架构师和系统工程师应该通读本文档,选择适当方式用于自己的系统。
第2章    产品介绍
Tomcat是一个HTTP服务器,是Sun透过Java Community Process开发的、对广泛使用的Servlet和JavaServer Page(JSP)技术的正式参考实作。Servlet和JSP技术用于建构HTTP服务器应用程序。虽然Servlet技术中加入了许多特性(包括存取安全性、Session管理和执行绪控制)。JSP技术提供了一种处理动态生成的 HTML 页面的简便方法,这些 HTML 页面被直接编译成 Servlet 以用于快速执行时作业。Tomcat除了上述的两种技术保障安全之外,还可以通过配置Tomcat的参数以增加安全性。
第3章   Tomcat的安全加固配置3.1  Tomcat版本统一查看目前系统部署的Tomcat是否为统一的版本,切换到$CATALINA_HOME\bin目录下:
Linux:
[iyunv@srv-dfh526tomcat6-spaceservice]# cd bin/
[iyunv@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: Apache Tomcat/6.0.33
Serverbuilt:   Aug 16 2011 02: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:     Sun Microsystems Inc.
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: Apache Tomcat/6.0.30
Serverbuilt:   January 10 2011 1752
Servernumber:  6.0.30.0
OSName:        Windows 7
OSVersion:     6.1
Architecture:   amd64
JVMVersion:    1.8.0-ea-b121
JVMVendor:     Oracle Corporation
D:\tools\apache-tomcat-6.0.30\apache-tomcat-6.0.30\bin>
3.2   Tomcat帐号安全
将$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"/>
  <user username="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"/>





加固检查:
输入帐号和密码都无法登录
spacer.jpg

3.3   除webapps应用
除了需要部署上去的应用,其余位于$CATALINA_HOME\webapps文件夹中的应用如docs、examples、host-manager、manager和ROOT。
注:若无业务必要,请执行删除上述的应用包。
加固检查:
输入:http://localhost:8080/manager/html
出现的页面空白
spacer.jpg

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
<Context  useHttpOnly="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属性
spacer.jpg

3.6   配置shutdown端口
在$CATALINA_HOME\conf\server.xml中“<Server port="8005" shutdown="SHUTDOWN">”配置有允许任何人只要telnet到服务器的8005端口,输入"SHUTDOWN",然后回车,服务器立即就被关掉了。从安全的角度上考虑,需要把这个shutdown指令改成一个别人不容易猜测的字符串。而且这个修改不影响shutdown.bat或shutdown.sh的执行。配置如下:
<Serverport="未被占用的端口" shutdown="较为复杂的字符串">
注:配置的端口需要大于1024。
加固检查:
使用telnet 127.0.0.1 8005进入,输入“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的版本信息)如下内容:
spacer.jpg

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.9   Tomcat启动权限场景一:新部署的应用
#若系统中已经存在该用户,则不需要重写创建
1
2
3
4
5
6
7
8
9
10
11
12
13
[iyunv@localhost~]# groupadd dfhapp
[iyunv@localhost~]# useradd  -d/home/ dfhapp -g dfhapp dfhapp
#创建的密码需要符合密码策略要求
[iyunv@localhost~]# passwd dfhapp
更改用户 tomcat 的密码。
新的密码:
无效的密码:过于简单化/系统化
无效的密码:过于简单
重新输入新的密码:
passwd:所有的身份验证令牌已经成功更新。
[iyunv@localhost/]# cd /
[iyunv@localhost/]# mkdir /soft
[iyunv@localhost/]# chown -R dfhapp:dfhapp /soft/




1
2
3
4
5
6
7
8
9
10
11
12
#切换用户
[iyunv@localhost/]# su dfhapp
[dfhapp@localhost /]$ cd /soft/
[dfhapp@localhost soft]$ wgethttp://mirror.esocc.com/apache/t ... e-tomcat-6.0.39.zip
[dfhapp@localhost soft]$ unzip apache-tomcat-6.0.39.zip
[dfhapp@localhost soft]$ mv apache-tomcat-6.0.39 tomcat-demo
[dfhapp@localhost soft]$ cd tomcat-demo/
[dfhapp@localhost tomcat-demo]$ chmod 750 *
[dfhapp@localhost tomcat-demo]$ chmod -R 540 bin/*
[dfhapp@localhost tomcat-demo]$ chmod -R 540 lib/*
[dfhapp@localhost tomcat-demo]$ chmod -R 640 conf/*
[dfhapp@localhost tomcat-demo]$ cd bin/




1
2
3
4
5
6
7
#启动Tomcat
[dfhapp@localhost bin]$ ./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
[iyunv@localhost~]# groupadd dfhapp
[iyunv@localhost~]# useradd  -d/home/ dfhapp -g dfhapp dfhapp
#创建的密码需要符合密码策略要求
[iyunv@localhost~]# passwd dfhapp
更改用户 tomcat 的密码。
新的密码:
无效的密码:过于简单化/系统化
无效的密码:过于简单
重新输入新的密码:
passwd:所有的身份验证令牌已经成功更新。




#关闭应用线程,标红的线程号需要一致
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[iyunv@yuanyuan2/]# ps -ef |grep tomcat_demo
root      4917     1 6 16:08 pts/1    00: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.Bootstrap start
root      5066 4858  0 16:22 pts/1    00:00:00 grep tomcat_demo
[iyunv@yuanyuan2 /]# kill  -9 4917
#删除缓存目录,不然无法降权
[iyunv@yuanyuan2~]# cd /apache/tomcat_demo/
[iyunv@yuanyuan2tomcat_demo]# rm -rf work/Catalina/
[iyunv@yuanyuan2tomcat_demo]# rm -rf conf/Catalina/
[iyunv@localhost/]# chown -R dfhapp:dfhapp/data/
#切换用户
[iyunv@localhost/]# su dfhapp
[dfhapp@yuanyuan2 /]$ cd /apache/tomcat_demo/
#重新赋权限
[dfhapp@localhost tomcat-demo]$ chmod 750 *
[dfhapp@localhost tomcat-demo]$ chmod -R 540 bin/*
[dfhapp@localhost tomcat-demo]$ chmod -R 540 lib/*
[dfhapp@localhost tomcat-demo]$ chmod -R 640 conf/*
[dfhapp@localhost tomcat-demo]$ cd bin/




1
2
3
4
5
6
7
#启动Tomcat
[dfhapp@localhost bin]$ ./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 -R 750 get/




     (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]$ vim tomcat.sh
chmod 750 *
chmod -R 540 bin/*
chmod -R 540 lib/*
chmod -R 640 conf/*
[tomcat@yuanyuan2tomcat_demo]$ chmod 755 tomcat.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---.2 tomcat tomcat  4096 1月  2722:42 bin
drwxr-x---.3 tomcat tomcat  4096 4月   220:52 conf
drwxr-x---.2 tomcat tomcat  4096 1月  2722:42 lib
-rwxr-x---.1 tomcat tomcat 57695 1月  27 22:42 LICENSE
drwxr-x---.2 tomcat tomcat  4096 4月   220:52 logs
-rwxr-x---.1 tomcat tomcat   783 1月  2722:42 NOTICE
-rwxr-x---.1 tomcat tomcat  9360 1月  2722:42 RELEASE-NOTES
-rwxr-x---.1 tomcat tomcat 16707 1月  27 22:42 RUNNING.txt
drwxr-x---.2 tomcat tomcat  4096 1月  2722:42 temp
drwxr-x---.8 tomcat tomcat  4096 4月   220:52 webapps
drwxr-x---.3 tomcat tomcat  4096 4月   220:52 work






运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-41807-1-1.html 上篇帖子: tomcat+HTML5缓存总结 下篇帖子: tomcat的安装及配置 加固
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表